YT-AI-Automation / backend /src /openapi.py
github-actions
Sync Docker Space
9ff91b1
Raw History Blame Contribute Delete
3.45 kB
"""Versioned OpenAPI contract for the supported export pipeline."""
OPENAPI = {
"openapi": "3.1.0",
"info": {
"title": "TextBro Export API",
"version": "2.0.0",
"description": "Tracked text/HTML/screenshot export runs with SSE progress.",
},
"paths": {
"/runs/text-to-video": {"post": {"operationId": "startTextExport", "summary": "Queue text to HTML, screenshots, PPTX, or MP4", "requestBody": {"required": True, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TextExportRequest"}}}}, "responses": {"200": {"description": "Run queued", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RunStart"}}}}, "409": {"description": "Duplicate active/recent run"}}}},
"/runs/html-to-video": {"post": {"operationId": "startHtmlExport", "summary": "Queue HTML export", "responses": {"200": {"description": "Run queued"}}}},
"/runs/screenshots-to-video": {"post": {"operationId": "startScreenshotExport", "summary": "Queue screenshot export", "responses": {"200": {"description": "Run queued"}}}},
"/runs": {"get": {"operationId": "listRuns", "summary": "List persisted runs", "responses": {"200": {"description": "Run summaries"}}}},
"/runs/{run_id}": {"get": {"operationId": "getRun", "parameters": [{"name": "run_id", "in": "path", "required": True, "schema": {"type": "string"}}], "responses": {"200": {"description": "Run detail"}, "404": {"description": "Not found"}}}},
"/runs/{run_id}/events": {"get": {"operationId": "streamRunEvents", "summary": "Stream run progress as server-sent events", "parameters": [{"name": "run_id", "in": "path", "required": True, "schema": {"type": "string"}}], "responses": {"200": {"description": "text/event-stream"}}}},
"/runs/{run_id}/cancel": {"post": {"operationId": "cancelRun", "parameters": [{"name": "run_id", "in": "path", "required": True, "schema": {"type": "string"}}], "responses": {"200": {"description": "Cancellation accepted"}}}},
"/generate-sse": {"post": {"deprecated": True, "summary": "Legacy adapter to the tracked text export pipeline", "responses": {"200": {"description": "Legacy SSE stream"}}}},
"/healthz": {"get": {"operationId": "health", "responses": {"200": {"description": "Liveness"}}}},
"/preflight": {"get": {"operationId": "preflight", "responses": {"200": {"description": "Engine capabilities"}}}},
},
"components": {"schemas": {
"TextExportRequest": {"type": "object", "required": ["text"], "properties": {"text": {"type": "string", "minLength": 1}, "output_format": {"type": "string", "enum": ["html", "images", "pptx", "video"], "default": "images"}, "resolution": {"type": "string", "enum": ["720p", "1080p", "1440p", "4k"], "default": "1080p"}, "fps": {"type": "integer", "minimum": 1, "maximum": 60, "default": 30}, "intro_video_path": {"type": "string"}, "outro_video_path": {"type": "string"}, "narration_audio": {"type": "string"}, "background_music": {"type": "string"}, "logo_path": {"type": "string"}, "voiceover_files": {"type": "array", "items": {"type": ["string", "null"]}}}},
"RunStart": {"type": "object", "required": ["success", "run_id", "operation_id"], "properties": {"success": {"type": "boolean"}, "run_id": {"type": "string"}, "operation_id": {"type": "string"}, "queue_position": {"type": "integer"}, "estimated_total_seconds": {"type": "number"}}},
}},
}