feat(openapi): publish the op catalog, per-mode run ops and server-built hints on /openapi/v1 (#42487)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Xiyuan Chenandautofix-ci[bot] authored and GitHub committed 2026-09-22 10:44:50 +00:00
1 parent dced031c95
commit dfc3bbe513
75 files changed
+3324 -803

No files matched your search

@@ -26,6 +26,7 @@ import {
zGetAppsByAppIdTasksByTaskIdEventsResponse,
zGetAppsQuery,
zGetAppsResponse,
zGetCatalogResponse,
zGetHealthResponse,
zGetOauthDeviceLookupQuery,
zGetOauthDeviceLookupResponse,
@@ -40,20 +41,31 @@ import {
zGetWorkspacesByWorkspaceIdMembersResponse,
zGetWorkspacesByWorkspaceIdPath,
zGetWorkspacesByWorkspaceIdResponse,
zGetWorkspacesQuery,
zGetWorkspacesResponse,
zPatchWorkspacesByWorkspaceIdMembersByMemberIdBody,
zPatchWorkspacesByWorkspaceIdMembersByMemberIdPath,
zPatchWorkspacesByWorkspaceIdMembersByMemberIdResponse,
zPostAppsByAppIdAdvancedChatRunBody,
zPostAppsByAppIdAdvancedChatRunPath,
zPostAppsByAppIdAdvancedChatRunResponse,
zPostAppsByAppIdChatRunBody,
zPostAppsByAppIdChatRunPath,
zPostAppsByAppIdChatRunResponse,
zPostAppsByAppIdCompletionRunBody,
zPostAppsByAppIdCompletionRunPath,
zPostAppsByAppIdCompletionRunResponse,
zPostAppsByAppIdFilesBody,
zPostAppsByAppIdFilesPath,
zPostAppsByAppIdFilesResponse,
zPostAppsByAppIdHumanInputFormsByFormTokenSubmitBody,
zPostAppsByAppIdHumanInputFormsByFormTokenSubmitPath,
zPostAppsByAppIdHumanInputFormsByFormTokenSubmitResponse,
zPostAppsByAppIdRunBody,
zPostAppsByAppIdRunPath,
zPostAppsByAppIdRunResponse,
zPostAppsByAppIdTasksByTaskIdStopPath,
zPostAppsByAppIdTasksByTaskIdStopResponse,
zPostAppsByAppIdWorkflowRunBody,
zPostAppsByAppIdWorkflowRunPath,
zPostAppsByAppIdWorkflowRunResponse,
zPostOauthDeviceApproveBody,
zPostOauthDeviceApproveResponse,
zPostOauthDeviceCodeBody,
@@ -74,7 +86,25 @@ import {
zPostWorkspacesByWorkspaceIdSwitchResponse,
} from './zod.gen'
/**
* Machine-readable catalog of every op on this surface
*/
export const get = oc
.route({
description: 'Machine-readable catalog of every op on this surface',
inputStructure: 'detailed',
method: 'GET',
operationId: 'getCatalog',
path: '/_catalog',
tags: ['openapi'],
})
.output(zGetCatalogResponse)
export const catalog = {
get,
}
export const get2 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -85,10 +115,10 @@ export const get = oc
.output(zGetHealthResponse)
export const health = {
get,
get: get2,
}
export const get2 = oc
export const get3 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -99,7 +129,7 @@ export const get2 = oc
.output(zGetVersionResponse)
export const version = {
get: get2,
get: get3,
}
export const delete_ = oc
@@ -131,7 +161,7 @@ export const bySessionId = {
delete: delete2,
}
export const get3 = oc
export const get4 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -143,12 +173,12 @@ export const get3 = oc
.output(zGetAccountSessionsResponse)
export const sessions = {
get: get3,
get: get4,
self,
bySessionId,
}
export const get4 = oc
export const get5 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -159,11 +189,78 @@ export const get4 = oc
.output(zGetAccountResponse)
export const account = {
get: get4,
get: get5,
sessions,
}
export const get5 = oc
export const post = oc
.route({
inputStructure: 'detailed',
method: 'POST',
operationId: 'postAppsByAppIdAdvancedChatRun',
path: '/apps/{app_id}/advanced-chat:run',
tags: ['openapi'],
})
.input(
z.object({
body: zPostAppsByAppIdAdvancedChatRunBody,
params: zPostAppsByAppIdAdvancedChatRunPath,
}),
)
.output(zPostAppsByAppIdAdvancedChatRunResponse)
export const run = {
post,
}
export const advancedChat = {
run,
}
export const post2 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
operationId: 'postAppsByAppIdChatRun',
path: '/apps/{app_id}/chat:run',
tags: ['openapi'],
})
.input(z.object({ body: zPostAppsByAppIdChatRunBody, params: zPostAppsByAppIdChatRunPath }))
.output(zPostAppsByAppIdChatRunResponse)
export const run2 = {
post: post2,
}
export const chat = {
run: run2,
}
export const post3 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
operationId: 'postAppsByAppIdCompletionRun',
path: '/apps/{app_id}/completion:run',
tags: ['openapi'],
})
.input(
z.object({
body: zPostAppsByAppIdCompletionRunBody,
params: zPostAppsByAppIdCompletionRunPath,
}),
)
.output(zPostAppsByAppIdCompletionRunResponse)
export const run3 = {
post: post3,
}
export const completion = {
run: run3,
}
export const get6 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -175,14 +272,14 @@ export const get5 = oc
.output(zGetAppsByAppIdDependenciesCheckResponse)
export const check = {
get: get5,
get: get6,
}
export const dependencies = {
check,
}
export const get6 = oc
export const get7 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -194,13 +291,13 @@ export const get6 = oc
.output(zGetAppsByAppIdDslResponse)
export const dsl = {
get: get6,
get: get7,
}
/**
* Upload a file to use as an input variable when running the app
*/
export const post = oc
export const post4 = oc
.route({
description: 'Upload a file to use as an input variable when running the app',
inputStructure: 'detailed',
@@ -210,14 +307,14 @@ export const post = oc
successStatus: 201,
tags: ['openapi'],
})
.input(z.object({ params: zPostAppsByAppIdFilesPath }))
.input(z.object({ body: zPostAppsByAppIdFilesBody, params: zPostAppsByAppIdFilesPath }))
.output(zPostAppsByAppIdFilesResponse)
export const files = {
post,
post: post4,
}
export const post2 = oc
export const post5 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -234,10 +331,10 @@ export const post2 = oc
.output(zPostAppsByAppIdHumanInputFormsByFormTokenSubmitResponse)
export const submit = {
post: post2,
post: post5,
}
export const get7 = oc
export const get8 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -249,7 +346,7 @@ export const get7 = oc
.output(zGetAppsByAppIdHumanInputFormsByFormTokenResponse)
export const byFormToken = {
get: get7,
get: get8,
submit,
}
@@ -257,7 +354,7 @@ export const humanInputForms = {
byFormToken,
}
export const get8 = oc
export const get9 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -274,10 +371,10 @@ export const get8 = oc
.output(zGetAppsByAppIdTasksByTaskIdEventsResponse)
export const events = {
get: get8,
get: get9,
}
export const post3 = oc
export const post6 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -289,7 +386,7 @@ export const post3 = oc
.output(zPostAppsByAppIdTasksByTaskIdStopResponse)
export const stop = {
post: post3,
post: post6,
}
export const byTaskId = {
@@ -301,22 +398,28 @@ export const tasks = {
byTaskId,
}
export const post4 = oc
export const post7 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
operationId: 'postAppsByAppIdRun',
path: '/apps/{app_id}:run',
operationId: 'postAppsByAppIdWorkflowRun',
path: '/apps/{app_id}/workflow:run',
tags: ['openapi'],
})
.input(z.object({ body: zPostAppsByAppIdRunBody, params: zPostAppsByAppIdRunPath }))
.output(zPostAppsByAppIdRunResponse)
.input(
z.object({ body: zPostAppsByAppIdWorkflowRunBody, params: zPostAppsByAppIdWorkflowRunPath }),
)
.output(zPostAppsByAppIdWorkflowRunResponse)
export const run = {
post: post4,
export const run4 = {
post: post7,
}
export const get9 = oc
export const workflow = {
run: run4,
}
export const get10 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -328,16 +431,19 @@ export const get9 = oc
.output(zGetAppsByAppIdResponse)
export const byAppId = {
get: get9,
get: get10,
advancedChat,
chat,
completion,
dependencies,
dsl,
files,
humanInputForms,
tasks,
run,
workflow,
}
export const get10 = oc
export const get11 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -349,11 +455,11 @@ export const get10 = oc
.output(zGetAppsResponse)
export const apps = {
get: get10,
get: get11,
byAppId,
}
export const post5 = oc
export const post8 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -365,10 +471,10 @@ export const post5 = oc
.output(zPostOauthDeviceApproveResponse)
export const approve = {
post: post5,
post: post8,
}
export const post6 = oc
export const post9 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -380,10 +486,10 @@ export const post6 = oc
.output(zPostOauthDeviceCodeResponse)
export const code = {
post: post6,
post: post9,
}
export const post7 = oc
export const post10 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -395,10 +501,10 @@ export const post7 = oc
.output(zPostOauthDeviceDenyResponse)
export const deny = {
post: post7,
post: post10,
}
export const get11 = oc
export const get12 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -410,10 +516,10 @@ export const get11 = oc
.output(zGetOauthDeviceLookupResponse)
export const lookup = {
get: get11,
get: get12,
}
export const post8 = oc
export const post11 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -425,7 +531,7 @@ export const post8 = oc
.output(zPostOauthDeviceTokenResponse)
export const token = {
post: post8,
post: post11,
}
export const device = {
@@ -440,7 +546,7 @@ export const oauth = {
device,
}
export const get12 = oc
export const get13 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -457,10 +563,10 @@ export const get12 = oc
.output(zGetPermittedExternalAppsByAppIdResponse)
export const byAppId2 = {
get: get12,
get: get13,
}
export const get13 = oc
export const get14 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -472,11 +578,11 @@ export const get13 = oc
.output(zGetPermittedExternalAppsResponse)
export const permittedExternalApps = {
get: get13,
get: get14,
byAppId: byAppId2,
}
export const post9 = oc
export const post12 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -488,14 +594,14 @@ export const post9 = oc
.output(zPostWorkspacesByWorkspaceIdAppsImportsByImportIdConfirmResponse)
export const confirm = {
post: post9,
post: post12,
}
export const byImportId = {
confirm,
}
export const post10 = oc
export const post13 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -512,7 +618,7 @@ export const post10 = oc
.output(zPostWorkspacesByWorkspaceIdAppsImportsResponse)
export const imports = {
post: post10,
post: post13,
byImportId,
}
@@ -552,7 +658,7 @@ export const byMemberId = {
patch,
}
export const get14 = oc
export const get15 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -568,7 +674,7 @@ export const get14 = oc
)
.output(zGetWorkspacesByWorkspaceIdMembersResponse)
export const post11 = oc
export const post14 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -586,12 +692,12 @@ export const post11 = oc
.output(zPostWorkspacesByWorkspaceIdMembersResponse)
export const members = {
get: get14,
post: post11,
get: get15,
post: post14,
byMemberId,
}
export const post12 = oc
export const post15 = oc
.route({
inputStructure: 'detailed',
method: 'POST',
@@ -603,10 +709,10 @@ export const post12 = oc
.output(zPostWorkspacesByWorkspaceIdSwitchResponse)
export const switch_ = {
post: post12,
post: post15,
}
export const get15 = oc
export const get16 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -618,13 +724,13 @@ export const get15 = oc
.output(zGetWorkspacesByWorkspaceIdResponse)
export const byWorkspaceId = {
get: get15,
get: get16,
apps: apps2,
members,
switch: switch_,
}
export const get16 = oc
export const get17 = oc
.route({
inputStructure: 'detailed',
method: 'GET',
@@ -632,14 +738,16 @@ export const get16 = oc
path: '/workspaces',
tags: ['openapi'],
})
.input(z.object({ query: zGetWorkspacesQuery.optional() }))
.output(zGetWorkspacesResponse)
export const workspaces = {
get: get16,
get: get17,
byWorkspaceId,
}
export const contract = {
catalog,
health,
version,
account,
@@ -19,6 +19,21 @@ export type AccountResponse = {
workspaces?: Array<WorkspacePayload>
}
export type AdvancedChatRunPayload = {
attachments?: Array<Blob | File> | null
auto_generate_name?: boolean
conversation_id?: string | null
files?: {
[key: string]: Blob | File | Array<Blob | File>
} | null
inputs: {
[key: string]: unknown
}
query: string
workflow_id?: string | null
workspace_id?: string | null
}
export type AppDescribeInfo = {
description?: string | null
id: string
@@ -64,6 +79,19 @@ export type AppDslImportPayload = {
yaml_url?: string | null
}
export type AppDslImportResponse = {
app_id?: string | null
app_mode?: string | null
current_dsl_version?: string
error?: string
hints?: Array<Hint>
id: string
imported_dsl_version?: string
permission_keys?: Array<string>
status: ImportStatus
warnings?: Array<DslImportWarning>
}
export type AppInfo = {
description?: string | null
id: string
@@ -82,6 +110,7 @@ export type AppListQuery = {
export type AppListResponse = {
data: Array<AppListRow>
has_more: boolean
hints?: Array<Hint>
limit: number
page: number
total: number
@@ -107,17 +136,17 @@ export type AppMode =
| 'rag-pipeline'
| 'workflow'
export type AppRunRequest = {
export type ChatRunPayload = {
attachments?: Array<Blob | File> | null
auto_generate_name?: boolean
conversation_id?: string | null
files?: Array<{
[key: string]: unknown
}> | null
files?: {
[key: string]: Blob | File | Array<Blob | File>
} | null
inputs: {
[key: string]: unknown
}
query?: string | null
workflow_id?: string | null
query: string
workspace_id?: string | null
}
@@ -125,6 +154,18 @@ export type CheckDependenciesResult = {
leaked_dependencies?: Array<PluginDependency>
}
export type CompletionRunPayload = {
attachments?: Array<Blob | File> | null
files?: {
[key: string]: Blob | File | Array<Blob | File>
} | null
inputs: {
[key: string]: unknown
}
query?: string
workspace_id?: string | null
}
export type DeploymentEdition = 'CLOUD' | 'COMMUNITY' | 'ENTERPRISE'
export type DeviceCodeRequest = {
@@ -218,6 +259,10 @@ export type FileResponse = {
user_id?: string | null
}
export type FileUploadPayload = {
file: Blob | File
}
export type FormSubmitResponse = {
[key: string]: never
}
@@ -233,6 +278,17 @@ export type HealthResponse = {
ok: boolean
}
export type Hint = {
form?: Array<{
[key: string]: unknown
}> | null
input: {
[key: string]: unknown
}
op: string
summary: string
}
export type HumanInputFormDefinitionResponse = {
expiration_time?: number | null
form_content: string
@@ -247,13 +303,6 @@ export type HumanInputFormDefinitionResponse = {
}>
}
export type HumanInputFormSubmitPayload = {
action: string
inputs: {
[key: string]: JsonValue
}
}
export type Import = {
app_id?: string | null
app_mode?: string | null
@@ -301,6 +350,7 @@ export type MemberListQuery = {
export type MemberListResponse = {
data: Array<MemberResponse>
has_more: boolean
hints?: Array<Hint>
limit: number
page: number
total: number
@@ -331,6 +381,7 @@ export type OpenApiErrorCode =
| 'app_unavailable'
| 'bad_gateway'
| 'bad_request'
| 'catalog_stale'
| 'completion_request_error'
| 'conflict'
| 'conversation_completed'
@@ -360,7 +411,16 @@ export type OpenApiErrorCode =
| 'unknown'
| 'unsupported_file_type'
| 'unsupported_media_type'
| 'upgrade_required'
export type OpenApiFormSubmitPayload = {
action: string
files?: {
[key: string]: Blob | File | Array<Blob | File>
} | null
inputs: {
[key: string]: JsonValue
}
}
export type Package = {
plugin_unique_identifier: string
@@ -377,6 +437,7 @@ export type PermittedExternalAppsListQuery = {
export type PermittedExternalAppsListResponse = {
data: Array<AppListRow>
has_more: boolean
hints?: Array<Hint>
limit: number
page: number
total: number
@@ -407,6 +468,7 @@ export type SessionListQuery = {
export type SessionListResponse = {
data: Array<SessionRow>
has_more: boolean
hints?: Array<Hint>
limit: number
page: number
total: number
@@ -455,6 +517,18 @@ export type WorkflowRunData = {
workflow_id: string
}
export type WorkflowRunPayload = {
attachments?: Array<Blob | File> | null
files?: {
[key: string]: Blob | File | Array<Blob | File>
} | null
inputs: {
[key: string]: unknown
}
workflow_id?: string | null
workspace_id?: string | null
}
export type WorkspaceDetailResponse = {
created_at?: string | null
current: boolean
@@ -464,8 +538,18 @@ export type WorkspaceDetailResponse = {
status: string
}
export type WorkspaceListQuery = {
limit?: number
page?: number
}
export type WorkspaceListResponse = {
workspaces: Array<WorkspaceSummaryResponse>
data: Array<WorkspaceSummaryResponse>
has_more: boolean
hints?: Array<Hint>
limit: number
page: number
total: number
}
export type WorkspacePayload = {
@@ -482,6 +566,21 @@ export type WorkspaceSummaryResponse = {
status: string
}
export type GetCatalogData = {
body?: never
path?: never
query?: never
url: '/_catalog'
}
export type GetCatalogResponses = {
200: {
[key: string]: unknown
}
}
export type GetCatalogResponse = GetCatalogResponses[keyof GetCatalogResponses]
export type GetHealthData = {
body?: never
path?: never
@@ -657,6 +756,78 @@ export type GetAppsByAppIdResponses = {
export type GetAppsByAppIdResponse = GetAppsByAppIdResponses[keyof GetAppsByAppIdResponses]
export type PostAppsByAppIdAdvancedChatRunData = {
body: AdvancedChatRunPayload
path: {
app_id: string
}
query?: never
url: '/apps/{app_id}/advanced-chat:run'
}
export type PostAppsByAppIdAdvancedChatRunErrors = {
422: ErrorBody
default: ErrorBody
}
export type PostAppsByAppIdAdvancedChatRunError =
PostAppsByAppIdAdvancedChatRunErrors[keyof PostAppsByAppIdAdvancedChatRunErrors]
export type PostAppsByAppIdAdvancedChatRunResponses = {
200: EventStreamResponse
}
export type PostAppsByAppIdAdvancedChatRunResponse =
PostAppsByAppIdAdvancedChatRunResponses[keyof PostAppsByAppIdAdvancedChatRunResponses]
export type PostAppsByAppIdChatRunData = {
body: ChatRunPayload
path: {
app_id: string
}
query?: never
url: '/apps/{app_id}/chat:run'
}
export type PostAppsByAppIdChatRunErrors = {
422: ErrorBody
default: ErrorBody
}
export type PostAppsByAppIdChatRunError =
PostAppsByAppIdChatRunErrors[keyof PostAppsByAppIdChatRunErrors]
export type PostAppsByAppIdChatRunResponses = {
200: EventStreamResponse
}
export type PostAppsByAppIdChatRunResponse =
PostAppsByAppIdChatRunResponses[keyof PostAppsByAppIdChatRunResponses]
export type PostAppsByAppIdCompletionRunData = {
body: CompletionRunPayload
path: {
app_id: string
}
query?: never
url: '/apps/{app_id}/completion:run'
}
export type PostAppsByAppIdCompletionRunErrors = {
422: ErrorBody
default: ErrorBody
}
export type PostAppsByAppIdCompletionRunError =
PostAppsByAppIdCompletionRunErrors[keyof PostAppsByAppIdCompletionRunErrors]
export type PostAppsByAppIdCompletionRunResponses = {
200: EventStreamResponse
}
export type PostAppsByAppIdCompletionRunResponse =
PostAppsByAppIdCompletionRunResponses[keyof PostAppsByAppIdCompletionRunResponses]
export type GetAppsByAppIdDependenciesCheckData = {
body?: never
path: {
@@ -706,7 +877,7 @@ export type GetAppsByAppIdDslResponses = {
export type GetAppsByAppIdDslResponse = GetAppsByAppIdDslResponses[keyof GetAppsByAppIdDslResponses]
export type PostAppsByAppIdFilesData = {
body?: never
body: FileUploadPayload
path: {
app_id: string
}
@@ -719,6 +890,7 @@ export type PostAppsByAppIdFilesErrors = {
401: unknown
413: unknown
415: unknown
422: ErrorBody
default: ErrorBody
}
@@ -756,7 +928,7 @@ export type GetAppsByAppIdHumanInputFormsByFormTokenResponse =
GetAppsByAppIdHumanInputFormsByFormTokenResponses[keyof GetAppsByAppIdHumanInputFormsByFormTokenResponses]
export type PostAppsByAppIdHumanInputFormsByFormTokenSubmitData = {
body: HumanInputFormSubmitPayload
body: OpenApiFormSubmitPayload
path: {
app_id: string
form_token: string
@@ -794,6 +966,7 @@ export type GetAppsByAppIdTasksByTaskIdEventsData = {
}
export type GetAppsByAppIdTasksByTaskIdEventsErrors = {
422: ErrorBody
default: ErrorBody
}
@@ -831,28 +1004,29 @@ export type PostAppsByAppIdTasksByTaskIdStopResponses = {
export type PostAppsByAppIdTasksByTaskIdStopResponse =
PostAppsByAppIdTasksByTaskIdStopResponses[keyof PostAppsByAppIdTasksByTaskIdStopResponses]
export type PostAppsByAppIdRunData = {
body: AppRunRequest
export type PostAppsByAppIdWorkflowRunData = {
body: WorkflowRunPayload
path: {
app_id: string
}
query?: never
url: '/apps/{app_id}:run'
url: '/apps/{app_id}/workflow:run'
}
export type PostAppsByAppIdRunErrors = {
export type PostAppsByAppIdWorkflowRunErrors = {
422: ErrorBody
default: ErrorBody
}
export type PostAppsByAppIdRunError = PostAppsByAppIdRunErrors[keyof PostAppsByAppIdRunErrors]
export type PostAppsByAppIdWorkflowRunError =
PostAppsByAppIdWorkflowRunErrors[keyof PostAppsByAppIdWorkflowRunErrors]
export type PostAppsByAppIdRunResponses = {
export type PostAppsByAppIdWorkflowRunResponses = {
200: EventStreamResponse
}
export type PostAppsByAppIdRunResponse =
PostAppsByAppIdRunResponses[keyof PostAppsByAppIdRunResponses]
export type PostAppsByAppIdWorkflowRunResponse =
PostAppsByAppIdWorkflowRunResponses[keyof PostAppsByAppIdWorkflowRunResponses]
export type PostOauthDeviceApproveData = {
body: DeviceMutateRequest
@@ -982,11 +1156,15 @@ export type GetPermittedExternalAppsByAppIdResponse =
export type GetWorkspacesData = {
body?: never
path?: never
query?: never
query?: {
limit?: number
page?: number
}
url: '/workspaces'
}
export type GetWorkspacesErrors = {
422: ErrorBody
default: ErrorBody
}
@@ -1031,7 +1209,7 @@ export type PostWorkspacesByWorkspaceIdAppsImportsData = {
}
export type PostWorkspacesByWorkspaceIdAppsImportsErrors = {
400: Import
400: AppDslImportResponse
422: ErrorBody
default: ErrorBody
}
@@ -1040,8 +1218,8 @@ export type PostWorkspacesByWorkspaceIdAppsImportsError =
PostWorkspacesByWorkspaceIdAppsImportsErrors[keyof PostWorkspacesByWorkspaceIdAppsImportsErrors]
export type PostWorkspacesByWorkspaceIdAppsImportsResponses = {
200: Import
202: Import
200: AppDslImportResponse
202: AppDslImportResponse
}
export type PostWorkspacesByWorkspaceIdAppsImportsResponse =
@@ -11,6 +11,32 @@ export const zAccountPayload = z.object({
name: z.string(),
})
/**
* AdvancedChatRunPayload
*
* A chat run against an advanced-chat (chatflow) app, which can also pin a workflow version.
*/
export const zAdvancedChatRunPayload = z.object({
attachments: z
.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File))
.nullish(),
auto_generate_name: z.boolean().optional().default(true),
conversation_id: z.string().nullish(),
files: z
.record(
z.string(),
z.union([
z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
z.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File)),
]),
)
.nullish(),
inputs: z.record(z.string(), z.unknown()),
query: z.string(),
workflow_id: z.string().nullish(),
workspace_id: z.string().nullish(),
})
/**
* AppDescribeInfo
*/
@@ -118,26 +144,46 @@ export const zAppListRow = z.object({
})
/**
* AppListResponse
* ChatRunPayload
*/
export const zAppListResponse = z.object({
data: z.array(zAppListRow),
has_more: z.boolean(),
limit: z.int(),
page: z.int(),
total: z.int(),
export const zChatRunPayload = z.object({
attachments: z
.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File))
.nullish(),
auto_generate_name: z.boolean().optional().default(true),
conversation_id: z.string().nullish(),
files: z
.record(
z.string(),
z.union([
z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
z.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File)),
]),
)
.nullish(),
inputs: z.record(z.string(), z.unknown()),
query: z.string(),
workspace_id: z.string().nullish(),
})
/**
* AppRunRequest
* CompletionRunPayload
*/
export const zAppRunRequest = z.object({
auto_generate_name: z.boolean().optional().default(true),
conversation_id: z.string().nullish(),
files: z.array(z.record(z.string(), z.unknown())).nullish(),
export const zCompletionRunPayload = z.object({
attachments: z
.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File))
.nullish(),
files: z
.record(
z.string(),
z.union([
z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
z.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File)),
]),
)
.nullish(),
inputs: z.record(z.string(), z.unknown()),
query: z.string().nullish(),
workflow_id: z.string().nullish(),
query: z.string().optional().default(''),
workspace_id: z.string().nullish(),
})
@@ -270,6 +316,13 @@ export const zFileResponse = z.object({
user_id: z.uuid().nullish(),
})
/**
* FileUploadPayload
*/
export const zFileUploadPayload = z.object({
file: z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
})
/**
* FormSubmitResponse
*
@@ -298,6 +351,30 @@ export const zHealthResponse = z.object({
ok: z.boolean(),
})
/**
* Hint
*
* A next step the caller can hand straight to `call <op> --input <input>`.
*/
export const zHint = z.object({
form: z.array(z.record(z.string(), z.unknown())).nullish(),
input: z.record(z.string(), z.unknown()),
op: z.string(),
summary: z.string(),
})
/**
* AppListResponse
*/
export const zAppListResponse = z.object({
data: z.array(zAppListRow),
has_more: z.boolean(),
hints: z.array(zHint).optional(),
limit: z.int(),
page: z.int(),
total: z.int(),
})
/**
* HumanInputFormDefinitionResponse
*/
@@ -314,6 +391,24 @@ export const zHumanInputFormDefinitionResponse = z.object({
*/
export const zImportStatus = z.enum(['completed', 'completed-with-warnings', 'failed', 'pending'])
/**
* AppDslImportResponse
*
* `Import` plus the server-built next step for a pending import.
*/
export const zAppDslImportResponse = z.object({
app_id: z.string().nullish(),
app_mode: z.string().nullish(),
current_dsl_version: z.string().optional().default('0.7.0'),
error: z.string().optional().default(''),
hints: z.array(zHint).optional(),
id: z.string(),
imported_dsl_version: z.string().optional().default(''),
permission_keys: z.array(z.string()).optional(),
status: zImportStatus,
warnings: z.array(zDslImportWarning).optional(),
})
/**
* Import
*/
@@ -331,14 +426,6 @@ export const zImport = z.object({
export const zJsonValue = z.unknown()
/**
* HumanInputFormSubmitPayload
*/
export const zHumanInputFormSubmitPayload = z.object({
action: z.string(),
inputs: z.record(z.string(), zJsonValue),
})
/**
* Marketplace
*/
@@ -380,7 +467,7 @@ export const zMemberInviteResponse = z.object({
* Strict (extra='forbid').
*/
export const zMemberListQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
page: z.int().gte(1).optional().default(1),
})
@@ -402,6 +489,7 @@ export const zMemberResponse = z.object({
export const zMemberListResponse = z.object({
data: z.array(zMemberResponse),
has_more: z.boolean(),
hints: z.array(zHint).optional(),
limit: z.int(),
page: z.int(),
total: z.int(),
@@ -422,6 +510,7 @@ export const zOpenApiErrorCode = z.enum([
'app_unavailable',
'bad_gateway',
'bad_request',
'catalog_stale',
'completion_request_error',
'conflict',
'conversation_completed',
@@ -451,9 +540,27 @@ export const zOpenApiErrorCode = z.enum([
'unknown',
'unsupported_file_type',
'unsupported_media_type',
'upgrade_required',
])
/**
* OpenApiFormSubmitPayload
*
* The console payload plus local file parts; `_files.merge_files` sets them on `inputs`.
*/
export const zOpenApiFormSubmitPayload = z.object({
action: z.string(),
files: z
.record(
z.string(),
z.union([
z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
z.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File)),
]),
)
.nullish(),
inputs: z.record(z.string(), zJsonValue),
})
/**
* Package
*/
@@ -468,6 +575,7 @@ export const zPackage = z.object({
export const zPermittedExternalAppsListResponse = z.object({
data: z.array(zAppListRow),
has_more: z.boolean(),
hints: z.array(zHint).optional(),
limit: z.int(),
page: z.int(),
total: z.int(),
@@ -517,7 +625,7 @@ export const zServerVersionResponse = z.object({
* Pagination for GET /account/sessions. Strict (extra='forbid').
*/
export const zSessionListQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(100),
limit: z.int().gte(1).lte(100).optional().default(100),
page: z.int().gte(1).optional().default(1),
})
@@ -540,6 +648,7 @@ export const zSessionRow = z.object({
export const zSessionListResponse = z.object({
data: z.array(zSessionRow),
has_more: z.boolean(),
hints: z.array(zHint).optional(),
limit: z.int(),
page: z.int(),
total: z.int(),
@@ -586,7 +695,7 @@ export const zSupportedAppType = z.enum([
* mode is a closed enum of listable app types.
*/
export const zAppListQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
mode: zSupportedAppType.nullish(),
name: z.string().max(200).nullish(),
page: z.int().gte(1).optional().default(1),
@@ -599,7 +708,7 @@ export const zAppListQuery = z.object({
* Strict (extra='forbid').
*/
export const zPermittedExternalAppsListQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
mode: zSupportedAppType.nullish(),
name: z.string().max(200).nullish(),
page: z.int().gte(1).optional().default(1),
@@ -649,6 +758,27 @@ export const zWorkflowRunData = z.object({
workflow_id: z.string(),
})
/**
* WorkflowRunPayload
*/
export const zWorkflowRunPayload = z.object({
attachments: z
.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File))
.nullish(),
files: z
.record(
z.string(),
z.union([
z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File),
z.array(z.custom<Blob | File>((value) => value instanceof Blob || value instanceof File)),
]),
)
.nullish(),
inputs: z.record(z.string(), z.unknown()),
workflow_id: z.string().nullish(),
workspace_id: z.string().nullish(),
})
/**
* WorkspaceDetailResponse
*/
@@ -661,6 +791,16 @@ export const zWorkspaceDetailResponse = z.object({
status: z.string(),
})
/**
* WorkspaceListQuery
*
* Strict (extra='forbid').
*/
export const zWorkspaceListQuery = z.object({
limit: z.int().gte(1).lte(100).optional().default(20),
page: z.int().gte(1).optional().default(1),
})
/**
* WorkspacePayload
*/
@@ -712,9 +852,19 @@ export const zWorkspaceSummaryResponse = z.object({
* WorkspaceListResponse
*/
export const zWorkspaceListResponse = z.object({
workspaces: z.array(zWorkspaceSummaryResponse),
data: z.array(zWorkspaceSummaryResponse),
has_more: z.boolean(),
hints: z.array(zHint).optional(),
limit: z.int(),
page: z.int(),
total: z.int(),
})
/**
* Success
*/
export const zGetCatalogResponse = z.record(z.string(), z.unknown())
/**
* Health check
*/
@@ -731,7 +881,7 @@ export const zGetVersionResponse = zServerVersionResponse
export const zGetAccountResponse = zAccountResponse
export const zGetAccountSessionsQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(100),
limit: z.int().gte(1).lte(100).optional().default(100),
page: z.int().gte(1).optional().default(1),
})
@@ -755,7 +905,7 @@ export const zDeleteAccountSessionsBySessionIdPath = z.object({
export const zDeleteAccountSessionsBySessionIdResponse = zRevokeResponse
export const zGetAppsQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
mode: z.enum(['advanced-chat', 'agent-chat', 'chat', 'completion', 'workflow']).optional(),
name: z.string().max(200).optional(),
page: z.int().gte(1).optional().default(1),
@@ -780,6 +930,39 @@ export const zGetAppsByAppIdQuery = z.object({
*/
export const zGetAppsByAppIdResponse = zAppDescribeResponse
export const zPostAppsByAppIdAdvancedChatRunBody = zAdvancedChatRunPayload
export const zPostAppsByAppIdAdvancedChatRunPath = z.object({
app_id: z.string(),
})
/**
* Run result (SSE stream)
*/
export const zPostAppsByAppIdAdvancedChatRunResponse = zEventStreamResponse
export const zPostAppsByAppIdChatRunBody = zChatRunPayload
export const zPostAppsByAppIdChatRunPath = z.object({
app_id: z.string(),
})
/**
* Run result (SSE stream)
*/
export const zPostAppsByAppIdChatRunResponse = zEventStreamResponse
export const zPostAppsByAppIdCompletionRunBody = zCompletionRunPayload
export const zPostAppsByAppIdCompletionRunPath = z.object({
app_id: z.string(),
})
/**
* Run result (SSE stream)
*/
export const zPostAppsByAppIdCompletionRunResponse = zEventStreamResponse
export const zGetAppsByAppIdDependenciesCheckPath = z.object({
app_id: z.string(),
})
@@ -803,6 +986,8 @@ export const zGetAppsByAppIdDslQuery = z.object({
*/
export const zGetAppsByAppIdDslResponse = zAppDslExportResponse
export const zPostAppsByAppIdFilesBody = zFileUploadPayload
export const zPostAppsByAppIdFilesPath = z.object({
app_id: z.string(),
})
@@ -822,7 +1007,7 @@ export const zGetAppsByAppIdHumanInputFormsByFormTokenPath = z.object({
*/
export const zGetAppsByAppIdHumanInputFormsByFormTokenResponse = zHumanInputFormDefinitionResponse
export const zPostAppsByAppIdHumanInputFormsByFormTokenSubmitBody = zHumanInputFormSubmitPayload
export const zPostAppsByAppIdHumanInputFormsByFormTokenSubmitBody = zOpenApiFormSubmitPayload
export const zPostAppsByAppIdHumanInputFormsByFormTokenSubmitPath = z.object({
app_id: z.string(),
@@ -859,16 +1044,16 @@ export const zPostAppsByAppIdTasksByTaskIdStopPath = z.object({
*/
export const zPostAppsByAppIdTasksByTaskIdStopResponse = zTaskStopResponse
export const zPostAppsByAppIdRunBody = zAppRunRequest
export const zPostAppsByAppIdWorkflowRunBody = zWorkflowRunPayload
export const zPostAppsByAppIdRunPath = z.object({
export const zPostAppsByAppIdWorkflowRunPath = z.object({
app_id: z.string(),
})
/**
* Run result (SSE stream)
*/
export const zPostAppsByAppIdRunResponse = zEventStreamResponse
export const zPostAppsByAppIdWorkflowRunResponse = zEventStreamResponse
export const zPostOauthDeviceApproveBody = zDeviceMutateRequest
@@ -908,7 +1093,7 @@ export const zPostOauthDeviceTokenBody = zDevicePollRequest
export const zPostOauthDeviceTokenResponse = zDeviceTokenResponse
export const zGetPermittedExternalAppsQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
mode: z.enum(['advanced-chat', 'agent-chat', 'chat', 'completion', 'workflow']).optional(),
name: z.string().max(200).optional(),
page: z.int().gte(1).optional().default(1),
@@ -932,6 +1117,11 @@ export const zGetPermittedExternalAppsByAppIdQuery = z.object({
*/
export const zGetPermittedExternalAppsByAppIdResponse = zAppDescribeResponse
export const zGetWorkspacesQuery = z.object({
limit: z.int().gte(1).lte(100).optional().default(20),
page: z.int().gte(1).optional().default(1),
})
/**
* Workspace list
*/
@@ -955,7 +1145,7 @@ export const zPostWorkspacesByWorkspaceIdAppsImportsPath = z.object({
/**
* Import completed
*/
export const zPostWorkspacesByWorkspaceIdAppsImportsResponse = zImport
export const zPostWorkspacesByWorkspaceIdAppsImportsResponse = zAppDslImportResponse
export const zPostWorkspacesByWorkspaceIdAppsImportsByImportIdConfirmPath = z.object({
import_id: z.string(),
@@ -972,7 +1162,7 @@ export const zGetWorkspacesByWorkspaceIdMembersPath = z.object({
})
export const zGetWorkspacesByWorkspaceIdMembersQuery = z.object({
limit: z.int().gte(1).lte(200).optional().default(20),
limit: z.int().gte(1).lte(100).optional().default(20),
page: z.int().gte(1).optional().default(1),
})