{
  "openapi": "3.1.0",
  "info": {
    "title": "MIFY API",
    "description": "MIFY unified AI workflow orchestration platform API",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://mify.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/graphs/import/flowise": {
      "post": {
        "operationId": "postApiGraphsImportFlowise",
        "summary": "Import Flowise chatflow",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "201": {
            "description": "Chatflow imported"
          },
          "400": {
            "description": "Invalid chatflow data"
          }
        }
      }
    },
    "/api/graphs/import/dify": {
      "post": {
        "operationId": "postApiGraphsImportDify",
        "summary": "Import Dify app",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "201": {
            "description": "Dify app imported"
          },
          "400": {
            "description": "Invalid app data"
          }
        }
      }
    },
    "/api/graphs/import/langflow": {
      "post": {
        "operationId": "postApiGraphsImportLangflow",
        "summary": "Import Langflow flow",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "201": {
            "description": "Langflow flow imported"
          },
          "400": {
            "description": "Invalid flow data"
          }
        }
      }
    },
    "/api/graphs/import/n8n": {
      "post": {
        "operationId": "postApiGraphsImportN8n",
        "summary": "Import n8n workflow",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "201": {
            "description": "n8n workflow imported"
          },
          "400": {
            "description": "Invalid workflow data"
          }
        }
      }
    },
    "/api/graphs": {
      "get": {
        "operationId": "getApiGraphs",
        "summary": "List user's graphs",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "List of graphs"
          }
        }
      },
      "post": {
        "operationId": "postApiGraphs",
        "summary": "Create or update graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Graph updated"
          },
          "201": {
            "description": "Graph created"
          }
        }
      }
    },
    "/api/graphs/{id}": {
      "get": {
        "operationId": "getApiGraphsById",
        "summary": "Get graph by ID",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Graph details"
          },
          "404": {
            "description": "Graph not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiGraphsById",
        "summary": "Delete graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Graph deleted"
          },
          "404": {
            "description": "Graph not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "put": {
        "operationId": "putApiGraphsById",
        "summary": "Update graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Graph updated"
          },
          "404": {
            "description": "Graph not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/baseline": {
      "post": {
        "operationId": "postApiGraphsByIdBaseline",
        "summary": "Set baseline for graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Baseline set"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "get": {
        "operationId": "getApiGraphsByIdBaseline",
        "summary": "Get graph baseline",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Baseline data"
          },
          "404": {
            "description": "No baseline set"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiGraphsByIdBaseline",
        "summary": "Delete graph baseline",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Baseline deleted"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/comparison-history": {
      "get": {
        "operationId": "getApiGraphsByIdComparisonHistory",
        "summary": "Get comparison history for graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Comparison history"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/run-templates": {
      "post": {
        "operationId": "postApiGraphsByIdRunTemplates",
        "summary": "Create run template for graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "201": {
            "description": "Run template created"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "get": {
        "operationId": "getApiGraphsByIdRunTemplates",
        "summary": "List run templates for graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Run templates"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/run-templates/default": {
      "get": {
        "operationId": "getApiGraphsByIdRunTemplatesDefault",
        "summary": "Get default run template for graph",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Default run template"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/run-templates/{templateId}/execute": {
      "post": {
        "operationId": "postApiGraphsByIdRunTemplatesByTemplateIdExecute",
        "summary": "Execute graph with run template",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Execution result"
          },
          "404": {
            "description": "Graph or template not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "templateId",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/compare-to-flowise": {
      "post": {
        "operationId": "postApiGraphsByIdCompareToFlowise",
        "summary": "Compare graph to Flowise chatflow",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Comparison result"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/compare-to-langflow": {
      "post": {
        "operationId": "postApiGraphsByIdCompareToLangflow",
        "summary": "Compare graph to Langflow flow",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Comparison result"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/{id}/compare-to-dify": {
      "post": {
        "operationId": "postApiGraphsByIdCompareToDify",
        "summary": "Compare graph to Dify app",
        "tags": [
          "Graphs"
        ],
        "responses": {
          "200": {
            "description": "Comparison result"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/graphs/rag/ingest": {
      "post": {
        "operationId": "postApiGraphsRagIngest",
        "summary": "Ingest documents for RAG",
        "tags": [
          "Graphs",
          "RAG"
        ],
        "responses": {
          "200": {
            "description": "Ingest result"
          },
          "400": {
            "description": "Invalid ingest request"
          }
        }
      }
    },
    "/api/graphs/rag/query": {
      "post": {
        "operationId": "postApiGraphsRagQuery",
        "summary": "Query RAG knowledge base",
        "tags": [
          "Graphs",
          "RAG"
        ],
        "responses": {
          "200": {
            "description": "Query result"
          },
          "400": {
            "description": "Invalid query"
          }
        }
      }
    },
    "/api/templates": {
      "get": {
        "operationId": "getApiTemplates",
        "summary": "List all workflow templates",
        "tags": [
          "Templates"
        ],
        "responses": {
          "200": {
            "description": "List of templates"
          }
        }
      }
    },
    "/api/templates/categories": {
      "get": {
        "operationId": "getApiTemplatesCategories",
        "summary": "List template categories",
        "tags": [
          "Templates"
        ],
        "responses": {
          "200": {
            "description": "Template categories"
          }
        }
      }
    },
    "/api/templates/enterprise": {
      "get": {
        "operationId": "getApiTemplatesEnterprise",
        "summary": "List enterprise templates with service availability",
        "tags": [
          "Templates"
        ],
        "responses": {
          "200": {
            "description": "Enterprise templates"
          }
        }
      }
    },
    "/api/templates/{id}": {
      "get": {
        "operationId": "getApiTemplatesById",
        "summary": "Get template by ID",
        "tags": [
          "Templates"
        ],
        "responses": {
          "200": {
            "description": "Template details"
          },
          "404": {
            "description": "Template not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/content-gen/queue": {
      "post": {
        "operationId": "postApiContentGenQueue",
        "summary": "Submit to MIFY Queue via workflow",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "202": {
            "description": "Submission accepted"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/content-gen/runs": {
      "get": {
        "operationId": "getApiContentGenRuns",
        "summary": "List user's content generation history",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "200": {
            "description": "List of runs"
          }
        }
      }
    },
    "/api/content-gen/runs/{id}": {
      "get": {
        "operationId": "getApiContentGenRunsById",
        "summary": "Get content generation run detail",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "200": {
            "description": "Run details"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiContentGenRunsById",
        "summary": "Soft-delete a content generation run",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "200": {
            "description": "Run deleted"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/content-gen/runs/{id}/cancel": {
      "post": {
        "operationId": "postApiContentGenRunsByIdCancel",
        "summary": "Cancel a content generation run",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "200": {
            "description": "Run cancelled"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/content-gen/comfyui-local/finalize": {
      "post": {
        "operationId": "postApiContentGenComfyuiLocalFinalize",
        "summary": "Finalize a local ComfyUI run",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "201": {
            "description": "Run finalized"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/content-gen/provider": {
      "post": {
        "operationId": "postApiContentGenProvider",
        "summary": "Submit to AI provider",
        "tags": [
          "Content Generation"
        ],
        "responses": {
          "200": {
            "description": "Provider result"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/execution/runs": {
      "post": {
        "operationId": "postApiExecutionRuns",
        "summary": "Submit a new execution run",
        "tags": [
          "Execution Runs"
        ],
        "responses": {
          "202": {
            "description": "Run submitted"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiExecutionRuns",
        "summary": "List execution runs",
        "tags": [
          "Execution Runs"
        ],
        "responses": {
          "200": {
            "description": "List of runs"
          }
        }
      }
    },
    "/api/execution/runs/{id}": {
      "get": {
        "operationId": "getApiExecutionRunsById",
        "summary": "Get execution run status",
        "tags": [
          "Execution Runs"
        ],
        "responses": {
          "200": {
            "description": "Run status"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/runs/{id}/cancel": {
      "post": {
        "operationId": "postApiExecutionRunsByIdCancel",
        "summary": "Cancel an execution run",
        "tags": [
          "Execution Runs"
        ],
        "responses": {
          "200": {
            "description": "Run cancelled"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training/submit": {
      "post": {
        "operationId": "postApiExecutionTrainingSubmit",
        "summary": "Submit a training run",
        "tags": [
          "Training"
        ],
        "responses": {
          "202": {
            "description": "Training run submitted"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/execution/training/presets": {
      "get": {
        "operationId": "getApiExecutionTrainingPresets",
        "summary": "List training presets",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Training presets"
          }
        }
      }
    },
    "/api/execution/training/{id}": {
      "get": {
        "operationId": "getApiExecutionTrainingById",
        "summary": "Get training run status",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Training run status"
          },
          "404": {
            "description": "Training run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training/{id}/cancel": {
      "post": {
        "operationId": "postApiExecutionTrainingByIdCancel",
        "summary": "Cancel a training run",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Training run cancelled"
          },
          "404": {
            "description": "Training run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training": {
      "get": {
        "operationId": "getApiExecutionTraining",
        "summary": "List training runs",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "List of training runs"
          }
        }
      }
    },
    "/api/execution/training/datasets/upload": {
      "post": {
        "operationId": "postApiExecutionTrainingDatasetsUpload",
        "summary": "Create a training dataset",
        "tags": [
          "Training"
        ],
        "responses": {
          "201": {
            "description": "Dataset created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/execution/training/datasets/{id}/presign-file": {
      "post": {
        "operationId": "postApiExecutionTrainingDatasetsByIdPresignFile",
        "summary": "Get presigned URL for dataset file upload",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Presigned URL"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training/datasets/{id}/finalize": {
      "post": {
        "operationId": "postApiExecutionTrainingDatasetsByIdFinalize",
        "summary": "Finalize a training dataset",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Dataset finalized"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training/datasets": {
      "get": {
        "operationId": "getApiExecutionTrainingDatasets",
        "summary": "List training datasets",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "List of datasets"
          }
        }
      }
    },
    "/api/execution/training/datasets/{id}": {
      "delete": {
        "operationId": "deleteApiExecutionTrainingDatasetsById",
        "summary": "Delete a training dataset",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Dataset deleted"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/execution/training/models": {
      "get": {
        "operationId": "getApiExecutionTrainingModels",
        "summary": "List trained models",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "List of models"
          }
        }
      }
    },
    "/api/execution/training/models/{id}": {
      "delete": {
        "operationId": "deleteApiExecutionTrainingModelsById",
        "summary": "Delete a trained model",
        "tags": [
          "Training"
        ],
        "responses": {
          "200": {
            "description": "Model deleted"
          },
          "404": {
            "description": "Model not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/batch": {
      "post": {
        "operationId": "postApiBatch",
        "summary": "Create a new batch job",
        "tags": [
          "Batch"
        ],
        "responses": {
          "201": {
            "description": "Batch created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiBatch",
        "summary": "List batch jobs",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "List of batch jobs"
          }
        }
      }
    },
    "/api/batch/{id}": {
      "get": {
        "operationId": "getApiBatchById",
        "summary": "Get batch job status",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "Batch status"
          },
          "404": {
            "description": "Batch not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/batch/{id}/start": {
      "post": {
        "operationId": "postApiBatchByIdStart",
        "summary": "Start a batch job",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "Batch started"
          },
          "404": {
            "description": "Batch not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/batch/{id}/cancel": {
      "post": {
        "operationId": "postApiBatchByIdCancel",
        "summary": "Cancel a batch job",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "Batch cancelled"
          },
          "404": {
            "description": "Batch not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/batch/{id}/pause": {
      "post": {
        "operationId": "postApiBatchByIdPause",
        "summary": "Pause a batch job",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "Batch paused"
          },
          "404": {
            "description": "Batch not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/batch/{id}/resume": {
      "post": {
        "operationId": "postApiBatchByIdResume",
        "summary": "Resume a batch job",
        "tags": [
          "Batch"
        ],
        "responses": {
          "200": {
            "description": "Batch resumed"
          },
          "404": {
            "description": "Batch not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/knowledge-bases": {
      "post": {
        "operationId": "postApiKnowledgeBases",
        "summary": "Create a new knowledge base",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "201": {
            "description": "Knowledge base created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiKnowledgeBases",
        "summary": "List knowledge bases for workspace",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "200": {
            "description": "List of knowledge bases"
          }
        }
      }
    },
    "/api/knowledge-bases/{id}": {
      "get": {
        "operationId": "getApiKnowledgeBasesById",
        "summary": "Get a knowledge base by ID",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "200": {
            "description": "Knowledge base details"
          },
          "404": {
            "description": "Knowledge base not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "patch": {
        "operationId": "patchApiKnowledgeBasesById",
        "summary": "Update a knowledge base",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "200": {
            "description": "Knowledge base updated"
          },
          "404": {
            "description": "Knowledge base not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiKnowledgeBasesById",
        "summary": "Delete a knowledge base",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "200": {
            "description": "Knowledge base deleted"
          },
          "404": {
            "description": "Knowledge base not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/knowledge-bases/{id}/ingest": {
      "post": {
        "operationId": "postApiKnowledgeBasesByIdIngest",
        "summary": "Ingest a document into the knowledge base",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "201": {
            "description": "Document ingested"
          },
          "400": {
            "description": "Invalid request"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/knowledge-bases/{id}/search": {
      "post": {
        "operationId": "postApiKnowledgeBasesByIdSearch",
        "summary": "Search the knowledge base",
        "tags": [
          "Knowledge Bases"
        ],
        "responses": {
          "200": {
            "description": "Search results"
          },
          "400": {
            "description": "Invalid query"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/evaluations/datasets": {
      "post": {
        "operationId": "postApiEvaluationsDatasets",
        "summary": "Create a dataset",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "201": {
            "description": "Dataset created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiEvaluationsDatasets",
        "summary": "List datasets for workspace",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "List of datasets"
          }
        }
      }
    },
    "/api/evaluations/datasets/{id}": {
      "get": {
        "operationId": "getApiEvaluationsDatasetsById",
        "summary": "Get a dataset by ID",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "Dataset details"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "patch": {
        "operationId": "patchApiEvaluationsDatasetsById",
        "summary": "Update a dataset",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "Dataset updated"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiEvaluationsDatasetsById",
        "summary": "Delete a dataset",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "Dataset deleted"
          },
          "404": {
            "description": "Dataset not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/evaluations/datasets/{id}/run": {
      "post": {
        "operationId": "postApiEvaluationsDatasetsByIdRun",
        "summary": "Run evaluation on a dataset",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "201": {
            "description": "Evaluation run started"
          },
          "400": {
            "description": "Invalid request"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/evaluations/datasets/{id}/runs": {
      "get": {
        "operationId": "getApiEvaluationsDatasetsByIdRuns",
        "summary": "List evaluation runs for a dataset",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "List of runs"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/evaluations/runs/{id}/results": {
      "get": {
        "operationId": "getApiEvaluationsRunsByIdResults",
        "summary": "Get evaluation run results",
        "tags": [
          "Evaluations"
        ],
        "responses": {
          "200": {
            "description": "Run results"
          },
          "404": {
            "description": "Run not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/chat/sessions": {
      "get": {
        "operationId": "getApiChatSessions",
        "summary": "List chat sessions for current user",
        "tags": [
          "Chat"
        ],
        "responses": {
          "200": {
            "description": "List of sessions"
          }
        }
      },
      "post": {
        "operationId": "postApiChatSessions",
        "summary": "Create a new chat session",
        "tags": [
          "Chat"
        ],
        "responses": {
          "201": {
            "description": "Session created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/chat/sessions/{id}": {
      "get": {
        "operationId": "getApiChatSessionsById",
        "summary": "Get a chat session by ID",
        "tags": [
          "Chat"
        ],
        "responses": {
          "200": {
            "description": "Session details"
          },
          "404": {
            "description": "Session not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/chat/sessions/{id}/close": {
      "post": {
        "operationId": "postApiChatSessionsByIdClose",
        "summary": "Close a chat session",
        "tags": [
          "Chat"
        ],
        "responses": {
          "200": {
            "description": "Session closed"
          },
          "404": {
            "description": "Session not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/chat/sessions/{id}/messages": {
      "get": {
        "operationId": "getApiChatSessionsByIdMessages",
        "summary": "Get messages for a chat session",
        "tags": [
          "Chat"
        ],
        "responses": {
          "200": {
            "description": "List of messages"
          },
          "404": {
            "description": "Session not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "post": {
        "operationId": "postApiChatSessionsByIdMessages",
        "summary": "Send a message in a chat session",
        "tags": [
          "Chat"
        ],
        "responses": {
          "201": {
            "description": "Message sent"
          },
          "400": {
            "description": "Invalid request"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/tools": {
      "get": {
        "operationId": "getApiTools",
        "summary": "List tools",
        "tags": [
          "Tools"
        ],
        "responses": {
          "200": {
            "description": "List of tools"
          }
        }
      },
      "post": {
        "operationId": "postApiTools",
        "summary": "Create a tool",
        "tags": [
          "Tools"
        ],
        "responses": {
          "201": {
            "description": "Tool created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/tools/{id}": {
      "get": {
        "operationId": "getApiToolsById",
        "summary": "Get tool by ID",
        "tags": [
          "Tools"
        ],
        "responses": {
          "200": {
            "description": "Tool details"
          },
          "404": {
            "description": "Tool not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "patch": {
        "operationId": "patchApiToolsById",
        "summary": "Update a tool",
        "tags": [
          "Tools"
        ],
        "responses": {
          "200": {
            "description": "Tool updated"
          },
          "404": {
            "description": "Tool not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiToolsById",
        "summary": "Delete a tool",
        "tags": [
          "Tools"
        ],
        "responses": {
          "200": {
            "description": "Tool deleted"
          },
          "404": {
            "description": "Tool not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/register": {
      "post": {
        "operationId": "postApiPluginsRegister",
        "summary": "Register a new plugin",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "201": {
            "description": "Plugin registered"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/plugins": {
      "get": {
        "operationId": "getApiPlugins",
        "summary": "List plugins",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "List of plugins"
          }
        }
      }
    },
    "/api/plugins/{id}": {
      "get": {
        "operationId": "getApiPluginsById",
        "summary": "Get a plugin by ID",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin details"
          },
          "404": {
            "description": "Plugin not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiPluginsById",
        "summary": "Unregister a plugin",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin unregistered"
          },
          "404": {
            "description": "Plugin not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/{id}/disable": {
      "post": {
        "operationId": "postApiPluginsByIdDisable",
        "summary": "Disable a plugin",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin disabled"
          },
          "404": {
            "description": "Plugin not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/{id}/enable": {
      "post": {
        "operationId": "postApiPluginsByIdEnable",
        "summary": "Enable a plugin",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin enabled"
          },
          "404": {
            "description": "Plugin not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/{id}/pin": {
      "post": {
        "operationId": "postApiPluginsByIdPin",
        "summary": "Pin plugin to a specific version",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin pinned"
          },
          "400": {
            "description": "Invalid request"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/{id}/unpin": {
      "post": {
        "operationId": "postApiPluginsByIdUnpin",
        "summary": "Unpin plugin version",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin unpinned"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/{id}/nodes": {
      "get": {
        "operationId": "getApiPluginsByIdNodes",
        "summary": "Get nodes provided by a plugin",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "Plugin nodes"
          },
          "404": {
            "description": "Plugin not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/plugins/nodes/all": {
      "get": {
        "operationId": "getApiPluginsNodesAll",
        "summary": "Get all nodes from all active plugins",
        "tags": [
          "Plugins"
        ],
        "responses": {
          "200": {
            "description": "All plugin nodes"
          }
        }
      }
    },
    "/api/ai-builder/generate": {
      "post": {
        "operationId": "postApiAiBuilderGenerate",
        "summary": "Generate a workflow graph from natural language",
        "tags": [
          "AI Builder"
        ],
        "responses": {
          "201": {
            "description": "Graph generated"
          },
          "400": {
            "description": "Invalid prompt"
          }
        }
      }
    },
    "/api/prompt-lab/prompts": {
      "get": {
        "operationId": "getApiPromptLabPrompts",
        "summary": "List all distinct prompt names",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "200": {
            "description": "List of prompts"
          }
        }
      }
    },
    "/api/prompt-lab/versions": {
      "get": {
        "operationId": "getApiPromptLabVersions",
        "summary": "Get versions of a prompt",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "200": {
            "description": "Prompt versions"
          }
        }
      },
      "post": {
        "operationId": "postApiPromptLabVersions",
        "summary": "Create a new prompt version",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "201": {
            "description": "Version created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/prompt-lab/versions/{promptName}/{version}": {
      "delete": {
        "operationId": "deleteApiPromptLabVersionsByPromptNameByVersion",
        "summary": "Delete a specific prompt version",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "200": {
            "description": "Version deleted"
          },
          "404": {
            "description": "Version not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "promptName",
            "required": true
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "version",
            "required": true
          }
        ]
      }
    },
    "/api/prompt-lab/prompts/{promptName}": {
      "delete": {
        "operationId": "deleteApiPromptLabPromptsByPromptName",
        "summary": "Delete all versions of a prompt",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "200": {
            "description": "Prompt deleted"
          },
          "404": {
            "description": "Prompt not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "promptName",
            "required": true
          }
        ]
      }
    },
    "/api/prompt-lab/compare": {
      "post": {
        "operationId": "postApiPromptLabCompare",
        "summary": "Compare two prompt versions",
        "tags": [
          "Prompt Lab"
        ],
        "responses": {
          "200": {
            "description": "Comparison result"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/vector-stores": {
      "post": {
        "operationId": "postApiVectorStores",
        "summary": "Create a vector store configuration",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "201": {
            "description": "Vector store created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiVectorStores",
        "summary": "List vector store configurations",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "200": {
            "description": "List of vector stores"
          }
        }
      }
    },
    "/api/vector-stores/{id}": {
      "get": {
        "operationId": "getApiVectorStoresById",
        "summary": "Get a vector store configuration by ID",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "200": {
            "description": "Vector store details"
          },
          "404": {
            "description": "Vector store not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "patch": {
        "operationId": "patchApiVectorStoresById",
        "summary": "Update a vector store configuration",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "200": {
            "description": "Vector store updated"
          },
          "404": {
            "description": "Vector store not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiVectorStoresById",
        "summary": "Delete a vector store configuration",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "200": {
            "description": "Vector store deleted"
          },
          "404": {
            "description": "Vector store not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/vector-stores/{id}/health": {
      "post": {
        "operationId": "postApiVectorStoresByIdHealth",
        "summary": "Check health of a vector store backend",
        "tags": [
          "Vector Stores"
        ],
        "responses": {
          "200": {
            "description": "Health status"
          },
          "404": {
            "description": "Vector store not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/triggers": {
      "post": {
        "operationId": "postApiTriggers",
        "summary": "Create and start a new trigger",
        "tags": [
          "Triggers"
        ],
        "responses": {
          "201": {
            "description": "Trigger created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "get": {
        "operationId": "getApiTriggers",
        "summary": "List triggers",
        "tags": [
          "Triggers"
        ],
        "responses": {
          "200": {
            "description": "List of triggers"
          }
        }
      }
    },
    "/api/triggers/{id}/stop": {
      "post": {
        "operationId": "postApiTriggersByIdStop",
        "summary": "Stop a running trigger",
        "tags": [
          "Triggers"
        ],
        "responses": {
          "200": {
            "description": "Trigger stopped"
          },
          "404": {
            "description": "Trigger not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/triggers/{id}": {
      "get": {
        "operationId": "getApiTriggersById",
        "summary": "Get a trigger's status",
        "tags": [
          "Triggers"
        ],
        "responses": {
          "200": {
            "description": "Trigger status"
          },
          "404": {
            "description": "Trigger not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/triggers/{id}/health": {
      "get": {
        "operationId": "getApiTriggersByIdHealth",
        "summary": "Get trigger health status",
        "tags": [
          "Triggers"
        ],
        "responses": {
          "200": {
            "description": "Health status"
          },
          "404": {
            "description": "Trigger not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/packs": {
      "get": {
        "operationId": "getApiPacks",
        "summary": "List visible packs",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "List of packs"
          }
        }
      },
      "post": {
        "operationId": "postApiPacks",
        "summary": "Create a pack",
        "tags": [
          "Packs"
        ],
        "responses": {
          "201": {
            "description": "Pack created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/packs/{id}": {
      "get": {
        "operationId": "getApiPacksById",
        "summary": "Get pack detail",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "Pack details"
          },
          "404": {
            "description": "Pack not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "put": {
        "operationId": "putApiPacksById",
        "summary": "Update pack metadata",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "Pack updated"
          },
          "404": {
            "description": "Pack not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiPacksById",
        "summary": "Soft-delete a pack",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "Pack deleted"
          },
          "404": {
            "description": "Pack not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/packs/{id}/versions": {
      "get": {
        "operationId": "getApiPacksByIdVersions",
        "summary": "List all versions of a pack",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "Pack versions"
          },
          "404": {
            "description": "Pack not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "post": {
        "operationId": "postApiPacksByIdVersions",
        "summary": "Create a new pack version",
        "tags": [
          "Packs"
        ],
        "responses": {
          "201": {
            "description": "Version created"
          },
          "400": {
            "description": "Invalid request"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/packs/{id}/versions/{ver}": {
      "get": {
        "operationId": "getApiPacksByIdVersionsByVer",
        "summary": "Get a specific pack version",
        "tags": [
          "Packs"
        ],
        "responses": {
          "200": {
            "description": "Pack version details"
          },
          "404": {
            "description": "Version not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          },
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "ver",
            "required": true
          }
        ]
      }
    },
    "/api/comfyui/workflows": {
      "get": {
        "operationId": "getApiComfyuiWorkflows",
        "summary": "List ComfyUI workflows",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "List of workflows"
          }
        }
      },
      "post": {
        "operationId": "postApiComfyuiWorkflows",
        "summary": "Create a ComfyUI workflow",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "201": {
            "description": "Workflow created"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/comfyui/workflows/{id}": {
      "get": {
        "operationId": "getApiComfyuiWorkflowsById",
        "summary": "Get ComfyUI workflow details",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "Workflow details"
          },
          "404": {
            "description": "Workflow not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "put": {
        "operationId": "putApiComfyuiWorkflowsById",
        "summary": "Update a ComfyUI workflow",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "Workflow updated"
          },
          "404": {
            "description": "Workflow not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      },
      "delete": {
        "operationId": "deleteApiComfyuiWorkflowsById",
        "summary": "Delete a ComfyUI workflow",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "Workflow deleted"
          },
          "404": {
            "description": "Workflow not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/comfyui/jobs": {
      "post": {
        "operationId": "postApiComfyuiJobs",
        "summary": "Submit a ComfyUI job",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "202": {
            "description": "Job submitted"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/comfyui/jobs/{id}": {
      "get": {
        "operationId": "getApiComfyuiJobsById",
        "summary": "Get ComfyUI job status",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "Job status"
          },
          "404": {
            "description": "Job not found"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    },
    "/api/comfyui/jobs/{id}/progress": {
      "get": {
        "operationId": "getApiComfyuiJobsByIdProgress",
        "summary": "Stream ComfyUI job progress via SSE",
        "tags": [
          "ComfyUI"
        ],
        "responses": {
          "200": {
            "description": "SSE progress stream"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "id",
            "required": true
          }
        ]
      }
    }
  },
  "components": {}
}