{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/users/register":{"post":{"tags":["Users"],"summary":"Register User","operationId":"register_user_users_register_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat":{"post":{"tags":["Salesforce"],"summary":"Chat Agent","description":"Chat endpoint that streams Claude responses (and tool calls) to the client using\nServer-Sent Events (SSE).\n\nSupports both Auth0 JWT authentication (Authorization: Bearer) and API key\nauthentication (X-API-Key header) for service-to-service integrations.\n\nEach SSE event has the following format:\n\n    event: <text|tool_use|tool_result>\n\n    data: <JSON-encoded payload>\n\n\nWhere the payload structure corresponds to the event type, e.g.\n    {\"text\": \"Hello\"} for text,\n    {\"name\": \"get_weather\", \"args\": {...}} for tool_use, and\n    {\"name\": \"get_weather\", \"content\": \"72F and sunny\"} for tool_result.","operationId":"chat_agent_salesforce_chat_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/async":{"post":{"tags":["Salesforce"],"summary":"Chat Agent Async","description":"Async chat endpoint for Salesforce Managed Package.\n\nStarts the agent in the background and returns a job_id immediately.\nThe client polls GET /chat/async/{job_id} to check for the result.\n\nAccepts the same form parameters as POST /chat:\n  - query (required)\n  - connection_id (required)\n  - conversation_id (optional)\n\nReturns: {\"job_id\": \"...\", \"conversation_id\": \"...\", \"status\": \"processing\"}","operationId":"chat_agent_async_salesforce_chat_async_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/async/{job_id}":{"get":{"tags":["Salesforce"],"summary":"Poll Async Chat","description":"Poll for async chat job result.\n\nReturns:\n  - {\"status\": \"processing\"} if still running\n  - {\"status\": \"completed\", \"response\": \"...\", \"conversation_id\": \"...\"} when done\n  - {\"status\": \"failed\", \"error\": \"...\"} on error","operationId":"poll_async_chat_salesforce_chat_async__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/conversations/{conversation_id}/status":{"get":{"tags":["Salesforce"],"summary":"Get Conversation Status","description":"Check if a conversation has a message currently being generated.\n\nReturns:\n    - is_generating: boolean indicating if any message is currently generating\n    - last_message: details of the last message if it's generating\n    - message_count: total number of messages in the conversation","operationId":"get_conversation_status_salesforce_conversations__conversation_id__status_get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/conversations/{conversation_id}/abort":{"post":{"tags":["Salesforce"],"summary":"Abort Conversation Generation","operationId":"abort_conversation_generation_salesforce_conversations__conversation_id__abort_post","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/history/{connection_id}":{"get":{"tags":["Salesforce"],"summary":"Get Chat History","description":"Return all conversations (and their messages) for the given user/org.","operationId":"get_chat_history_salesforce_chat_history__connection_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/{conversation_id}/title":{"put":{"tags":["Salesforce"],"summary":"Update Conversation Title","description":"Update the title of a conversation.\n\nValidates that the conversation exists and belongs to the user,\nthen updates the title in the database.","operationId":"update_conversation_title_salesforce_chat__conversation_id__title_put","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTitleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTitleUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/{conversation_id}/message/{message_index}/feedback":{"post":{"tags":["Salesforce"],"summary":"Submit Message Feedback","description":"Submit user feedback (thumbs up/down with optional comment) for a specific assistant message.\n\nThis endpoint:\n1. Updates the MongoDB message document with feedback data\n2. Tags the Laminar trace associated with this conversation","operationId":"submit_message_feedback_salesforce_chat__conversation_id__message__message_index__feedback_post","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"message_index","in":"path","required":true,"schema":{"type":"integer","description":"Index of the message to provide feedback for","title":"Message Index"},"description":"Index of the message to provide feedback for"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/connect-link":{"post":{"tags":["Salesforce"],"summary":"Get Salesforce Connect Link","operationId":"get_salesforce_connect_link_salesforce_connect_link_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/oauth/callback":{"get":{"tags":["Salesforce"],"summary":"Oauth Callback","operationId":"oauth_callback_salesforce_oauth_callback_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/connections":{"get":{"tags":["Salesforce"],"summary":"List Salesforce Connections","operationId":"list_salesforce_connections_salesforce_connections_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/connection/{connection_id}":{"delete":{"tags":["Salesforce"],"summary":"Disconnect Salesforce Org","operationId":"disconnect_salesforce_org_salesforce_connection__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Salesforce"],"summary":"Update Connection Name","description":"Updates the custom name for a Salesforce connection.","operationId":"update_connection_name_salesforce_connection__connection_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionNameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/connection/{connection_id}/features":{"patch":{"tags":["Salesforce"],"summary":"Update Connection Features","description":"Updates the feature toggles (chat_enabled, tickets_enabled) for a Salesforce org.\nChanges are applied at the org level, affecting all users connected to the same Salesforce org.","operationId":"update_connection_features_salesforce_connection__connection_id__features_patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionFeaturesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/api-keys":{"get":{"tags":["Salesforce"],"summary":"List Api Keys","description":"List all API keys for the authenticated user.\n\nNote: The actual API key values are not returned for security reasons.\nOnly metadata (name, connection_id, dates, etc.) is included.","operationId":"list_api_keys_salesforce_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Salesforce"],"summary":"Create Api Key","description":"Create a new API key for service-to-service authentication.\n\nThe API key allows external systems (like Salesforce LWC) to call Ressl APIs\non behalf of the authenticated user. The key is scoped to a specific\nSalesforce connection.\n\nIMPORTANT: The plaintext API key is returned ONLY ONCE. Store it securely.","operationId":"create_api_key_salesforce_api_keys_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_api_key_salesforce_api_keys_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/api-keys/{key_id}":{"delete":{"tags":["Salesforce"],"summary":"Revoke Api Key","description":"Revoke (deactivate) an API key.\n\nOnce revoked, the API key can no longer be used for authentication.","operationId":"revoke_api_key_salesforce_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","description":"The API key ID to revoke","title":"Key Id"},"description":"The API key ID to revoke"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/chat/{conversation_id}":{"delete":{"tags":["Salesforce"],"summary":"Delete Chat Conversation","description":"Delete a specific conversation for the authenticated user.","operationId":"delete_chat_conversation_salesforce_chat__conversation_id__delete","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/analyses":{"get":{"tags":["Salesforce"],"summary":"List Analyses","description":"Returns all analyses for the authenticated user, optionally filtered by connection_id.","operationId":"list_analyses_salesforce_analyses_get","parameters":[{"name":"connection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/analyses/{analysis_id}":{"get":{"tags":["Salesforce"],"summary":"Get Analysis","description":"Returns a specific analysis by ID for the authenticated user.","operationId":"get_analysis_salesforce_analyses__analysis_id__get","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Salesforce"],"summary":"Update Analysis","description":"Updates the overview and/or mermaid_diagram of a specific analysis.","operationId":"update_analysis_salesforce_analyses__analysis_id__patch","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/process-flow":{"post":{"tags":["Salesforce"],"summary":"Analyze Process Flow","operationId":"analyze_process_flow_salesforce_process_flow_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessFlowRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/analyses/{analysis_id}/sync":{"post":{"tags":["Salesforce"],"summary":"Sync Analysis","operationId":"sync_analysis_salesforce_analyses__analysis_id__sync_post","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/onboard/questions":{"get":{"tags":["Salesforce"],"summary":"Get Onboarding Questions","operationId":"get_onboarding_questions_salesforce_onboard_questions_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/onboard/answers":{"post":{"tags":["Salesforce"],"summary":"Save Onboarding Answers","operationId":"save_onboarding_answers_salesforce_onboard_answers_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/onboard/status":{"get":{"tags":["Salesforce"],"summary":"Get Onboarding Status","description":"Returns the onboarding status for the given connection.\nResponse shape:\n{\n  steps: {\n    generate_manifest: { status, error? },\n    retrieve_all_metadata: { status, error? }\n  },\n  graph: { status, graph_id?, graph?, error? }\n}","operationId":"get_onboarding_status_salesforce_onboard_status_get","parameters":[{"name":"connection_id","in":"query","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/rules":{"get":{"tags":["Salesforce"],"summary":"List Rules","description":"Returns all rules for the specified Salesforce connection (shared per org).","operationId":"list_rules_salesforce_rules_get","parameters":[{"name":"connection_id","in":"query","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Salesforce"],"summary":"Create Rule","description":"Creates a new rule for the specified Salesforce connection (shared per org).","operationId":"create_rule_salesforce_rules_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rule"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/salesforce/rules/{rule_id}":{"patch":{"tags":["Salesforce"],"summary":"Update Rule","description":"Updates an existing rule (shared per org).","operationId":"update_rule_salesforce_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rule"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Salesforce"],"summary":"Delete Rule","description":"Deletes a rule (shared per org).","operationId":"delete_rule_salesforce_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/connect-link":{"post":{"tags":["Slack"],"summary":"Get Slack Connect Link","description":"Generate Slack OAuth authorization URL for organization-based connection.","operationId":"get_slack_connect_link_slack_connect_link_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackOAuthRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/oauth/callback":{"get":{"tags":["Slack"],"summary":"Slack Oauth Callback","description":"Handle Slack OAuth callback - store by organization_id.","operationId":"slack_oauth_callback_slack_oauth_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/slack/connections":{"get":{"tags":["Slack"],"summary":"List Slack Connections","description":"List all Slack workspace connections for the user.","operationId":"list_slack_connections_slack_connections_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/connection/{connection_id}":{"delete":{"tags":["Slack"],"summary":"Disconnect Slack Workspace","description":"Remove a Slack workspace connection.","operationId":"disconnect_slack_workspace_slack_connection__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/organization-status":{"get":{"tags":["Slack"],"summary":"Get Organization Slack Status","description":"Get Slack connection status for the user's organization.","operationId":"get_organization_slack_status_slack_organization_status_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/connect-org":{"post":{"tags":["Slack"],"summary":"Connect Salesforce Org","description":"Connect Salesforce org to existing Slack connection (SF Admin flow).\n\nThis endpoint is called by a Salesforce admin after the Slack admin\nhas already connected the Slack workspace for the organization.","operationId":"connect_salesforce_org_slack_connect_org_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"salesforce_connection_id","in":"query","required":true,"schema":{"type":"string","description":"Salesforce connection ID","title":"Salesforce Connection Id"},"description":"Salesforce connection ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/webhook":{"post":{"tags":["Slack"],"summary":"Slack Webhook","description":"Handle incoming Slack events (app mentions, DMs, etc.).","operationId":"slack_webhook_slack_webhook_post","parameters":[{"name":"x-slack-signature","in":"header","required":true,"schema":{"type":"string","title":"X-Slack-Signature"}},{"name":"x-slack-request-timestamp","in":"header","required":true,"schema":{"type":"string","title":"X-Slack-Request-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/slash-command":{"post":{"tags":["Slack"],"summary":"Slack Slash Command","description":"Handle Slack slash commands.\n\nSlash commands send form data directly with fields like:\n- command: The command that was typed (e.g., \"/addlog\")\n- text: Any text after the command\n- team_id: The Slack team ID\n- user_id: The user who invoked the command\n- channel_id: The channel where the command was invoked\n- trigger_id: Used for opening modals (valid for 3 seconds)","operationId":"slack_slash_command_slack_slash_command_post","parameters":[{"name":"x-slack-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Slack-Signature"}},{"name":"x-slack-request-timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Slack-Request-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/slack/interactive":{"post":{"tags":["Slack"],"summary":"Slack Interactive Proxy","description":"Central proxy for all Slack interactive callbacks.\n\nThis endpoint receives interactive callbacks from Slack (button clicks,\nmenu selections, etc.) and routes them to the appropriate Salesforce org\nbased on the Slack team ID in the payload.\n\nSlack apps should configure their Interactivity URL to:\nhttps://backend.ressl.ai/slack/interactive","operationId":"slack_interactive_proxy_slack_interactive_post","parameters":[{"name":"x-slack-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Slack-Signature"}},{"name":"x-slack-request-timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Slack-Request-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/":{"get":{"tags":["Tickets"],"summary":"List Tickets","description":"List all tickets for a user, optionally filtered by status","operationId":"list_tickets_tickets__get","parameters":[{"name":"connection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Connection ID filter","title":"Connection Id"},"description":"Connection ID filter"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":25,"title":"Limit"},"description":"Page size"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor: ISO datetime or ObjectId string for created_at desc","title":"Cursor"},"description":"Pagination cursor: ISO datetime or ObjectId string for created_at desc"},{"name":"search_existing","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Search web tickets across Auth0 organization","default":false,"title":"Search Existing"},"description":"Search web tickets across Auth0 organization"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Tickets"],"summary":"Create Ticket","description":"Create a new ticket with the given query","operationId":"create_ticket_tickets__post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/details/{ticket_id}":{"get":{"tags":["Tickets"],"summary":"Get Ticket Details","description":"Get full ticket details including diff/result/execution_output and failure analysis.\n\nAuthorization: owner or anyone sharing the same Salesforce org_id.","operationId":"get_ticket_details_tickets_details__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/snapshot/{git_tag}":{"get":{"tags":["Tickets"],"summary":"Get Ticket Snapshot","description":"Get ticket snapshot data for a specific git tag from deployment history.\n\nReturns the snapshot containing diff, execution_output, deployment_message,\nand other details for the specified git tag.\n\nAuthorization: Must be ticket owner or share the same Salesforce org.","operationId":"get_ticket_snapshot_tickets__ticket_id__snapshot__git_tag__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","description":"Ticket ID","title":"Ticket Id"},"description":"Ticket ID"},{"name":"git_tag","in":"path","required":true,"schema":{"type":"string","description":"Git tag for the snapshot","title":"Git Tag"},"description":"Git tag for the snapshot"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/code-changes/download":{"get":{"tags":["Tickets"],"summary":"Download Code Changes Zip","description":"Return a ZIP of deployed code changes between the initial tag and current HEAD.\n\nIncludes modified and created files' contents; deleted files are listed in deleted_files.txt.\nAuthorization: ticket owner or same Salesforce org as the ticket creator.","operationId":"download_code_changes_zip_tickets__ticket_id__code_changes_download_get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","description":"Ticket ID","title":"Ticket Id"},"description":"Ticket ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/count":{"get":{"tags":["Tickets"],"summary":"Count Tickets","description":"Return total tickets and counts by status","operationId":"count_tickets_tickets_count_get","parameters":[{"name":"connection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Connection ID filter","title":"Connection Id"},"description":"Connection ID filter"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/approve":{"post":{"tags":["Tickets"],"summary":"Approve Ticket","description":"Approve a ticket plan and automatically start execution","operationId":"approve_ticket_tickets__ticket_id__approve_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/cancel":{"post":{"tags":["Tickets"],"summary":"Cancel Ticket","description":"Cancel a ticket (only before execution starts)","operationId":"cancel_ticket_tickets__ticket_id__cancel_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TicketCancelRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/abort":{"post":{"tags":["Tickets"],"summary":"Abort Ticket","description":"Abort a ticket and reset any changes made","operationId":"abort_ticket_tickets__ticket_id__abort_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TicketCancelRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/deploy":{"post":{"tags":["Tickets"],"summary":"Deploy Ticket","description":"Deploy a ticket's changes","operationId":"deploy_ticket_tickets__ticket_id__deploy_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/close":{"post":{"tags":["Tickets"],"summary":"Close Ticket","description":"Close a deployed ticket and delete its task workspace.","operationId":"close_ticket_tickets__ticket_id__close_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/status":{"get":{"tags":["Tickets"],"summary":"Get Ticket Status","description":"Get the current status of a ticket","operationId":"get_ticket_status_tickets__ticket_id__status_get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/template":{"patch":{"tags":["Tickets"],"summary":"Toggle Ticket Template","description":"Toggle ticket template status. Anyone in the same organization can mark/unmark a ticket as template.","operationId":"toggle_ticket_template_tickets__ticket_id__template_patch","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/revert":{"post":{"tags":["Tickets"],"summary":"Revert Ticket Deployment","description":"Revert the changes made by a ticket deployment\n\nThis endpoint supports two revert options:\n1. \"previous\": Revert to the previous deployed state (step back one deployment)\n2. \"initial\": Revert to the absolute initial state (jump back to the very beginning)","operationId":"revert_ticket_deployment_tickets__ticket_id__revert_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TicketRevertRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}":{"delete":{"tags":["Tickets"],"summary":"Delete Ticket","description":"Delete a ticket permanently","operationId":"delete_ticket_tickets__ticket_id__delete","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/comments":{"post":{"tags":["Tickets"],"summary":"Add Ticket Comment","description":"Add a comment to a ticket and dispatch relevant agent based on current stage.","operationId":"add_ticket_comment_tickets__ticket_id__comments_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/debug/proceed":{"post":{"tags":["Tickets"],"summary":"Proceed After Debug","description":"Proceed with replanning after user has recreated the issue in debug mode.\nThis triggers replanning with context about traced classes and instruction to fetch debug logs.","operationId":"proceed_after_debug_tickets__ticket_id__debug_proceed_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tickets/{ticket_id}/debug/cancel":{"post":{"tags":["Tickets"],"summary":"Cancel Debug Mode","description":"Cancel debug mode and return ticket to its previous state.","operationId":"cancel_debug_mode_tickets__ticket_id__debug_cancel_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jira/connect-link":{"post":{"tags":["Jira"],"summary":"Get Jira Connect Link","description":"Generate Jira OAuth authorization URL.","operationId":"get_jira_connect_link_jira_connect_link_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JiraOAuthRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jira/oauth/callback":{"get":{"tags":["Jira"],"summary":"Jira Oauth Callback","description":"Handle Jira OAuth callback.","operationId":"jira_oauth_callback_jira_oauth_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/jira/connection":{"get":{"tags":["Jira"],"summary":"Get Jira Connection","description":"Get the user's Jira connection.","operationId":"get_jira_connection_jira_connection_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Jira"],"summary":"Delete Jira Connection","description":"Delete the user's Jira connection (disconnect Jira).","operationId":"delete_jira_connection_jira_connection_delete","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jira/refresh-token":{"post":{"tags":["Jira"],"summary":"Refresh Jira Token Endpoint","description":"Refresh Jira access token using refresh token.","operationId":"refresh_jira_token_endpoint_jira_refresh_token_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jira/token-status":{"get":{"tags":["Jira"],"summary":"Check Token Status","description":"Check token status and refresh if needed.","operationId":"check_token_status_jira_token_status_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jira/webhook":{"post":{"tags":["Jira"],"summary":"Receive Webhook","description":"Receive webhook notifications from Jira.","operationId":"receive_webhook_jira_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/jira/tickets/{ticket_id}/approve":{"post":{"tags":["Jira"],"summary":"Approve Jira Ticket","description":"Approve a Jira ticket plan and automatically start execution","operationId":"approve_jira_ticket_jira_tickets__ticket_id__approve_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/upload":{"post":{"tags":["Knowledge"],"summary":"Upload Knowledge File","operationId":"upload_knowledge_file_knowledge_upload_post","parameters":[{"name":"folder_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Path"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_knowledge_file_knowledge_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/upload-folder":{"post":{"tags":["Knowledge"],"summary":"Upload Knowledge Folder","description":"Upload multiple files preserving folder structure using multipart form data.","operationId":"upload_knowledge_folder_knowledge_upload_folder_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_upload_knowledge_folder_knowledge_upload_folder_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/upload-zip":{"post":{"tags":["Knowledge"],"summary":"Upload Knowledge Zip","description":"Upload a ZIP file and extract it preserving folder structure.","operationId":"upload_knowledge_zip_knowledge_upload_zip_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_knowledge_zip_knowledge_upload_zip_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/list":{"get":{"tags":["Knowledge"],"summary":"List Knowledge Files","description":"Return company knowledge files plus optionally one Salesforce org's files.","operationId":"list_knowledge_files_knowledge_list_get","parameters":[{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Salesforce org ID whose knowledge files to include (in addition to company files). If omitted, only company files are returned.","title":"Sf Org Id"},"description":"Salesforce org ID whose knowledge files to include (in addition to company files). If omitted, only company files are returned."},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/download":{"get":{"tags":["Knowledge"],"summary":"Download Knowledge File","operationId":"download_knowledge_file_knowledge_download_get","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"folder_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Path"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/delete":{"delete":{"tags":["Knowledge"],"summary":"Delete Knowledge File","operationId":"delete_knowledge_file_knowledge_delete_delete","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"folder_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Path"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/content":{"get":{"tags":["Knowledge"],"summary":"Get Knowledge File Content","description":"Return the content of a knowledge file (markdown).","operationId":"get_knowledge_file_content_knowledge_content_get","parameters":[{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"folder_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Path"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/create-folder":{"post":{"tags":["Knowledge"],"summary":"Create Knowledge Folder","description":"Create an empty folder in the knowledge base.","operationId":"create_knowledge_folder_knowledge_create_folder_post","parameters":[{"name":"folder_path","in":"query","required":true,"schema":{"type":"string","description":"Folder path to create, e.g. 'intent/opportunities'","title":"Folder Path"},"description":"Folder path to create, e.g. 'intent/opportunities'"},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/rename":{"post":{"tags":["Knowledge"],"summary":"Rename Knowledge Item","description":"Rename a file or folder in the knowledge base.","operationId":"rename_knowledge_item_knowledge_rename_post","parameters":[{"name":"item_path","in":"query","required":true,"schema":{"type":"string","description":"Current relative path of file or folder","title":"Item Path"},"description":"Current relative path of file or folder"},{"name":"new_name","in":"query","required":true,"schema":{"type":"string","description":"New name for the file or folder","title":"New Name"},"description":"New name for the file or folder"},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge/move":{"post":{"tags":["Knowledge"],"summary":"Move Knowledge Item","description":"Move a file or folder to a different location in the knowledge base.","operationId":"move_knowledge_item_knowledge_move_post","parameters":[{"name":"item_path","in":"query","required":true,"schema":{"type":"string","description":"Current relative path of file or folder to move","title":"Item Path"},"description":"Current relative path of file or folder to move"},{"name":"destination_folder","in":"query","required":false,"schema":{"type":"string","description":"Destination folder path. Empty string means root.","default":"","title":"Destination Folder"},"description":"Destination folder path. Empty string means root."},{"name":"sf_org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/create":{"post":{"tags":["Skills"],"summary":"Create Skill","description":"Create a new skill from uploaded files or ZIP archive.\n\nEither provide multiple files (including SKILL.md) or a single ZIP file.\nOptionally provide organization_id to associate the skill with an organization.","operationId":"create_skill_skills_create_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_skill_skills_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/list":{"get":{"tags":["Skills"],"summary":"List Skills","description":"List all available skills.\n\nOptionally filter by source (custom or anthropic) and/or organization_id.","operationId":"list_skills_skills_list_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"enum":["custom","anthropic"],"type":"string"},{"type":"null"}],"description":"Filter by skill source","title":"Source"},"description":"Filter by skill source"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by organization ID","title":"Organization Id"},"description":"Filter by organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{skill_id}":{"get":{"tags":["Skills"],"summary":"Retrieve Skill","description":"Retrieve details about a specific skill.","operationId":"retrieve_skill_skills__skill_id__get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Skills"],"summary":"Delete Skill","description":"Delete a skill.\n\nBy default, all versions are automatically deleted before deleting the skill.\nAlso removes the skill record from MongoDB.","operationId":"delete_skill_skills__skill_id__delete","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"},{"name":"delete_versions","in":"query","required":false,"schema":{"type":"boolean","description":"Automatically delete all versions before deleting skill","default":true,"title":"Delete Versions"},"description":"Automatically delete all versions before deleting skill"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{skill_id}/info":{"get":{"tags":["Skills"],"summary":"Get Skill Info","description":"Get comprehensive information about a skill including all versions.","operationId":"get_skill_info_skills__skill_id__info_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{skill_id}/versions":{"post":{"tags":["Skills"],"summary":"Create Skill Version","description":"Create a new version of an existing skill.\n\nEither provide multiple files or a single ZIP file.","operationId":"create_skill_version_skills__skill_id__versions_post","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_skill_version_skills__skill_id__versions_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Skills"],"summary":"List Skill Versions","description":"List all versions of a skill.","operationId":"list_skill_versions_skills__skill_id__versions_get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{skill_id}/versions/{version}":{"get":{"tags":["Skills"],"summary":"Retrieve Skill Version","description":"Retrieve details about a specific skill version.","operationId":"retrieve_skill_version_skills__skill_id__versions__version__get","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"},{"name":"version","in":"path","required":true,"schema":{"type":"string","description":"Version identifier","title":"Version"},"description":"Version identifier"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Skills"],"summary":"Delete Skill Version","description":"Delete a specific version of a skill.","operationId":"delete_skill_version_skills__skill_id__versions__version__delete","parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"string","description":"Skill ID","title":"Skill Id"},"description":"Skill ID"},{"name":"version","in":"path","required":true,"schema":{"type":"string","description":"Version identifier","title":"Version"},"description":"Version identifier"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runbooks/upload":{"post":{"tags":["Runbooks"],"summary":"Upload Runbook","description":"Upload a runbook file, convert to Markdown, and store in MongoDB.","operationId":"upload_runbook_runbooks_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_runbook_runbooks_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runbooks/create":{"post":{"tags":["Runbooks"],"summary":"Create Runbook","description":"Create a new runbook with either markdown or BlockNote JSON content.","operationId":"create_runbook_runbooks_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_runbook_runbooks_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runbooks/{runbook_id}":{"put":{"tags":["Runbooks"],"summary":"Update Runbook","description":"Update an existing runbook's content with simplified BlockNote-only approach.","operationId":"update_runbook_runbooks__runbook_id__put","parameters":[{"name":"runbook_id","in":"path","required":true,"schema":{"type":"string","title":"Runbook Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_update_runbook_runbooks__runbook_id__put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Runbooks"],"summary":"Get Runbook","description":"Get a runbook content by its ID with simplified BlockNote approach.","operationId":"get_runbook_runbooks__runbook_id__get","parameters":[{"name":"runbook_id","in":"path","required":true,"schema":{"type":"string","title":"Runbook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Runbooks"],"summary":"Delete Runbook","description":"Delete a runbook by its ID.","operationId":"delete_runbook_runbooks__runbook_id__delete","parameters":[{"name":"runbook_id","in":"path","required":true,"schema":{"type":"string","title":"Runbook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/runbooks/all":{"get":{"tags":["Runbooks"],"summary":"List All Runbooks","description":"List all runbooks (metadata only).","operationId":"list_all_runbooks_runbooks_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/runbooks":{"get":{"tags":["Runbooks"],"summary":"List Runbooks","description":"List runbooks for an organization (metadata only).","operationId":"list_runbooks_runbooks_get","parameters":[{"name":"organization_id","in":"query","required":true,"schema":{"type":"string","description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/use-cases":{"get":{"tags":["Use Cases"],"summary":"List Use Cases","description":"List all use cases","operationId":"list_use_cases_use_cases_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseListResponse"}}}}}},"post":{"tags":["Use Cases"],"summary":"Create Use Case","description":"Create a new use case","operationId":"create_use_case_use_cases_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/use-cases/{use_case_id}":{"get":{"tags":["Use Cases"],"summary":"Get Use Case","description":"Get a specific use case by ID","operationId":"get_use_case_use_cases__use_case_id__get","parameters":[{"name":"use_case_id","in":"path","required":true,"schema":{"type":"string","title":"Use Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Use Cases"],"summary":"Update Use Case","description":"Update an existing use case","operationId":"update_use_case_use_cases__use_case_id__put","parameters":[{"name":"use_case_id","in":"path","required":true,"schema":{"type":"string","title":"Use Case Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UseCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Use Cases"],"summary":"Delete Use Case","description":"Delete a use case by its ID","operationId":"delete_use_case_use_cases__use_case_id__delete","parameters":[{"name":"use_case_id","in":"path","required":true,"schema":{"type":"string","title":"Use Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/use-cases/sub-use-cases/{sub_use_case_id}":{"get":{"tags":["Use Cases"],"summary":"Get Sub Use Case","description":"Get a specific sub use case by ID with full content","operationId":"get_sub_use_case_use_cases_sub_use_cases__sub_use_case_id__get","parameters":[{"name":"sub_use_case_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Use Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubUseCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Use Cases"],"summary":"Update Sub Use Case","description":"Update a specific sub use case (title, description, and/or content)","operationId":"update_sub_use_case_use_cases_sub_use_cases__sub_use_case_id__put","parameters":[{"name":"sub_use_case_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Use Case Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubUseCaseUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubUseCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/demo_salesforce/connect-link":{"post":{"tags":["Demo"],"summary":"Connect Demo Instance","operationId":"connect_demo_instance_demo_salesforce_connect_link_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/github/github-webhook":{"post":{"tags":["Github"],"summary":"Github Webhook","operationId":"github_webhook_github_github_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/github/skills-webhook":{"post":{"tags":["Github"],"summary":"Skills Webhook","description":"GitHub webhook endpoint for ressl-skills repo.\nTriggers git pull when changes are pushed.","operationId":"skills_webhook_github_skills_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logs/":{"get":{"tags":["Logs"],"summary":"List all log files","description":"Return a JSON list of every log file under the backend logs directory.","operationId":"list_logs_logs__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logs/{file_path}":{"get":{"tags":["Logs"],"summary":"Get contents of a specific log file","description":"Return raw content of a single log file relative to LOGS_DIR.","operationId":"get_log_file_logs__file_path__get","parameters":[{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Return file as downloadable attachment","default":false,"title":"Download"},"description":"Return file as downloadable attachment"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/translate/label":{"post":{"tags":["Translate"],"summary":"Translate Label","description":"Translate custom labels (ExternalString) using deterministic translation.\n\nThe endpoint:\n1. Detects language code (using predefined list or Gemini 2.5 Flash Lite API)\n2. Creates a deterministic translation ticket handled by the custom labels translator\n3. Enqueues classification task in the background\n4. Uses request.type as the namespace filter (optional)\n5. Supports file attachments (documents are converted to text and stored)\n\nThe actual translation is done deterministically in task_executor.py before\nthe execution agent runs, then the agent only verifies the output.","operationId":"translate_label_translate_label_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_translate_label_translate_label_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/translate/picklist":{"post":{"tags":["Translate"],"summary":"Translate Picklist","description":"Translate global picklists using deterministic translation approach.\n\nThe endpoint:\n1. Loads the translate_global_picklist.prompt file from prompts/{organization_id}/\n2. Replaces {language} if present in the prompt\n3. Detects language code (using predefined list or Claude API)\n4. Creates a ticket flagged for deterministic translation (is_translation=True)\n5. Enqueues classification task using the same pattern as tickets.py (lines 677-681)\n6. Supports file attachments (documents are converted to text and stored)\n\nThe actual translation is done deterministically in task_executor.py before\nthe execution agent runs, then the agent only verifies the output.","operationId":"translate_picklist_translate_picklist_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_translate_picklist_translate_picklist_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/translate/custom-object":{"post":{"tags":["Translate"],"summary":"Translate Custom Object","description":"Translate custom objects using deterministic translation.\n\nThe endpoint:\n1. Loads translate_custom_object.prompt from prompts/{organization_id}/\n2. Replaces {language} and {namespace} placeholders\n3. Creates a deterministic translation ticket handled by the custom object translator\n4. Enqueues classification task in the background\n5. Supports file attachments (documents are converted to text and stored)","operationId":"translate_custom_object_translate_custom_object_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_translate_custom_object_translate_custom_object_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/estimation/":{"post":{"tags":["Estimation"],"summary":"Create Estimation","description":"Trigger estimation for a ticket's todo items.\n\nThe estimation agent will review the plan and estimate time for each todo item.\nStatus flow: \n- planned/planning_failed -> estimating -> planned (with estimations)\n- executed -> estimating -> executed (with estimations)\n- deployed -> estimating -> deployed (with estimations)","operationId":"create_estimation_estimation__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/usage":{"get":{"tags":["Usage"],"summary":"Get Org Usage","description":"Return usage stats for the authenticated admin's organization only.\n\nUsage is measured as:\n- total_chats: count of users.conversations entries\n- total_tickets: count of query_logs documents\n\nThe organization is derived from the authenticated user's MongoDB user record.\nClient-provided organization/domain filters are intentionally not accepted.","operationId":"get_org_usage_usage_get","parameters":[{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive start date, YYYY-MM-DD","title":"Start"},"description":"Inclusive start date, YYYY-MM-DD"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive end date, YYYY-MM-DD","title":"End"},"description":"Inclusive end date, YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/me/role":{"get":{"tags":["Admin"],"summary":"Get My Role","description":"Return the authenticated user's role for frontend permission checks.","operationId":"get_my_role_admin_me_role_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhook-email":{"post":{"tags":["Email"],"summary":"Email Webhook","description":"Handle incoming email webhook notifications.","operationId":"email_webhook_webhook_email_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/emails/{email_id}":{"get":{"tags":["Email"],"summary":"Get Email","description":"Retrieve a single email from Resend API.\n\nArgs:\n    email_id: The email ID to retrieve (e.g., '4ef9a417-02e9-4d39-ad75-9611e0fcc33c')\n    \nReturns:\n    Email data including:\n    - object: \"email\"\n    - id: Email ID\n    - to: Recipient email addresses\n    - from: Sender email address\n    - created_at: Creation timestamp\n    - subject: Email subject\n    - html: HTML content\n    - text: Plain text content\n    - bcc: BCC recipients\n    - cc: CC recipients\n    - reply_to: Reply-to addresses\n    - last_event: Last event status\n    - scheduled_at: Scheduled timestamp (if applicable)","operationId":"get_email_emails__email_id__get","parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"string","description":"The Resend email ID","title":"Email Id"},"description":"The Resend email ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat":{"post":{"tags":["Home"],"summary":"Chat Agent","description":"Chat endpoint that streams Claude responses (and tool calls) to the client using\nServer-Sent Events (SSE).\n\nSupports both Auth0 JWT authentication (Authorization: Bearer) and API key\nauthentication (X-API-Key header) for service-to-service integrations.\n\nEach SSE event has the following format:\n\n    event: <text|tool_use|tool_result>\n\n    data: <JSON-encoded payload>\n\n\nWhere the payload structure corresponds to the event type, e.g.\n    {\"text\": \"Hello\"} for text,\n    {\"name\": \"get_weather\", \"args\": {...}} for tool_use, and\n    {\"name\": \"get_weather\", \"content\": \"72F and sunny\"} for tool_result.","operationId":"chat_agent_chat_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/async":{"post":{"tags":["Home"],"summary":"Chat Agent Async","description":"Async chat endpoint for Salesforce Managed Package.\n\nStarts the agent in the background and returns a job_id immediately.\nThe client polls GET /chat/async/{job_id} to check for the result.\n\nAccepts the same form parameters as POST /chat:\n  - query (required)\n  - connection_id (required)\n  - conversation_id (optional)\n\nReturns: {\"job_id\": \"...\", \"conversation_id\": \"...\", \"status\": \"processing\"}","operationId":"chat_agent_async_chat_async_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/async/{job_id}":{"get":{"tags":["Home"],"summary":"Poll Async Chat","description":"Poll for async chat job result.\n\nReturns:\n  - {\"status\": \"processing\"} if still running\n  - {\"status\": \"completed\", \"response\": \"...\", \"conversation_id\": \"...\"} when done\n  - {\"status\": \"failed\", \"error\": \"...\"} on error","operationId":"poll_async_chat_chat_async__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/{conversation_id}/status":{"get":{"tags":["Home"],"summary":"Get Conversation Status","description":"Check if a conversation has a message currently being generated.\n\nReturns:\n    - is_generating: boolean indicating if any message is currently generating\n    - last_message: details of the last message if it's generating\n    - message_count: total number of messages in the conversation","operationId":"get_conversation_status_conversations__conversation_id__status_get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/{conversation_id}/abort":{"post":{"tags":["Home"],"summary":"Abort Conversation Generation","operationId":"abort_conversation_generation_conversations__conversation_id__abort_post","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/history/{connection_id}":{"get":{"tags":["Home"],"summary":"Get Chat History","description":"Return all conversations (and their messages) for the given user/org.","operationId":"get_chat_history_chat_history__connection_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/{conversation_id}/title":{"put":{"tags":["Home"],"summary":"Update Conversation Title","description":"Update the title of a conversation.\n\nValidates that the conversation exists and belongs to the user,\nthen updates the title in the database.","operationId":"update_conversation_title_chat__conversation_id__title_put","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTitleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTitleUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/{conversation_id}/message/{message_index}/feedback":{"post":{"tags":["Home"],"summary":"Submit Message Feedback","description":"Submit user feedback (thumbs up/down with optional comment) for a specific assistant message.\n\nThis endpoint:\n1. Updates the MongoDB message document with feedback data\n2. Tags the Laminar trace associated with this conversation","operationId":"submit_message_feedback_chat__conversation_id__message__message_index__feedback_post","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"message_index","in":"path","required":true,"schema":{"type":"integer","description":"Index of the message to provide feedback for","title":"Message Index"},"description":"Index of the message to provide feedback for"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect-link":{"post":{"tags":["Home"],"summary":"Get Salesforce Connect Link","operationId":"get_salesforce_connect_link_connect_link_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/callback":{"get":{"tags":["Home"],"summary":"Oauth Callback","operationId":"oauth_callback_oauth_callback_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connections":{"get":{"tags":["Home"],"summary":"List Salesforce Connections","operationId":"list_salesforce_connections_connections_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connection/{connection_id}":{"delete":{"tags":["Home"],"summary":"Disconnect Salesforce Org","operationId":"disconnect_salesforce_org_connection__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Home"],"summary":"Update Connection Name","description":"Updates the custom name for a Salesforce connection.","operationId":"update_connection_name_connection__connection_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionNameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connection/{connection_id}/features":{"patch":{"tags":["Home"],"summary":"Update Connection Features","description":"Updates the feature toggles (chat_enabled, tickets_enabled) for a Salesforce org.\nChanges are applied at the org level, affecting all users connected to the same Salesforce org.","operationId":"update_connection_features_connection__connection_id__features_patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConnectionFeaturesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api-keys":{"get":{"tags":["Home"],"summary":"List Api Keys","description":"List all API keys for the authenticated user.\n\nNote: The actual API key values are not returned for security reasons.\nOnly metadata (name, connection_id, dates, etc.) is included.","operationId":"list_api_keys_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Home"],"summary":"Create Api Key","description":"Create a new API key for service-to-service authentication.\n\nThe API key allows external systems (like Salesforce LWC) to call Ressl APIs\non behalf of the authenticated user. The key is scoped to a specific\nSalesforce connection.\n\nIMPORTANT: The plaintext API key is returned ONLY ONCE. Store it securely.","operationId":"create_api_key_api_keys_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_api_key_api_keys_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api-keys/{key_id}":{"delete":{"tags":["Home"],"summary":"Revoke Api Key","description":"Revoke (deactivate) an API key.\n\nOnce revoked, the API key can no longer be used for authentication.","operationId":"revoke_api_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","description":"The API key ID to revoke","title":"Key Id"},"description":"The API key ID to revoke"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/{conversation_id}":{"delete":{"tags":["Home"],"summary":"Delete Chat Conversation","description":"Delete a specific conversation for the authenticated user.","operationId":"delete_chat_conversation_chat__conversation_id__delete","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyses":{"get":{"tags":["Home"],"summary":"List Analyses","description":"Returns all analyses for the authenticated user, optionally filtered by connection_id.","operationId":"list_analyses_analyses_get","parameters":[{"name":"connection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyses/{analysis_id}":{"get":{"tags":["Home"],"summary":"Get Analysis","description":"Returns a specific analysis by ID for the authenticated user.","operationId":"get_analysis_analyses__analysis_id__get","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Home"],"summary":"Update Analysis","description":"Updates the overview and/or mermaid_diagram of a specific analysis.","operationId":"update_analysis_analyses__analysis_id__patch","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/process-flow":{"post":{"tags":["Home"],"summary":"Analyze Process Flow","operationId":"analyze_process_flow_process_flow_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessFlowRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyses/{analysis_id}/sync":{"post":{"tags":["Home"],"summary":"Sync Analysis","operationId":"sync_analysis_analyses__analysis_id__sync_post","parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","title":"Analysis Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/onboard/questions":{"get":{"tags":["Home"],"summary":"Get Onboarding Questions","operationId":"get_onboarding_questions_onboard_questions_get","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/onboard/answers":{"post":{"tags":["Home"],"summary":"Save Onboarding Answers","operationId":"save_onboarding_answers_onboard_answers_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/onboard/status":{"get":{"tags":["Home"],"summary":"Get Onboarding Status","description":"Returns the onboarding status for the given connection.\nResponse shape:\n{\n  steps: {\n    generate_manifest: { status, error? },\n    retrieve_all_metadata: { status, error? }\n  },\n  graph: { status, graph_id?, graph?, error? }\n}","operationId":"get_onboarding_status_onboard_status_get","parameters":[{"name":"connection_id","in":"query","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rules":{"get":{"tags":["Home"],"summary":"List Rules","description":"Returns all rules for the specified Salesforce connection (shared per org).","operationId":"list_rules_rules_get","parameters":[{"name":"connection_id","in":"query","required":true,"schema":{"type":"string","title":"Connection Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Home"],"summary":"Create Rule","description":"Creates a new rule for the specified Salesforce connection (shared per org).","operationId":"create_rule_rules_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rule"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rules/{rule_id}":{"patch":{"tags":["Home"],"summary":"Update Rule","description":"Updates an existing rule (shared per org).","operationId":"update_rule_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rule"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Home"],"summary":"Delete Rule","description":"Deletes a rule (shared per org).","operationId":"delete_rule_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","title":"Rule Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Organization ID","title":"Organization Id"},"description":"Organization ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Analysis":{"properties":{"analysis_id":{"type":"string","title":"Analysis Id"},"name":{"type":"string","title":"Name"},"query":{"type":"string","title":"Query"},"connection_id":{"type":"string","title":"Connection Id"},"status":{"type":"string","title":"Status"},"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview"},"mermaid_diagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mermaid Diagram"},"sources":{"items":{"$ref":"#/components/schemas/Source"},"type":"array","title":"Sources","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details"}},"type":"object","required":["analysis_id","name","query","connection_id","status","created_at"],"title":"Analysis"},"AnalysisListResponse":{"properties":{"analyses":{"items":{"$ref":"#/components/schemas/Analysis"},"type":"array","title":"Analyses"}},"type":"object","required":["analyses"],"title":"AnalysisListResponse"},"AnalysisUpdateRequest":{"properties":{"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview"},"mermaid_diagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mermaid Diagram"}},"type":"object","title":"AnalysisUpdateRequest"},"Body_create_api_key_api_keys_post":{"properties":{"connection_id":{"type":"string","title":"Connection Id","description":"Salesforce connection ID to scope the key to"},"name":{"type":"string","title":"Name","description":"Friendly name for the API key","default":"API Key"}},"type":"object","required":["connection_id"],"title":"Body_create_api_key_api_keys_post"},"Body_create_api_key_salesforce_api_keys_post":{"properties":{"connection_id":{"type":"string","title":"Connection Id","description":"Salesforce connection ID to scope the key to"},"name":{"type":"string","title":"Name","description":"Friendly name for the API key","default":"API Key"}},"type":"object","required":["connection_id"],"title":"Body_create_api_key_salesforce_api_keys_post"},"Body_create_runbook_runbooks_create_post":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"content_format":{"type":"string","title":"Content Format","default":"markdown"},"content_md":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Md"},"content_blocks":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Blocks"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},"type":"object","required":["organization_id","name"],"title":"Body_create_runbook_runbooks_create_post"},"Body_create_skill_skills_create_post":{"properties":{"display_title":{"type":"string","title":"Display Title","description":"Display title for the skill"},"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files","description":"Skill files (must include SKILL.md)"},"zip_file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Zip File","description":"ZIP file containing skill files"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","description":"Organization ID (optional)"}},"type":"object","required":["display_title"],"title":"Body_create_skill_skills_create_post"},"Body_create_skill_version_skills__skill_id__versions_post":{"properties":{"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files","description":"Skill files"},"zip_file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Zip File","description":"ZIP file containing skill files"}},"type":"object","title":"Body_create_skill_version_skills__skill_id__versions_post"},"Body_translate_custom_object_translate_custom_object_post":{"properties":{"language":{"type":"string","title":"Language"},"organization_id":{"type":"string","title":"Organization Id"},"connection_id":{"type":"string","title":"Connection Id"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files"}},"type":"object","required":["language","organization_id","connection_id"],"title":"Body_translate_custom_object_translate_custom_object_post"},"Body_translate_label_translate_label_post":{"properties":{"language":{"type":"string","title":"Language"},"type":{"type":"string","title":"Type"},"organization_id":{"type":"string","title":"Organization Id"},"connection_id":{"type":"string","title":"Connection Id"},"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files"}},"type":"object","required":["language","type","organization_id","connection_id"],"title":"Body_translate_label_translate_label_post"},"Body_translate_picklist_translate_picklist_post":{"properties":{"language":{"type":"string","title":"Language"},"organization_id":{"type":"string","title":"Organization Id"},"connection_id":{"type":"string","title":"Connection Id"},"files":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Files"}},"type":"object","required":["language","organization_id","connection_id"],"title":"Body_translate_picklist_translate_picklist_post"},"Body_update_runbook_runbooks__runbook_id__put":{"properties":{"content_blocks":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Blocks"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markdown"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"},"variables":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variables"}},"type":"object","title":"Body_update_runbook_runbooks__runbook_id__put"},"Body_upload_knowledge_file_knowledge_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"sf_org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},"type":"object","required":["file"],"title":"Body_upload_knowledge_file_knowledge_upload_post"},"Body_upload_knowledge_folder_knowledge_upload_folder_post":{"properties":{"sf_org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},"type":"object","title":"Body_upload_knowledge_folder_knowledge_upload_folder_post"},"Body_upload_knowledge_zip_knowledge_upload_zip_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"sf_org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sf Org Id"}},"type":"object","required":["file"],"title":"Body_upload_knowledge_zip_knowledge_upload_zip_post"},"Body_upload_runbook_runbooks_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},"type":"object","required":["file","organization_id"],"title":"Body_upload_runbook_runbooks_upload_post"},"ConversationTitleUpdateRequest":{"properties":{"title":{"type":"string","title":"Title"}},"type":"object","required":["title"],"title":"ConversationTitleUpdateRequest"},"ConversationTitleUpdateResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"title":{"type":"string","title":"Title"}},"type":"object","required":["success","message","title"],"title":"ConversationTitleUpdateResponse"},"DeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"DeleteResponse","description":"Response model for delete operations"},"EstimationRequest":{"properties":{"ticket_id":{"type":"string","title":"Ticket Id"},"connection_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Id"}},"type":"object","required":["ticket_id"],"title":"EstimationRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JiraOAuthRequest":{"properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url"}},"type":"object","title":"JiraOAuthRequest"},"MessageFeedbackRequest":{"properties":{"rating":{"type":"integer","title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["rating"],"title":"MessageFeedbackRequest"},"MessageFeedbackResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"MessageFeedbackResponse"},"ProcessFlowRequest":{"properties":{"query":{"type":"string","title":"Query"},"connection_id":{"type":"string","title":"Connection Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["query","connection_id"],"title":"ProcessFlowRequest"},"Rule":{"properties":{"rule_id":{"type":"string","title":"Rule Id"},"name":{"type":"string","title":"Name"},"content":{"type":"string","title":"Content"},"connection_id":{"type":"string","title":"Connection Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["rule_id","name","content","connection_id","created_at"],"title":"Rule"},"RuleCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"content":{"type":"string","title":"Content"},"connection_id":{"type":"string","title":"Connection Id"}},"type":"object","required":["name","content","connection_id"],"title":"RuleCreateRequest"},"RuleListResponse":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/Rule"},"type":"array","title":"Rules"}},"type":"object","required":["rules"],"title":"RuleListResponse"},"RuleUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"}},"type":"object","title":"RuleUpdateRequest"},"SkillInfoResponse":{"properties":{"skill_id":{"type":"string","title":"Skill Id"},"display_title":{"type":"string","title":"Display Title"},"source":{"type":"string","title":"Source"},"latest_version":{"type":"string","title":"Latest Version"},"created_at":{"type":"string","title":"Created At"},"version_count":{"type":"integer","title":"Version Count"},"versions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Versions"}},"type":"object","required":["skill_id","display_title","source","latest_version","created_at","version_count","versions"],"title":"SkillInfoResponse","description":"Response model for comprehensive skill info"},"SkillListResponse":{"properties":{"skills":{"items":{"$ref":"#/components/schemas/SkillResponse"},"type":"array","title":"Skills"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["skills","total"],"title":"SkillListResponse","description":"Response model for list of skills"},"SkillResponse":{"properties":{"id":{"type":"string","title":"Id"},"display_title":{"type":"string","title":"Display Title"},"source":{"type":"string","enum":["custom","anthropic"],"title":"Source"},"latest_version":{"type":"string","title":"Latest Version"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},"type":"object","required":["id","display_title","source","latest_version","created_at","updated_at"],"title":"SkillResponse","description":"Response model for skill details"},"SkillVersionListResponse":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/SkillVersionResponse"},"type":"array","title":"Versions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["versions","total"],"title":"SkillVersionListResponse","description":"Response model for list of skill versions"},"SkillVersionResponse":{"properties":{"id":{"type":"string","title":"Id"},"skill_id":{"type":"string","title":"Skill Id"},"version":{"type":"string","title":"Version"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"directory":{"type":"string","title":"Directory"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","skill_id","version","name","description","directory","created_at"],"title":"SkillVersionResponse","description":"Response model for skill version details"},"SlackOAuthRequest":{"properties":{"team_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Domain"}},"type":"object","title":"SlackOAuthRequest"},"Source":{"properties":{"tool":{"type":"string","title":"Tool"},"item":{"type":"string","title":"Item"}},"type":"object","required":["tool","item"],"title":"Source"},"SubUseCaseCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content":{"type":"string","title":"Content"}},"type":"object","required":["title","description","content"],"title":"SubUseCaseCreateRequest","description":"Request model for creating a sub-use case"},"SubUseCaseResponse":{"properties":{"id":{"type":"string","title":"Id"},"use_case_id":{"type":"string","title":"Use Case Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"content":{"type":"string","title":"Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","use_case_id","title","description","content","created_at"],"title":"SubUseCaseResponse","description":"Full response model for a sub-use case (with content)"},"SubUseCaseSummary":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"}},"type":"object","required":["id","title","description"],"title":"SubUseCaseSummary","description":"Summary model for a sub-use case (without content)"},"SubUseCaseUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"}},"type":"object","title":"SubUseCaseUpdateRequest","description":"Request model for updating a sub-use case"},"TicketCancelRequest":{"properties":{},"type":"object","title":"TicketCancelRequest","description":"Request model for canceling a ticket"},"TicketCountResponse":{"properties":{"total":{"type":"integer","title":"Total"},"counts_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts By Status"}},"type":"object","required":["total"],"title":"TicketCountResponse","description":"Aggregated counts for tickets"},"TicketListResponse":{"properties":{"tickets":{"items":{"$ref":"#/components/schemas/TicketResponse"},"type":"array","title":"Tickets"},"total":{"type":"integer","title":"Total"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["tickets","total"],"title":"TicketListResponse","description":"Response model for listing tickets"},"TicketResponse":{"properties":{"ticket_id":{"type":"string","title":"Ticket Id"},"query":{"type":"string","title":"Query"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"execution_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Plan"},"diff":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diff"},"result":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"status":{"type":"string","title":"Status"},"type":{"type":"string","title":"Type"},"source":{"type":"string","title":"Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"connection_id":{"type":"string","title":"Connection Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details"},"retry_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retry Count"},"deploy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deploy Url"},"deployment_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment Message"},"execution_output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Output"},"failure_analysis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Analysis"},"failure_classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Classification"},"failure_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Summary"},"comments":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Comments"},"previous_failures":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Previous Failures"},"git_tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Git Tags"},"revert_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Revert Details"},"todos":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Todos"},"total_estimate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Estimate"},"deployment_history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Deployment History"},"current_view_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current View Tag"},"runbook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runbook Id"},"runbook_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runbook Name"},"runbook_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runbook Content"},"runbook_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Runbook Ids"},"runbooks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Runbooks"},"runbook_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Runbook Names"},"is_template":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Template","default":false},"run_tests":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Run Tests"},"ref_ticket":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Ticket"},"is_translation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Translation","default":false},"integration_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Type"},"debug_mode":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Debug Mode"},"is_answering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Answering","default":false}},"type":"object","required":["ticket_id","query","status","type","source","created_at","updated_at","connection_id"],"title":"TicketResponse","description":"Response model for ticket details"},"TicketRevertRequest":{"properties":{"revert_type":{"type":"string","title":"Revert Type","default":"previous"}},"type":"object","title":"TicketRevertRequest","description":"Request model for reverting a ticket deployment"},"TicketTemplateRequest":{"properties":{"is_template":{"type":"boolean","title":"Is Template"}},"type":"object","required":["is_template"],"title":"TicketTemplateRequest","description":"Request model for toggling ticket template status."},"UpdateConnectionFeaturesRequest":{"properties":{"chat_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chat Enabled"},"tickets_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tickets Enabled"}},"type":"object","title":"UpdateConnectionFeaturesRequest"},"UpdateConnectionNameRequest":{"properties":{"custom_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Name"}},"type":"object","title":"UpdateConnectionNameRequest"},"UseCaseCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"content":{"items":{"$ref":"#/components/schemas/SubUseCaseCreateRequest"},"type":"array","title":"Content"}},"type":"object","required":["title"],"title":"UseCaseCreateRequest","description":"Request model for creating a new use case"},"UseCaseListResponse":{"properties":{"use_cases":{"items":{"$ref":"#/components/schemas/UseCaseResponse"},"type":"array","title":"Use Cases"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["use_cases","total"],"title":"UseCaseListResponse","description":"Response model for listing use cases"},"UseCaseResponse":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"content":{"items":{"$ref":"#/components/schemas/SubUseCaseSummary"},"type":"array","title":"Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","title","content","created_at"],"title":"UseCaseResponse","description":"Response model for use case details"},"UseCaseUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/SubUseCaseCreateRequest"},"type":"array"},{"type":"null"}],"title":"Content"}},"type":"object","title":"UseCaseUpdateRequest","description":"Request model for updating a use case"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}