{"openapi":"3.1.0","info":{"title":"Text-to-Diagram API","description":"Generate Mermaid flowchart diagrams from natural language descriptions","version":"2.0.0"},"paths":{"/":{"get":{"tags":["Health"],"summary":"Root","description":"Root endpoint - API info.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Health check endpoint.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/generate-mermaid":{"post":{"tags":["Mermaid"],"summary":"Create Mermaid Diagram","description":"Generate a Mermaid flowchart from a natural language description and auto-save it.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    diagram_request: DiagramRequest containing the description\n    request: FastAPI Request object (required for rate limiting)\n    current_user: Authenticated user (injected by Auth0 middleware)\n    db: Database session\n\nReturns:\n    MermaidResponse with Mermaid syntax code and saved diagram ID\n\nRate limit: Configurable via RATE_LIMIT_PER_MINUTE env var (default: 10/minute)","operationId":"create_mermaid_diagram_api_generate_mermaid_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MermaidResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/edit-mermaid":{"post":{"tags":["Mermaid"],"summary":"Edit Existing Mermaid Diagram","description":"Edit an existing Mermaid flowchart using AI based on natural language instructions.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nIf context contains savedDiagramId, fetches the latest Mermaid code from database\nto ensure manual user edits (from auto-save) are included in the AI edit.\n\nArgs:\n    edit_request: DiagramEditRequest containing current Mermaid code, edit instruction, and optional context\n    request: FastAPI Request object (required for rate limiting)\n    current_user: Authenticated user (injected by Auth0 middleware)\n    db: Database session\n\nReturns:\n    MermaidResponse with edited Mermaid syntax code and updated title\n\nRate limit: Configurable via RATE_LIMIT_PER_MINUTE env var (default: 10/minute)","operationId":"edit_existing_mermaid_diagram_api_edit_mermaid_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramEditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MermaidResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/generate-mermaid-from-image":{"post":{"tags":["Mermaid"],"summary":"Create Mermaid Diagram From Image","description":"Generate a Mermaid flowchart from an uploaded image and auto-save it.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    request: FastAPI Request object (required for rate limiting)\n    image: Uploaded image file (PNG, JPG, JPEG)\n    description: Optional text description to supplement image analysis\n    current_user: Authenticated user (injected by Auth0 middleware)\n    db: Database session\n\nReturns:\n    MermaidResponse with Mermaid syntax code and saved diagram ID\n\nRate limit: Configurable via RATE_LIMIT_IMAGE_PER_MINUTE env var (default: 5/minute)\nNote: Lower rate limit than text generation due to higher processing costs.","operationId":"create_mermaid_diagram_from_image_api_generate_mermaid_from_image_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_mermaid_diagram_from_image_api_generate_mermaid_from_image_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MermaidResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/render-mermaid":{"post":{"tags":["Mermaid"],"summary":"Render Mermaid Diagram","description":"Validate and render a Mermaid diagram from pre-generated Mermaid code (MCP server endpoint).\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nThis endpoint is specifically for the MCP server to render diagrams from Mermaid code\ngenerated by ChatGPT. It validates syntax using the official mermaid.js parser and saves\nthe diagram to the database.\n\nArgs:\n    render_request: MermaidRenderRequest containing mermaid_code and diagram_type\n    request: FastAPI Request object (required for rate limiting)\n    current_user: Authenticated user (injected by Auth0 middleware)\n    db: Database session\n\nReturns:\n    MermaidResponse with validated Mermaid code and saved diagram ID\n\nRate limit: Configurable via RATE_LIMIT_PER_MINUTE env var (default: 10/minute)","operationId":"render_mermaid_diagram_api_render_mermaid_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MermaidRenderRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MermaidResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/diagrams":{"post":{"tags":["Diagrams"],"summary":"Save Diagram","description":"Save a generated diagram to the database.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    save_request: Diagram data to save\n    db: Database session\n    current_user: Authenticated user\n\nReturns:\n    DiagramResponse with saved diagram data including ID","operationId":"save_diagram_api_diagrams_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramSaveRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Diagrams"],"summary":"List Diagrams","description":"List all diagrams for the authenticated user.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    skip: Number of records to skip (pagination)\n    limit: Maximum number of records to return (max 100)\n    db: Database session\n    current_user: Authenticated user\n\nReturns:\n    DiagramListResponse with list of diagrams and total count","operationId":"list_diagrams_api_diagrams_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/diagrams/{diagram_id}":{"get":{"tags":["Diagrams"],"summary":"Get Diagram","description":"Get a specific diagram by ID.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    diagram_id: ID of the diagram to retrieve\n    db: Database session\n    current_user: Authenticated user\n\nReturns:\n    DiagramResponse with diagram data\n\nRaises:\n    404: If diagram not found or doesn't belong to user","operationId":"get_diagram_api_diagrams__diagram_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"diagram_id","in":"path","required":true,"schema":{"type":"integer","title":"Diagram Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Diagrams"],"summary":"Update Diagram","description":"Update a specific diagram by ID.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    diagram_id: ID of the diagram to update\n    update_request: Fields to update (only provided fields will be updated)\n    db: Database session\n    current_user: Authenticated user\n\nReturns:\n    DiagramResponse with updated diagram data\n\nRaises:\n    404: If diagram not found or doesn't belong to user","operationId":"update_diagram_api_diagrams__diagram_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"diagram_id","in":"path","required":true,"schema":{"type":"integer","title":"Diagram Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Diagrams"],"summary":"Delete Diagram","description":"Delete a specific diagram by ID.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    diagram_id: ID of the diagram to delete\n    db: Database session\n    current_user: Authenticated user\n\nReturns:\n    204 No Content on success\n\nRaises:\n    404: If diagram not found or doesn't belong to user","operationId":"delete_diagram_api_diagrams__diagram_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"diagram_id","in":"path","required":true,"schema":{"type":"integer","title":"Diagram Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/edit-diagram-section":{"post":{"tags":["Graph"],"summary":"Edit Diagram Section Endpoint","description":"Edit a section of a diagram using AI.\n\n**AUTHENTICATION REQUIRED** - Must include valid JWT token in Authorization header.\n\nArgs:\n    edit_request: GraphEditRequest containing graph and edit instructions\n    request: FastAPI Request object (required for rate limiting)\n    current_user: Authenticated user (injected by Auth0 middleware)\n\nReturns:\n    GraphEditResponse with edit operations or error\n\nRate limit: Configurable via RATE_LIMIT_PER_MINUTE env var (default: 10/minute)","operationId":"edit_diagram_section_endpoint_api_edit_diagram_section_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphEditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"Body_create_mermaid_diagram_from_image_api_generate_mermaid_from_image_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["image"],"title":"Body_create_mermaid_diagram_from_image_api_generate_mermaid_from_image_post"},"DiagramEditRequest":{"properties":{"savedDiagramId":{"type":"integer","title":"Saveddiagramid","description":"ID of the saved diagram to edit (backend fetches latest version from database)","examples":[123,456]},"editInstruction":{"type":"string","maxLength":1000,"minLength":5,"title":"Editinstruction","description":"Natural language instruction for what to change (5-1000 characters)","examples":["Add error handling","Remove the validation step","Add a retry loop for failed requests","Make the flow more detailed"]},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","description":"Optional context with title, description for better editing","examples":[{"description":"Original description of the diagram","title":"User Login Flow"}]}},"type":"object","required":["savedDiagramId","editInstruction"],"title":"DiagramEditRequest","description":"Request model for diagram editing."},"DiagramGraph":{"properties":{"diagramType":{"type":"string","title":"Diagramtype"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array","title":"Edges"}},"type":"object","required":["diagramType","metadata","nodes","edges"],"title":"DiagramGraph","description":"Complete diagram graph structure"},"DiagramListResponse":{"properties":{"diagrams":{"items":{"$ref":"#/components/schemas/DiagramResponse"},"type":"array","title":"Diagrams","description":"List of diagrams"},"total":{"type":"integer","title":"Total","description":"Total number of diagrams for the user"}},"type":"object","required":["diagrams","total"],"title":"DiagramListResponse","description":"Response model for diagram list.","examples":[{"diagrams":[],"total":0}]},"DiagramRequest":{"properties":{"description":{"type":"string","maxLength":5000,"minLength":10,"title":"Description","description":"Natural language description of the diagram (10-5000 characters)","examples":["User login flow with authentication and error handling"]},"diagram_type":{"type":"string","enum":["flowchart","sequence","mindmap","auto"],"title":"Diagram Type","description":"Type of diagram to generate (flowchart, sequence, mindmap, or auto to let AI decide)","default":"auto","examples":["flowchart","sequence","mindmap","auto"]}},"type":"object","required":["description"],"title":"DiagramRequest","description":"Request model for diagram generation."},"DiagramResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Diagram ID"},"user_id":{"type":"integer","title":"User Id","description":"User ID who created the diagram"},"title":{"type":"string","title":"Title","description":"Diagram title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Original user description"},"mermaid_code":{"type":"string","title":"Mermaid Code","description":"Mermaid diagram syntax"},"diagram_type":{"type":"string","title":"Diagram Type","description":"Type of diagram (flowchart, sequence, or mindmap)","default":"flowchart"},"diagram_json":{"additionalProperties":true,"type":"object","title":"Diagram Json","description":"Complete diagram state: nodes, edges, layoutDirection, positions, customizations"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO format)"},"updated_at":{"type":"string","title":"Updated At","description":"Last update timestamp (ISO format)"}},"type":"object","required":["id","user_id","title","mermaid_code","diagram_json","created_at","updated_at"],"title":"DiagramResponse","description":"Response model for diagram data.","examples":[{"created_at":"2025-01-01T00:00:00Z","description":"User login process with OAuth2","diagram_json":{"edges":[],"layoutDirection":"TB","nodes":[]},"diagram_type":"flowchart","id":1,"mermaid_code":"flowchart TB\n  start([Start])","title":"User Authentication Flow","updated_at":"2025-01-01T00:00:00Z","user_id":1}]},"DiagramSaveRequest":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Diagram title","examples":["User Authentication Flow"]},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description","description":"Original user description","examples":["User login process with OAuth2 authentication"]},"mermaid_code":{"type":"string","minLength":10,"title":"Mermaid Code","description":"Generated Mermaid syntax","examples":["flowchart TB\n  start([Start])\n  finish([End])"]},"diagram_type":{"type":"string","enum":["flowchart","sequence","mindmap"],"title":"Diagram Type","description":"Type of diagram (flowchart, sequence, or mindmap)","default":"flowchart","examples":["flowchart","sequence","mindmap"]},"diagram_json":{"additionalProperties":true,"type":"object","title":"Diagram Json","description":"Complete diagram state: nodes, edges, layoutDirection, positions, customizations","examples":[{"edges":[],"layoutDirection":"TB","nodes":[]}]}},"type":"object","required":["title","mermaid_code","diagram_json"],"title":"DiagramSaveRequest","description":"Request model for saving a diagram."},"DiagramUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title","description":"Diagram title","examples":["User Authentication Flow"]},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description","description":"Original user description","examples":["User login process with OAuth2 authentication"]},"mermaid_code":{"anyOf":[{"type":"string","minLength":10},{"type":"null"}],"title":"Mermaid Code","description":"Generated Mermaid syntax","examples":["flowchart TB\n  start([Start])\n  finish([End])"]},"diagram_type":{"anyOf":[{"type":"string","enum":["flowchart","sequence","mindmap"]},{"type":"null"}],"title":"Diagram Type","description":"Type of diagram (flowchart, sequence, or mindmap)","examples":["flowchart","sequence","mindmap"]},"diagram_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Diagram Json","description":"Complete diagram state: nodes, edges, layoutDirection, positions, customizations","examples":[{"edges":[],"layoutDirection":"TB","nodes":[]}]}},"type":"object","title":"DiagramUpdateRequest","description":"Request model for updating an existing diagram."},"EditOperations":{"properties":{"operation":{"type":"string","title":"Operation","default":"replace"},"removedNodeIds":{"items":{"type":"string"},"type":"array","title":"Removednodeids"},"addedNodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Addednodes"},"modifiedNodes":{"anyOf":[{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array"},{"type":"null"}],"title":"Modifiednodes"},"removedEdgeIds":{"items":{"type":"string"},"type":"array","title":"Removededgeids"},"addedEdges":{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array","title":"Addededges"},"modifiedEdges":{"anyOf":[{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array"},{"type":"null"}],"title":"Modifiededges"}},"type":"object","title":"EditOperations","description":"Operations to apply to the graph"},"GraphEdge":{"properties":{"id":{"type":"string","title":"Id"},"from":{"type":"string","title":"From"},"to":{"type":"string","title":"To"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"solid"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"customizations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Customizations"}},"type":"object","required":["id","from","to"],"title":"GraphEdge","description":"Edge in the diagram graph"},"GraphEditRequest":{"properties":{"diagramType":{"type":"string","title":"Diagramtype"},"instruction":{"type":"string","title":"Instruction"},"fullGraph":{"$ref":"#/components/schemas/DiagramGraph"},"editableNodeIds":{"items":{"type":"string"},"type":"array","title":"Editablenodeids"},"boundaryNodeIds":{"items":{"type":"string"},"type":"array","title":"Boundarynodeids"},"untouchedNodeIds":{"items":{"type":"string"},"type":"array","title":"Untouchednodeids"},"originalSelection":{"$ref":"#/components/schemas/OriginalSelection"}},"type":"object","required":["diagramType","instruction","fullGraph","editableNodeIds","boundaryNodeIds","untouchedNodeIds","originalSelection"],"title":"GraphEditRequest","description":"Request to edit a section of the graph"},"GraphEditResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"operations":{"anyOf":[{"$ref":"#/components/schemas/EditOperations"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"warnings":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Warnings"}},"type":"object","required":["success"],"title":"GraphEditResponse","description":"Response from graph edit operation"},"GraphNode":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"type":{"type":"string","title":"Type"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"customizations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Customizations"}},"type":"object","required":["id","label","type"],"title":"GraphNode","description":"Node in the diagram graph"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MermaidRenderRequest":{"properties":{"mermaid_code":{"type":"string","maxLength":50000,"minLength":10,"title":"Mermaid Code","description":"Pre-generated Mermaid diagram code to validate and render (10-50000 characters)","examples":["flowchart TD\n  A[Start] --> B[End]"]},"title":{"type":"string","maxLength":200,"minLength":3,"title":"Title","description":"Diagram title generated by ChatGPT","examples":["User Login Flow","Payment Processing Sequence"]},"diagram_type":{"type":"string","enum":["flowchart","sequence","mindmap","auto"],"title":"Diagram Type","description":"Type of diagram (flowchart, sequence, mindmap, or auto to detect)","default":"auto","examples":["flowchart","sequence","mindmap","auto"]}},"type":"object","required":["mermaid_code","title"],"title":"MermaidRenderRequest","description":"Request model for rendering pre-generated Mermaid code (MCP server)."},"MermaidResponse":{"properties":{"mermaidCode":{"type":"string","title":"Mermaidcode","description":"Generated Mermaid diagram syntax"},"title":{"type":"string","title":"Title","description":"Diagram title extracted from description"},"diagram_type":{"type":"string","enum":["flowchart","sequence","mindmap"],"title":"Diagram Type","description":"Type of diagram generated","default":"flowchart"},"savedDiagramId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Saveddiagramid","description":"ID of the auto-saved diagram (if save was successful)"},"diagram_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Diagram Json","description":"Current diagram state from database (for edit operations, used in visual diff)"}},"type":"object","required":["mermaidCode","title"],"title":"MermaidResponse","description":"Response model for Mermaid diagram generation.","examples":[{"mermaidCode":"flowchart TB\n  start([Start])\n  finish([End])\n  start --> finish","savedDiagramId":123,"title":"User login flow with authentication..."}]},"OriginalSelection":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array","title":"Edges"}},"type":"object","required":["nodes","edges"],"title":"OriginalSelection","description":"Original selection of nodes and edges"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}