{ "components": { "schemas": { "AccessTypeEnum": { "enum": [ "PRIVATE", "PUBLIC" ], "title": "AccessTypeEnum", "type": "string" }, "AssistantRequest": { "description": "Request model for assistant interactions.", "properties": { "component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Component Id" }, "field_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Field Name" }, "flow_id": { "title": "Flow Id", "type": "string" }, "input_value": { "anyOf": [ { "maxLength": 2000, "type": "string" }, { "type": "null" } ], "title": "Input Value" }, "iterations_limit": { "anyOf": [ { "maximum": 200.0, "minimum": 1.0, "type": "integer" }, { "type": "null" } ], "title": "Iterations Limit" }, "max_retries": { "anyOf": [ { "maximum": 5.0, "minimum": 1.0, "type": "integer" }, { "type": "null" } ], "title": "Max Retries" }, "model_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Model Name" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" } }, "required": [ "flow_id" ], "title": "AssistantRequest", "type": "object" }, "AuthSettings": { "description": "Model representing authentication settings for MCP.", "properties": { "auth_type": { "default": "none", "enum": [ "none", "apikey", "oauth" ], "title": "Auth Type", "type": "string" }, "oauth_auth_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Auth Url" }, "oauth_callback_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Callback Path" }, "oauth_callback_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Callback Url" }, "oauth_client_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Client Id" }, "oauth_client_secret": { "anyOf": [ { "format": "password", "type": "string", "writeOnly": true }, { "type": "null" } ], "title": "Oauth Client Secret" }, "oauth_host": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Host" }, "oauth_mcp_scope": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Mcp Scope" }, "oauth_port": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Port" }, "oauth_provider_scope": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Provider Scope" }, "oauth_server_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Server Url" }, "oauth_token_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oauth Token Url" } }, "title": "AuthSettings", "type": "object" }, "AuthzAuditLogRead": { "description": "Read-only projection of an ``AuthzAuditLog`` row.", "properties": { "action": { "title": "Action", "type": "string" }, "details": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Details" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "resource_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Resource Id" }, "resource_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Resource Type" }, "result": { "title": "Result", "type": "string" }, "timestamp": { "format": "date-time", "title": "Timestamp", "type": "string" }, "user_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "User Id" } }, "required": [ "id", "user_id", "action", "resource_type", "resource_id", "result", "details", "timestamp" ], "title": "AuthzAuditLogRead", "type": "object" }, "AuthzAuditPage": { "description": "Paginated audit-log response.", "properties": { "items": { "items": { "$ref": "#/components/schemas/AuthzAuditLogRead" }, "title": "Items", "type": "array" }, "page": { "title": "Page", "type": "integer" }, "pages": { "title": "Pages", "type": "integer" }, "size": { "title": "Size", "type": "integer" }, "total": { "title": "Total", "type": "integer" } }, "required": [ "items", "total", "page", "size", "pages" ], "title": "AuthzAuditPage", "type": "object" }, "Body_build_flow_api_v1_build__flow_id__flow_post": { "properties": { "data": { "anyOf": [ { "$ref": "#/components/schemas/FlowDataRequest" }, { "type": "null" } ] }, "files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Files" }, "inputs": { "anyOf": [ { "$ref": "#/components/schemas/InputValueRequest" }, { "type": "null" } ] } }, "title": "Body_build_flow_api_v1_build__flow_id__flow_post", "type": "object" }, "Body_build_public_tmp_api_v1_build_public_tmp__flow_id__flow_post": { "properties": { "files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Files" }, "inputs": { "anyOf": [ { "$ref": "#/components/schemas/InputValueRequest" }, { "type": "null" } ] } }, "title": "Body_build_public_tmp_api_v1_build_public_tmp__flow_id__flow_post", "type": "object" }, "Body_experimental_run_flow_api_v1_run_advanced__flow_id_or_name__post": { "properties": { "inputs": { "anyOf": [ { "items": { "$ref": "#/components/schemas/InputValueRequest" }, "type": "array" }, { "type": "null" } ], "title": "Inputs" }, "outputs": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Outputs" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" }, "stream": { "default": false, "title": "Stream", "type": "boolean" }, "tweaks": { "anyOf": [ { "$ref": "#/components/schemas/Tweaks" }, { "type": "null" } ] } }, "title": "Body_experimental_run_flow_api_v1_run_advanced__flow_id_or_name__post", "type": "object" }, "Body_simplified_run_flow_api_v1_run__flow_id_or_name__post": { "properties": { "context": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Context" }, "input_request": { "anyOf": [ { "$ref": "#/components/schemas/SimplifiedAPIRequest" }, { "type": "null" } ] } }, "title": "Body_simplified_run_flow_api_v1_run__flow_id_or_name__post", "type": "object" }, "Body_upload_file_api_v1_files_upload__flow_id__post": { "properties": { "file": { "contentMediaType": "application/octet-stream", "title": "File", "type": "string" } }, "required": [ "file" ], "title": "Body_upload_file_api_v1_files_upload__flow_id__post", "type": "object" }, "Body_upload_file_api_v1_flows_upload__post": { "properties": { "file": { "anyOf": [ { "contentMediaType": "application/octet-stream", "type": "string" }, { "type": "null" } ], "title": "File" } }, "title": "Body_upload_file_api_v1_flows_upload__post", "type": "object" }, "Body_upload_file_api_v1_projects_upload__post": { "properties": { "file": { "anyOf": [ { "contentMediaType": "application/octet-stream", "type": "string" }, { "type": "null" } ], "title": "File" } }, "title": "Body_upload_file_api_v1_projects_upload__post", "type": "object" }, "Body_upload_user_file_api_v2_files__post": { "properties": { "file": { "contentMediaType": "application/octet-stream", "title": "File", "type": "string" } }, "required": [ "file" ], "title": "Body_upload_user_file_api_v2_files__post", "type": "object" }, "Body_upload_user_file_api_v2_files_post": { "properties": { "file": { "contentMediaType": "application/octet-stream", "title": "File", "type": "string" } }, "required": [ "file" ], "title": "Body_upload_user_file_api_v2_files_post", "type": "object" }, "CancelFlowResponse": { "description": "Response model for flow build cancellation.", "properties": { "message": { "title": "Message", "type": "string" }, "success": { "title": "Success", "type": "boolean" } }, "required": [ "success", "message" ], "title": "CancelFlowResponse", "type": "object" }, "ChatOutputResponse": { "description": "Chat output response schema.", "properties": { "component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Component Id" }, "files": { "default": [], "items": { "$ref": "#/components/schemas/lfx__utils__schemas__File" }, "title": "Files", "type": "array" }, "message": { "anyOf": [ { "type": "string" }, { "items": { "anyOf": [ { "type": "string" }, { "additionalProperties": true, "type": "object" } ] }, "type": "array" } ], "title": "Message" }, "sender": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "Machine", "title": "Sender" }, "sender_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "AI", "title": "Sender Name" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" }, "stream_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stream Url" }, "type": { "title": "Type", "type": "string" } }, "required": [ "message", "type" ], "title": "ChatOutputResponse", "type": "object" }, "ComponentOutput": { "description": "Component output schema.", "properties": { "content": { "anyOf": [ {}, { "type": "null" } ], "title": "Content" }, "display_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Human-readable component name. The stable component id remains the ``outputs`` dict key.", "title": "Display Name" }, "metadata": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Metadata" }, "status": { "$ref": "#/components/schemas/JobStatus" }, "type": { "description": "Type of the component output (e.g., 'message', 'data', 'tool', 'text')", "title": "Type", "type": "string" } }, "required": [ "type", "status" ], "title": "ComponentOutput", "type": "object" }, "ComposerUrlResponse": { "description": "Response model for MCP Composer connection details.", "properties": { "error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error Message" }, "legacy_sse_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Legacy Sse Url" }, "project_id": { "title": "Project Id", "type": "string" }, "streamable_http_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Streamable Http Url" }, "uses_composer": { "title": "Uses Composer", "type": "boolean" } }, "required": [ "project_id", "uses_composer" ], "title": "ComposerUrlResponse", "type": "object" }, "ConfigResponse": { "description": "Full configuration response for authenticated users.\n\nThe 'type' field is a discriminator to distinguish from PublicConfigResponse.", "properties": { "a2a_enabled": { "default": false, "title": "A2A Enabled", "type": "boolean" }, "allow_custom_components": { "title": "Allow Custom Components", "type": "boolean" }, "authz_enabled": { "default": false, "title": "Authz Enabled", "type": "boolean" }, "auto_saving": { "title": "Auto Saving", "type": "boolean" }, "auto_saving_interval": { "title": "Auto Saving Interval", "type": "integer" }, "custom_component_admin_only": { "title": "Custom Component Admin Only", "type": "boolean" }, "default_folder_name": { "title": "Default Folder Name", "type": "string" }, "embedded_mode": { "title": "Embedded Mode", "type": "boolean" }, "enable_extension_reload": { "title": "Enable Extension Reload", "type": "boolean" }, "event_delivery": { "enum": [ "polling", "streaming", "direct" ], "title": "Event Delivery", "type": "string" }, "feature_flags": { "$ref": "#/components/schemas/FeatureFlags" }, "frontend_timeout": { "title": "Frontend Timeout", "type": "integer" }, "health_check_max_retries": { "title": "Health Check Max Retries", "type": "integer" }, "hide_getting_started_progress": { "title": "Hide Getting Started Progress", "type": "boolean" }, "hide_logout_button": { "title": "Hide Logout Button", "type": "boolean" }, "hide_new_flow_button": { "title": "Hide New Flow Button", "type": "boolean" }, "hide_new_project_button": { "title": "Hide New Project Button", "type": "boolean" }, "hide_starter_projects": { "title": "Hide Starter Projects", "type": "boolean" }, "max_file_size_upload": { "title": "Max File Size Upload", "type": "integer" }, "mcp_base_url": { "title": "Mcp Base Url", "type": "string" }, "mcp_servers_locked": { "title": "Mcp Servers Locked", "type": "boolean" }, "public_flow_cleanup_interval": { "title": "Public Flow Cleanup Interval", "type": "integer" }, "public_flow_expiration": { "title": "Public Flow Expiration", "type": "integer" }, "serialization_max_items_length": { "title": "Serialization Max Items Length", "type": "integer" }, "serialization_max_text_length": { "title": "Serialization Max Text Length", "type": "integer" }, "type": { "const": "full", "default": "full", "title": "Type", "type": "string" }, "voice_mode_available": { "title": "Voice Mode Available", "type": "boolean" }, "webhook_auth_enable": { "title": "Webhook Auth Enable", "type": "boolean" }, "webhook_polling_interval": { "title": "Webhook Polling Interval", "type": "integer" } }, "required": [ "feature_flags", "max_file_size_upload", "event_delivery", "voice_mode_available", "frontend_timeout", "mcp_base_url", "enable_extension_reload", "serialization_max_items_length", "serialization_max_text_length", "auto_saving", "auto_saving_interval", "health_check_max_retries", "webhook_polling_interval", "public_flow_cleanup_interval", "public_flow_expiration", "webhook_auth_enable", "default_folder_name", "hide_getting_started_progress", "allow_custom_components", "embedded_mode", "hide_logout_button", "hide_new_project_button", "hide_new_flow_button", "hide_starter_projects", "mcp_servers_locked", "custom_component_admin_only" ], "title": "ConfigResponse", "type": "object" }, "EffectivePermissionsRequest": { "description": "Body for :func:`get_effective_permissions`.", "properties": { "actions": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Actions to check. Each entry is lowercased and de-duplicated; the list is capped at 10. Defaults to read/write/execute/delete/create.", "title": "Actions" }, "domain": { "default": "*", "description": "Authorization domain — typically ``project:{folder_id}`` or ``*``.", "title": "Domain", "type": "string" }, "resource_ids": { "description": "Resource IDs to evaluate. Capped at 500 per request to keep batch_enforce bounded.", "items": { "format": "uuid", "type": "string" }, "title": "Resource Ids", "type": "array" }, "resource_type": { "enum": [ "flow", "deployment", "project", "knowledge_base", "variable", "file", "component" ], "title": "Resource Type", "type": "string" } }, "required": [ "resource_type", "resource_ids" ], "title": "EffectivePermissionsRequest", "type": "object" }, "EffectivePermissionsResponse": { "description": "Response: ``{resource_id: [allowed_actions]}``.", "properties": { "permissions": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "propertyNames": { "format": "uuid" }, "title": "Permissions", "type": "object" }, "resource_type": { "enum": [ "flow", "deployment", "project", "knowledge_base", "variable", "file", "component" ], "title": "Resource Type", "type": "string" } }, "required": [ "resource_type", "permissions" ], "title": "EffectivePermissionsResponse", "type": "object" }, "ErrorDetail": { "description": "Error detail schema.", "properties": { "code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Code" }, "details": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Details" }, "error": { "title": "Error", "type": "string" } }, "required": [ "error" ], "title": "ErrorDetail", "type": "object" }, "EventDeliveryType": { "enum": [ "streaming", "direct", "polling" ], "title": "EventDeliveryType", "type": "string" }, "ExtensionEventResponse": { "properties": { "payload": { "additionalProperties": true, "title": "Payload", "type": "object" }, "timestamp": { "title": "Timestamp", "type": "number" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "timestamp", "payload" ], "title": "ExtensionEventResponse", "type": "object" }, "ExtensionEventsResponse": { "properties": { "events": { "items": { "$ref": "#/components/schemas/ExtensionEventResponse" }, "title": "Events", "type": "array" }, "settled": { "title": "Settled", "type": "boolean" } }, "required": [ "events", "settled" ], "title": "ExtensionEventsResponse", "type": "object" }, "FeatureFlags": { "additionalProperties": false, "properties": { "mvp_components": { "default": false, "title": "Mvp Components", "type": "boolean" }, "wxo_deployments": { "default": false, "title": "Wxo Deployments", "type": "boolean" } }, "title": "FeatureFlags", "type": "object" }, "FlowCreate": { "properties": { "a2a_card_overrides": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "User overrides for the generated A2A agent card (skill description, examples, tags)", "title": "A2A Card Overrides" }, "a2a_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be exposed as an A2A agent (only meaningful when flow_type=agent)", "title": "A2A Enabled" }, "access_type": { "$ref": "#/components/schemas/AccessTypeEnum", "default": "PRIVATE" }, "action_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The description of the action associated with the flow", "title": "Action Description" }, "action_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the action associated with the flow", "title": "Action Name" }, "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "endpoint_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endpoint Name" }, "flow_type": { "$ref": "#/components/schemas/FlowType", "default": "workflow", "description": "Whether the flow is a plain workflow or an agent (publishable over A2A)" }, "folder_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Folder Id" }, "fs_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fs Path" }, "gradient": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Gradient" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "icon_bg_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon Bg Color" }, "id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Id" }, "is_component": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "title": "Is Component" }, "locked": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "title": "Locked" }, "mcp_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be exposed in the MCP server", "title": "Mcp Enabled" }, "name": { "title": "Name", "type": "string" }, "tags": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Tags" }, "updated_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Updated At" }, "user_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "User Id" }, "webhook": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be used on the webhook endpoint", "title": "Webhook" }, "workspace_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Workspace Id" } }, "required": [ "name" ], "title": "FlowCreate", "type": "object" }, "FlowDataRequest": { "properties": { "edges": { "items": { "additionalProperties": true, "type": "object" }, "title": "Edges", "type": "array" }, "nodes": { "items": { "additionalProperties": true, "type": "object" }, "title": "Nodes", "type": "array" }, "viewport": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Viewport" } }, "required": [ "nodes", "edges" ], "title": "FlowDataRequest", "type": "object" }, "FlowEventCreate": { "properties": { "summary": { "default": "", "maxLength": 500, "title": "Summary", "type": "string" }, "type": { "enum": [ "component_added", "component_removed", "component_configured", "connection_added", "connection_removed", "flow_updated", "flow_settled" ], "title": "Type", "type": "string" } }, "required": [ "type" ], "title": "FlowEventCreate", "type": "object" }, "FlowEventResponse": { "properties": { "summary": { "title": "Summary", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "number" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "timestamp", "summary" ], "title": "FlowEventResponse", "type": "object" }, "FlowEventsResponse": { "properties": { "events": { "items": { "$ref": "#/components/schemas/FlowEventResponse" }, "title": "Events", "type": "array" }, "settled": { "title": "Settled", "type": "boolean" } }, "required": [ "events", "settled" ], "title": "FlowEventsResponse", "type": "object" }, "FlowHeader": { "description": "Model representing a header for a flow - Without the data.", "properties": { "a2a_card_overrides": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "User overrides for the served A2A agent card", "title": "A2A Card Overrides" }, "a2a_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Flag indicating whether the flow is exposed as an A2A agent", "title": "A2A Enabled" }, "access_type": { "anyOf": [ { "$ref": "#/components/schemas/AccessTypeEnum" }, { "type": "null" } ], "description": "The access type of the flow" }, "action_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The description of the action associated with the flow", "title": "Action Description" }, "action_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the action associated with the flow", "title": "Action Name" }, "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "The data of the component, if is_component is True", "title": "Data" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "A description of the flow", "title": "Description" }, "endpoint_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the endpoint associated with this flow", "title": "Endpoint Name" }, "flow_type": { "anyOf": [ { "$ref": "#/components/schemas/FlowType" }, { "type": "null" } ], "description": "Whether the flow is a plain workflow or an agent" }, "folder_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "The ID of the folder containing the flow. None if not associated with a folder", "title": "Folder Id" }, "id": { "description": "Unique identifier for the flow", "format": "uuid", "title": "Id", "type": "string" }, "is_component": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Flag indicating whether the flow is a component", "title": "Is Component" }, "mcp_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Flag indicating whether the flow is exposed in the MCP server", "title": "Mcp Enabled" }, "name": { "description": "The name of the flow", "title": "Name", "type": "string" }, "tags": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "The tags of the flow", "title": "Tags" } }, "required": [ "id", "name" ], "title": "FlowHeader", "type": "object" }, "FlowListCreate": { "properties": { "flows": { "items": { "$ref": "#/components/schemas/FlowCreate" }, "title": "Flows", "type": "array" } }, "required": [ "flows" ], "title": "FlowListCreate", "type": "object" }, "FlowRead": { "properties": { "a2a_card_overrides": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "User overrides for the generated A2A agent card (skill description, examples, tags)", "title": "A2A Card Overrides" }, "a2a_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be exposed as an A2A agent (only meaningful when flow_type=agent)", "title": "A2A Enabled" }, "access_type": { "$ref": "#/components/schemas/AccessTypeEnum", "default": "PRIVATE" }, "action_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The description of the action associated with the flow", "title": "Action Description" }, "action_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the action associated with the flow", "title": "Action Name" }, "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "endpoint_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endpoint Name" }, "flow_type": { "$ref": "#/components/schemas/FlowType", "default": "workflow", "description": "Whether the flow is a plain workflow or an agent (publishable over A2A)" }, "folder_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Folder Id" }, "gradient": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Gradient" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "icon_bg_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon Bg Color" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "is_component": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "title": "Is Component" }, "locked": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "title": "Locked" }, "mcp_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be exposed in the MCP server", "title": "Mcp Enabled" }, "name": { "title": "Name", "type": "string" }, "name_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Stable i18n key derived from the original English name", "title": "Name Key" }, "tags": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "The tags of the flow", "title": "Tags" }, "updated_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Updated At" }, "user_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "User Id" }, "webhook": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Can be used on the webhook endpoint", "title": "Webhook" }, "workspace_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Workspace Id" } }, "required": [ "name", "id", "user_id", "folder_id" ], "title": "FlowRead", "type": "object" }, "FlowType": { "enum": [ "workflow", "agent" ], "title": "FlowType", "type": "string" }, "FlowUpdate": { "properties": { "a2a_card_overrides": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "A2A Card Overrides" }, "a2a_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "A2A Enabled" }, "access_type": { "anyOf": [ { "$ref": "#/components/schemas/AccessTypeEnum" }, { "type": "null" } ] }, "action_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Description" }, "action_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Name" }, "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Data" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "endpoint_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endpoint Name" }, "flow_type": { "anyOf": [ { "$ref": "#/components/schemas/FlowType" }, { "type": "null" } ] }, "folder_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Folder Id" }, "fs_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fs Path" }, "locked": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Locked" }, "mcp_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Mcp Enabled" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "workspace_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Workspace Id" } }, "title": "FlowUpdate", "type": "object" }, "FolderCreate": { "properties": { "auth_settings": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Authentication settings for the folder/project", "title": "Auth Settings" }, "components_list": { "anyOf": [ { "items": { "format": "uuid", "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Components List" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "flows_list": { "anyOf": [ { "items": { "format": "uuid", "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Flows List" }, "name": { "title": "Name", "type": "string" } }, "required": [ "name" ], "title": "FolderCreate", "type": "object" }, "FolderRead": { "properties": { "auth_settings": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Authentication settings for the folder/project", "title": "Auth Settings" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "name": { "title": "Name", "type": "string" }, "parent_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Id" } }, "required": [ "name", "id", "parent_id" ], "title": "FolderRead", "type": "object" }, "FolderReadWithFlows": { "properties": { "auth_settings": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Authentication settings for the folder/project", "title": "Auth Settings" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "flows": { "default": [], "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Flows", "type": "array" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "name": { "title": "Name", "type": "string" }, "parent_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Id" } }, "required": [ "name", "id", "parent_id" ], "title": "FolderReadWithFlows", "type": "object" }, "FolderUpdate": { "properties": { "auth_settings": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Auth Settings" }, "components": { "items": { "format": "uuid", "type": "string" }, "title": "Components", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "flows": { "items": { "format": "uuid", "type": "string" }, "title": "Flows", "type": "array" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "parent_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Id" } }, "title": "FolderUpdate", "type": "object" }, "FolderWithPaginatedFlows": { "properties": { "flows": { "$ref": "#/components/schemas/Page_FlowRead_" }, "folder": { "$ref": "#/components/schemas/FolderRead" } }, "required": [ "folder", "flows" ], "title": "FolderWithPaginatedFlows", "type": "object" }, "GraphData": { "properties": { "edges": { "items": { "additionalProperties": true, "type": "object" }, "title": "Edges", "type": "array" }, "nodes": { "items": { "additionalProperties": true, "type": "object" }, "title": "Nodes", "type": "array" }, "viewport": { "anyOf": [ { "$ref": "#/components/schemas/ViewPort" }, { "type": "null" } ] } }, "required": [ "nodes", "edges" ], "title": "GraphData", "type": "object" }, "GraphDumpResponse": { "properties": { "data": { "$ref": "#/components/schemas/GraphData" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "endpoint_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endpoint Name" }, "is_component": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Component" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" } }, "required": [ "data" ], "title": "GraphDumpResponse", "type": "object" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "title": "Detail", "type": "array" } }, "title": "HTTPValidationError", "type": "object" }, "HealthResponse": { "properties": { "chat": { "default": "error check the server logs", "title": "Chat", "type": "string" }, "db": { "default": "error check the server logs", "title": "Db", "type": "string" }, "status": { "default": "nok", "title": "Status", "type": "string" } }, "title": "HealthResponse", "type": "object" }, "InputValueRequest": { "additionalProperties": false, "examples": [ { "components": [ "components_id", "Component Name" ], "input_value": "input_value", "session": "session_id" }, { "components": [ "Component Name" ], "input_value": "input_value" }, { "input_value": "input_value" }, { "components": [ "Component Name" ], "input_value": "input_value", "session": "session_id" }, { "input_value": "input_value", "session": "session_id" }, { "input_value": "input_value", "type": "chat" }, { "input_value": "{\"key\": \"value\"}", "type": "json" } ], "properties": { "client_request_time": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "description": "Client-side timestamp in milliseconds when the request was initiated. Used to calculate accurate end-to-end duration.", "title": "Client Request Time" }, "components": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "title": "Components" }, "input_value": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Input Value" }, "session": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session" }, "type": { "anyOf": [ { "enum": [ "chat", "text", "any" ], "type": "string" }, { "type": "null" } ], "default": "any", "description": "Defines on which components the input value should be applied. 'any' applies to all input components.", "title": "Type" } }, "title": "InputValueRequest", "type": "object" }, "JobStatus": { "description": "Job execution status.", "enum": [ "queued", "in_progress", "completed", "failed", "cancelled", "timed_out", "suspended" ], "title": "JobStatus", "type": "string" }, "MCPInstallRequest": { "properties": { "client": { "title": "Client", "type": "string" }, "transport": { "anyOf": [ { "enum": [ "sse", "streamablehttp" ], "type": "string" }, { "type": "null" } ], "title": "Transport" } }, "required": [ "client" ], "title": "MCPInstallRequest", "type": "object" }, "MCPProjectUpdateRequest": { "description": "Request model for updating MCP project settings including auth.", "properties": { "auth_settings": { "anyOf": [ { "$ref": "#/components/schemas/AuthSettings" }, { "type": "null" } ] }, "settings": { "items": { "$ref": "#/components/schemas/MCPSettings" }, "title": "Settings", "type": "array" } }, "required": [ "settings" ], "title": "MCPProjectUpdateRequest", "type": "object" }, "MCPServerConfig": { "additionalProperties": true, "description": "Pydantic model for MCP server configuration.", "properties": { "args": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Args" }, "command": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Command" }, "env": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Env" }, "headers": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Headers" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" } }, "title": "MCPServerConfig", "type": "object" }, "MCPSettings": { "description": "Model representing MCP settings for a flow.", "properties": { "action_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Description" }, "action_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Name" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "mcp_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Mcp Enabled" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" } }, "required": [ "id" ], "title": "MCPSettings", "type": "object" }, "MessageRead": { "properties": { "category": { "default": "message", "title": "Category", "type": "string" }, "content_blocks": { "items": { "additionalProperties": true, "type": "object" }, "title": "Content Blocks", "type": "array" }, "context_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Context Id" }, "edit": { "default": false, "title": "Edit", "type": "boolean" }, "error": { "default": false, "title": "Error", "type": "boolean" }, "files": { "items": { "type": "string" }, "title": "Files", "type": "array" }, "flow_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Flow Id" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "properties": { "$ref": "#/components/schemas/Properties" }, "run_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Run Id" }, "sender": { "title": "Sender", "type": "string" }, "sender_name": { "title": "Sender Name", "type": "string" }, "session_id": { "title": "Session Id", "type": "string" }, "session_metadata": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Session Metadata" }, "text": { "title": "Text", "type": "string" }, "timestamp": { "format": "date-time", "title": "Timestamp", "type": "string" } }, "required": [ "sender", "sender_name", "session_id", "text", "id" ], "title": "MessageRead", "type": "object" }, "MessageResponse": { "properties": { "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category" }, "content_blocks": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ], "title": "Content Blocks" }, "context_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Context Id" }, "duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Duration" }, "edit": { "title": "Edit", "type": "boolean" }, "files": { "default": [], "items": { "type": "string" }, "title": "Files", "type": "array" }, "flow_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Flow Id" }, "id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Id" }, "properties": { "anyOf": [ { "$ref": "#/components/schemas/Properties" }, { "type": "null" } ] }, "sender": { "title": "Sender", "type": "string" }, "sender_name": { "title": "Sender Name", "type": "string" }, "session_id": { "title": "Session Id", "type": "string" }, "session_metadata": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Session Metadata" }, "text": { "title": "Text", "type": "string" }, "timestamp": { "format": "date-time", "title": "Timestamp", "type": "string" } }, "required": [ "sender", "sender_name", "session_id", "text", "edit" ], "title": "MessageResponse", "type": "object" }, "MessageUpdate": { "properties": { "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category" }, "content_blocks": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ], "title": "Content Blocks" }, "context_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Context Id" }, "edit": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Edit" }, "error": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Error" }, "files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Files" }, "properties": { "anyOf": [ { "$ref": "#/components/schemas/Properties" }, { "type": "null" } ] }, "sender": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sender" }, "sender_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sender Name" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" }, "session_metadata": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Session Metadata" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Text" } }, "title": "MessageUpdate", "type": "object" }, "OpenAIResponsesRequest": { "description": "OpenAI-compatible responses request with flow_id as model parameter.", "properties": { "background": { "default": false, "description": "Whether to process in background", "title": "Background", "type": "boolean" }, "include": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Additional response data to include, e.g., ['tool_call.results']", "title": "Include" }, "input": { "description": "The input text to process", "title": "Input", "type": "string" }, "model": { "description": "The flow ID to execute (used instead of OpenAI model)", "title": "Model", "type": "string" }, "previous_response_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "ID of previous response to continue conversation", "title": "Previous Response Id" }, "stream": { "default": false, "description": "Whether to stream the response", "title": "Stream", "type": "boolean" }, "tools": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "description": "Tools are not supported yet", "title": "Tools" } }, "required": [ "model", "input" ], "title": "OpenAIResponsesRequest", "type": "object" }, "OutputReason": { "description": "Why ``WorkflowOutput.text`` resolved the way it did.\n\nMirrors the LLM-domain ``finish_reason`` / ``stop_reason`` convention: a\nmachine-readable enum explaining the disposition of the answer, distinct from\nthe lifecycle ``status``.", "enum": [ "single", "multiple", "none", "non_string", "failed" ], "title": "OutputReason", "type": "string" }, "Page_FlowRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Items", "type": "array" }, "page": { "minimum": 1.0, "title": "Page", "type": "integer" }, "pages": { "minimum": 0.0, "title": "Pages", "type": "integer" }, "size": { "minimum": 1.0, "title": "Size", "type": "integer" }, "total": { "minimum": 0.0, "title": "Total", "type": "integer" } }, "required": [ "items", "total", "page", "size", "pages" ], "title": "Page[FlowRead]", "type": "object" }, "Page_TransactionLogsResponse_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/TransactionLogsResponse" }, "title": "Items", "type": "array" }, "page": { "minimum": 1.0, "title": "Page", "type": "integer" }, "pages": { "minimum": 0.0, "title": "Pages", "type": "integer" }, "size": { "minimum": 1.0, "title": "Size", "type": "integer" }, "total": { "minimum": 0.0, "title": "Total", "type": "integer" } }, "required": [ "items", "total", "page", "size", "pages" ], "title": "Page[TransactionLogsResponse]", "type": "object" }, "PasswordResetRequest": { "properties": { "current_password": { "title": "Current Password", "type": "string" }, "password": { "title": "Password", "type": "string" } }, "required": [ "current_password", "password" ], "title": "PasswordResetRequest", "type": "object" }, "Properties": { "properties": { "allow_markdown": { "default": false, "title": "Allow Markdown", "type": "boolean" }, "background_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Background Color" }, "build_duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Build Duration" }, "edited": { "default": false, "title": "Edited", "type": "boolean" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "positive_feedback": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Positive Feedback" }, "source": { "$ref": "#/components/schemas/Source" }, "state": { "default": "complete", "enum": [ "partial", "complete" ], "title": "State", "type": "string" }, "targets": { "default": [], "items": {}, "title": "Targets", "type": "array" }, "text_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Text Color" }, "usage": { "anyOf": [ { "$ref": "#/components/schemas/Usage" }, { "type": "null" } ] } }, "title": "Properties", "type": "object" }, "PublicConfigResponse": { "description": "Configuration response for public/unauthenticated endpoints like the public playground.\n\nContains only the configuration values needed for public features, without sensitive data.\nThe 'type' field is a discriminator to distinguish from full ConfigResponse.", "properties": { "allow_custom_components": { "title": "Allow Custom Components", "type": "boolean" }, "authz_enabled": { "default": false, "title": "Authz Enabled", "type": "boolean" }, "enable_extension_reload": { "title": "Enable Extension Reload", "type": "boolean" }, "event_delivery": { "enum": [ "polling", "streaming", "direct" ], "title": "Event Delivery", "type": "string" }, "feature_flags": { "$ref": "#/components/schemas/FeatureFlags" }, "frontend_timeout": { "title": "Frontend Timeout", "type": "integer" }, "max_file_size_upload": { "title": "Max File Size Upload", "type": "integer" }, "mcp_base_url": { "title": "Mcp Base Url", "type": "string" }, "type": { "const": "public", "default": "public", "title": "Type", "type": "string" }, "voice_mode_available": { "title": "Voice Mode Available", "type": "boolean" } }, "required": [ "feature_flags", "max_file_size_upload", "event_delivery", "voice_mode_available", "frontend_timeout", "mcp_base_url", "enable_extension_reload", "allow_custom_components" ], "title": "PublicConfigResponse", "type": "object" }, "PublicWorkflowRunRequest": { "additionalProperties": false, "description": "Request schema for ``POST /api/v2/workflows/public``.\n\nNarrower than ``WorkflowRunRequest`` so the public-flow surface stays\nlocked down. Notably absent vs the regular body:\n\n- ``data`` — visitors must never override the stored flow definition.\n- ``tweaks`` — visitors must never override component parameters.\n\nThe endpoint enforces the additional CVE mitigations that the regular\nendpoint does not need:\n\n- ``access_type == PUBLIC`` gate (others 403).\n- ``virtual_flow_id = uuid5(identifier, flow_id)`` so messages stay\n isolated per visitor.\n- Session string namespaced under the virtual flow id\n (CVE-2026-33017).\n- File-path validation (GHSA-rcjh-r59h-gq37).\n- Owner impersonation: the run executes under the flow owner's\n permissions, never the visitor's.", "examples": [ { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Hello from the shareable playground" }, { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Stream the response", "session_id": "thread-A", "stream_protocol": "agui" } ], "properties": { "files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Optional list of pre-uploaded file paths. Each path must be scoped to this flow's own storage namespace; the endpoint rejects path traversal or cross-flow references.", "title": "Files" }, "flow_id": { "description": "UUID of the public flow to run.", "title": "Flow Id", "type": "string" }, "input_value": { "default": "", "description": "Chat-style input value.", "maxLength": 65536, "title": "Input Value", "type": "string" }, "mode": { "const": "stream", "default": "stream", "description": "Always ``stream``. Sync/background modes would widen the public attack surface (job polling, owner impersonation persists across queue boundaries) so the schema rejects them at the wire.", "title": "Mode", "type": "string" }, "session_id": { "anyOf": [ { "maxLength": 256, "type": "string" }, { "type": "null" } ], "description": "Optional caller session. Always namespaced under the visitor's virtual flow id by the endpoint.", "title": "Session Id" }, "start_component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Partial-run start component id.", "title": "Start Component Id" }, "stop_component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Partial-run stop component id.", "title": "Stop Component Id" }, "stream_protocol": { "default": "langflow", "description": "Wire protocol for streaming events. Defaults to ``langflow`` (raw EventManager payloads). ``agui`` emits AG-UI events. Unknown values return 422 with the available list.", "title": "Stream Protocol", "type": "string" } }, "required": [ "flow_id" ], "title": "PublicWorkflowRunRequest", "type": "object" }, "ResultData": { "properties": { "artifacts": { "anyOf": [ {}, { "type": "null" } ], "title": "Artifacts" }, "component_display_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Component Display Name" }, "component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Component Id" }, "duration": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Duration" }, "logs": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Logs" }, "messages": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ChatOutputResponse" }, "type": "array" }, { "type": "null" } ], "title": "Messages" }, "outputs": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Outputs" }, "results": { "anyOf": [ {}, { "type": "null" } ], "title": "Results" }, "timedelta": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Timedelta" }, "token_usage": { "anyOf": [ { "$ref": "#/components/schemas/Usage" }, { "type": "null" } ] }, "used_frozen_result": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "title": "Used Frozen Result" } }, "title": "ResultData", "type": "object" }, "RoleAssignmentCreate": { "description": "Payload for assigning a role to a user.", "properties": { "domain_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Required when ``domain_type`` is org/workspace/project; must be null for ``global``.", "title": "Domain Id" }, "domain_type": { "default": "global", "description": "Domain scope of the assignment. ``global`` is unscoped (no ``domain_id``); ``org``/``workspace``/``project`` require a matching ``domain_id``.", "enum": [ "global", "org", "workspace", "project" ], "title": "Domain Type", "type": "string" }, "role_id": { "format": "uuid", "title": "Role Id", "type": "string" }, "user_id": { "format": "uuid", "title": "User Id", "type": "string" } }, "required": [ "user_id", "role_id" ], "title": "RoleAssignmentCreate", "type": "object" }, "RoleAssignmentRead": { "description": "Serialized authz_role_assignment row returned by the API.", "properties": { "assigned_at": { "format": "date-time", "title": "Assigned At", "type": "string" }, "assigned_by": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Assigned By" }, "domain_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Domain Id" }, "domain_type": { "title": "Domain Type", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "role_id": { "format": "uuid", "title": "Role Id", "type": "string" }, "user_id": { "format": "uuid", "title": "User Id", "type": "string" } }, "required": [ "id", "user_id", "role_id", "domain_type", "domain_id", "assigned_at", "assigned_by" ], "title": "RoleAssignmentRead", "type": "object" }, "RoleCreate": { "description": "Payload for creating an authz_role row.", "properties": { "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "name": { "maxLength": 255, "minLength": 1, "title": "Name", "type": "string" }, "parent_role_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Role Id" }, "permissions": { "description": "Permission slugs in the canonical ``:`` form — for example ``flow:read``, ``deployment:execute``, ``share:create``. Resources must be one of flow, deployment, project, knowledge_base, variable, file, share. Actions are constrained per-resource (see ``services/authorization/actions.py``): e.g. ``deploy`` is only valid on ``flow``, ``ingest`` only on ``knowledge_base``, ``update`` only on ``share``. ``*`` (all actions on that resource) is always accepted. A registered authorization plugin is responsible for compiling these into its policy format.", "items": { "type": "string" }, "title": "Permissions", "type": "array" } }, "required": [ "name" ], "title": "RoleCreate", "type": "object" }, "RoleRead": { "description": "Serialized authz_role row returned by the API.", "properties": { "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "created_by": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Created By" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "is_system": { "title": "Is System", "type": "boolean" }, "name": { "title": "Name", "type": "string" }, "parent_role_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Role Id" }, "permissions": { "items": { "type": "string" }, "title": "Permissions", "type": "array" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "workspace_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Workspace Id" } }, "required": [ "id", "name", "description", "is_system", "permissions", "parent_role_id", "workspace_id", "created_at", "updated_at", "created_by" ], "title": "RoleRead", "type": "object" }, "RoleUpdate": { "description": "Payload for updating an authz_role row (PATCH semantics — only set fields apply).", "properties": { "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "name": { "anyOf": [ { "maxLength": 255, "minLength": 1, "type": "string" }, { "type": "null" } ], "title": "Name" }, "parent_role_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Parent Role Id" }, "permissions": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Permissions" } }, "title": "RoleUpdate", "type": "object" }, "RunOutputs": { "properties": { "inputs": { "additionalProperties": true, "title": "Inputs", "type": "object" }, "outputs": { "items": { "anyOf": [ { "$ref": "#/components/schemas/ResultData" }, { "type": "null" } ] }, "title": "Outputs", "type": "array" } }, "title": "RunOutputs", "type": "object" }, "RunResponse": { "description": "Run response schema.", "properties": { "outputs": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RunOutputs" }, "type": "array" }, { "type": "null" } ], "default": [], "title": "Outputs" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" } }, "title": "RunResponse", "type": "object" }, "ShareCreate": { "description": "Payload for creating an authz_share row.", "properties": { "permission_level": { "default": "read", "enum": [ "read", "write", "execute", "admin" ], "title": "Permission Level", "type": "string" }, "resource_id": { "format": "uuid", "title": "Resource Id", "type": "string" }, "resource_type": { "enum": [ "flow", "deployment", "project", "knowledge_base", "variable", "file" ], "title": "Resource Type", "type": "string" }, "scope": { "enum": [ "private", "team", "user", "public" ], "title": "Scope", "type": "string" }, "target_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Target Id" } }, "required": [ "resource_type", "resource_id", "scope" ], "title": "ShareCreate", "type": "object" }, "ShareRead": { "description": "Serialized authz_share row returned by the API.", "properties": { "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "created_by": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Created By" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "permission_level": { "enum": [ "read", "write", "execute", "admin" ], "title": "Permission Level", "type": "string" }, "resource_id": { "format": "uuid", "title": "Resource Id", "type": "string" }, "resource_type": { "enum": [ "flow", "deployment", "project", "knowledge_base", "variable", "file" ], "title": "Resource Type", "type": "string" }, "scope": { "enum": [ "private", "team", "user", "public" ], "title": "Scope", "type": "string" }, "target_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Target Id" }, "target_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Name" } }, "required": [ "id", "resource_type", "resource_id", "scope", "target_id", "permission_level", "created_by", "created_at" ], "title": "ShareRead", "type": "object" }, "ShareUpdate": { "description": "Payload for updating an authz_share permission level.", "properties": { "permission_level": { "enum": [ "read", "write", "execute", "admin" ], "title": "Permission Level", "type": "string" } }, "required": [ "permission_level" ], "title": "ShareUpdate", "type": "object" }, "SimplifiedAPIRequest": { "properties": { "input_type": { "anyOf": [ { "enum": [ "chat", "text", "any" ], "type": "string" }, { "type": "null" } ], "default": "chat", "description": "The input type", "title": "Input Type" }, "input_value": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The input value", "title": "Input Value" }, "output_component": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "", "description": "If there are multiple output components, you can specify the component to get the output from.", "title": "Output Component" }, "output_type": { "anyOf": [ { "enum": [ "chat", "text", "any", "debug" ], "type": "string" }, { "type": "null" } ], "default": "chat", "description": "The output type", "title": "Output Type" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The session id", "title": "Session Id" }, "tweaks": { "anyOf": [ { "$ref": "#/components/schemas/Tweaks" }, { "type": "null" } ], "description": "The tweaks" }, "user_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional end-user identifier forwarded to tracing providers (e.g. Langfuse) as the trace's user_id. Does not affect authentication or authorization — the API key owner remains the effective Langflow user.", "title": "User Id" } }, "title": "SimplifiedAPIRequest", "type": "object" }, "Source": { "properties": { "display_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The display name of the source component.", "title": "Display Name" }, "id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The id of the source component.", "title": "Id" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The source of the message. Normally used to display the model name (e.g. 'gpt-4o')", "title": "Source" } }, "title": "Source", "type": "object" }, "SpanReadResponse": { "description": "Response model for a single span, with nested children.\n\nSerializes to camelCase JSON to match the frontend API contract.", "properties": { "children": { "items": { "$ref": "#/components/schemas/SpanReadResponse" }, "title": "Children", "type": "array" }, "endTime": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Endtime" }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "inputs": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Inputs" }, "latencyMs": { "title": "Latencyms", "type": "integer" }, "modelName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Modelname" }, "name": { "title": "Name", "type": "string" }, "outputs": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Outputs" }, "startTime": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Starttime" }, "status": { "$ref": "#/components/schemas/SpanStatus" }, "tokenUsage": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Tokenusage" }, "type": { "$ref": "#/components/schemas/SpanType" } }, "required": [ "id", "name", "type", "status", "startTime", "endTime", "latencyMs", "inputs", "outputs", "error", "modelName", "tokenUsage" ], "title": "SpanReadResponse", "type": "object" }, "SpanStatus": { "description": "OpenTelemetry status codes.\n\n- UNSET: Default status, span has not ended yet\n- OK: Span completed successfully\n- ERROR: Span completed with an error", "enum": [ "unset", "ok", "error" ], "title": "SpanStatus", "type": "string" }, "SpanType": { "description": "Types of spans that can be recorded.", "enum": [ "chain", "llm", "tool", "retriever", "embedding", "parser", "agent" ], "title": "SpanType", "type": "string" }, "TeamCreate": { "description": "Payload for creating an authz_team.", "properties": { "adom_name": { "description": "Administrative-domain slug, unique across all teams (often the SSO group name).", "maxLength": 255, "minLength": 1, "title": "Adom Name", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "is_active": { "default": true, "title": "Is Active", "type": "boolean" }, "team_name": { "maxLength": 255, "minLength": 1, "title": "Team Name", "type": "string" } }, "required": [ "team_name", "adom_name" ], "title": "TeamCreate", "type": "object" }, "TeamMemberCreate": { "description": "Payload for adding a user to a team.", "properties": { "source": { "default": "manual", "enum": [ "manual", "sso" ], "title": "Source", "type": "string" }, "user_id": { "format": "uuid", "title": "User Id", "type": "string" } }, "required": [ "user_id" ], "title": "TeamMemberCreate", "type": "object" }, "TeamMemberRead": { "description": "Serialized authz_team_member row.", "properties": { "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "source": { "title": "Source", "type": "string" }, "team_id": { "format": "uuid", "title": "Team Id", "type": "string" }, "user_id": { "format": "uuid", "title": "User Id", "type": "string" } }, "required": [ "id", "team_id", "user_id", "source", "created_at" ], "title": "TeamMemberRead", "type": "object" }, "TeamRead": { "description": "Serialized authz_team row returned by the API.", "properties": { "adom_name": { "title": "Adom Name", "type": "string" }, "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "is_active": { "title": "Is Active", "type": "boolean" }, "team_name": { "title": "Team Name", "type": "string" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" } }, "required": [ "id", "team_name", "adom_name", "description", "is_active", "created_at", "updated_at" ], "title": "TeamRead", "type": "object" }, "TeamUpdate": { "description": "Payload for updating an authz_team (PATCH semantics).", "properties": { "adom_name": { "anyOf": [ { "maxLength": 255, "minLength": 1, "type": "string" }, { "type": "null" } ], "title": "Adom Name" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "is_active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active" }, "team_name": { "anyOf": [ { "maxLength": 255, "minLength": 1, "type": "string" }, { "type": "null" } ], "title": "Team Name" } }, "title": "TeamUpdate", "type": "object" }, "TraceListResponse": { "description": "Paginated list response for traces.", "properties": { "pages": { "title": "Pages", "type": "integer" }, "total": { "title": "Total", "type": "integer" }, "traces": { "items": { "$ref": "#/components/schemas/TraceSummaryRead" }, "title": "Traces", "type": "array" } }, "required": [ "traces", "total", "pages" ], "title": "TraceListResponse", "type": "object" }, "TraceRead": { "description": "Response model for a single trace with its hierarchical span tree.\n\nSerializes to camelCase JSON to match the frontend API contract.", "properties": { "endTime": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Endtime" }, "flowId": { "format": "uuid", "title": "Flowid", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "input": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" }, { "type": "null" } ], "title": "Input" }, "name": { "title": "Name", "type": "string" }, "output": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" }, { "type": "null" } ], "title": "Output" }, "sessionId": { "title": "Sessionid", "type": "string" }, "spans": { "items": { "$ref": "#/components/schemas/SpanReadResponse" }, "title": "Spans", "type": "array" }, "startTime": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Starttime" }, "status": { "$ref": "#/components/schemas/SpanStatus" }, "totalLatencyMs": { "title": "Totallatencyms", "type": "integer" }, "totalTokens": { "title": "Totaltokens", "type": "integer" } }, "required": [ "id", "name", "status", "startTime", "endTime", "totalLatencyMs", "totalTokens", "flowId", "sessionId" ], "title": "TraceRead", "type": "object" }, "TraceSummaryRead": { "description": "Lightweight trace model for list endpoint.\n\nSerializes to camelCase JSON to match the frontend API contract.", "properties": { "flowId": { "format": "uuid", "title": "Flowid", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "input": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" }, { "type": "null" } ], "title": "Input" }, "name": { "title": "Name", "type": "string" }, "output": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" }, { "type": "null" } ], "title": "Output" }, "sessionId": { "title": "Sessionid", "type": "string" }, "startTime": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Starttime" }, "status": { "$ref": "#/components/schemas/SpanStatus" }, "totalLatencyMs": { "title": "Totallatencyms", "type": "integer" }, "totalTokens": { "title": "Totaltokens", "type": "integer" } }, "required": [ "id", "name", "status", "startTime", "totalLatencyMs", "totalTokens", "flowId", "sessionId" ], "title": "TraceSummaryRead", "type": "object" }, "TransactionLogsResponse": { "description": "Transaction response model for logs view - excludes error and flow_id fields.", "properties": { "id": { "format": "uuid", "title": "Id", "type": "string" }, "inputs": { "additionalProperties": true, "title": "Inputs", "type": "object" }, "outputs": { "additionalProperties": true, "title": "Outputs", "type": "object" }, "status": { "title": "Status", "type": "string" }, "target_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Id" }, "timestamp": { "format": "date-time", "title": "Timestamp", "type": "string" }, "vertex_id": { "title": "Vertex Id", "type": "string" } }, "required": [ "id", "vertex_id", "status" ], "title": "TransactionLogsResponse", "type": "object" }, "Tweaks": { "additionalProperties": { "anyOf": [ { "type": "boolean" }, { "type": "integer" }, { "type": "number" }, { "type": "string" }, { "additionalProperties": true, "type": "object" } ] }, "description": "A dictionary of tweaks to adjust the flow's execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.", "examples": [ { "Component Name": { "parameter_name": "value" }, "component_id": { "parameter_name": "value" }, "parameter_name": "value", "stream": false, "temperature": 0.7 } ], "title": "Tweaks", "type": "object" }, "Usage": { "description": "Token usage information from LLM responses.", "properties": { "input_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Input Tokens" }, "output_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Output Tokens" }, "total_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Total Tokens" } }, "title": "Usage", "type": "object" }, "UserCreate": { "properties": { "optins": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": { "dialog_dismissed": false, "discord_clicked": false, "github_starred": false }, "title": "Optins" }, "password": { "title": "Password", "type": "string" }, "username": { "title": "Username", "type": "string" } }, "required": [ "username", "password" ], "title": "UserCreate", "type": "object" }, "UserRead": { "properties": { "create_at": { "format": "date-time", "title": "Create At", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "is_active": { "title": "Is Active", "type": "boolean" }, "is_superuser": { "title": "Is Superuser", "type": "boolean" }, "last_login_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Login At" }, "optins": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Optins" }, "profile_image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Profile Image" }, "store_api_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Store Api Key" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "username": { "title": "Username", "type": "string" } }, "required": [ "username", "profile_image", "store_api_key", "is_active", "is_superuser", "create_at", "updated_at", "last_login_at" ], "title": "UserRead", "type": "object" }, "UserUpdate": { "properties": { "is_active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active" }, "is_superuser": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Superuser" }, "last_login_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Login At" }, "optins": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Optins" }, "password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Password" }, "profile_image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Profile Image" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" } }, "title": "UserUpdate", "type": "object" }, "UsersResponse": { "properties": { "total_count": { "title": "Total Count", "type": "integer" }, "users": { "items": { "$ref": "#/components/schemas/UserRead" }, "title": "Users", "type": "array" } }, "required": [ "total_count", "users" ], "title": "UsersResponse", "type": "object" }, "ValidationError": { "properties": { "ctx": { "title": "Context", "type": "object" }, "input": { "title": "Input" }, "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "title": "Location", "type": "array" }, "msg": { "title": "Message", "type": "string" }, "type": { "title": "Error Type", "type": "string" } }, "required": [ "loc", "msg", "type" ], "title": "ValidationError", "type": "object" }, "VertexBuildMapModel": { "properties": { "vertex_builds": { "additionalProperties": { "items": { "$ref": "#/components/schemas/VertexBuildTable" }, "type": "array" }, "title": "Vertex Builds", "type": "object" } }, "required": [ "vertex_builds" ], "title": "VertexBuildMapModel", "type": "object" }, "VertexBuildTable": { "properties": { "artifacts": { "additionalProperties": true, "title": "Artifacts", "type": "object" }, "build_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Build Id" }, "data": { "additionalProperties": true, "title": "Data", "type": "object" }, "flow_id": { "format": "uuid", "title": "Flow Id", "type": "string" }, "id": { "title": "Id", "type": "string" }, "job_id": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Job Id" }, "params": { "title": "Params", "type": "string" }, "timestamp": { "format": "date-time", "title": "Timestamp", "type": "string" }, "valid": { "title": "Valid", "type": "boolean" } }, "required": [ "id", "valid", "flow_id" ], "title": "VertexBuildTable", "type": "object" }, "ViewPort": { "properties": { "x": { "title": "X", "type": "number" }, "y": { "title": "Y", "type": "number" }, "zoom": { "title": "Zoom", "type": "number" } }, "required": [ "x", "y", "zoom" ], "title": "ViewPort", "type": "object" }, "WorkflowMode": { "description": "Execution mode for a v2 workflow run.", "enum": [ "sync", "stream", "background" ], "title": "WorkflowMode", "type": "string" }, "WorkflowOutput": { "description": "The run's primary text answer plus the reason it resolved that way.", "properties": { "reason": { "$ref": "#/components/schemas/OutputReason", "description": "Why ``text`` is or isn't populated. ``single`` means ``text`` holds the answer; ``multiple`` / ``none`` / ``non_string`` / ``failed`` mean ``text`` is null and name why, so callers never have to guess." }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Component id that produced ``text``. Set only when ``reason`` is ``single``.", "title": "Source" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The run's text answer. Set only when ``reason`` is ``single``. Empty string is a valid answer.", "title": "Text" } }, "required": [ "reason" ], "title": "WorkflowOutput", "type": "object" }, "WorkflowResumeRequest": { "description": "Request schema for resuming a suspended (human-in-the-loop) workflow.", "properties": { "decision": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Decision" }, "request_id": { "title": "Request Id", "type": "string" } }, "required": [ "request_id" ], "title": "WorkflowResumeRequest", "type": "object" }, "WorkflowResumeResponse": { "description": "Response schema for resuming a workflow.", "properties": { "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" } ], "title": "Job Id" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Message" }, "status": { "title": "Status", "type": "string" } }, "required": [ "job_id", "status" ], "title": "WorkflowResumeResponse", "type": "object" }, "WorkflowRunRequest": { "additionalProperties": false, "description": "Request schema for ``POST /api/v2/workflows`` (v2 native body).\n\nFirst-class fields for everything callers actually configure when running a\nflow. Streaming protocol is selected by ``stream_protocol``; the endpoint\nvalidates it against the live adapter registry and returns 422 with the\navailable list when unknown.", "examples": [ { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Hello, how can you help me today?" }, { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Stream this conversation", "mode": "stream" }, { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Drive the canvas", "mode": "stream", "session_id": "session-123", "stream_protocol": "agui" }, { "flow_id": "67ccd2be-17f0-8190-81ff-3bb2cf6508e6", "input_value": "Process in the background", "mode": "background" } ], "properties": { "data": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Optional live-canvas override of the flow's nodes/edges; takes priority over the saved flow data.", "title": "Data" }, "files": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Optional list of pre-uploaded file paths to attach to the run.", "title": "Files" }, "flow_id": { "description": "UUID of the flow to run.", "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "description": "Request-level global variables made available to workflow components. Keys may use any printable string up to 256 chars; values are capped at 65536 chars. Body globals always win over the legacy ``X-LANGFLOW-GLOBAL-VAR-*`` headers. Honored in sync mode; ignored for stream/background modes.", "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "idempotency_key": { "anyOf": [ { "maxLength": 255, "type": "string" }, { "type": "null" } ], "description": "Optional client-supplied key that dedupes background submits. Two background runs with the same key return the same job_id instead of queuing duplicate work. Ignored for sync/stream modes.", "title": "Idempotency Key" }, "input_value": { "default": "", "description": "Chat-style input value.", "title": "Input Value", "type": "string" }, "mode": { "$ref": "#/components/schemas/WorkflowMode", "default": "sync", "description": "Execution mode. ``sync`` runs inline and returns the aggregated response; ``stream`` returns SSE; ``background`` queues a job." }, "output_ids": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Component ids of the outputs you want as the answer (sync mode). When set, ``output.text`` resolves among only these, so naming one text output makes ``output.reason`` deterministic on multi-output flows. The full ``outputs`` map is still returned. Ids must be outputs of this flow or the request is rejected before the flow runs. Ignored for stream/background modes.", "title": "Output Ids" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "When set, message memory and chat history scope to this session.", "title": "Session Id" }, "start_component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Partial-run start component id.", "title": "Start Component Id" }, "stop_component_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Partial-run stop component id.", "title": "Stop Component Id" }, "stream_protocol": { "default": "langflow", "description": "Wire protocol for streaming events. Defaults to ``langflow`` (raw EventManager payloads). ``agui`` emits AG-UI events. Unknown values return 422 with the available list. Ignored when mode=sync.", "title": "Stream Protocol", "type": "string" }, "tweaks": { "additionalProperties": true, "description": "Per-component parameter overrides keyed by component id.", "title": "Tweaks", "type": "object" } }, "required": [ "flow_id" ], "title": "WorkflowRunRequest", "type": "object" }, "WorkflowStopRequest": { "description": "Request schema for stopping workflow.", "properties": { "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" } ], "title": "Job Id" } }, "required": [ "job_id" ], "title": "WorkflowStopRequest", "type": "object" }, "WorkflowStopResponse": { "description": "Response schema for stopping workflow.", "properties": { "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" } ], "title": "Job Id" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Message" } }, "required": [ "job_id" ], "title": "WorkflowStopResponse", "type": "object" }, "langflow__api__schemas__UploadFileResponse": { "description": "File upload response schema.", "properties": { "id": { "format": "uuid", "title": "Id", "type": "string" }, "name": { "title": "Name", "type": "string" }, "path": { "title": "Path", "type": "string" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "size": { "title": "Size", "type": "integer" } }, "required": [ "id", "name", "path", "size" ], "title": "UploadFileResponse", "type": "object" }, "langflow__api__v1__schemas__UploadFileResponse": { "description": "Upload file response schema.", "properties": { "file_path": { "title": "File Path", "type": "string" }, "flowId": { "title": "Flowid", "type": "string" } }, "required": [ "flowId", "file_path" ], "title": "UploadFileResponse", "type": "object" }, "langflow__services__database__models__file__model__File": { "properties": { "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "id": { "format": "uuid", "title": "Id", "type": "string" }, "name": { "title": "Name", "type": "string" }, "path": { "title": "Path", "type": "string" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "size": { "title": "Size", "type": "integer" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "user_id": { "format": "uuid", "title": "User Id", "type": "string" } }, "required": [ "user_id", "name", "path", "size" ], "title": "File", "type": "object" }, "lfx__utils__schemas__File": { "description": "File schema.", "properties": { "name": { "title": "Name", "type": "string" }, "path": { "title": "Path", "type": "string" }, "type": { "title": "Type", "type": "string" } }, "required": [ "path", "name", "type" ], "title": "File", "type": "object" } }, "securitySchemes": { "API key header": { "in": "header", "name": "x-api-key", "type": "apiKey" }, "API key query": { "in": "query", "name": "x-api-key", "type": "apiKey" }, "OAuth2PasswordBearerCookie": { "flows": { "password": { "scopes": {}, "tokenUrl": "api/v1/login" } }, "type": "oauth2" } } }, "info": { "title": "Langflow", "version": "1.11.0" }, "openapi": "3.1.0", "paths": { "/api/v1/a2a/agents": { "get": { "description": "List the caller's own A2A-published agent flows, each with its agent-card URL.\n\nAuthenticated and owner-scoped, mirroring the MCP-projects catalog: a public cross-user\ndirectory would strip the per-flow card's unguessable-id obscurity and expose other users'\nagents, so this enumerates only the calling user's agents. Each ``cardUrl`` is the public\ndiscovery entry point an orchestrator fetches per agent.", "operationId": "list_a2a_agents_api_v1_a2a_agents_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response List A2A Agents Api V1 A2A Agents Get", "type": "array" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List A2A Agents", "tags": [ "a2a" ] } }, "/api/v1/a2a/{flow_id}/.well-known/agent-card.json": { "get": { "description": "Serve the spec-valid A2A agent card for an agent-typed, a2a_enabled flow.\n\nPublic by design: the A2A public agent card is unauthenticated by spec, so\ngating it behind login would break standard discovery. Returns 404 when the\nflag is off, the flow does not exist, the flow is not flow_type=agent, or\na2a_enabled is falsy.", "operationId": "get_agent_card_api_v1_a2a__flow_id___well_known_agent_card_json_get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Agent Card Api V1 A2A Flow Id Well Known Agent Card Json Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Agent Card", "tags": [ "a2a" ] } }, "/api/v1/a2a/{flow_id}/jsonrpc": { "post": { "description": "Serve the A2A JSON-RPC surface (message/send, message/stream, tasks/get, tasks/resubscribe) for an agent flow.\n\nGated like the card route; apikey-folder flows additionally require a valid owner\nkey (401). The flow runs as its owner. Returns the SDK's JSON-RPC response (HTTP 200\neven for JSON-RPC-level errors). No ``DbSession`` dependency here: holding a session\nopen across the run would fight the v2 surface's lock-avoidance design, and the\ngate/run resolve from flow_id via short self-managed sessions.", "operationId": "a2a_jsonrpc_api_v1_a2a__flow_id__jsonrpc_post", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "A2A Jsonrpc", "tags": [ "a2a" ] } }, "/api/v1/agentic/assist": { "post": { "description": "Chat with the Langflow Assistant.", "operationId": "assist_api_v1_agentic_assist_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssistantRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Assist Api V1 Agentic Assist Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Assist", "tags": [ "Agentic" ] } }, "/api/v1/agentic/assist/stream": { "post": { "description": "Chat with the Langflow Assistant with streaming progress updates.", "operationId": "assist_stream_api_v1_agentic_assist_stream_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssistantRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Assist Stream", "tags": [ "Agentic" ] } }, "/api/v1/agentic/check-config": { "get": { "description": "Check if the Langflow Assistant is properly configured.\n\nReturns available providers with their configured status and available models.", "operationId": "check_assistant_config_api_v1_agentic_check_config_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Check Assistant Config Api V1 Agentic Check Config Get", "type": "object" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Check Assistant Config", "tags": [ "Agentic" ] } }, "/api/v1/agentic/execute/{flow_name}": { "post": { "description": "Execute a named flow from the flows directory.\n\nNamed assistant flows embed an Agent that needs provider/model/api-key\ncontext. Resolving it here (instead of running the raw file) turns a\nsilent 500 into a successful run, or a clear 4xx when no provider is set.", "operationId": "execute_named_flow_api_v1_agentic_execute__flow_name__post", "parameters": [ { "in": "path", "name": "flow_name", "required": true, "schema": { "title": "Flow Name", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssistantRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Execute Named Flow Api V1 Agentic Execute Flow Name Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Execute Named Flow", "tags": [ "Agentic" ] } }, "/api/v1/agentic/files": { "get": { "description": "Return the contents of a sandboxed file as text (or as an attachment).\n\nRaises:\n HTTPException(400): The path shape is invalid (traversal, absolute,\n null byte, etc.). No I/O is attempted.\n HTTPException(404): The file does not exist in the requesting user's\n sandbox. Same status for sandbox-internal \"not found\" and for\n \"path resolves outside the user namespace\" — by design, to avoid\n leaking namespace existence to another tenant.\n HTTPException(413): The file is larger than ``MAX_FILE_SIZE_BYTES``.\n HTTPException(415): The file is binary (null byte in the first 8 KiB).", "operationId": "get_file_api_v1_agentic_files_get", "parameters": [ { "in": "query", "name": "path", "required": true, "schema": { "maxLength": 1024, "minLength": 1, "title": "Path", "type": "string" } }, { "in": "query", "name": "download", "required": false, "schema": { "default": false, "title": "Download", "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get File", "tags": [ "Agentic" ] } }, "/api/v1/agentic/sessions/reset": { "post": { "description": "Drop the calling user's session-scoped state.\n\nWipes:\n - conversation buffer for ``session_id`` (if provided).\n - registered components under the user's FS sandbox.\n\nThe user id is sourced from the authenticated session — the\n``session_id`` query parameter only addresses the conversation\nbuffer entry and is never trusted for path resolution.\n\nReturns a small envelope describing what was cleared, sufficient\nfor ops/log correlation but stripped of anything sensitive:\n\n```\n{\"status\": \"ok\", \"components_cleared\": , \"session_id\": }\n```", "operationId": "reset_session_api_v1_agentic_sessions_reset_post", "parameters": [ { "in": "query", "name": "session_id", "required": false, "schema": { "anyOf": [ { "maxLength": 128, "type": "string" }, { "type": "null" } ], "title": "Session Id" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Reset Session Api V1 Agentic Sessions Reset Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Reset Session", "tags": [ "agentic" ] } }, "/api/v1/all": { "get": { "description": "Retrieve all component types with compression for better performance.\n\nReturns a compressed response containing all available component types,\nwith display_names translated to the locale indicated by Accept-Language.", "operationId": "get_all_api_v1_all_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get All", "tags": [ "Base" ] } }, "/api/v1/authz/audit": { "get": { "description": "Return a paginated slice of the audit log filtered by the given query params.\n\nSuperuser only. The composite indexes on ``(user_id, timestamp)`` and\n``(resource_type, resource_id)`` keep both \"show me events for user X\"\nand \"show me events on resource Y\" fast at scale.", "operationId": "list_audit_log_api_v1_authz_audit_get", "parameters": [ { "description": "Filter by acting user id.", "in": "query", "name": "user_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by acting user id.", "title": "User Id" } }, { "description": "Filter by resource type slug, e.g. ``flow`` or ``deployment``.", "in": "query", "name": "resource_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by resource type slug, e.g. ``flow`` or ``deployment``.", "title": "Resource Type" } }, { "description": "Filter by resource UUID.", "in": "query", "name": "resource_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by resource UUID.", "title": "Resource Id" } }, { "description": "Filter by action string, e.g. ``flow:read`` or ``share:create``.", "in": "query", "name": "action", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by action string, e.g. ``flow:read`` or ``share:create``.", "title": "Action" } }, { "description": "Filter by decision result (``allow`` / ``deny`` / ``owner_override``).", "in": "query", "name": "result", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by decision result (``allow`` / ``deny`` / ``owner_override``).", "title": "Result" } }, { "description": "Inclusive lower bound on ``timestamp``.", "in": "query", "name": "since", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Inclusive lower bound on ``timestamp``.", "title": "Since" } }, { "description": "Exclusive upper bound on ``timestamp``.", "in": "query", "name": "until", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Exclusive upper bound on ``timestamp``.", "title": "Until" } }, { "in": "query", "name": "page", "required": false, "schema": { "default": 1, "minimum": 1, "title": "Page", "type": "integer" } }, { "in": "query", "name": "size", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthzAuditPage" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Audit Log", "tags": [ "Authorization" ] } }, "/api/v1/authz/audit/": { "get": { "description": "Return a paginated slice of the audit log filtered by the given query params.\n\nSuperuser only. The composite indexes on ``(user_id, timestamp)`` and\n``(resource_type, resource_id)`` keep both \"show me events for user X\"\nand \"show me events on resource Y\" fast at scale.", "operationId": "list_audit_log_api_v1_authz_audit__get", "parameters": [ { "description": "Filter by acting user id.", "in": "query", "name": "user_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by acting user id.", "title": "User Id" } }, { "description": "Filter by resource type slug, e.g. ``flow`` or ``deployment``.", "in": "query", "name": "resource_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by resource type slug, e.g. ``flow`` or ``deployment``.", "title": "Resource Type" } }, { "description": "Filter by resource UUID.", "in": "query", "name": "resource_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by resource UUID.", "title": "Resource Id" } }, { "description": "Filter by action string, e.g. ``flow:read`` or ``share:create``.", "in": "query", "name": "action", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by action string, e.g. ``flow:read`` or ``share:create``.", "title": "Action" } }, { "description": "Filter by decision result (``allow`` / ``deny`` / ``owner_override``).", "in": "query", "name": "result", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by decision result (``allow`` / ``deny`` / ``owner_override``).", "title": "Result" } }, { "description": "Inclusive lower bound on ``timestamp``.", "in": "query", "name": "since", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Inclusive lower bound on ``timestamp``.", "title": "Since" } }, { "description": "Exclusive upper bound on ``timestamp``.", "in": "query", "name": "until", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Exclusive upper bound on ``timestamp``.", "title": "Until" } }, { "in": "query", "name": "page", "required": false, "schema": { "default": 1, "minimum": 1, "title": "Page", "type": "integer" } }, { "in": "query", "name": "size", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthzAuditPage" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Audit Log", "tags": [ "Authorization" ] } }, "/api/v1/authz/me/permissions": { "post": { "description": "Return per-resource allowed actions for the current user.\n\nUse this to render the UI permission gate (greyed-out buttons etc.) without\nflooding the audit log with denied probes. Empty list for a resource_id\nmeans the user cannot perform any of the requested actions on that resource.", "operationId": "get_effective_permissions_api_v1_authz_me_permissions_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EffectivePermissionsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EffectivePermissionsResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Effective Permissions", "tags": [ "Authorization" ] } }, "/api/v1/authz/role-assignments": { "get": { "description": "List role assignments scoped to one user.\n\n* Omitting ``user_id`` defaults to the caller — no superuser needed.\n* Passing ``user_id == self.id`` is the same as omitting it.\n* Passing a different ``user_id`` requires superuser; otherwise 403.\n\nResults are always filtered by the resolved ``user_id``. Admins who need\ncross-user lookups make one call per user. Paginated via ``limit`` /\n``offset`` (default 100, max 200).", "operationId": "list_assignments_api_v1_authz_role_assignments_get", "parameters": [ { "description": "Filter by user", "in": "query", "name": "user_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by user", "title": "User Id" } }, { "description": "Filter by role", "in": "query", "name": "role_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by role", "title": "Role Id" } }, { "in": "query", "name": "domain_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Domain Type" } }, { "in": "query", "name": "domain_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Domain Id" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RoleAssignmentRead" }, "title": "Response List Assignments Api V1 Authz Role Assignments Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Assignments", "tags": [ "Authorization" ] }, "post": { "description": "Assign a role to a user. Superuser-only.", "operationId": "create_assignment_api_v1_authz_role_assignments_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleAssignmentCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleAssignmentRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Assignment", "tags": [ "Authorization" ] } }, "/api/v1/authz/role-assignments/": { "get": { "description": "List role assignments scoped to one user.\n\n* Omitting ``user_id`` defaults to the caller — no superuser needed.\n* Passing ``user_id == self.id`` is the same as omitting it.\n* Passing a different ``user_id`` requires superuser; otherwise 403.\n\nResults are always filtered by the resolved ``user_id``. Admins who need\ncross-user lookups make one call per user. Paginated via ``limit`` /\n``offset`` (default 100, max 200).", "operationId": "list_assignments_api_v1_authz_role_assignments__get", "parameters": [ { "description": "Filter by user", "in": "query", "name": "user_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by user", "title": "User Id" } }, { "description": "Filter by role", "in": "query", "name": "role_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Filter by role", "title": "Role Id" } }, { "in": "query", "name": "domain_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Domain Type" } }, { "in": "query", "name": "domain_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Domain Id" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RoleAssignmentRead" }, "title": "Response List Assignments Api V1 Authz Role Assignments Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Assignments", "tags": [ "Authorization" ] }, "post": { "description": "Assign a role to a user. Superuser-only.", "operationId": "create_assignment_api_v1_authz_role_assignments__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleAssignmentCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleAssignmentRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Assignment", "tags": [ "Authorization" ] } }, "/api/v1/authz/role-assignments/{assignment_id}": { "delete": { "description": "Revoke a role assignment. Superuser-only.", "operationId": "delete_assignment_api_v1_authz_role_assignments__assignment_id__delete", "parameters": [ { "in": "path", "name": "assignment_id", "required": true, "schema": { "format": "uuid", "title": "Assignment Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Assignment", "tags": [ "Authorization" ] } }, "/api/v1/authz/roles": { "get": { "description": "List roles. Open to authenticated users so the UI can populate dropdowns.\n\nPaginated via ``limit`` / ``offset`` so a single call cannot return the\nentire catalog of roles + their permissions. Stable order is ``(name, id)``\nso ``offset`` is deterministic across calls.", "operationId": "list_roles_api_v1_authz_roles_get", "parameters": [ { "description": "Filter by is_system flag", "in": "query", "name": "is_system", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by is_system flag", "title": "Is System" } }, { "description": "Substring match on role name", "in": "query", "name": "name", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Substring match on role name", "title": "Name" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RoleRead" }, "title": "Response List Roles Api V1 Authz Roles Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Roles", "tags": [ "Authorization" ] }, "post": { "description": "Create a custom (non-system) role. Superuser-only.", "operationId": "create_role_api_v1_authz_roles_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Role", "tags": [ "Authorization" ] } }, "/api/v1/authz/roles/": { "get": { "description": "List roles. Open to authenticated users so the UI can populate dropdowns.\n\nPaginated via ``limit`` / ``offset`` so a single call cannot return the\nentire catalog of roles + their permissions. Stable order is ``(name, id)``\nso ``offset`` is deterministic across calls.", "operationId": "list_roles_api_v1_authz_roles__get", "parameters": [ { "description": "Filter by is_system flag", "in": "query", "name": "is_system", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by is_system flag", "title": "Is System" } }, { "description": "Substring match on role name", "in": "query", "name": "name", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Substring match on role name", "title": "Name" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RoleRead" }, "title": "Response List Roles Api V1 Authz Roles Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Roles", "tags": [ "Authorization" ] }, "post": { "description": "Create a custom (non-system) role. Superuser-only.", "operationId": "create_role_api_v1_authz_roles__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Role", "tags": [ "Authorization" ] } }, "/api/v1/authz/roles/{role_id}": { "delete": { "description": "Delete a custom role.\n\nSystem roles cannot be deleted; roles with active assignments return 409\n(delete the assignments first).", "operationId": "delete_role_api_v1_authz_roles__role_id__delete", "parameters": [ { "in": "path", "name": "role_id", "required": true, "schema": { "format": "uuid", "title": "Role Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Role", "tags": [ "Authorization" ] }, "get": { "operationId": "read_role_api_v1_authz_roles__role_id__get", "parameters": [ { "in": "path", "name": "role_id", "required": true, "schema": { "format": "uuid", "title": "Role Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Role", "tags": [ "Authorization" ] }, "patch": { "description": "Update fields on a custom role. System roles are read-only.", "operationId": "update_role_api_v1_authz_roles__role_id__patch", "parameters": [ { "in": "path", "name": "role_id", "required": true, "schema": { "format": "uuid", "title": "Role Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Role", "tags": [ "Authorization" ] } }, "/api/v1/authz/shares": { "get": { "description": "List share rows visible to the caller (paginated, max 200).", "operationId": "list_shares_api_v1_authz_shares_get", "parameters": [ { "in": "query", "name": "resource_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Resource Type" } }, { "in": "query", "name": "resource_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Resource Id" } }, { "in": "query", "name": "target_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Target Id" } }, { "in": "query", "name": "scope", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Scope" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ShareRead" }, "title": "Response List Shares Api V1 Authz Shares Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Shares", "tags": [ "Authorization" ] }, "post": { "description": "Create an authz_share row for a resource.", "operationId": "create_share_api_v1_authz_shares_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Share", "tags": [ "Authorization" ] } }, "/api/v1/authz/shares/": { "get": { "description": "List share rows visible to the caller (paginated, max 200).", "operationId": "list_shares_api_v1_authz_shares__get", "parameters": [ { "in": "query", "name": "resource_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Resource Type" } }, { "in": "query", "name": "resource_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Resource Id" } }, { "in": "query", "name": "target_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Target Id" } }, { "in": "query", "name": "scope", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Scope" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ShareRead" }, "title": "Response List Shares Api V1 Authz Shares Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Shares", "tags": [ "Authorization" ] }, "post": { "description": "Create an authz_share row for a resource.", "operationId": "create_share_api_v1_authz_shares__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Share", "tags": [ "Authorization" ] } }, "/api/v1/authz/shares/{share_id}": { "delete": { "description": "Revoke an existing share.", "operationId": "delete_share_api_v1_authz_shares__share_id__delete", "parameters": [ { "in": "path", "name": "share_id", "required": true, "schema": { "format": "uuid", "title": "Share Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Share", "tags": [ "Authorization" ] }, "get": { "description": "Fetch a single share by id with the same visibility rules as list.", "operationId": "get_share_api_v1_authz_shares__share_id__get", "parameters": [ { "in": "path", "name": "share_id", "required": true, "schema": { "format": "uuid", "title": "Share Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Share", "tags": [ "Authorization" ] }, "patch": { "description": "Update the permission level of an existing share.", "operationId": "update_share_api_v1_authz_shares__share_id__patch", "parameters": [ { "in": "path", "name": "share_id", "required": true, "schema": { "format": "uuid", "title": "Share Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Share", "tags": [ "Authorization" ] } }, "/api/v1/authz/teams": { "get": { "description": "List teams. Open to any authenticated user (for the share dialog's team picker).\n\nPaginated via ``limit`` / ``offset`` so a single call cannot enumerate every\nteam. Stable order is ``(team_name, id)`` so ``offset`` is deterministic.", "operationId": "list_teams_api_v1_authz_teams_get", "parameters": [ { "description": "Substring match on team_name or adom_name", "in": "query", "name": "search", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Substring match on team_name or adom_name", "title": "Search" } }, { "in": "query", "name": "is_active", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TeamRead" }, "title": "Response List Teams Api V1 Authz Teams Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Teams", "tags": [ "Authorization" ] }, "post": { "operationId": "create_team_api_v1_authz_teams_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Team", "tags": [ "Authorization" ] } }, "/api/v1/authz/teams/": { "get": { "description": "List teams. Open to any authenticated user (for the share dialog's team picker).\n\nPaginated via ``limit`` / ``offset`` so a single call cannot enumerate every\nteam. Stable order is ``(team_name, id)`` so ``offset`` is deterministic.", "operationId": "list_teams_api_v1_authz_teams__get", "parameters": [ { "description": "Substring match on team_name or adom_name", "in": "query", "name": "search", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Substring match on team_name or adom_name", "title": "Search" } }, { "in": "query", "name": "is_active", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TeamRead" }, "title": "Response List Teams Api V1 Authz Teams Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Teams", "tags": [ "Authorization" ] }, "post": { "operationId": "create_team_api_v1_authz_teams__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Team", "tags": [ "Authorization" ] } }, "/api/v1/authz/teams/{team_id}": { "delete": { "operationId": "delete_team_api_v1_authz_teams__team_id__delete", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Team", "tags": [ "Authorization" ] }, "get": { "operationId": "read_team_api_v1_authz_teams__team_id__get", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Team", "tags": [ "Authorization" ] }, "patch": { "operationId": "update_team_api_v1_authz_teams__team_id__patch", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Team", "tags": [ "Authorization" ] } }, "/api/v1/authz/teams/{team_id}/members": { "get": { "description": "List members of a team. Any authenticated user (so the UI can render team rosters).\n\nPaginated via ``limit`` / ``offset`` so a single call cannot enumerate a\nlarge team's full roster. Stable order is ``(created_at, user_id)``.", "operationId": "list_members_api_v1_authz_teams__team_id__members_get", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "offset", "required": false, "schema": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TeamMemberRead" }, "title": "Response List Members Api V1 Authz Teams Team Id Members Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Members", "tags": [ "Authorization" ] }, "post": { "operationId": "add_member_api_v1_authz_teams__team_id__members_post", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMemberCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMemberRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Add Member", "tags": [ "Authorization" ] } }, "/api/v1/authz/teams/{team_id}/members/{user_id}": { "delete": { "operationId": "remove_member_api_v1_authz_teams__team_id__members__user_id__delete", "parameters": [ { "in": "path", "name": "team_id", "required": true, "schema": { "format": "uuid", "title": "Team Id", "type": "string" } }, { "in": "path", "name": "user_id", "required": true, "schema": { "format": "uuid", "title": "User Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Remove Member", "tags": [ "Authorization" ] } }, "/api/v1/build/{flow_id}/flow": { "post": { "description": "Build and process a flow, returning a job ID for event polling.\n\nThis endpoint requires authentication through the CurrentActiveUser dependency.\nFor public flows that don't require authentication, use the /build_public_tmp/flow_id/flow endpoint.\n\nArgs:\n flow_id: UUID of the flow to build\n background_tasks: Background tasks manager\n inputs: Optional input values for the flow\n data: Optional flow data\n files: Optional files to include\n stop_component_id: Optional ID of component to stop at\n start_component_id: Optional ID of component to start from\n log_builds: Whether to log the build process\n current_user: The authenticated user\n queue_service: Queue service for job management\n flow_name: Optional name for the flow\n event_delivery: Optional event delivery type - default is streaming\n\nReturns:\n Dict with job_id that can be used to poll for build status", "operationId": "build_flow_api_v1_build__flow_id__flow_post", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } }, { "in": "query", "name": "stop_component_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stop Component Id" } }, { "in": "query", "name": "start_component_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Start Component Id" } }, { "in": "query", "name": "log_builds", "required": false, "schema": { "default": true, "title": "Log Builds", "type": "boolean" } }, { "in": "query", "name": "flow_name", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Flow Name" } }, { "in": "query", "name": "event_delivery", "required": false, "schema": { "$ref": "#/components/schemas/EventDeliveryType", "default": "polling" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body_build_flow_api_v1_build__flow_id__flow_post" } } } }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Build Flow", "tags": [ "Chat" ] } }, "/api/v1/build/{job_id}/cancel": { "post": { "description": "Cancel a specific build job.\n\nRequires authentication and ownership verification to prevent a user from\naborting another user's running build (DoS via job cancellation).\nJobs with no registered owner (build_public_tmp) are accessible to any\nauthenticated user, consistent with get_build_events.", "operationId": "cancel_build_api_v1_build__job_id__cancel_post", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CancelFlowResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Cancel Build", "tags": [ "Chat" ] } }, "/api/v1/build/{job_id}/events": { "get": { "description": "Get events for a specific build job.\n\nRequires authentication and ownership verification. A job owner is registered\nwhen build_flow is called; if a registered owner does not match the requesting\nuser the endpoint returns 404 to avoid leaking job existence.\nJobs started via build_public_tmp have no registered owner and remain accessible\nto any authenticated user.", "operationId": "get_build_events_api_v1_build__job_id__events_get", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } }, { "in": "query", "name": "event_delivery", "required": false, "schema": { "$ref": "#/components/schemas/EventDeliveryType", "default": "streaming" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Build Events", "tags": [ "Chat" ] } }, "/api/v1/build_public_tmp/{flow_id}/flow": { "post": { "description": "Build a public flow without requiring authentication.\n\nThis endpoint is specifically for public flows that don't require authentication.\nIt uses a client_id cookie to create a deterministic flow ID for tracking purposes.\n\nSecurity Note:\n- The 'data' parameter is NOT accepted to prevent flow definition tampering\n- Public flows must execute the stored flow definition only\n- The flow definition is always loaded from the database\n- Caller-supplied 'inputs.session' is namespaced under the (client_id,\n flow_id) virtual flow ID so an unauthenticated caller cannot address a\n session that lives outside its own namespace (CVE-2026-33017)\n\nThe endpoint:\n1. Verifies the requested flow is marked as public in the database\n2. Creates a deterministic UUID based on client_id and flow_id\n3. Uses the flow owner's permissions to build the flow\n4. Always loads the flow definition from the database\n\nRequirements:\n- The flow must be marked as PUBLIC in the database\n- The request must include a client_id cookie\n\nArgs:\n flow_id: UUID of the public flow to build\n background_tasks: Background tasks manager\n inputs: Optional input values for the flow\n files: Optional files to include\n stop_component_id: Optional ID of component to stop at\n start_component_id: Optional ID of component to start from\n log_builds: Whether to log the build process\n flow_name: Optional name for the flow\n request: FastAPI request object (needed for cookie access)\n queue_service: Queue service for job management\n authenticated_user: Optional authenticated user (resolved from cookie/token if present)\n event_delivery: Optional event delivery type - default is streaming\n\nReturns:\n Dict with job_id that can be used to poll for build status", "operationId": "build_public_tmp_api_v1_build_public_tmp__flow_id__flow_post", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } }, { "in": "query", "name": "stop_component_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stop Component Id" } }, { "in": "query", "name": "start_component_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Start Component Id" } }, { "in": "query", "name": "log_builds", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "title": "Log Builds" } }, { "in": "query", "name": "flow_name", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Flow Name" } }, { "in": "query", "name": "event_delivery", "required": false, "schema": { "$ref": "#/components/schemas/EventDeliveryType", "default": "polling" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body_build_public_tmp_api_v1_build_public_tmp__flow_id__flow_post" } } } }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Build Public Tmp", "tags": [ "Chat" ] } }, "/api/v1/build_public_tmp/{job_id}/cancel": { "post": { "description": "Cancel a public flow build job.\n\nThis endpoint does not require authentication, matching the public build endpoint.\nIt is used by the shareable playground to cancel builds.", "operationId": "cancel_build_public_api_v1_build_public_tmp__job_id__cancel_post", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CancelFlowResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Cancel Build Public", "tags": [ "Chat" ] } }, "/api/v1/build_public_tmp/{job_id}/events": { "get": { "description": "Get events for a public flow build job.\n\nThis endpoint does not require authentication, matching the public build endpoint.\nIt is used by the shareable playground to consume build events.", "operationId": "get_build_events_public_api_v1_build_public_tmp__job_id__events_get", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } }, { "in": "query", "name": "event_delivery", "required": false, "schema": { "$ref": "#/components/schemas/EventDeliveryType", "default": "streaming" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Build Events Public", "tags": [ "Chat" ] } }, "/api/v1/config": { "get": { "description": "Retrieve application configuration settings.\n\nReturns different configuration based on authentication status:\n- Authenticated users: Full ConfigResponse with all settings\n- Unauthenticated users: PublicConfigResponse with limited, safe-to-expose settings\n\nArgs:\n user: The authenticated user, or None if unauthenticated.\n\nReturns:\n ConfigResponse | PublicConfigResponse: Configuration settings appropriate for the user's auth status.\n\nRaises:\n HTTPException: If an error occurs while retrieving the configuration.", "operationId": "get_config_api_v1_config_get", "responses": { "200": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/ConfigResponse" }, { "$ref": "#/components/schemas/PublicConfigResponse" } ], "title": "Response Get Config Api V1 Config Get" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Config", "tags": [ "Base" ] } }, "/api/v1/extensions/events": { "get": { "description": "Poll for extension lifecycle events the current user has triggered.\n\nEvents are scoped to the authenticated user via a server-derived keyspace\n(``user:{user_id}``); there is no client-controllable keyspace, so an\nauthenticated user cannot read another user's flow-migration or\nbundle-reload events. A client-supplied ``keyspace`` query parameter is\nrejected with 422 so the contract is explicit -- previously the value was\nsilently dropped, which masked client bugs that assumed it had effect.\n\nsvc.since() uses blocking sqlite3; run in a thread pool so the asyncio\nevent loop is not held while waiting on disk I/O.", "operationId": "get_extension_events_api_v1_extensions_events_get", "parameters": [ { "description": "UTC epoch timestamp; return events after this cursor", "in": "query", "name": "since", "required": false, "schema": { "default": 0.0, "description": "UTC epoch timestamp; return events after this cursor", "title": "Since", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtensionEventsResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Extension Events", "tags": [ "Extensions" ] } }, "/api/v1/extensions/{extension_id}/bundles/{bundle_name}/reload": { "post": { "description": "Trigger an atomic-swap reload for a single Bundle.\n\nReturns the typed :class:`~lfx.extension.reload.ReloadResult` body on\nsuccess. Per the typed-error contract, structural failures\n(broken bundle, missing source path, name mismatch) surface as\n``422 Unprocessable Entity`` with the first typed error in the body\nso clients can surface fix hints inline; the full ``ReloadResult``\npayload (with all errors and warnings) is returned via the FastAPI\n``detail`` envelope. Concurrency-control collisions surface as\n``409 Conflict`` (``reload-in-progress``). Non-2xx is the wire\ncontract for every error path -- the body still carries the typed\nerror so the client renders the same fix-hint envelope.", "operationId": "reload_extension_bundle_api_v1_extensions__extension_id__bundles__bundle_name__reload_post", "parameters": [ { "in": "path", "name": "extension_id", "required": true, "schema": { "title": "Extension Id", "type": "string" } }, { "in": "path", "name": "bundle_name", "required": true, "schema": { "title": "Bundle Name", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Reload Extension Bundle Api V1 Extensions Extension Id Bundles Bundle Name Reload Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Reload Extension Bundle", "tags": [ "Extensions" ] } }, "/api/v1/files/delete/{flow_id}/{file_name}": { "delete": { "operationId": "delete_file_api_v1_files_delete__flow_id___file_name__delete", "parameters": [ { "in": "path", "name": "file_name", "required": true, "schema": { "title": "File Name", "type": "string" } }, { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete File", "tags": [ "Files" ] } }, "/api/v1/files/download/{flow_id}/{file_name}": { "get": { "operationId": "download_file_api_v1_files_download__flow_id___file_name__get", "parameters": [ { "in": "path", "name": "file_name", "required": true, "schema": { "title": "File Name", "type": "string" } }, { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download File", "tags": [ "Files" ] } }, "/api/v1/files/images/{flow_id}/{file_name}": { "get": { "description": "Download image from storage for browser rendering.", "operationId": "download_image_api_v1_files_images__flow_id___file_name__get", "parameters": [ { "in": "path", "name": "file_name", "required": true, "schema": { "title": "File Name", "type": "string" } }, { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download Image", "tags": [ "Files" ] } }, "/api/v1/files/list/{flow_id}": { "get": { "operationId": "list_files_api_v1_files_list__flow_id__get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Files", "tags": [ "Files" ] } }, "/api/v1/files/profile_pictures/list": { "get": { "description": "List profile pictures from local filesystem.\n\nProfile pictures are first looked up in config_dir/profile_pictures/,\nthen fallback to the package's bundled profile_pictures directory.", "operationId": "list_profile_pictures_api_v1_files_profile_pictures_list_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "List Profile Pictures", "tags": [ "Files" ] } }, "/api/v1/files/profile_pictures/{folder_name}/{file_name}": { "get": { "description": "Download profile picture from local filesystem.\n\nProfile pictures are first looked up in config_dir/profile_pictures/,\nthen fallback to the package's bundled profile_pictures directory.", "operationId": "download_profile_picture_api_v1_files_profile_pictures__folder_name___file_name__get", "parameters": [ { "in": "path", "name": "folder_name", "required": true, "schema": { "title": "Folder Name", "type": "string" } }, { "in": "path", "name": "file_name", "required": true, "schema": { "title": "File Name", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Download Profile Picture", "tags": [ "Files" ] } }, "/api/v1/files/upload/{flow_id}": { "post": { "operationId": "upload_file_api_v1_files_upload__flow_id__post", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_file_api_v1_files_upload__flow_id__post" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/langflow__api__v1__schemas__UploadFileResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upload File", "tags": [ "Files" ] } }, "/api/v1/flows/": { "delete": { "description": "Delete multiple flows by their IDs.", "operationId": "delete_multiple_flows_api_v1_flows__delete", "requestBody": { "content": { "application/json": { "schema": { "items": { "format": "uuid", "type": "string" }, "title": "Flow Ids", "type": "array" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Multiple Flows", "tags": [ "Flows" ] }, "get": { "description": "Retrieve a list of flows with optional pagination, filtering, and header-only mode.", "operationId": "read_flows_api_v1_flows__get", "parameters": [ { "in": "query", "name": "remove_example_flows", "required": false, "schema": { "default": false, "title": "Remove Example Flows", "type": "boolean" } }, { "in": "query", "name": "components_only", "required": false, "schema": { "default": false, "title": "Components Only", "type": "boolean" } }, { "in": "query", "name": "get_all", "required": false, "schema": { "default": true, "title": "Get All", "type": "boolean" } }, { "in": "query", "name": "folder_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Folder Id" } }, { "in": "query", "name": "flow_type", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/FlowType" }, { "type": "null" } ], "title": "Flow Type" } }, { "in": "query", "name": "header_flows", "required": false, "schema": { "default": false, "title": "Header Flows", "type": "boolean" } }, { "in": "query", "name": "page", "required": false, "schema": { "default": 1, "minimum": 1, "title": "Page", "type": "integer" } }, { "in": "query", "name": "size", "required": false, "schema": { "default": 50, "maximum": 100, "minimum": 1, "title": "Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "anyOf": [ { "items": { "$ref": "#/components/schemas/FlowRead" }, "type": "array" }, { "$ref": "#/components/schemas/Page_FlowRead_" }, { "items": { "$ref": "#/components/schemas/FlowHeader" }, "type": "array" } ], "title": "Response Read Flows Api V1 Flows Get" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Flows", "tags": [ "Flows" ] }, "post": { "operationId": "create_flow_api_v1_flows__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Flow", "tags": [ "Flows" ] } }, "/api/v1/flows/basic_examples/": { "get": { "description": "Retrieve a list of basic example flows.", "operationId": "read_basic_examples_api_v1_flows_basic_examples__get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Response Read Basic Examples Api V1 Flows Basic Examples Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "Read Basic Examples", "tags": [ "Flows" ] } }, "/api/v1/flows/batch/": { "post": { "description": "Create multiple new flows.", "operationId": "create_flows_api_v1_flows_batch__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowListCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Response Create Flows Api V1 Flows Batch Post", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Flows", "tags": [ "Flows" ] } }, "/api/v1/flows/download/": { "post": { "description": "Download all flows as a zip file.", "operationId": "download_multiple_file_api_v1_flows_download__post", "requestBody": { "content": { "application/json": { "schema": { "items": { "format": "uuid", "type": "string" }, "title": "Flow Ids", "type": "array" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download Multiple File", "tags": [ "Flows" ] } }, "/api/v1/flows/public_flow/{flow_id}": { "get": { "description": "Read a public flow without requiring authorization (public means public).\n\nBecause this endpoint is unauthenticated, secret field values (every template\nfield marked ``password``) are stripped before returning so a PUBLIC flow does\nnot leak the owner's stored API keys / credentials to anonymous callers.", "operationId": "read_public_flow_api_v1_flows_public_flow__flow_id__get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Read Public Flow", "tags": [ "Flows" ] } }, "/api/v1/flows/upload/": { "post": { "description": "Upload flows from a JSON or ZIP file (upsert semantics for flows with stable IDs).", "operationId": "upload_file_api_v1_flows_upload__post", "parameters": [ { "in": "query", "name": "folder_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Folder Id" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_file_api_v1_flows_upload__post" } } } }, "responses": { "201": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Response Upload File Api V1 Flows Upload Post", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upload File", "tags": [ "Flows" ] } }, "/api/v1/flows/{flow_id}": { "delete": { "description": "Delete a flow.", "operationId": "delete_flow_api_v1_flows__flow_id__delete", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Flow", "tags": [ "Flows" ] }, "get": { "description": "Read a flow.", "operationId": "read_flow_api_v1_flows__flow_id__get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Flow", "tags": [ "Flows" ] }, "patch": { "description": "Update a flow.", "operationId": "update_flow_api_v1_flows__flow_id__patch", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Flow", "tags": [ "Flows" ] }, "put": { "description": "Create or update a flow with a specific ID (upsert).\n\nReturns 201 for creation, 200 for update. Returns 404 if owned by another user.", "operationId": "upsert_flow_api_v1_flows__flow_id__put", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowCreate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upsert Flow", "tags": [ "Flows" ] } }, "/api/v1/flows/{flow_id}/events": { "get": { "operationId": "get_flow_events_api_v1_flows__flow_id__events_get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } }, { "description": "UTC timestamp to get events after", "in": "query", "name": "since", "required": false, "schema": { "default": 0.0, "description": "UTC timestamp to get events after", "title": "Since", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowEventsResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Flow Events", "tags": [ "Flow Events" ] }, "post": { "description": "Append an event to a flow's event queue.", "operationId": "create_flow_event_api_v1_flows__flow_id__events_post", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowEventCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowEventResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Flow Event", "tags": [ "Flow Events" ] } }, "/api/v1/flows/{flow_id}/note_translations": { "get": { "description": "Return translated note node descriptions for the current locale.\n\nReturns a mapping of node_id → translated markdown text. Only nodes\nwith a matching translation key are included; nodes without translations\nare omitted so the caller can leave them unchanged.\n\nA missing or inaccessible flow yields 404 (via ``AuthorizedReadFlow``),\nconsistent with ``GET /flows/{id}``; the sole frontend caller (NoteNode)\ntreats that as \"no translations\" and renders the original text.", "operationId": "get_note_translations_api_v1_flows__flow_id__note_translations_get", "parameters": [ { "in": "path", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "type": "string" }, "title": "Response Get Note Translations Api V1 Flows Flow Id Note Translations Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Note Translations", "tags": [ "Flows" ] } }, "/api/v1/mcp/project/{project_id}": { "get": { "description": "List project MCP tools.", "operationId": "list_project_tools_api_v1_mcp_project__project_id__get", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } }, { "in": "query", "name": "mcp_enabled", "required": false, "schema": { "default": true, "title": "Mcp Enabled", "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Project Tools", "tags": [ "mcp_projects" ] }, "patch": { "description": "Update the MCP settings of all flows in a project and project-level auth settings.\n\nOn MCP Composer failure, this endpoint should return with a 200 status code and an error message in\nthe body of the response to display to the user.", "operationId": "update_project_mcp_settings_api_v1_mcp_project__project_id__patch", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPProjectUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Project Mcp Settings", "tags": [ "mcp_projects" ] } }, "/api/v1/mcp/project/{project_id}/composer-url": { "get": { "description": "Get the MCP Composer URL for a specific project.\n\nOn failure, this endpoint should return with a 200 status code and an error message in\nthe body of the response to display to the user.", "operationId": "get_project_composer_url_api_v1_mcp_project__project_id__composer_url_get", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComposerUrlResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Project Composer Url", "tags": [ "mcp_projects" ] } }, "/api/v1/mcp/project/{project_id}/install": { "post": { "description": "Install MCP server configuration for Cursor, Windsurf, or Claude.", "operationId": "install_mcp_config_api_v1_mcp_project__project_id__install_post", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPInstallRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Install Mcp Config", "tags": [ "mcp_projects" ] } }, "/api/v1/mcp/project/{project_id}/installed": { "get": { "description": "Check if MCP server configuration is installed for this project in Cursor, Windsurf, or Claude.", "operationId": "check_installed_mcp_servers_api_v1_mcp_project__project_id__installed_get", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Check Installed Mcp Servers", "tags": [ "mcp_projects" ] } }, "/api/v1/monitor/builds": { "delete": { "operationId": "delete_vertex_builds_api_v1_monitor_builds_delete", "parameters": [ { "in": "query", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Vertex Builds", "tags": [ "Monitor" ] }, "get": { "operationId": "get_vertex_builds_api_v1_monitor_builds_get", "parameters": [ { "in": "query", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VertexBuildMapModel" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Vertex Builds", "tags": [ "Monitor" ] } }, "/api/v1/monitor/job_queue": { "get": { "description": "Return a snapshot of job-queue observability metrics.\n\nFor the in-memory backend this exposes only ``backend`` and ``active_jobs``.\nFor the Redis backend the snapshot also includes bridge counts, consumer\nwrappers, cancel-dispatcher liveness, and the cancel-stats counters\n(``published`` / ``marker_hit`` / ``dispatched_owned`` /\n``dispatched_foreign`` / ``publish_errors`` / ``dispatcher_reconnects`` /\n``polling_watchdog_kills`` / ``activity_touch_errors`` /\n``activity_get_errors`` / ``activity_parse_errors`` /\n``dispatcher_internal_errors``). ``dispatcher_reconnects`` tracks explicit\ndispatcher-loop retries and redis-py transparent pubsub reconnect callbacks.\n\nRestricted to superusers because the snapshot exposes process-wide tenant\nactivity (live job counts, cancel rates) — useful for ops, sensitive in\nmulti-tenant deployments.", "operationId": "job_queue_metrics_api_v1_monitor_job_queue_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Job Queue Metrics Api V1 Monitor Job Queue Get", "type": "object" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Job Queue Metrics", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages": { "delete": { "operationId": "delete_messages_api_v1_monitor_messages_delete", "requestBody": { "content": { "application/json": { "schema": { "items": { "format": "uuid", "type": "string" }, "title": "Message Ids", "type": "array" } } }, "required": true }, "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Messages", "tags": [ "Monitor" ] }, "get": { "operationId": "get_messages_api_v1_monitor_messages_get", "parameters": [ { "in": "query", "name": "flow_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Flow Id" } }, { "in": "query", "name": "session_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" } }, { "in": "query", "name": "sender", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sender" } }, { "in": "query", "name": "sender_name", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sender Name" } }, { "in": "query", "name": "order_by", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "timestamp", "title": "Order By" } }, { "in": "query", "name": "order", "required": false, "schema": { "default": "ASC", "title": "Order", "type": "string" } }, { "in": "query", "name": "limit", "required": false, "schema": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Limit" } }, { "in": "query", "name": "offset", "required": false, "schema": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Offset" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/MessageResponse" }, "title": "Response Get Messages Api V1 Monitor Messages Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Messages", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/session/{old_session_id}": { "patch": { "operationId": "update_session_id_api_v1_monitor_messages_session__old_session_id__patch", "parameters": [ { "in": "path", "name": "old_session_id", "required": true, "schema": { "title": "Old Session Id", "type": "string" } }, { "description": "The new session ID to update to", "in": "query", "name": "new_session_id", "required": true, "schema": { "description": "The new session ID to update to", "title": "New Session Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/MessageResponse" }, "title": "Response Update Session Id Api V1 Monitor Messages Session Old Session Id Patch", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Session Id", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/session/{session_id}": { "delete": { "description": "Delete messages for a single session.\n\nOnly deletes messages from sessions belonging to flows owned by the current user.", "operationId": "delete_messages_session_api_v1_monitor_messages_session__session_id__delete", "parameters": [ { "in": "path", "name": "session_id", "required": true, "schema": { "title": "Session Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Messages Session", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/sessions": { "delete": { "description": "Bulk delete messages for multiple sessions at once.\n\nOnly deletes messages from sessions belonging to flows owned by the current user.\n\nArgs:\n session_ids: List of session IDs to delete (max 500)\n session: Database session\n current_user: Current authenticated user\n\nReturns:\n Confirmation message with count of deleted sessions\n\nRaises:\n HTTPException: 400 if session_ids list exceeds 500 items\n HTTPException: 500 if database operation fails", "operationId": "delete_messages_sessions_api_v1_monitor_messages_sessions_delete", "requestBody": { "content": { "application/json": { "schema": { "items": { "type": "string" }, "title": "Session Ids", "type": "array" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Messages Sessions", "tags": [ "Monitor" ] }, "get": { "operationId": "get_message_sessions_api_v1_monitor_messages_sessions_get", "parameters": [ { "in": "query", "name": "flow_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Flow Id" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "type": "string" }, "title": "Response Get Message Sessions Api V1 Monitor Messages Sessions Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Message Sessions", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/shared": { "get": { "description": "Get messages for a shared/public flow, scoped to the authenticated user.\n\nUses a deterministic virtual flow_id derived from the user's ID and the\noriginal flow ID. Only messages stored under this virtual flow_id are returned.", "operationId": "get_shared_messages_api_v1_monitor_messages_shared_get", "parameters": [ { "description": "The original public flow ID", "in": "query", "name": "source_flow_id", "required": true, "schema": { "description": "The original public flow ID", "format": "uuid", "title": "Source Flow Id", "type": "string" } }, { "in": "query", "name": "session_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" } }, { "in": "query", "name": "order_by", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "timestamp", "title": "Order By" } }, { "in": "query", "name": "order", "required": false, "schema": { "default": "ASC", "title": "Order", "type": "string" } }, { "in": "query", "name": "limit", "required": false, "schema": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Limit" } }, { "in": "query", "name": "offset", "required": false, "schema": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Offset" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/MessageResponse" }, "title": "Response Get Shared Messages Api V1 Monitor Messages Shared Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Shared Messages", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/shared/session/{old_session_id}": { "patch": { "description": "Rename a session on a shared/public flow, scoped to the authenticated user.", "operationId": "rename_shared_session_api_v1_monitor_messages_shared_session__old_session_id__patch", "parameters": [ { "in": "path", "name": "old_session_id", "required": true, "schema": { "title": "Old Session Id", "type": "string" } }, { "description": "The new session ID", "in": "query", "name": "new_session_id", "required": true, "schema": { "description": "The new session ID", "title": "New Session Id", "type": "string" } }, { "description": "The original public flow ID", "in": "query", "name": "source_flow_id", "required": true, "schema": { "description": "The original public flow ID", "format": "uuid", "title": "Source Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/MessageResponse" }, "title": "Response Rename Shared Session Api V1 Monitor Messages Shared Session Old Session Id Patch", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Rename Shared Session", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/shared/session/{session_id}": { "delete": { "description": "Delete messages for a session on a shared/public flow, scoped to the authenticated user.", "operationId": "delete_shared_messages_session_api_v1_monitor_messages_shared_session__session_id__delete", "parameters": [ { "in": "path", "name": "session_id", "required": true, "schema": { "title": "Session Id", "type": "string" } }, { "description": "The original public flow ID", "in": "query", "name": "source_flow_id", "required": true, "schema": { "description": "The original public flow ID", "format": "uuid", "title": "Source Flow Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Shared Messages Session", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/shared/sessions": { "get": { "description": "Get session IDs for a shared/public flow, scoped to the authenticated user.\n\nUses a deterministic virtual flow_id derived from the user's ID and the\noriginal flow ID. Only messages stored under this virtual flow_id are returned.", "operationId": "get_shared_message_sessions_api_v1_monitor_messages_shared_sessions_get", "parameters": [ { "description": "The original public flow ID", "in": "query", "name": "source_flow_id", "required": true, "schema": { "description": "The original public flow ID", "format": "uuid", "title": "Source Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "type": "string" }, "title": "Response Get Shared Message Sessions Api V1 Monitor Messages Shared Sessions Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Shared Message Sessions", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/shared/{message_id}": { "put": { "description": "Update a message on a shared/public flow, scoped to the authenticated user.", "operationId": "update_shared_message_api_v1_monitor_messages_shared__message_id__put", "parameters": [ { "in": "path", "name": "message_id", "required": true, "schema": { "format": "uuid", "title": "Message Id", "type": "string" } }, { "description": "The original public flow ID", "in": "query", "name": "source_flow_id", "required": true, "schema": { "description": "The original public flow ID", "format": "uuid", "title": "Source Flow Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Shared Message", "tags": [ "Monitor" ] } }, "/api/v1/monitor/messages/{message_id}": { "put": { "operationId": "update_message_api_v1_monitor_messages__message_id__put", "parameters": [ { "in": "path", "name": "message_id", "required": true, "schema": { "format": "uuid", "title": "Message Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Message", "tags": [ "Monitor" ] } }, "/api/v1/monitor/traces": { "delete": { "description": "Delete all traces for a flow.\n\nArgs:\n flow_id: The ID of the flow whose traces should be deleted.\n current_user: The authenticated user (required for authorization).", "operationId": "delete_traces_by_flow_api_v1_monitor_traces_delete", "parameters": [ { "in": "query", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Traces By Flow", "tags": [ "Traces" ] }, "get": { "description": "Get list of traces for a flow.\n\nArgs:\n current_user: Authenticated user (required for authorization)\n flow_id: Filter by flow ID\n session_id: Filter by session ID\n status: Filter by trace status\n query: Search query for trace name/id/session id\n start_time: Filter traces starting on/after this time (ISO)\n end_time: Filter traces starting on/before this time (ISO)\n page: Page number (1-based)\n size: Page size\n\nReturns:\n List of traces", "operationId": "get_traces_api_v1_monitor_traces_get", "parameters": [ { "in": "query", "name": "flow_id", "required": false, "schema": { "anyOf": [ { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Flow Id" } }, { "in": "query", "name": "session_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Id" } }, { "in": "query", "name": "status", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/SpanStatus" }, { "type": "null" } ], "title": "Status" } }, { "in": "query", "name": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Query" } }, { "in": "query", "name": "start_time", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Time" } }, { "in": "query", "name": "end_time", "required": false, "schema": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Time" } }, { "in": "query", "name": "page", "required": false, "schema": { "default": 1, "minimum": 0, "title": "Page", "type": "integer" } }, { "in": "query", "name": "size", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TraceListResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Traces", "tags": [ "Traces" ] } }, "/api/v1/monitor/traces/{trace_id}": { "delete": { "description": "Delete a trace and all its spans.\n\nArgs:\n trace_id: The ID of the trace to delete.\n current_user: The authenticated user (required for authorization).", "operationId": "delete_trace_api_v1_monitor_traces__trace_id__delete", "parameters": [ { "in": "path", "name": "trace_id", "required": true, "schema": { "format": "uuid", "title": "Trace Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Trace", "tags": [ "Traces" ] }, "get": { "description": "Get a single trace with its hierarchical span tree.\n\nArgs:\n trace_id: The ID of the trace to retrieve.\n current_user: The authenticated user (required for authorization).\n\nReturns:\n TraceRead containing the trace and its hierarchical span tree.", "operationId": "get_trace_api_v1_monitor_traces__trace_id__get", "parameters": [ { "in": "path", "name": "trace_id", "required": true, "schema": { "format": "uuid", "title": "Trace Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TraceRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Trace", "tags": [ "Traces" ] } }, "/api/v1/monitor/transactions": { "get": { "operationId": "get_transactions_api_v1_monitor_transactions_get", "parameters": [ { "in": "query", "name": "flow_id", "required": true, "schema": { "format": "uuid", "title": "Flow Id", "type": "string" } }, { "in": "query", "name": "page", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Page" } }, { "in": "query", "name": "size", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Size" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_TransactionLogsResponse_" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Transactions", "tags": [ "Monitor" ] } }, "/api/v1/projects/": { "get": { "operationId": "read_projects_api_v1_projects__get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/FolderRead" }, "title": "Response Read Projects Api V1 Projects Get", "type": "array" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Projects", "tags": [ "Projects" ] }, "post": { "operationId": "create_project_api_v1_projects__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Create Project", "tags": [ "Projects" ] } }, "/api/v1/projects/download/{project_id}": { "get": { "description": "Download all flows from project as a zip file.", "operationId": "download_file_api_v1_projects_download__project_id__get", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download File", "tags": [ "Projects" ] } }, "/api/v1/projects/upload/": { "post": { "description": "Upload flows from a file.\n\nAccepts either a JSON file with project metadata (folder_name, folder_description, flows)\nor a ZIP file containing individual flow JSON files (as produced by the download endpoint).", "operationId": "upload_file_api_v1_projects_upload__post", "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_file_api_v1_projects_upload__post" } } } }, "responses": { "201": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/FlowRead" }, "title": "Response Upload File Api V1 Projects Upload Post", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upload File", "tags": [ "Projects" ] } }, "/api/v1/projects/{project_id}": { "delete": { "operationId": "delete_project_api_v1_projects__project_id__delete", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Project", "tags": [ "Projects" ] }, "get": { "operationId": "read_project_api_v1_projects__project_id__get", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } }, { "in": "query", "name": "page", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Page" } }, { "in": "query", "name": "size", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Size" } }, { "in": "query", "name": "is_component", "required": false, "schema": { "default": false, "title": "Is Component", "type": "boolean" } }, { "in": "query", "name": "is_flow", "required": false, "schema": { "default": false, "title": "Is Flow", "type": "boolean" } }, { "in": "query", "name": "search", "required": false, "schema": { "default": "", "title": "Search", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/FolderWithPaginatedFlows" }, { "$ref": "#/components/schemas/FolderReadWithFlows" } ], "title": "Response Read Project Api V1 Projects Project Id Get" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Project", "tags": [ "Projects" ] }, "patch": { "operationId": "update_project_api_v1_projects__project_id__patch", "parameters": [ { "in": "path", "name": "project_id", "required": true, "schema": { "format": "uuid", "title": "Project Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FolderRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Project", "tags": [ "Projects" ] } }, "/api/v1/responses": { "post": { "description": "Create a response using OpenAI Responses API format.\n\nThis endpoint accepts a flow_id in the model parameter and processes\nthe input through the specified Langflow flow.\n\nArgs:\n request: OpenAI Responses API request with model (flow_id) and input\n background_tasks: FastAPI background task manager\n api_key_user: Authenticated user from API key\n http_request: The incoming HTTP request\n telemetry_service: Telemetry service for logging\n\nReturns:\n OpenAI-compatible response or streaming response\n\nRaises:\n HTTPException: For validation errors or flow execution issues", "operationId": "create_response_api_v1_responses_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OpenAIResponsesRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "API key query": [] }, { "API key header": [] } ], "summary": "Create Response", "tags": [ "OpenAI Responses API" ] } }, "/api/v1/run/advanced/{flow_id_or_name}": { "post": { "description": "Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\n\nThis endpoint supports running flows with caching to enhance performance and efficiency.\n\n### Parameters:\n- `flow` (Flow): The flow object to be executed, resolved via dependency injection.\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\n for the flow. Each input can target specific components and provide custom values.\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\n If not provided, all outputs are returned.\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\n The tweaks can be used to modify the flow's parameters and components.\n Tweaks can be overridden by the input values.\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\n execution.\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\n\n### Returns:\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\n\n### Raises:\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution.\n\n### Example usage:\n```json\nPOST /run/flow_id\nx-api-key: YOUR_API_KEY\nPayload:\n{\n \"inputs\": [\n {\"components\": [\"component1\"], \"input_value\": \"value1\"},\n {\"components\": [\"component3\"], \"input_value\": \"value2\"}\n ],\n \"outputs\": [\"Component Name\", \"component_id\"],\n \"tweaks\": {\"parameter_name\": \"value\", \"Component Name\": {\"parameter_name\": \"value\"}, \"component_id\": {\"parameter_name\": \"value\"}}\n \"stream\": false\n}\n```\n\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements.", "operationId": "experimental_run_flow_api_v1_run_advanced__flow_id_or_name__post", "parameters": [ { "in": "path", "name": "flow_id_or_name", "required": true, "schema": { "title": "Flow Id Or Name", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body_experimental_run_flow_api_v1_run_advanced__flow_id_or_name__post" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "API key query": [] }, { "API key header": [] } ], "summary": "Experimental Run Flow", "tags": [ "Base" ] } }, "/api/v1/run/{flow_id_or_name}": { "post": { "description": "Executes a specified flow by ID with support for streaming and telemetry (API key auth).\n\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\nThis endpoint uses API key authentication (Bearer token).\n\nArgs:\n background_tasks (BackgroundTasks): FastAPI background task manager\n flow (FlowRead | None): The flow to execute, loaded via dependency\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\n stream (bool): Whether to stream the response\n api_key_user (UserRead): Authenticated user from API key\n context (dict | None): Optional context to pass to the flow\n http_request (Request): The incoming HTTP request for extracting global variables\n\nReturns:\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\n or a RunResponse with the complete execution results\n\nRaises:\n HTTPException: For flow not found (404) or invalid input (400)\n APIException: For internal execution errors (500)\n\nNotes:\n - Supports both streaming and non-streaming execution modes\n - Tracks execution time and success/failure via telemetry\n - Handles graceful client disconnection in streaming mode\n - Provides detailed error handling with appropriate HTTP status codes\n - Extracts global variables from HTTP headers with prefix X-LANGFLOW-GLOBAL-VAR-*\n - Merges extracted variables with the context parameter as \"request_variables\"\n - In streaming mode, uses EventManager to handle events:\n - \"add_message\": New messages during execution\n - \"token\": Individual tokens during streaming\n - \"end\": Final execution result\n - Authentication: Requires API key (Bearer token)", "operationId": "simplified_run_flow_api_v1_run__flow_id_or_name__post", "parameters": [ { "in": "path", "name": "flow_id_or_name", "required": true, "schema": { "title": "Flow Id Or Name", "type": "string" } }, { "in": "query", "name": "stream", "required": false, "schema": { "default": false, "title": "Stream", "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body_simplified_run_flow_api_v1_run__flow_id_or_name__post" } } } }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "API key query": [] }, { "API key header": [] } ], "summary": "Simplified Run Flow", "tags": [ "Base" ] } }, "/api/v1/starter-projects/": { "get": { "description": "Get a list of starter projects.", "operationId": "get_starter_projects_api_v1_starter_projects__get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/GraphDumpResponse" }, "title": "Response Get Starter Projects Api V1 Starter Projects Get", "type": "array" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Starter Projects", "tags": [ "Flows" ] } }, "/api/v1/users/": { "get": { "description": "Retrieve a list of users from the database with pagination.", "operationId": "read_all_users_api_v1_users__get", "parameters": [ { "in": "query", "name": "skip", "required": false, "schema": { "default": 0, "title": "Skip", "type": "integer" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 10, "title": "Limit", "type": "integer" } }, { "in": "query", "name": "search", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UsersResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read All Users", "tags": [ "Users" ] }, "post": { "description": "Add a new user to the database.\n\nThis endpoint backs two flows that share the same route:\n\n* Public sign up (unauthenticated). Allowed only when public registration is\n enabled for the deployment, i.e. AUTO_LOGIN is off (multi-user mode) and\n ENABLE_SIGNUP is True.\n* Admin \"add user\" (authenticated active superuser). Always allowed,\n regardless of the sign up settings, so disabling public sign up does not\n break superuser-driven user creation.\n\nUser activation is controlled by the NEW_USER_IS_ACTIVE setting.", "operationId": "add_user_api_v1_users__post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCreate" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Add User", "tags": [ "Users" ] } }, "/api/v1/users/whoami": { "get": { "description": "Retrieve the current user's data.", "operationId": "read_current_user_api_v1_users_whoami_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRead" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Read Current User", "tags": [ "Users" ] } }, "/api/v1/users/{user_id}": { "delete": { "description": "Delete a user from the database.", "operationId": "delete_user_api_v1_users__user_id__delete", "parameters": [ { "in": "path", "name": "user_id", "required": true, "schema": { "format": "uuid", "title": "User Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Delete User Api V1 Users User Id Delete", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete User", "tags": [ "Users" ] }, "patch": { "description": "Update an existing user's data.", "operationId": "patch_user_api_v1_users__user_id__patch", "parameters": [ { "in": "path", "name": "user_id", "required": true, "schema": { "format": "uuid", "title": "User Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Patch User", "tags": [ "Users" ] } }, "/api/v1/users/{user_id}/reset-password": { "patch": { "description": "Change the current user's password after verifying the existing password.", "operationId": "reset_password_api_v1_users__user_id__reset_password_patch", "parameters": [ { "in": "path", "name": "user_id", "required": true, "schema": { "format": "uuid", "title": "User Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRead" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Reset Password", "tags": [ "Users" ] } }, "/api/v1/version": { "get": { "operationId": "get_version_api_v1_version_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "Get Version", "tags": [ "Base" ] } }, "/api/v1/webhook/{flow_id_or_name}": { "post": { "description": "Run a flow using a webhook request.\n\nArgs:\n auth: Resolved webhook user and flow, scoped to the authenticated caller.\n request: The incoming HTTP request.\n\nReturns:\n A dictionary containing the status of the task.\n\nRaises:\n HTTPException: If the flow is not found or if there is an error processing the request.", "operationId": "webhook_run_flow_api_v1_webhook__flow_id_or_name__post", "parameters": [ { "in": "path", "name": "flow_id_or_name", "required": true, "schema": { "title": "Flow Id Or Name", "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Webhook Run Flow Api V1 Webhook Flow Id Or Name Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Webhook Run Flow", "tags": [ "Base" ] } }, "/api/v2/files": { "delete": { "description": "Delete all files for the current user.", "operationId": "delete_all_files_api_v2_files_delete", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete All Files", "tags": [ "Files" ] }, "get": { "description": "List the files available to the current user.", "operationId": "list_files_api_v2_files_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/langflow__services__database__models__file__model__File" }, "title": "Response List Files Api V2 Files Get", "type": "array" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Files", "tags": [ "Files" ] }, "post": { "description": "Upload a file for the current user and track it in the database.", "operationId": "upload_user_file_api_v2_files_post", "parameters": [ { "in": "query", "name": "append", "required": false, "schema": { "default": false, "title": "Append", "type": "boolean" } }, { "in": "query", "name": "ephemeral", "required": false, "schema": { "default": false, "title": "Ephemeral", "type": "boolean" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_user_file_api_v2_files_post" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/langflow__api__schemas__UploadFileResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upload User File", "tags": [ "Files" ] } }, "/api/v2/files/": { "delete": { "description": "Delete all files for the current user.", "operationId": "delete_all_files_api_v2_files__delete", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete All Files", "tags": [ "Files" ] }, "get": { "description": "List the files available to the current user.", "operationId": "list_files_api_v2_files__get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/langflow__services__database__models__file__model__File" }, "title": "Response List Files Api V2 Files Get", "type": "array" } } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List Files", "tags": [ "Files" ] }, "post": { "description": "Upload a file for the current user and track it in the database.", "operationId": "upload_user_file_api_v2_files__post", "parameters": [ { "in": "query", "name": "append", "required": false, "schema": { "default": false, "title": "Append", "type": "boolean" } }, { "in": "query", "name": "ephemeral", "required": false, "schema": { "default": false, "title": "Ephemeral", "type": "boolean" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_user_file_api_v2_files__post" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/langflow__api__schemas__UploadFileResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Upload User File", "tags": [ "Files" ] } }, "/api/v2/files/batch/": { "delete": { "description": "Delete multiple files by their IDs.", "operationId": "delete_files_batch_api_v2_files_batch__delete", "requestBody": { "content": { "application/json": { "schema": { "items": { "format": "uuid", "type": "string" }, "title": "File Ids", "type": "array" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Files Batch", "tags": [ "Files" ] }, "post": { "description": "Download multiple files as a zip file by their IDs.", "operationId": "download_files_batch_api_v2_files_batch__post", "requestBody": { "content": { "application/json": { "schema": { "items": { "format": "uuid", "type": "string" }, "title": "File Ids", "type": "array" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download Files Batch", "tags": [ "Files" ] } }, "/api/v2/files/{file_id}": { "delete": { "description": "Delete a file by its ID.", "operationId": "delete_file_api_v2_files__file_id__delete", "parameters": [ { "in": "path", "name": "file_id", "required": true, "schema": { "format": "uuid", "title": "File Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete File", "tags": [ "Files" ] }, "get": { "description": "Download a file by its ID or return its content as a string/bytes.\n\nArgs:\n file_id: UUID of the file.\n current_user: Authenticated user.\n session: Database session.\n storage_service: File storage service.\n return_content: If True, return raw content (str) instead of StreamingResponse.\n\nReturns:\n StreamingResponse for client downloads or str for internal use.", "operationId": "download_file_api_v2_files__file_id__get", "parameters": [ { "in": "path", "name": "file_id", "required": true, "schema": { "format": "uuid", "title": "File Id", "type": "string" } }, { "in": "query", "name": "return_content", "required": false, "schema": { "default": false, "title": "Return Content", "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Download File", "tags": [ "Files" ] }, "put": { "description": "Edit the name of a file by its ID.", "operationId": "edit_file_name_api_v2_files__file_id__put", "parameters": [ { "in": "path", "name": "file_id", "required": true, "schema": { "format": "uuid", "title": "File Id", "type": "string" } }, { "in": "query", "name": "name", "required": true, "schema": { "title": "Name", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/langflow__api__schemas__UploadFileResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Edit File Name", "tags": [ "Files" ] } }, "/api/v2/mcp/servers": { "get": { "description": "Get the list of available servers.", "operationId": "get_servers_api_v2_mcp_servers_get", "parameters": [ { "in": "query", "name": "action_count", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Action Count" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Servers", "tags": [ "MCP" ] } }, "/api/v2/mcp/servers/{server_name}": { "delete": { "operationId": "delete_server_api_v2_mcp_servers__server_name__delete", "parameters": [ { "in": "path", "name": "server_name", "required": true, "schema": { "title": "Server Name", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Delete Server", "tags": [ "MCP" ] }, "get": { "description": "Get a specific server.", "operationId": "get_server_endpoint_api_v2_mcp_servers__server_name__get", "parameters": [ { "in": "path", "name": "server_name", "required": true, "schema": { "title": "Server Name", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Server Endpoint", "tags": [ "MCP" ] }, "patch": { "operationId": "update_server_endpoint_api_v2_mcp_servers__server_name__patch", "parameters": [ { "in": "path", "name": "server_name", "required": true, "schema": { "title": "Server Name", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPServerConfig" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Update Server Endpoint", "tags": [ "MCP" ] }, "post": { "operationId": "add_server_api_v2_mcp_servers__server_name__post", "parameters": [ { "in": "path", "name": "server_name", "required": true, "schema": { "title": "Server Name", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPServerConfig" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Add Server", "tags": [ "MCP" ] } }, "/api/v2/workflows": { "get": { "description": "Get status of workflow job by job ID", "operationId": "get_workflow_status_api_v2_workflows_get", "parameters": [ { "description": "Job ID to query", "in": "query", "name": "job_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" }, { "type": "null" } ], "description": "Job ID to query", "title": "Job Id" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "description": "Synchronous workflow execution response.", "properties": { "created_timestamp": { "title": "Created Timestamp", "type": "string" }, "errors": { "default": [], "items": { "$ref": "#/components/schemas/ErrorDetail" }, "title": "Errors", "type": "array" }, "flow_id": { "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "human_request": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Set when ``status`` is ``suspended``: the human-input request the run paused on (``prompt``, ``options``, ``allowed_decisions``, ``request_id``). Resume by running the same session/task again with the chosen decision.", "title": "Human Request" }, "inputs": { "additionalProperties": true, "default": {}, "title": "Inputs", "type": "object" }, "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Job Id" }, "object": { "const": "response", "default": "response", "title": "Object", "type": "string" }, "output": { "$ref": "#/components/schemas/WorkflowOutput", "description": "The run's text answer plus why it resolved that way. Read ``output.text`` for the answer; when it's null, ``output.reason`` says why (``multiple`` / ``none`` / ``non_string`` / ``failed``) so you know whether to read ``outputs``." }, "outputs": { "additionalProperties": { "$ref": "#/components/schemas/ComponentOutput" }, "default": {}, "title": "Outputs", "type": "object" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The session the run executed under. Echoes the request ``session_id`` when provided, otherwise the server-generated one. Pass it back on the next call to continue the same chat history / memory thread.", "title": "Session Id" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "flow_id", "status" ], "title": "WorkflowExecutionResponse", "type": "object" } }, "text/event-stream": { "description": "Server-sent events for streaming status", "schema": { "description": "Streaming event response.", "properties": { "raw_event": { "additionalProperties": true, "title": "Raw Event", "type": "object" }, "run_id": { "title": "Run Id", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "integer" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "run_id", "timestamp", "raw_event" ], "title": "WorkflowStreamEvent", "type": "object" } } }, "description": "Workflow status response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Get Workflow Status", "tags": [ "Workflow" ] }, "post": { "operationId": "execute_workflow_api_v2_workflows_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowRunRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "discriminator": { "mapping": { "job": "#/components/schemas/WorkflowJobResponse", "response": "#/components/schemas/WorkflowExecutionResponse" }, "propertyName": "object" }, "oneOf": [ { "description": "Synchronous workflow execution response.", "properties": { "created_timestamp": { "title": "Created Timestamp", "type": "string" }, "errors": { "default": [], "items": { "$ref": "#/components/schemas/ErrorDetail" }, "title": "Errors", "type": "array" }, "flow_id": { "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "human_request": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Set when ``status`` is ``suspended``: the human-input request the run paused on (``prompt``, ``options``, ``allowed_decisions``, ``request_id``). Resume by running the same session/task again with the chosen decision.", "title": "Human Request" }, "inputs": { "additionalProperties": true, "default": {}, "title": "Inputs", "type": "object" }, "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Job Id" }, "object": { "const": "response", "default": "response", "title": "Object", "type": "string" }, "output": { "$ref": "#/components/schemas/WorkflowOutput", "description": "The run's text answer plus why it resolved that way. Read ``output.text`` for the answer; when it's null, ``output.reason`` says why (``multiple`` / ``none`` / ``non_string`` / ``failed``) so you know whether to read ``outputs``." }, "outputs": { "additionalProperties": { "$ref": "#/components/schemas/ComponentOutput" }, "default": {}, "title": "Outputs", "type": "object" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The session the run executed under. Echoes the request ``session_id`` when provided, otherwise the server-generated one. Pass it back on the next call to continue the same chat history / memory thread.", "title": "Session Id" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "flow_id", "status" ], "title": "WorkflowExecutionResponse", "type": "object" }, { "description": "Background job response.", "properties": { "created_timestamp": { "title": "Created Timestamp", "type": "string" }, "errors": { "default": [], "items": { "$ref": "#/components/schemas/ErrorDetail" }, "title": "Errors", "type": "array" }, "flow_id": { "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" } ], "title": "Job Id" }, "links": { "additionalProperties": { "type": "string" }, "title": "Links", "type": "object" }, "object": { "const": "job", "default": "job", "title": "Object", "type": "string" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "job_id", "flow_id", "status" ], "title": "WorkflowJobResponse", "type": "object" } ] } }, "text/event-stream": { "description": "Server-sent events for streaming execution", "schema": { "description": "Streaming event response.", "properties": { "raw_event": { "additionalProperties": true, "title": "Raw Event", "type": "object" }, "run_id": { "title": "Run Id", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "integer" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "run_id", "timestamp", "raw_event" ], "title": "WorkflowStreamEvent", "type": "object" } } }, "description": "Workflow execution response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Execute Workflow (v2 sync or stream)", "tags": [ "Workflow" ] } }, "/api/v2/workflows/pending": { "get": { "description": "Suspended HITL jobs for a flow plus their pending request, for the Traces overlay.", "operationId": "list_pending_workflows_api_v2_workflows_pending_get", "parameters": [ { "description": "Flow ID to list pending HITL requests for", "in": "query", "name": "flow_id", "required": true, "schema": { "description": "Flow ID to list pending HITL requests for", "format": "uuid", "title": "Flow Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response List Pending Workflows Api V2 Workflows Pending Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "List pending human-input requests", "tags": [ "Workflow" ] } }, "/api/v2/workflows/public": { "post": { "description": "Stream a public flow on behalf of a shareable-playground visitor. Mirrors the security posture of /api/v1/build_public_tmp.", "operationId": "execute_public_workflow_api_v2_workflows_public_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublicWorkflowRunRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "discriminator": { "mapping": { "job": "#/components/schemas/WorkflowJobResponse", "response": "#/components/schemas/WorkflowExecutionResponse" }, "propertyName": "object" }, "oneOf": [ { "description": "Synchronous workflow execution response.", "properties": { "created_timestamp": { "title": "Created Timestamp", "type": "string" }, "errors": { "default": [], "items": { "$ref": "#/components/schemas/ErrorDetail" }, "title": "Errors", "type": "array" }, "flow_id": { "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "human_request": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "description": "Set when ``status`` is ``suspended``: the human-input request the run paused on (``prompt``, ``options``, ``allowed_decisions``, ``request_id``). Resume by running the same session/task again with the chosen decision.", "title": "Human Request" }, "inputs": { "additionalProperties": true, "default": {}, "title": "Inputs", "type": "object" }, "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" }, { "type": "null" } ], "title": "Job Id" }, "object": { "const": "response", "default": "response", "title": "Object", "type": "string" }, "output": { "$ref": "#/components/schemas/WorkflowOutput", "description": "The run's text answer plus why it resolved that way. Read ``output.text`` for the answer; when it's null, ``output.reason`` says why (``multiple`` / ``none`` / ``non_string`` / ``failed``) so you know whether to read ``outputs``." }, "outputs": { "additionalProperties": { "$ref": "#/components/schemas/ComponentOutput" }, "default": {}, "title": "Outputs", "type": "object" }, "session_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The session the run executed under. Echoes the request ``session_id`` when provided, otherwise the server-generated one. Pass it back on the next call to continue the same chat history / memory thread.", "title": "Session Id" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "flow_id", "status" ], "title": "WorkflowExecutionResponse", "type": "object" }, { "description": "Background job response.", "properties": { "created_timestamp": { "title": "Created Timestamp", "type": "string" }, "errors": { "default": [], "items": { "$ref": "#/components/schemas/ErrorDetail" }, "title": "Errors", "type": "array" }, "flow_id": { "title": "Flow Id", "type": "string" }, "globals": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "propertyNames": { "maxLength": 256, "minLength": 1 }, "title": "Globals", "type": "object" }, "job_id": { "anyOf": [ { "type": "string" }, { "format": "uuid", "type": "string" } ], "title": "Job Id" }, "links": { "additionalProperties": { "type": "string" }, "title": "Links", "type": "object" }, "object": { "const": "job", "default": "job", "title": "Object", "type": "string" }, "status": { "$ref": "#/components/schemas/JobStatus" } }, "required": [ "job_id", "flow_id", "status" ], "title": "WorkflowJobResponse", "type": "object" } ] } }, "text/event-stream": { "description": "Server-sent events for streaming execution", "schema": { "description": "Streaming event response.", "properties": { "raw_event": { "additionalProperties": true, "title": "Raw Event", "type": "object" }, "run_id": { "title": "Run Id", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "integer" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "run_id", "timestamp", "raw_event" ], "title": "WorkflowStreamEvent", "type": "object" } } }, "description": "Workflow execution response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Execute Public Workflow", "tags": [ "Workflow (public)" ] } }, "/api/v2/workflows/stop": { "post": { "description": "Stop a running workflow execution", "operationId": "stop_workflow_api_v2_workflows_stop_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowStopRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowStopResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Stop Workflow", "tags": [ "Workflow" ] } }, "/api/v2/workflows/{job_id}/events": { "get": { "description": "Replay durable events for a background run from Last-Event-ID and tail until it ends.", "operationId": "reattach_workflow_events_api_v2_workflows__job_id__events_get", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Re-attach to a background run", "tags": [ "Workflow" ] } }, "/api/v2/workflows/{job_id}/resume": { "post": { "description": "Resume a suspended (human-in-the-loop) workflow with a decision.", "operationId": "resume_workflow_api_v2_workflows__job_id__resume_post", "parameters": [ { "in": "path", "name": "job_id", "required": true, "schema": { "title": "Job Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowResumeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowResumeResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Resume Workflow", "tags": [ "Workflow" ] } }, "/health": { "get": { "operationId": "health_health_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "Health", "tags": [ "Health Check" ] } }, "/health_check": { "get": { "operationId": "health_check_health_check_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthResponse" } } }, "description": "Successful Response" } }, "summary": "Health Check", "tags": [ "Health Check" ] } }, "/logs": { "get": { "description": "Retrieve application logs with superuser authentication required.\n\nSECURITY: Logs may contain sensitive information and require superuser authentication.", "operationId": "logs_logs_get", "parameters": [ { "description": "The number of logs before the timestamp or the last log", "in": "query", "name": "lines_before", "required": false, "schema": { "default": 0, "description": "The number of logs before the timestamp or the last log", "title": "Lines Before", "type": "integer" } }, { "description": "The number of logs after the timestamp", "in": "query", "name": "lines_after", "required": false, "schema": { "default": 0, "description": "The number of logs after the timestamp", "title": "Lines After", "type": "integer" } }, { "description": "The timestamp to start getting logs from", "in": "query", "name": "timestamp", "required": false, "schema": { "default": 0, "description": "The timestamp to start getting logs from", "title": "Timestamp", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Logs", "tags": [ "Log" ] } }, "/logs-stream": { "get": { "description": "HTTP/2 Server-Sent-Event (SSE) endpoint for streaming logs.\n\nRequires superuser authentication to prevent exposure of sensitive log data.\nIt establishes a long-lived connection to the server and receives log messages in real-time.\nThe client should use the header \"Accept: text/event-stream\".", "operationId": "stream_logs_logs_stream_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "security": [ { "OAuth2PasswordBearerCookie": [] }, { "API key query": [] }, { "API key header": [] } ], "summary": "Stream Logs", "tags": [ "Log" ] } } } }