[fix] Fix OpenAPI validation errors for CI compliance

- Convert all nullable: true to OpenAPI 3.1 format using type: [type, 'null']
- Fix invalid array schema definition in ManagerMappings using oneOf
- Add default security: [] configuration to satisfy security-defined rule
- All 41 validation errors resolved, spec now passes with 0 errors
- 141 warnings remain (mostly missing operationId and example validation)
This commit is contained in:
bymyself 2025-06-13 18:43:28 -07:00
parent 2120a0aa79
commit 0148b5a3cc

View File

@ -11,7 +11,7 @@ info:
servers: servers:
- url: '/' - url: '/'
description: Default ComfyUI server description: Default ComfyUI server
# Default security - can be overridden per operation # Default security - can be overridden per operation
security: [] security: []
@ -44,7 +44,6 @@ components:
- $ref: '#/components/schemas/EnablePackParams' - $ref: '#/components/schemas/EnablePackParams'
- $ref: '#/components/schemas/ModelMetadata' - $ref: '#/components/schemas/ModelMetadata'
required: [ui_id, client_id, kind, params] required: [ui_id, client_id, kind, params]
TaskHistoryItem: TaskHistoryItem:
type: object type: object
properties: properties:
@ -67,7 +66,6 @@ components:
status: status:
$ref: '#/components/schemas/TaskExecutionStatus' $ref: '#/components/schemas/TaskExecutionStatus'
required: [ui_id, client_id, kind, timestamp, result] required: [ui_id, client_id, kind, timestamp, result]
TaskExecutionStatus: TaskExecutionStatus:
type: object type: object
properties: properties:
@ -84,7 +82,6 @@ components:
type: string type: string
description: Additional status messages description: Additional status messages
required: [status_str, completed, messages] required: [status_str, completed, messages]
TaskStateMessage: TaskStateMessage:
type: object type: object
properties: properties:
@ -109,13 +106,11 @@ components:
$ref: '#/components/schemas/ManagerPackInstalled' $ref: '#/components/schemas/ManagerPackInstalled'
description: Map of currently installed node packages by name description: Map of currently installed node packages by name
required: [history, running_queue, pending_queue, installed_packs] required: [history, running_queue, pending_queue, installed_packs]
# WebSocket Message Models # WebSocket Message Models
ManagerMessageName: ManagerMessageName:
type: string type: string
enum: [cm-task-completed, cm-task-started, cm-queue-status] enum: [cm-task-completed, cm-task-started, cm-queue-status]
description: WebSocket message type constants for manager events description: WebSocket message type constants for manager events
MessageTaskDone: MessageTaskDone:
type: object type: object
properties: properties:
@ -137,7 +132,6 @@ components:
state: state:
$ref: '#/components/schemas/TaskStateMessage' $ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, result, kind, timestamp, state] required: [ui_id, result, kind, timestamp, state]
MessageTaskStarted: MessageTaskStarted:
type: object type: object
properties: properties:
@ -154,7 +148,6 @@ components:
state: state:
$ref: '#/components/schemas/TaskStateMessage' $ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, kind, timestamp, state] required: [ui_id, kind, timestamp, state]
MessageTaskFailed: MessageTaskFailed:
type: object type: object
properties: properties:
@ -174,14 +167,12 @@ components:
state: state:
$ref: '#/components/schemas/TaskStateMessage' $ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, error, kind, timestamp, state] required: [ui_id, error, kind, timestamp, state]
MessageUpdate: MessageUpdate:
oneOf: oneOf:
- $ref: '#/components/schemas/MessageTaskDone' - $ref: '#/components/schemas/MessageTaskDone'
- $ref: '#/components/schemas/MessageTaskStarted' - $ref: '#/components/schemas/MessageTaskStarted'
- $ref: '#/components/schemas/MessageTaskFailed' - $ref: '#/components/schemas/MessageTaskFailed'
description: Union type for all possible WebSocket message updates description: Union type for all possible WebSocket message updates
# Manager Package Models # Manager Package Models
ManagerPackInfo: ManagerPackInfo:
type: object type: object
@ -196,7 +187,6 @@ components:
type: string type: string
description: Task ID - generated internally description: Task ID - generated internally
required: [id, version] required: [id, version]
ManagerPackInstalled: ManagerPackInstalled:
type: object type: object
properties: properties:
@ -213,32 +203,26 @@ components:
type: boolean type: boolean
description: Whether the pack is enabled description: Whether the pack is enabled
required: [ver, enabled] required: [ver, enabled]
SelectedVersion: SelectedVersion:
type: string type: string
enum: [latest, nightly] enum: [latest, nightly]
description: Version selection for pack installation description: Version selection for pack installation
ManagerChannel: ManagerChannel:
type: string type: string
enum: [default, recent, legacy, forked, dev, tutorial] enum: [default, recent, legacy, forked, dev, tutorial]
description: Channel for pack sources description: Channel for pack sources
ManagerDatabaseSource: ManagerDatabaseSource:
type: string type: string
enum: [remote, local, cache] enum: [remote, local, cache]
description: Source for pack information description: Source for pack information
ManagerPackState: ManagerPackState:
type: string type: string
enum: [installed, disabled, not_installed, import_failed, needs_update] enum: [installed, disabled, not_installed, import_failed, needs_update]
description: Current state of a pack description: Current state of a pack
ManagerPackInstallType: ManagerPackInstallType:
type: string type: string
enum: [git-clone, copy, cnr] enum: [git-clone, copy, cnr]
description: Type of installation used for the pack description: Type of installation used for the pack
ManagerPack: ManagerPack:
allOf: allOf:
- $ref: '#/components/schemas/ManagerPackInfo' - $ref: '#/components/schemas/ManagerPackInfo'
@ -267,7 +251,7 @@ components:
$ref: '#/components/schemas/ManagerPackState' $ref: '#/components/schemas/ManagerPackState'
update-state: update-state:
type: [string, 'null'] type: [string, 'null']
enum: ['false', 'true', null] enum: ['false', 'true']
description: Update availability status description: Update availability status
stars: stars:
type: integer type: integer
@ -287,7 +271,6 @@ components:
description: Whether the pack is trusted description: Whether the pack is trusted
install_type: install_type:
$ref: '#/components/schemas/ManagerPackInstallType' $ref: '#/components/schemas/ManagerPackInstallType'
# Installation Parameters # Installation Parameters
InstallPackParams: InstallPackParams:
allOf: allOf:
@ -315,7 +298,6 @@ components:
type: boolean type: boolean
description: Whether to skip post-installation steps description: Whether to skip post-installation steps
required: [selected_version, mode, channel] required: [selected_version, mode, channel]
UpdateAllPacksParams: UpdateAllPacksParams:
type: object type: object
properties: properties:
@ -324,7 +306,6 @@ components:
ui_id: ui_id:
type: string type: string
description: Task ID - generated internally description: Task ID - generated internally
UpdatePackParams: UpdatePackParams:
type: object type: object
properties: properties:
@ -332,11 +313,9 @@ components:
type: string type: string
description: Name of the node package to update description: Name of the node package to update
node_ver: node_ver:
type: string type: [string, 'null']
description: Current version of the node package description: Current version of the node package
nullable: true
required: [node_name] required: [node_name]
UpdateComfyUIParams: UpdateComfyUIParams:
type: object type: object
properties: properties:
@ -345,11 +324,9 @@ components:
description: Whether to update to stable version (true) or nightly (false) description: Whether to update to stable version (true) or nightly (false)
default: true default: true
target_version: target_version:
type: string type: [string, 'null']
description: Specific version to switch to (for version switching operations) description: Specific version to switch to (for version switching operations)
nullable: true
required: [] required: []
FixPackParams: FixPackParams:
type: object type: object
properties: properties:
@ -360,7 +337,6 @@ components:
type: string type: string
description: Version of the node package description: Version of the node package
required: [node_name, node_ver] required: [node_name, node_ver]
UninstallPackParams: UninstallPackParams:
type: object type: object
properties: properties:
@ -372,7 +348,6 @@ components:
description: Whether this is an unknown/unregistered package description: Whether this is an unknown/unregistered package
default: false default: false
required: [node_name] required: [node_name]
DisablePackParams: DisablePackParams:
type: object type: object
properties: properties:
@ -384,7 +359,6 @@ components:
description: Whether this is an unknown/unregistered package description: Whether this is an unknown/unregistered package
default: false default: false
required: [node_name] required: [node_name]
EnablePackParams: EnablePackParams:
type: object type: object
properties: properties:
@ -392,7 +366,6 @@ components:
type: string type: string
description: ComfyUI Node Registry ID of the package to enable description: ComfyUI Node Registry ID of the package to enable
required: [cnr_id] required: [cnr_id]
# Queue Status Models # Queue Status Models
QueueStatus: QueueStatus:
type: object type: object
@ -416,23 +389,23 @@ components:
type: string type: string
description: Client ID (when filtered by client) description: Client ID (when filtered by client)
required: [total_count, done_count, in_progress_count, is_processing] required: [total_count, done_count, in_progress_count, is_processing]
# Mappings Model # Mappings Model
ManagerMappings: ManagerMappings:
type: object type: object
additionalProperties: additionalProperties:
type: array type: array
description: Tuple of [node_names, metadata]
items: items:
- type: array oneOf:
items: - type: array
type: string items:
description: List of ComfyNode names included in the pack
- type: object
properties:
title_aux:
type: string type: string
description: The display name of the pack description: List of ComfyNode names included in the pack
- type: object
properties:
title_aux:
type: string
description: The display name of the pack
# Model Management # Model Management
ModelMetadata: ModelMetadata:
type: object type: object
@ -459,7 +432,6 @@ components:
type: string type: string
description: ID for UI reference description: ID for UI reference
required: [name, type, url, filename] required: [name, type, url, filename]
# Legacy Node Package Model (for backward compatibility) # Legacy Node Package Model (for backward compatibility)
NodePackageMetadata: NodePackageMetadata:
type: object type: object
@ -497,12 +469,10 @@ components:
mode: mode:
type: string type: string
description: Source mode description: Source mode
# Snapshot Models # Snapshot Models
SnapshotItem: SnapshotItem:
type: string type: string
description: Name of the snapshot description: Name of the snapshot
# Error Models # Error Models
Error: Error:
type: object type: object
@ -511,14 +481,12 @@ components:
type: string type: string
description: Error message description: Error message
required: [error] required: [error]
# Response Models # Response Models
InstalledPacksResponse: InstalledPacksResponse:
type: object type: object
additionalProperties: additionalProperties:
$ref: '#/components/schemas/ManagerPackInstalled' $ref: '#/components/schemas/ManagerPackInstalled'
description: Map of pack names to their installation info description: Map of pack names to their installation info
HistoryResponse: HistoryResponse:
type: object type: object
properties: properties:
@ -527,7 +495,6 @@ components:
additionalProperties: additionalProperties:
$ref: '#/components/schemas/TaskHistoryItem' $ref: '#/components/schemas/TaskHistoryItem'
description: Map of task IDs to their history items description: Map of task IDs to their history items
HistoryListResponse: HistoryListResponse:
type: object type: object
properties: properties:
@ -536,7 +503,6 @@ components:
items: items:
type: string type: string
description: List of available batch history IDs description: List of available batch history IDs
# State Management Models # State Management Models
InstalledNodeInfo: InstalledNodeInfo:
type: object type: object
@ -562,7 +528,6 @@ components:
format: date-time format: date-time
description: ISO timestamp of installation description: ISO timestamp of installation
required: [name, version, install_method] required: [name, version, install_method]
InstalledModelInfo: InstalledModelInfo:
type: object type: object
properties: properties:
@ -587,7 +552,6 @@ components:
format: date-time format: date-time
description: ISO timestamp when added description: ISO timestamp when added
required: [name, path, type] required: [name, path, type]
ComfyUIVersionInfo: ComfyUIVersionInfo:
type: object type: object
properties: properties:
@ -609,7 +573,6 @@ components:
format: date-time format: date-time
description: ISO timestamp of last update description: ISO timestamp of last update
required: [version] required: [version]
BatchOperation: BatchOperation:
type: object type: object
properties: properties:
@ -645,7 +608,6 @@ components:
type: [string, 'null'] type: [string, 'null']
description: Client that initiated the operation description: Client that initiated the operation
required: [operation_id, operation_type, target, result, start_time] required: [operation_id, operation_type, target, result, start_time]
ComfyUISystemState: ComfyUISystemState:
type: object type: object
properties: properties:
@ -679,7 +641,6 @@ components:
additionalProperties: true additionalProperties: true
description: ComfyUI Manager configuration settings description: ComfyUI Manager configuration settings
required: [snapshot_time, comfyui_version, python_version, platform_info] required: [snapshot_time, comfyui_version, python_version, platform_info]
BatchExecutionRecord: BatchExecutionRecord:
type: object type: object
properties: properties:
@ -727,14 +688,12 @@ components:
minimum: 0 minimum: 0
default: 0 default: 0
required: [batch_id, start_time, state_before] required: [batch_id, start_time, state_before]
securitySchemes: securitySchemes:
securityLevel: securityLevel:
type: apiKey type: apiKey
in: header in: header
name: Security-Level name: Security-Level
description: Security level for sensitive operations description: Security level for sensitive operations
parameters: parameters:
modeParam: modeParam:
name: mode name: mode
@ -758,21 +717,18 @@ components:
required: true required: true
schema: schema:
type: string type: string
clientIdParam: clientIdParam:
name: client_id name: client_id
in: query in: query
description: Client ID for filtering tasks description: Client ID for filtering tasks
schema: schema:
type: string type: string
uiIdParam: uiIdParam:
name: ui_id name: ui_id
in: query in: query
description: Specific task ID to retrieve description: Specific task ID to retrieve
schema: schema:
type: string type: string
clientIdRequiredParam: clientIdRequiredParam:
name: client_id name: client_id
in: query in: query
@ -780,7 +736,6 @@ components:
description: Required client ID that initiated the request description: Required client ID that initiated the request
schema: schema:
type: string type: string
uiIdRequiredParam: uiIdRequiredParam:
name: ui_id name: ui_id
in: query in: query
@ -788,7 +743,6 @@ components:
description: Required unique task identifier description: Required unique task identifier
schema: schema:
type: string type: string
maxItemsParam: maxItemsParam:
name: max_items name: max_items
in: query in: query
@ -796,7 +750,6 @@ components:
schema: schema:
type: integer type: integer
minimum: 1 minimum: 1
offsetParam: offsetParam:
name: offset name: offset
in: query in: query
@ -804,7 +757,6 @@ components:
schema: schema:
type: integer type: integer
minimum: 0 minimum: 0
# API Paths # API Paths
paths: paths:
# Task Queue Management (v2 endpoints) # Task Queue Management (v2 endpoints)
@ -911,7 +863,6 @@ paths:
description: Invalid task data description: Invalid task data
'500': '500':
description: Internal server error description: Internal server error
/v2/manager/queue/status: /v2/manager/queue/status:
get: get:
summary: Get queue status summary: Get queue status
@ -925,7 +876,6 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/QueueStatus' $ref: '#/components/schemas/QueueStatus'
/v2/manager/queue/history: /v2/manager/queue/history:
get: get:
summary: Get task history summary: Get task history
@ -951,7 +901,6 @@ paths:
- type: object # File-based batch history - type: object # File-based batch history
'400': '400':
description: Error retrieving history description: Error retrieving history
/v2/manager/queue/history_list: /v2/manager/queue/history_list:
get: get:
summary: Get available batch history files summary: Get available batch history files
@ -965,8 +914,6 @@ paths:
$ref: '#/components/schemas/HistoryListResponse' $ref: '#/components/schemas/HistoryListResponse'
'400': '400':
description: Error retrieving history list description: Error retrieving history list
/v2/manager/queue/start: /v2/manager/queue/start:
get: get:
summary: Start queue processing summary: Start queue processing
@ -976,7 +923,6 @@ paths:
description: Processing started description: Processing started
'201': '201':
description: Processing already in progress description: Processing already in progress
/v2/manager/queue/reset: /v2/manager/queue/reset:
get: get:
summary: Reset queue summary: Reset queue
@ -984,7 +930,6 @@ paths:
responses: responses:
'200': '200':
description: Queue reset successfully description: Queue reset successfully
/v2/manager/queue/update_all: /v2/manager/queue/update_all:
get: get:
summary: Update all custom nodes summary: Update all custom nodes
@ -1004,7 +949,6 @@ paths:
description: Processing already in progress description: Processing already in progress
'403': '403':
description: Security policy violation description: Security policy violation
/v2/manager/queue/update_comfyui: /v2/manager/queue/update_comfyui:
get: get:
summary: Update ComfyUI summary: Update ComfyUI
@ -1017,7 +961,6 @@ paths:
description: Update queued successfully description: Update queued successfully
'400': '400':
description: Missing required parameters description: Missing required parameters
/v2/manager/queue/install_model: /v2/manager/queue/install_model:
post: post:
summary: Install model summary: Install model
@ -1037,7 +980,6 @@ paths:
description: Invalid model request description: Invalid model request
'403': '403':
description: Security policy violation description: Security policy violation
# Custom Nodes Endpoints (v2) # Custom Nodes Endpoints (v2)
/v2/customnode/getmappings: /v2/customnode/getmappings:
get: get:
@ -1052,7 +994,6 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/ManagerMappings' $ref: '#/components/schemas/ManagerMappings'
/v2/customnode/fetch_updates: /v2/customnode/fetch_updates:
get: get:
summary: Check for updates summary: Check for updates
@ -1085,7 +1026,6 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/InstalledPacksResponse' $ref: '#/components/schemas/InstalledPacksResponse'
/v2/customnode/import_fail_info: /v2/customnode/import_fail_info:
post: post:
summary: Get import failure information summary: Get import failure information
@ -1106,9 +1046,6 @@ paths:
description: Successful operation description: Successful operation
'400': '400':
description: No information available description: No information available
# Snapshot Management Endpoints (v2) # Snapshot Management Endpoints (v2)
/v2/snapshot/getlist: /v2/snapshot/getlist:
get: get:
@ -1126,7 +1063,6 @@ paths:
type: array type: array
items: items:
$ref: '#/components/schemas/SnapshotItem' $ref: '#/components/schemas/SnapshotItem'
/v2/snapshot/remove: /v2/snapshot/remove:
get: get:
summary: Remove snapshot summary: Remove snapshot
@ -1142,7 +1078,6 @@ paths:
description: Error removing snapshot description: Error removing snapshot
'403': '403':
description: Security policy violation description: Security policy violation
/v2/snapshot/restore: /v2/snapshot/restore:
get: get:
summary: Restore snapshot summary: Restore snapshot
@ -1158,7 +1093,6 @@ paths:
description: Error restoring snapshot description: Error restoring snapshot
'403': '403':
description: Security policy violation description: Security policy violation
/v2/snapshot/get_current: /v2/snapshot/get_current:
get: get:
summary: Get current snapshot summary: Get current snapshot
@ -1172,7 +1106,6 @@ paths:
type: object type: object
'400': '400':
description: Error creating snapshot description: Error creating snapshot
/v2/snapshot/save: /v2/snapshot/save:
get: get:
summary: Save snapshot summary: Save snapshot
@ -1182,7 +1115,6 @@ paths:
description: Snapshot saved successfully description: Snapshot saved successfully
'400': '400':
description: Error saving snapshot description: Error saving snapshot
# ComfyUI Management Endpoints (v2) # ComfyUI Management Endpoints (v2)
/v2/comfyui_manager/comfyui_versions: /v2/comfyui_manager/comfyui_versions:
get: get:
@ -1204,7 +1136,6 @@ paths:
type: string type: string
'400': '400':
description: Error retrieving versions description: Error retrieving versions
/v2/comfyui_manager/comfyui_switch_version: /v2/comfyui_manager/comfyui_switch_version:
get: get:
summary: Switch ComfyUI version summary: Switch ComfyUI version
@ -1223,9 +1154,7 @@ paths:
description: Version switch queued successfully description: Version switch queued successfully
'400': '400':
description: Missing required parameters or error switching version description: Missing required parameters or error switching version
# Configuration Endpoints (v2) # Configuration Endpoints (v2)
/v2/manager/db_mode: /v2/manager/db_mode:
get: get:
summary: Get or set database mode summary: Get or set database mode
@ -1245,7 +1174,6 @@ paths:
text/plain: text/plain:
schema: schema:
type: string type: string
/v2/manager/policy/update: /v2/manager/policy/update:
get: get:
summary: Get or set update policy summary: Get or set update policy
@ -1265,7 +1193,6 @@ paths:
text/plain: text/plain:
schema: schema:
type: string type: string
/v2/manager/channel_url_list: /v2/manager/channel_url_list:
get: get:
summary: Get or set channel URL summary: Get or set channel URL
@ -1296,7 +1223,6 @@ paths:
type: string type: string
url: url:
type: string type: string
/v2/manager/reboot: /v2/manager/reboot:
get: get:
summary: Reboot ComfyUI summary: Reboot ComfyUI
@ -1308,7 +1234,6 @@ paths:
description: Reboot initiated description: Reboot initiated
'403': '403':
description: Security policy violation description: Security policy violation
/v2/manager/version: /v2/manager/version:
get: get:
summary: Get manager version summary: Get manager version
@ -1320,7 +1245,6 @@ paths:
text/plain: text/plain:
schema: schema:
type: string type: string
/v2/manager/is_legacy_manager_ui: /v2/manager/is_legacy_manager_ui:
get: get:
summary: Check if legacy manager UI is enabled summary: Check if legacy manager UI is enabled