mirror of
https://github.com/langgenius/dify.git
synced 2026-06-07 16:32:01 +08:00
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import type { WorkspaceDetailResponse, WorkspaceListResponse } from '@dify/contracts/api/openapi/types.gen'
|
|
import type { KyInstance } from 'ky'
|
|
|
|
export class WorkspacesClient {
|
|
private readonly http: KyInstance
|
|
|
|
constructor(http: KyInstance) {
|
|
this.http = http
|
|
}
|
|
|
|
async list(): Promise<WorkspaceListResponse> {
|
|
return this.http.get('workspaces').json<WorkspaceListResponse>()
|
|
}
|
|
|
|
/**
|
|
* Server-side workspace switch via OpenAPI POST
|
|
* `/workspaces/{id}/switch` — the bearer-authed equivalent of the
|
|
* console's POST `/workspaces/switch`. The server updates the caller's
|
|
* `current` tenant_account_join row. Callers MUST refresh their local
|
|
* `hosts.yml` only after this resolves — never fall back to a local
|
|
* write if the request fails, or `hosts.yml` will drift from the
|
|
* server's state.
|
|
*/
|
|
async switch(workspaceId: string): Promise<WorkspaceDetailResponse> {
|
|
return this.http
|
|
.post(`workspaces/${encodeURIComponent(workspaceId)}/switch`)
|
|
.json<WorkspaceDetailResponse>()
|
|
}
|
|
}
|