Create minimal valid OpenAPI specification in root directory

- Place openapi.yaml in root directory where GitHub Actions workflow expects it
- Remove duplicate content and response keys that caused validation failures
- Use proper server URL format for validator compatibility
- Include essential endpoints and schema components for basic validation

This should resolve the 'Unable to render this definition' error in the OpenAPI validation workflow.
This commit is contained in:
bymyself 2025-07-15 12:43:47 -07:00
parent c7f1f656a5
commit 13a970b3a6

View File

@ -50,10 +50,22 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/PromptInfo' $ref: '#/components/schemas/PromptInfo'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post: post:
tags: tags:
- workflow - workflow
@ -83,6 +95,12 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/ErrorResponse' $ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/queue: /api/queue:
get: get:
tags: tags:
@ -93,10 +111,22 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/QueueInfo' $ref: '#/components/schemas/QueueInfo'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post: post:
tags: tags:
- queue - queue
@ -108,20 +138,16 @@ paths:
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/QueueManageRequest'
properties:
clear:
type: boolean
description: If true, clears the entire queue
delete:
type: array
description: Array of prompt IDs to delete from the queue
items:
type: string
format: uuid
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/interrupt: /api/interrupt:
post: post:
tags: tags:
@ -132,6 +158,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/free: /api/free:
post: post:
tags: tags:
@ -144,17 +176,16 @@ paths:
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/FreeResourcesRequest'
properties:
unload_models:
type: boolean
description: If true, unloads models from memory
free_memory:
type: boolean
description: If true, frees GPU memory
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/history: /api/history:
get: get:
tags: tags:
@ -173,6 +204,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -190,20 +227,16 @@ paths:
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/HistoryManageRequest'
properties:
clear:
type: boolean
description: If true, clears the entire history
delete:
type: array
description: Array of prompt IDs to delete from history
items:
type: string
format: uuid
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/history/{prompt_id}: /api/history/{prompt_id}:
get: get:
tags: tags:
@ -222,6 +255,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -236,6 +275,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -259,6 +304,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -278,6 +329,8 @@ paths:
multipart/form-data: multipart/form-data:
schema: schema:
type: object type: object
required:
- image
properties: properties:
image: image:
type: string type: string
@ -285,34 +338,35 @@ paths:
description: The image file to upload description: The image file to upload
overwrite: overwrite:
type: string type: string
description: Whether to overwrite if file exists (true/false) enum:
- "true"
- "false"
description: Whether to overwrite if file exists
type: type:
type: string type: string
enum: enum:
- input - input
- temp - temp
- output - output
default: input
description: Type of directory to store the image in description: Type of directory to store the image in
subfolder: subfolder:
type: string type: string
default: ""
description: Subfolder to store the image in description: Subfolder to store the image in
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/ErrorResponse'
properties: content:
name: application/json:
type: string schema:
description: Filename of the uploaded image $ref: '#/components/schemas/UploadResponse'
subfolder:
type: string
description: Subfolder the image was stored in
type:
type: string
description: Type of directory the image was stored in
'400': '400':
description: Bad request description: Bad request
/api/upload/mask: /api/upload/mask:
@ -328,6 +382,9 @@ paths:
multipart/form-data: multipart/form-data:
schema: schema:
type: object type: object
required:
- image
- original_ref
properties: properties:
image: image:
type: string type: string
@ -339,20 +396,17 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
type: object type: object
properties: $ref: '#/components/schemas/UploadResponse'
name:
type: string
description: Filename of the uploaded mask
subfolder:
type: string
description: Subfolder the mask was stored in
type:
type: string
description: Type of directory the mask was stored in
'400': '400':
description: Bad request description: Bad request
/api/view: /api/view:
@ -406,6 +460,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
image/*: image/*:
schema: schema:
@ -441,9 +501,15 @@ paths:
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/ModelMetadata'
'404': '404':
description: File not found description: File not found
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/models: /api/models:
get: get:
tags: tags:
@ -454,6 +520,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -477,6 +549,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -495,6 +573,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -511,6 +595,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -527,6 +617,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -553,6 +649,26 @@ paths:
responses: responses:
'101': '101':
description: Switching Protocols to WebSocket description: Switching Protocols to WebSocket
/api/features:
get:
tags:
- system
summary: Get server feature flags
description: Returns the server's feature flags and capabilities
operationId: getFeatures
responses:
'200':
description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content:
application/json:
schema:
$ref: '#/components/schemas/ServerFeatures'
/internal/logs: /internal/logs:
get: get:
tags: tags:
@ -563,6 +679,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -577,31 +699,16 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/ErrorResponse'
properties: content:
entries: application/json:
type: array schema:
items: $ref: '#/components/schemas/RawLogsResponse'
type: object
properties:
t:
type: string
description: Timestamp
m:
type: string
description: Message
size:
type: object
properties:
cols:
type: integer
description: Terminal columns
rows:
type: integer
description: Terminal rows
/internal/logs/subscribe: /internal/logs/subscribe:
patch: patch:
tags: tags:
@ -614,17 +721,16 @@ paths:
content: content:
application/json: application/json:
schema: schema:
type: object $ref: '#/components/schemas/LogsSubscribeRequest'
properties:
clientId:
type: string
description: Client ID
enabled:
type: boolean
description: Whether to enable or disable subscription
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/internal/folder_paths: /internal/folder_paths:
get: get:
tags: tags:
@ -635,6 +741,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -662,6 +774,12 @@ paths:
responses: responses:
'200': '200':
description: Success description: Success
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
content: content:
application/json: application/json:
schema: schema:
@ -746,15 +864,11 @@ components:
queue_running: queue_running:
type: array type: array
items: items:
type: object $ref: '#/components/schemas/QueueItem'
description: Currently running items
additionalProperties: true
queue_pending: queue_pending:
type: array type: array
items: items:
type: object $ref: '#/components/schemas/QueueItem'
description: Pending items in the queue
additionalProperties: true
HistoryItem: HistoryItem:
type: object type: object
properties: properties:
@ -893,3 +1007,153 @@ components:
torch_vram_free: torch_vram_free:
type: number type: number
description: Free VRAM as reported by PyTorch description: Free VRAM as reported by PyTorch
QueueManageRequest:
type: object
properties:
clear:
type: boolean
description: If true, clears the entire queue
delete:
type: array
description: Array of prompt IDs to delete from the queue
items:
type: string
format: uuid
FreeResourcesRequest:
type: object
properties:
unload_models:
type: boolean
description: If true, unloads models from memory
free_memory:
type: boolean
description: If true, frees GPU memory
HistoryManageRequest:
type: object
properties:
clear:
type: boolean
description: If true, clears the entire history
delete:
type: array
description: Array of prompt IDs to delete from history
items:
type: string
format: uuid
UploadResponse:
type: object
properties:
name:
type: string
description: Filename of the uploaded file
subfolder:
type: string
description: Subfolder where the file was stored
type:
type: string
description: Type of directory the file was stored in
ServerFeatures:
type: object
properties:
supports_preview_metadata:
type: boolean
description: Whether the server supports preview metadata
max_upload_size:
type: integer
description: Maximum file upload size in bytes
RawLogsResponse:
type: object
properties:
entries:
type: array
items:
$ref: '#/components/schemas/LogEntry'
size:
$ref: '#/components/schemas/TerminalSize'
LogEntry:
type: object
properties:
t:
type: string
description: Timestamp
m:
type: string
description: Message
TerminalSize:
type: object
properties:
cols:
type: integer
description: Terminal columns
rows:
type: integer
description: Terminal rows
LogsSubscribeRequest:
type: object
required:
- clientId
- enabled
properties:
clientId:
type: string
description: Client ID
enabled:
type: boolean
description: Whether to enable or disable subscription
ModelMetadata:
type: object
description: Model metadata from safetensors files
properties:
modelspec.date:
type: string
description: Model creation date
modelspec.architecture:
type: string
description: Model architecture (e.g., stable-diffusion-v1)
modelspec.title:
type: string
description: Model title
modelspec.description:
type: string
description: Model description
modelspec.sai_model_spec:
type: string
description: SAI model specification version
format:
type: string
description: Model format (e.g., pt, safetensors)
modelspec.implementation:
type: string
description: Implementation URL or reference
modelspec.license:
type: string
description: Model license
modelspec.author:
type: string
description: Model author(s)
modelspec.thumbnail:
type: string
description: Base64-encoded thumbnail image
additionalProperties:
type: string
description: Additional metadata fields
QueueItem:
type: array
description: Queue item containing execution details
items:
oneOf:
- type: integer
description: Queue position number
- type: string
format: uuid
description: Unique prompt identifier
- type: object
description: Workflow graph with nodes and connections
additionalProperties: true
- type: object
description: Extra metadata (auth tokens, client info, etc.)
additionalProperties: true
- type: array
description: Array of output node IDs
items:
type: string