openapi: document QueueManageResponse body on POST /api/queue (#14117)

* openapi: document QueueManageResponse body on POST /api/queue

The Cloud runtime returns a JSON body from POST /api/queue describing which
prompts were deleted and whether the queue was cleared. The spec previously
declared a bare 200 with no schema, so generated clients had no type for the
response.

Adds a QueueManageResponse schema ({deleted, cleared}) and references it from
the 200 response. Tagged x-runtime: [cloud] with a [cloud-only] description:
local ComfyUI returns an empty 200 body, so both fields are nullable.

* openapi: fix GET /api/hub/labels response to the label-catalog shape (#14118)

* openapi: fix GET /api/hub/labels response to the label-catalog shape

GET /api/hub/labels returns the catalog of available labels you can filter by,
which the Cloud runtime serves as {labels: HubLabelInfo[]} (slug name,
display_name, and a type category: tag/model/custom_node).

The spec had this operation returning a bare array of HubLabel ({id, name,
color}) — that schema models the label chips attached to a published workflow
(HubWorkflow.labels), a different object. The catalog schema (HubLabelInfo)
already existed but was unreferenced.

Repoints the 200 response to a new HubLabelListResponse wrapper over the
existing HubLabelInfo. HubLabel is unchanged and still used by
HubWorkflow.labels. Endpoint remains x-runtime: [cloud].

* openapi: add Cloud-runtime fields (workflow_id, execution_error) to JobEntry (#14119)

* openapi: add Cloud-runtime fields workflow_id, execution_error to JobEntry

The Cloud runtime returns two additional fields on JobEntry that the spec
didn't declare:

- workflow_id: UUID of the Cloud workflow entity the job is associated with
- execution_error: structured ComfyUI execution error for failed jobs
  (reuses the existing ExecutionError schema)

Both tagged x-runtime: [cloud] with [cloud-only] descriptions; local ComfyUI
does not populate them.

* openapi: document Cloud-runtime request fields on POST /api/assets/export (#14120)

The Cloud runtime accepts three request fields on /api/assets/export that the
spec didn't declare:

- job_ids: include all assets associated with the given jobs
- naming_strategy: how to name files in the ZIP (enum, default group_by_job_time)
- job_asset_name_filters: optional per-job asset-name allowlist

Also drops asset_ids from required: the runtime supports exporting by job_ids
alone, so neither field is individually required.

/api/assets/export is already x-runtime: [cloud]; these are plain field
additions under that endpoint-level tag.
This commit is contained in:
Matt Miller 2026-05-26 16:25:20 -07:00 committed by GitHub
parent f9f54cae42
commit 921775704c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -275,7 +275,10 @@ paths:
responses:
"200":
description: Queue updated
content:
application/json:
schema:
$ref: "#/components/schemas/QueueManageResponse"
'400':
description: Invalid request parameters
content:
@ -3092,18 +3095,34 @@ paths:
application/json:
schema:
type: object
required:
- asset_ids
properties:
job_ids:
type: array
items:
type: string
description: Job IDs whose associated assets should all be included in the ZIP bundle.
asset_ids:
type: array
items:
type: string
format: uuid
description: IDs of assets to export
description: Asset IDs to include in the ZIP bundle. Additive to assets associated with provided job IDs.
export_name:
type: string
description: Name for the export archive
naming_strategy:
type: string
enum: [group_by_job_id, preserve, asset_id, group_by_job_time]
default: group_by_job_time
description: "Strategy for naming files in the ZIP: group by job ID, preserve original names, use the asset ID, or group by job creation time."
job_asset_name_filters:
type: object
additionalProperties:
type: array
minItems: 1
items:
type: string
description: Optional per-job asset name filters. When provided for a job ID, only assets whose name matches one of the listed names are included.
responses:
"202":
description: Export task accepted
@ -3575,10 +3594,7 @@ paths:
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/HubLabel"
$ref: "#/components/schemas/HubLabelListResponse"
'400':
description: Bad request (e.g. invalid type parameter)
content:
@ -7466,6 +7482,25 @@ components:
type: string
description: Array of prompt IDs to delete from queue
QueueManageResponse:
type: object
x-runtime: [cloud]
description: >-
[cloud-only] Result of a queue mutation. The Cloud runtime returns which
items were deleted and whether the queue was cleared; local ComfyUI
returns an empty 200 body.
properties:
deleted:
type: array
nullable: true
items:
type: string
description: Prompt IDs that were deleted from the queue.
cleared:
type: boolean
nullable: true
description: Whether the queue was cleared.
# -------------------------------------------------------------------
# History
# -------------------------------------------------------------------
@ -7546,6 +7581,16 @@ components:
outputs_count:
type: integer
description: Total number of output files
workflow_id:
type: string
nullable: true
x-runtime: [cloud]
description: "[cloud-only] UUID of the Cloud workflow entity this job is associated with. Local ComfyUI returns null."
execution_error:
x-runtime: [cloud]
description: "[cloud-only] Detailed execution error from ComfyUI for failed jobs. Absent on local ComfyUI."
allOf:
- $ref: "#/components/schemas/ExecutionError"
JobDetailResponse:
type: object
@ -10433,6 +10478,19 @@ components:
- custom_node
description: Label category.
HubLabelListResponse:
type: object
x-runtime: [cloud]
description: '[cloud-only] Response wrapper for the available Hub label catalog.'
required:
- labels
properties:
labels:
type: array
items:
$ref: '#/components/schemas/HubLabelInfo'
description: Available labels, optionally filtered by type.
HubProfileSummary:
type: object
x-runtime: [cloud]