{"openapi":"3.1.0","info":{"title":"Persona‑RAG API","version":"0.1.0"},"paths":{"/admin/me":{"get":{"summary":"Get Current User Info","description":"Return basic info about the currently authenticated user, including admin status.","operationId":"get_current_user_info_admin_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/conversations/":{"post":{"tags":["conversations"],"summary":"Create Conversation","description":"Create a new conversation - requires authentication","operationId":"create_conversation_conversations__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConversationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConversationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["conversations"],"summary":"List Conversations","description":"List conversations for the authenticated user","operationId":"list_conversations_conversations__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of conversations to return","default":20,"title":"Limit"},"description":"Number of conversations to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of conversations to skip","default":0,"title":"Offset"},"description":"Number of conversations to skip"},{"name":"archived","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by archived status","title":"Archived"},"description":"Filter by archived status"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category (e.g., 'research_intelligence')","title":"Category"},"description":"Filter by category (e.g., 'research_intelligence')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/{conversation_id}":{"get":{"tags":["conversations"],"summary":"Get Conversation","description":"Get conversation details - requires authentication","operationId":"get_conversation_conversations__conversation_id__get","security":[{"HTTPBearer":[]}],"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"}}}}}}},"/conversations/{conversation_id}/messages":{"get":{"tags":["conversations"],"summary":"Get Conversation Messages","description":"Get messages for a conversation - requires authentication","operationId":"get_conversation_messages_conversations__conversation_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Number of messages to return","default":50,"title":"Limit"},"description":"Number of messages to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of messages to skip","default":0,"title":"Offset"},"description":"Number of messages to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/groups":{"get":{"tags":["personas"],"summary":"List Persona Groups","description":"Fetch grouped persona data from BigQuery.\n\nResults are aggregated by market + job_role with summaries generated\ndirectly from the query output.","operationId":"list_persona_groups_v1_personas_groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"market","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}],"description":"Filter results to a specific market segment","title":"Market"},"description":"Filter results to a specific market segment"},{"name":"job_role","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}],"description":"Filter results to a specific job role","title":"Job Role"},"description":"Filter results to a specific job role"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of market/role groups to return","default":100,"title":"Limit"},"description":"Maximum number of market/role groups to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaGroupsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas":{"get":{"tags":["personas"],"summary":"List Personas","description":"Return the personas that the authenticated user can access.\nMirrors /persona/list-detailed but under the versioned REST path.\nSupports pagination via limit and offset parameters.\nSupports filtering by comma-separated IDs via the `ids` parameter.","operationId":"list_personas_v1_personas_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_role","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}],"description":"Filter personas by job role (individual characteristics)","title":"Job Role"},"description":"Filter personas by job role (individual characteristics)"},{"name":"society_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":256},{"type":"null"}],"description":"Filter personas by exact society identifier","title":"Society Id"},"description":"Filter personas by exact society identifier"},{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of persona IDs to fetch","title":"Ids"},"description":"Comma-separated list of persona IDs to fetch"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of personas to return","default":200,"title":"Limit"},"description":"Maximum number of personas to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of personas to skip for pagination","default":0,"title":"Offset"},"description":"Number of personas to skip for pagination"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaListResp"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/{persona_id}":{"delete":{"tags":["personas"],"summary":"Delete Persona","description":"Delete a persona by ID. Admin only.","operationId":"delete_persona_v1_personas__persona_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","title":"Persona Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/personas/surveys/stream":{"post":{"tags":["personas"],"summary":"Execute Survey Stream","description":"Execute a survey simulation and receive streaming updates.\nReturns a stream of JSON objects (SSE).","operationId":"execute_survey_stream_v1_personas_surveys_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/personas/questions/stream":{"post":{"tags":["personas-v2"],"summary":"Ask Persona Question Stream V2","description":"V2: Ask a question and receive streaming updates with LangGraph orchestration.\n\nDifferences from v1:\n- LLM-based orchestrator generates execution plan dynamically\n- Skips unnecessary nodes based on question complexity\n- Emits orchestrator plan as first event\n- Same output format (backward compatible)\n\nReturns:\n    StreamingResponse with SSE events:\n    - plan: Orchestrator's execution plan\n    - status: Progress updates\n    - error: Error events (critical/recoverable)\n    - result: Final response","operationId":"ask_persona_question_stream_v2_v2_personas_questions_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionRequestV2"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/products":{"get":{"tags":["products"],"summary":"List Products","description":"List products:\n- Admin users: see all products\n- Regular users: see only products from their organization","operationId":"list_products_v1_products_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["products"],"summary":"Create Product","description":"Create a new product with its features.\n\nExample request:\n```json\n{\n  \"name\": \"Project Management Tool\",\n  \"description\": \"A tool that helps teams organize and track their work\",\n  \"targetAudience\": \"Product managers and agile teams\",\n  \"features\": [\n    {\"name\": \"Task Boards\", \"description\": \"Kanban-style boards\"},\n    {\"name\": \"Sprint Planning\", \"description\": \"Tools for planning sprints\"}\n  ]\n}\n```","operationId":"create_product_v1_products_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/products/{product_id}":{"put":{"tags":["products"],"summary":"Update Product","description":"Update a product and its features.\nReplaces all features with the new list.","operationId":"update_product_v1_products__product_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["products"],"summary":"Delete Product","description":"Delete a product and all its features.","operationId":"delete_product_v1_products__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/products/enrich":{"post":{"tags":["products"],"summary":"Enrich Product From Website","description":"Draft product form fields from public information about a website.","operationId":"enrich_product_from_website_v1_products_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductWebsiteEnrichmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductWebsiteEnrichmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/market-intelligence-benchmarks/models":{"get":{"tags":["market-intelligence-benchmarks"],"summary":"List Models","operationId":"list_models_v2_market_intelligence_benchmarks_models_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generationModelId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generationmodelid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/market-intelligence-benchmarks/query-sets":{"get":{"tags":["market-intelligence-benchmarks"],"summary":"List Query Sets","operationId":"list_query_sets_v2_market_intelligence_benchmarks_query_sets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["market-intelligence-benchmarks"],"summary":"Create Query Set","operationId":"create_query_set_v2_market_intelligence_benchmarks_query_sets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQuerySetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/market-intelligence-benchmarks/query-sets/{query_set_id}/versions":{"post":{"tags":["market-intelligence-benchmarks"],"summary":"Create Query Set Version","operationId":"create_query_set_version_v2_market_intelligence_benchmarks_query_sets__query_set_id__versions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"query_set_id","in":"path","required":true,"schema":{"type":"string","title":"Query Set Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQuerySetVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/market-intelligence-benchmarks/runs":{"post":{"tags":["market-intelligence-benchmarks"],"summary":"Create Run","operationId":"create_run_v2_market_intelligence_benchmarks_runs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__market_intelligence_benchmark_api__CreateRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["market-intelligence-benchmarks"],"summary":"List Runs","operationId":"list_runs_v2_market_intelligence_benchmarks_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/market-intelligence-benchmarks/runs/{run_id}":{"get":{"tags":["market-intelligence-benchmarks"],"summary":"Get Run","operationId":"get_run_v2_market_intelligence_benchmarks_runs__run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/market-intelligence-benchmarks/runs/{run_id}/cancel":{"post":{"tags":["market-intelligence-benchmarks"],"summary":"Cancel Run","operationId":"cancel_run_v2_market_intelligence_benchmarks_runs__run_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/market-intelligence-benchmarks/runs/{run_id}/continue":{"post":{"tags":["market-intelligence-benchmarks"],"summary":"Continue Run","operationId":"continue_run_v2_market_intelligence_benchmarks_runs__run_id__continue_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/runs":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Create Run","operationId":"create_run_v2_design_feedback_benchmarks_runs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__design_feedback_benchmark_api__CreateRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["design-feedback-benchmarks"],"summary":"List Runs","operationId":"list_runs_v2_design_feedback_benchmarks_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"includeBatchRuns","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Includebatchruns"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/options":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Options","operationId":"get_options_v2_design_feedback_benchmarks_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/design-feedback-benchmarks/runs/{run_id}":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Run","operationId":"get_run_v2_design_feedback_benchmarks_runs__run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/runs/{run_id}/ladder":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Run Ladder","description":"The v4 findings of the shown revision: every report's scored problems.","operationId":"get_run_ladder_v2_design_feedback_benchmarks_runs__run_id__ladder_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["design-feedback-benchmarks"],"summary":"Score Run With Ladder","description":"Score a single finished run with v4 from its stored evidence, or retry its open scoring.","operationId":"score_run_with_ladder_v2_design_feedback_benchmarks_runs__run_id__ladder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/runs/{run_id}/continue":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Continue Run","operationId":"continue_run_v2_design_feedback_benchmarks_runs__run_id__continue_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/runs/{run_id}/problem-groups/{group_id}/scores":{"patch":{"tags":["design-feedback-benchmarks"],"summary":"Update Problem Scores","operationId":"update_problem_scores_v2_design_feedback_benchmarks_runs__run_id__problem_groups__group_id__scores_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProblemScoresRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/claim":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Claim Agent Attempt","operationId":"claim_agent_attempt_v2_design_feedback_benchmarks_internal_runs__run_id__agent_claim_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentClaimRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/participants/{participant_id}":{"put":{"tags":["design-feedback-benchmarks"],"summary":"Checkpoint Agent Participant","operationId":"checkpoint_agent_participant_v2_design_feedback_benchmarks_internal_runs__run_id__agent_participants__participant_id__put","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentParticipantCheckpointRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/finalize":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Finalize Agent Attempt","operationId":"finalize_agent_attempt_v2_design_feedback_benchmarks_internal_runs__run_id__agent_finalize_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFinalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/participants/{participant_id}/browser":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Issue Agent Browser","description":"A signed-in browser for one participant attempt. The response holds a\ncredential (connectUrl): pass it to the agent's browser, never log it.","operationId":"issue_agent_browser_v2_design_feedback_benchmarks_internal_runs__run_id__agent_participants__participant_id__browser_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBrowserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/participants/{participant_id}/browser/status":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Agent Browser Status","operationId":"agent_browser_status_v2_design_feedback_benchmarks_internal_runs__run_id__agent_participants__participant_id__browser_status_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBrowserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/internal/runs/{run_id}/agent/participants/{participant_id}/browser/release":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Release Agent Browser","operationId":"release_agent_browser_v2_design_feedback_benchmarks_internal_runs__run_id__agent_participants__participant_id__browser_release_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBrowserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/baskets":{"get":{"tags":["design-feedback-benchmarks"],"summary":"List Baskets","operationId":"list_baskets_v2_design_feedback_benchmarks_baskets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["design-feedback-benchmarks"],"summary":"Create Basket","operationId":"create_basket_v2_design_feedback_benchmarks_baskets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBasketRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/design-feedback-benchmarks/baskets/{basket_id}":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Basket","operationId":"get_basket_v2_design_feedback_benchmarks_baskets__basket_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"basket_id","in":"path","required":true,"schema":{"type":"string","title":"Basket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/baskets/{basket_id}/versions":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Create Basket Version","operationId":"create_basket_version_v2_design_feedback_benchmarks_baskets__basket_id__versions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"basket_id","in":"path","required":true,"schema":{"type":"string","title":"Basket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBasketVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Create Batch","operationId":"create_batch_v2_design_feedback_benchmarks_batches_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["design-feedback-benchmarks"],"summary":"List Batches","operationId":"list_batches_v2_design_feedback_benchmarks_batches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Batch","operationId":"get_batch_v2_design_feedback_benchmarks_batches__batch_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/results":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Batch Results","description":"Computed on request, never cached, so score edits are always in it.","operationId":"batch_results_v2_design_feedback_benchmarks_batches__batch_id__results_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/export":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Export Batch","operationId":"export_batch_v2_design_feedback_benchmarks_batches__batch_id__export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/advance":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Advance Batch","description":"What the viewer calls while it shows a running batch: there is no scheduler.","operationId":"advance_batch_v2_design_feedback_benchmarks_batches__batch_id__advance_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/rescore":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Rescore Batch","description":"Score every finished case again with the v4 ladder; twins and agents do not run again.","operationId":"rescore_batch_v2_design_feedback_benchmarks_batches__batch_id__rescore_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/stop":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Stop Batch","operationId":"stop_batch_v2_design_feedback_benchmarks_batches__batch_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/resume":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Resume Batch","operationId":"resume_batch_v2_design_feedback_benchmarks_batches__batch_id__resume_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/cases":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Add Cases","description":"Grow the batch with more cases from its basket; they run with its own settings.","operationId":"add_cases_v2_design_feedback_benchmarks_batches__batch_id__cases_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCasesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/cases/{case_key}/exclude":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Exclude Case","operationId":"exclude_case_v2_design_feedback_benchmarks_batches__batch_id__cases__case_key__exclude_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"case_key","in":"path","required":true,"schema":{"type":"string","title":"Case Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExcludeCaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/batches/{batch_id}/cases/{case_key}/include":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Include Case","operationId":"include_case_v2_design_feedback_benchmarks_batches__batch_id__cases__case_key__include_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"case_key","in":"path","required":true,"schema":{"type":"string","title":"Case Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/sign-ins":{"get":{"tags":["design-feedback-benchmarks"],"summary":"List Sign Ins","operationId":"list_sign_ins_v2_design_feedback_benchmarks_sign_ins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["design-feedback-benchmarks"],"summary":"Create Sign In","operationId":"create_sign_in_v2_design_feedback_benchmarks_sign_ins_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSignInRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v2/design-feedback-benchmarks/sign-ins/{sign_in_id}":{"get":{"tags":["design-feedback-benchmarks"],"summary":"Get Sign In","operationId":"get_sign_in_v2_design_feedback_benchmarks_sign_ins__sign_in_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["design-feedback-benchmarks"],"summary":"Delete Sign In","operationId":"delete_sign_in_v2_design_feedback_benchmarks_sign_ins__sign_in_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/sign-ins/{sign_in_id}/confirm":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Confirm Sign In","operationId":"confirm_sign_in_v2_design_feedback_benchmarks_sign_ins__sign_in_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/sign-ins/{sign_in_id}/reopen":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Reopen Sign In","operationId":"reopen_sign_in_v2_design_feedback_benchmarks_sign_ins__sign_in_id__reopen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/sign-ins/{sign_in_id}/sign-in":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Sign In Again","operationId":"sign_in_again_v2_design_feedback_benchmarks_sign_ins__sign_in_id__sign_in_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback-benchmarks/sign-ins/{sign_in_id}/verify":{"post":{"tags":["design-feedback-benchmarks"],"summary":"Verify Sign In","operationId":"verify_sign_in_v2_design_feedback_benchmarks_sign_ins__sign_in_id__verify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sign_in_id","in":"path","required":true,"schema":{"type":"string","title":"Sign In Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback/executions/{execution_id}/expert-reviews/{role}":{"put":{"tags":["design-feedback-expert-reviews"],"summary":"Start Expert Review","operationId":"start_expert_review_v2_design_feedback_executions__execution_id__expert_reviews__role__put","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"role","in":"path","required":true,"schema":{"enum":["ux_designer","product_manager"],"type":"string","title":"Role"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartExpertReviewRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Expert Review V2 Design Feedback Executions  Execution Id  Expert Reviews  Role  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback/executions/{execution_id}/expert-reviews":{"get":{"tags":["design-feedback-expert-reviews"],"summary":"Get Expert Reviews","operationId":"get_expert_reviews_v2_design_feedback_executions__execution_id__expert_reviews_get","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Expert Reviews V2 Design Feedback Executions  Execution Id  Expert Reviews Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/design-feedback/executions/{execution_id}/expert-reviews/{role}/evidence/{filename}":{"get":{"tags":["design-feedback-expert-reviews"],"summary":"Get Expert Review Evidence","operationId":"get_expert_review_evidence_v2_design_feedback_executions__execution_id__expert_reviews__role__evidence__filename__get","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"role","in":"path","required":true,"schema":{"enum":["ux_designer","product_manager"],"type":"string","title":"Role"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/ux-designer/callback":{"put":{"tags":["design-feedback-expert-reviews"],"summary":"Finalize Ux Designer Review","operationId":"finalize_ux_designer_review_internal_ux_designer_callback_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpertReviewCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finalize Ux Designer Review Internal Ux Designer Callback Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/product-manager/callback":{"put":{"tags":["design-feedback-expert-reviews"],"summary":"Finalize Product Manager Review","operationId":"finalize_product_manager_review_internal_product_manager_callback_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpertReviewCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finalize Product Manager Review Internal Product Manager Callback Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/share/create":{"post":{"tags":["share"],"summary":"Create Share","description":"Create a share link for a conversation.\n\n- **conversation_id**: The conversation to share\n- **share_type**: 'canvas_only' (default) or 'full_conversation'\n- **expires_in_days**: Days until expiration (null = never expires)\n\nReturns the share token and full URL.","operationId":"create_share_v1_share_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShareRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/share/list/{conversation_id}":{"get":{"tags":["share"],"summary":"List Shares","description":"List all share links for a conversation.\n\n- **conversation_id**: The conversation ID\n- **include_inactive**: Include revoked shares (default: false)\n\nReturns list of shares with access statistics.","operationId":"list_shares_v1_share_list__conversation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/share/{share_token}":{"delete":{"tags":["share"],"summary":"Revoke Share","description":"Revoke (deactivate) a share link.\n\nThe share will no longer be accessible via its public URL.","operationId":"revoke_share_v1_share__share_token__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["share"],"summary":"Update Share","description":"Update share settings.\n\n- **is_active**: Enable/disable the share\n- **expires_in_days**: Update expiration (0 = remove expiration)","operationId":"update_share_v1_share__share_token__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateShareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/share/public/{share_token}":{"get":{"tags":["share"],"summary":"Get Public Share","description":"Get shared content for public viewing.\n\n**No authentication required.**\n\nReturns the shared canvas (and optionally messages) based on the share type.\nReturns 404 if the share is not found, expired, or revoked.","operationId":"get_public_share_v1_share_public__share_token__get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicSharedContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/share/public/{share_token}/files/signed-url":{"get":{"tags":["share"],"summary":"Get Shared File Signed Url","description":"Get a signed URL for a file referenced in a shared canvas.\n\n**No authentication required** — access is validated via the share token.\nOnly allows owner-scoped or board-screenshot paths captured in the share\nsnapshot, plus legacy shared conversation-scoped paths.","operationId":"get_shared_file_signed_url_v1_share_public__share_token__files_signed_url_get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"GCS path of the file","title":"Path"},"description":"GCS path of the file"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/share/public/{share_token}/files/proxy":{"get":{"tags":["share"],"summary":"Proxy Shared File","description":"Return shared file bytes through the API when signed URL generation is not\navailable in the current environment.","operationId":"proxy_shared_file_v1_share_public__share_token__files_proxy_get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"GCS path of the file","title":"Path"},"description":"GCS path of the file"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/presentations":{"post":{"tags":["presentations"],"summary":"Create Presentation","operationId":"create_presentation_v3_presentations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePresentationRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/presentations/{presentation_id}":{"get":{"tags":["presentations"],"summary":"Get Presentation","operationId":"get_presentation_v3_presentations__presentation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"presentation_id","in":"path","required":true,"schema":{"type":"string","title":"Presentation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["presentations"],"summary":"Update Presentation","operationId":"update_presentation_v3_presentations__presentation_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"presentation_id","in":"path","required":true,"schema":{"type":"string","title":"Presentation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePresentationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/presentations/{presentation_id}/share":{"post":{"tags":["presentations"],"summary":"Share Presentation","operationId":"share_presentation_v3_presentations__presentation_id__share_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"presentation_id","in":"path","required":true,"schema":{"type":"string","title":"Presentation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharePresentationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/presentations/{presentation_id}/export":{"post":{"tags":["presentations"],"summary":"Export Presentation","operationId":"export_presentation_v3_presentations__presentation_id__export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"presentation_id","in":"path","required":true,"schema":{"type":"string","title":"Presentation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportPresentationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/signed-url":{"get":{"tags":["files"],"summary":"Get Signed Url","description":"Get a signed URL for downloading a file from GCS.\n\nArgs:\n    path: GCS path (e.g., \"conversations/user_id/conv_id/msg_id/file.docx\")\n\nReturns:\n    {\n        \"signed_url\": \"https://storage.googleapis.com/...\",\n        \"expires_in\": 3600\n    }","operationId":"get_signed_url_v1_files_signed_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"GCS path of the file","title":"Path"},"description":"GCS path of the file"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/proxy":{"get":{"tags":["files"],"summary":"Proxy File","description":"Return file bytes through the API for clients that cannot use GCS signed URLs.\nThis keeps the same ownership checks as signed-url while avoiding local IAM\nsignBlob requirements.","operationId":"proxy_file_v1_files_proxy_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"GCS path of the file","title":"Path"},"description":"GCS path of the file"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users":{"get":{"tags":["admin"],"summary":"List Users","description":"List all users from user_registery table","operationId":"list_users_v1_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/src__api__admin_api__UserResponse"},"type":"array","title":"Response List Users V1 Admin Users Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/organizations":{"get":{"tags":["admin"],"summary":"List Organizations","description":"List all organizations","operationId":"list_organizations_v1_admin_organizations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OrganizationResponse"},"type":"array","title":"Response List Organizations V1 Admin Organizations Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin"],"summary":"Create Organization","description":"Create a new organization","operationId":"create_organization_v1_admin_organizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/organizations/{organization_id}/access":{"patch":{"tags":["admin"],"summary":"Set Organization Access","description":"Give an organization the full Evidenso experience.\n\nAlso sets up billing, which a limited organization never had: a trial from\ntoday and its first credits. Waited for (capped), like signup's, so the\nanswer can say how it went and the customer's next page load shows it;\nprovisioning never raises, and if it fails the gate's self-heal retries it\non their first paid request, inside the trial this has just started.","operationId":"set_organization_access_v1_admin_organizations__organization_id__access_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAccessUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/users":{"post":{"tags":["admin"],"summary":"Assign Users To Organization","description":"Assign users to an organization","operationId":"assign_users_to_organization_v1_admin_organizations__organization_id__users_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignUsersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Assign Users To Organization V1 Admin Organizations  Organization Id  Users Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Organization Users","description":"Get all users for an organization","operationId":"get_organization_users_v1_admin_organizations__organization_id__users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUserResponse"},"title":"Response Get Organization Users V1 Admin Organizations  Organization Id  Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/organization":{"get":{"tags":["admin"],"summary":"Get User Organization","description":"Get the organization ID for a specific user","operationId":"get_user_organization_v1_admin_users__user_id__organization_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":"Response Get User Organization V1 Admin Users  User Id  Organization Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/products":{"post":{"tags":["admin"],"summary":"Assign Products To Organization","description":"Assign products to an organization","operationId":"assign_products_to_organization_v1_admin_organizations__organization_id__products_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignProductsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Assign Products To Organization V1 Admin Organizations  Organization Id  Products Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Organization Products","description":"Get all products for an organization","operationId":"get_organization_products_v1_admin_organizations__organization_id__products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationProductResponse"},"title":"Response Get Organization Products V1 Admin Organizations  Organization Id  Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/products/{product_id}/organizations":{"put":{"tags":["admin"],"summary":"Replace Product Organizations","description":"Replace all organization assignments for a product","operationId":"replace_product_organizations_v1_admin_products__product_id__organizations_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceProductOrganizationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Replace Product Organizations V1 Admin Products  Product Id  Organizations Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Product Organizations","description":"Get all organizations that a product is assigned to","operationId":"get_product_organizations_v1_admin_products__product_id__organizations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response Get Product Organizations V1 Admin Products  Product Id  Organizations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/societies":{"get":{"tags":["admin"],"summary":"List Societies","description":"List all societies with org assignments, persona/gold counts, and BQ counts.","operationId":"list_societies_v1_admin_societies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/organizations/{organization_id}/societies":{"post":{"tags":["admin"],"summary":"Assign Societies To Organization","description":"Assign societies (digital twins) to an organization","operationId":"assign_societies_to_organization_v1_admin_organizations__organization_id__societies_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSocietiesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Assign Societies To Organization V1 Admin Organizations  Organization Id  Societies Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Organization Societies","description":"Get all societies for an organization","operationId":"get_organization_societies_v1_admin_organizations__organization_id__societies_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationSocietyResponse"},"title":"Response Get Organization Societies V1 Admin Organizations  Organization Id  Societies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/societies/{society_id}/display":{"patch":{"tags":["admin"],"summary":"Update Society Display","description":"Update display_name and display_market for a society.","operationId":"update_society_display_v1_admin_societies__society_id__display_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSocietyDisplayRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Update Society Display V1 Admin Societies  Society Id  Display Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/societies/{society_id}/organizations":{"put":{"tags":["admin"],"summary":"Replace Society Organizations","description":"Replace all organization assignments for a society","operationId":"replace_society_organizations_v1_admin_societies__society_id__organizations_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceSocietyOrganizationsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Replace Society Organizations V1 Admin Societies  Society Id  Organizations Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Society Organizations","description":"Get all organizations that a society is assigned to.\n\n`society_id:path` accepts the slash in slug-style ids like\n'fintech/wealth_managers'. Sibling PATCH/PUT/DELETE routes already\nuse `:path`; this GET was the last one missed.","operationId":"get_society_organizations_v1_admin_societies__society_id__organizations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response Get Society Organizations V1 Admin Societies  Society Id  Organizations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/societies/{society_id}":{"delete":{"tags":["admin"],"summary":"Delete Society","description":"Delete all data for a society, after verifying it is not assigned to any\norganization.  Delegates the actual deletion to digital-twin-api.\n\nParameters\n----------\nsociety_id : canonical \"market/name\" identifier (society_key)","operationId":"delete_society_v1_admin_societies__society_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/invites":{"post":{"tags":["admin"],"summary":"Staff Create Organization Invite","description":"Invite a teammate into any organization, as Evidenso staff.","operationId":"staff_create_organization_invite_v1_admin_organizations__organization_id__invites_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffCreateInviteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Staff Get Organization Invites","description":"Live pending invites for any organization.","operationId":"staff_get_organization_invites_v1_admin_organizations__organization_id__invites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/invites/{invite_id}":{"delete":{"tags":["admin"],"summary":"Staff Delete Organization Invite","description":"Revoke a pending invite in any organization.","operationId":"staff_delete_organization_invite_v1_admin_organizations__organization_id__invites__invite_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/members/{user_id}":{"delete":{"tags":["admin"],"summary":"Staff Remove Organization Member","description":"Remove a member from any organization.\n\nNo self-removal guard, unlike org_api: staff are not members of the org\nthey are acting on, so the case can't arise. The last-admin guard still\napplies — staff must not be able to strand a customer with no admin.","operationId":"staff_remove_organization_member_v1_admin_organizations__organization_id__members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/members/{user_id}/role":{"put":{"tags":["admin"],"summary":"Staff Set Organization Member Role","description":"Promote or demote a member of any organization.","operationId":"staff_set_organization_member_role_v1_admin_organizations__organization_id__members__user_id__role_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMemberRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization_id}/billing":{"get":{"tags":["admin"],"summary":"Staff Get Organization Billing","description":"Billing state for any organization: the read-only twin of\nGET /v1/billing/status, for the staff Team view.\n\nSame response model on purpose, for the same reason the invite/member\nroutes above reuse org_api's — one React component renders both surfaces,\nso a shape divergence would only ever show up in the UI.\n\n`can_manage` is hardcoded False, and that is the whole security posture of\nthis route. Staff are not org admins of the organization they are looking\nat, and \"Manage billing\" opens a Stripe portal session against THAT\norganization's customer. The UI already refuses to render the button in\nstaff mode; this is the second lock, on the side a browser cannot reach.\nNote also what is NOT returned: get_organization_billing hands back\nstripe_customer_id, stripe_subscription_id and billing_livemode, and the\nresponse model drops all three. Staff need to answer \"why is this customer\nblocked\", not to hold their Stripe identifiers.\n\nWhich is exactly why the CREDIT fields are returned. Omitting them left\nsupport looking at a customer whose every run is being refused and reading\n\"Everything is up to date\" — the one question this route exists to answer,\nunanswerable from its own response. Resolved the same way\nGET /v1/billing/status resolves them, through visible_credit_balance and\ncredits_are_blocked, so staff see the customer's verdict rather than a\nsecond opinion computed from a raw column.\n\nto_thread for the same reason as the routes above: get_organization_billing\nis blocking psycopg, and this process serves SSE streams.","operationId":"staff_get_organization_billing_v1_admin_organizations__organization_id__billing_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/members":{"get":{"tags":["org"],"summary":"Get Members","description":"List the caller's organization members. Any org member may call this.","operationId":"get_members_v1_org_members_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgMembersResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/org/invites":{"get":{"tags":["org"],"summary":"Get Pending Invites","description":"List pending invites for the caller's organization. Org-admin only.","operationId":"get_pending_invites_v1_org_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["org"],"summary":"Create Invite","description":"Invite a new teammate to the caller's organization. Org-admin only.","operationId":"create_invite_v1_org_invites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/org/invites/{invite_id}":{"delete":{"tags":["org"],"summary":"Delete Invite","description":"Revoke a pending invite. Org-admin only.","operationId":"delete_invite_v1_org_invites__invite_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/invites/lookup":{"post":{"tags":["org"],"summary":"Lookup Invite","description":"What the signup page may show someone holding an invite token.\n\nTHE ONLY UNAUTHENTICATED ROUTE IN THIS MODULE, and deliberately so: its\nwhole purpose is to serve a person who does not have an account yet. The\ntoken is the authorization, exactly as it is for `accept_invite` below —\n`secrets.token_urlsafe(32)`, stored only as a SHA-256, and delivered to\none address.\n\nPOST, not GET, for a read. The token would otherwise ride in a query\nstring and land in this service's own access log (`\"GET /v1/org/... 200\"`\nis logged for every request), which writes live invite tokens to disk.\n`accept_invite` takes its token in a body for the same reason, so the two\ninvite routes at least agree on where a token belongs.\n\n410 for BOTH a missing invite and a used, revoked or superseded one, with\na message that does not say which — the same anti-enumeration posture as\naccept_invite, and the reason this cannot 404. Expiry gets its own\nmessage because it is the one case the holder can act on, and it tells\nthem nothing they did not already know.\n\nDeliberately silent about whether the invited address has an account. The\npage offers both tabs and does not need to know; answering would let\nanyone holding a token probe registration state for that address.","operationId":"lookup_invite_v1_org_invites_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLookupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/invites/accept":{"post":{"tags":["org"],"summary":"Accept Invite","description":"Redeem an invite token, joining the caller to the inviting organization.\n\nAny authenticated user may call this — the token itself is the\nauthorization. Error messages are deliberately identical for\nunknown/invalid/mismatched tokens so the response never reveals whether\na token exists.","operationId":"accept_invite_v1_org_invites_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/org/full-access-request":{"post":{"tags":["org"],"summary":"Request Full Access","description":"Ask for the full Evidenso experience for the caller's organization.\n\nAny member may ask, and asking again changes nothing: see\norg_access.request_full_access. Answers the organization's access either\nway, so the button can show what is true now.","operationId":"request_full_access_v1_org_full_access_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAccessResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/org/members/{user_id}":{"delete":{"tags":["org"],"summary":"Remove Member","description":"Remove a member from the caller's organization. Org-admin only.","operationId":"remove_member_v1_org_members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/status":{"get":{"tags":["billing"],"summary":"Get Billing Status","description":"The caller's org billing state — what T5's banner renders.","operationId":"get_billing_status_v1_billing_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/portal-session":{"post":{"tags":["billing"],"summary":"Create Portal Session","description":"Open the Stripe Billing Portal for the caller's organization.\n\nOrg-admin only, via org_api's require_org_admin — billing is an admin\nsurface, and there must be exactly one definition of \"org admin.\"\n\nEvery lookup below is keyed on `admin[\"organization_id\"]`, never on the\ncaller's uid. The user-keyed billing query is `WHERE ou.user_id = %s\nLIMIT 1` with no ORDER BY, so for a user with two membership rows it can\nreturn a different org than the one require_org_admin authorised — which\nwould mean provisioning one org and opening the portal on another org's\nStripe customer.","operationId":"create_portal_session_v1_billing_portal_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalSessionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/topup-session":{"post":{"tags":["billing"],"summary":"Create Topup Session","description":"Open Stripe Checkout to buy a one-off bundle of credits. Admin-only.\n\nSame shape as create_portal_session above, and for the same reasons:\norg-admin via org_api's require_org_admin (billing is an admin surface,\nwith one definition of \"org admin\"), and every lookup keyed on\n`admin[\"organization_id\"]` rather than the caller's uid — the user-keyed\nbilling query answers \"this user's first organization\", so for a user with\ntwo membership rows it would sell credits into the wrong org's balance.\n\nTHREE refusals, and the third is a product rule rather than a technical\none:\n\n  * EXEMPT -> 409. An exempt organization is outside credits entirely; it\n    has no balance to top up, and `grant` would refuse the money on\n    arrival anyway.\n  * NOT CONFIGURED -> 503. No secret key, or no STRIPE_TOPUP_PRICE_ID:\n    this environment cannot sell credits, which is a deployment fact and\n    not the customer's fault.\n  * BLOCKED -> 409. A lapsed organization cannot buy credits. Credits\n    never substitute for a subscription, so an admin whose access the gate\n    is refusing would be paying real money for credits they cannot spend.\n    Taking that payment is worse than refusing it: they must fix the\n    subscription first, which \"Manage billing\" (unblocked, deliberately)\n    is right there to do. This is a settled decision, not a convenience\n    check.","operationId":"create_topup_session_v1_billing_topup_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupSessionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/resubscribe-session":{"post":{"tags":["billing"],"summary":"Create Resubscribe Session","description":"Open Stripe Checkout to start a NEW subscription for an org whose\ncurrent one is dead. Admin-only, same dependency as the routes above.\n\nThe self-serve half of what /reprovision does for support. Stripe cannot\nrevive a `canceled` subscription; the only way back is a new one, and\nStripe's own guidance is to collect payment details and create it — which\nis Checkout. See stripe_client.create_resubscribe_session for why Checkout\nrather than a server-side create (SCA), and why there is no trial.\n\nThe access guard is the top-up's INVERTED. Top-up refuses a blocked org;\nthis route refuses everything EXCEPT a dead one: 409 unless a subscription\nid is stored AND its status is terminal. Both halves, like /reprovision —\n\"resubscribe\" must never mean \"start a second subscription beside a\nworking one\", and an org with no stored id was never provisioned at all\n(Manage billing already handles that). A blocked-but-alive status such as\n`paused` or `past_due` is a payment problem the Portal fixes, not this.\n\nNothing is written here. The subscription is created by Checkout, and the\nwebhook adopts it onto the row when `customer.subscription.created`\nlands — the same path a Portal re-subscribe already takes.","operationId":"create_resubscribe_session_v1_billing_resubscribe_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResubscribeSessionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/reprovision":{"post":{"tags":["billing"],"summary":"Reprovision Subscription","description":"Replace an organization's TERMINAL Stripe subscription. Admin-only.\n\nThis is the production entry point for billing_service's replacement\nbranch, and the ONLY one. That branch exists because a subscription can be\ncancelled in Stripe inside a Postgres transaction that then rolls back\n(org_invite_service's shell release): the restored row points at a\nsubscription Stripe has already killed, the webhook writes `canceled`, and\nthe gate blocks the customer out of their own workspace with no way back —\nnothing else in the system ever replaces a subscription id once written.\n\nWhy a route, and not something the gate does by itself:\n    provisioning cannot tell a stranded cancel from a customer's own\n    Portal cancellation — the row looks identical. Self-healing from\n    `canceled` would therefore answer a deliberate cancellation with a\n    silent fresh trial, which is a product decision, not a bug fix. An\n    explicit call by an org admin cannot be confused with that: somebody\n    asked.\n\nWhy an admin, and not staff: billing is already an org-admin surface\n(require_org_admin, the same dependency portal-session uses), and the\nadmin is the person who can see the org is stuck.\n\n409, never 200, for a healthy subscription — and Stripe is not called at\nall in that case. \"Reprovision\" must never mean \"start a second\nsubscription for an org that already has a working one.\"","operationId":"reprovision_subscription_v1_billing_reprovision_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprovisionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/stripe/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Receive a Stripe webhook. NO auth dependency — the signature is the auth.\n\nTwo try blocks, and the split between them is the whole safety argument:\nthe FIRST covers only parsing of an untrusted payload and answers 4xx; the\nSECOND covers our own I/O (Stripe, Postgres) and answers 5xx. A single\ncombined block was the earlier shape and was wrong — a TypeError raised\nwhile reading Stripe's own re-fetched object (say, another change to where\n`current_period_end` lives) would have been reported as \"bad payload\" and\nthe event dropped for good.","operationId":"stripe_webhook_v1_billing_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/internal/slack/group-chats":{"post":{"tags":["internal-slack"],"summary":"Start Slack Group Chat","operationId":"start_slack_group_chat_v1_internal_slack_group_chats_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackGroupChatStartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackGroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/slack/group-chats/{chat_id}/turn":{"post":{"tags":["internal-slack"],"summary":"Continue Slack Group Chat","operationId":"continue_slack_group_chat_v1_internal_slack_group_chats__chat_id__turn_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackGroupChatContinueRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackGroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/slack/traces/{trace_subject_id}":{"delete":{"tags":["internal-slack"],"summary":"Delete Slack Workspace Traces","operationId":"delete_slack_workspace_traces_v1_internal_slack_traces__trace_subject_id__delete","parameters":[{"name":"trace_subject_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Subject Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTraceDeletionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/sessions":{"post":{"tags":["internal-meetings"],"summary":"Start Meeting Session","description":"Build the selected coverage roster before any meeting trigger can bias it.","operationId":"start_meeting_session_v1_internal_meetings_sessions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/{session_id}/cleanup":{"post":{"tags":["internal-meetings"],"summary":"Cleanup Meeting Session","description":"Remove canonical records when transport setup fails before admission.","operationId":"cleanup_meeting_session_v1_internal_meetings__session_id__cleanup_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSessionCleanupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSessionCleanupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/{session_id}/preference-tests":{"post":{"tags":["internal-meetings"],"summary":"Start Meeting Preference Test","description":"Start the canonical Preference Test workflow for one confirmed pulse.","operationId":"start_meeting_preference_test_v1_internal_meetings__session_id__preference_tests_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPreferenceTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPreferenceTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/{session_id}/preference-tests/{execution_id}":{"get":{"tags":["internal-meetings"],"summary":"Get Meeting Preference Test","description":"Return the compact in-call result for one meeting-owned execution.","operationId":"get_meeting_preference_test_v1_internal_meetings__session_id__preference_tests__execution_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"owner_user_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"title":"Owner User Id"}},{"name":"trace_subject_id","in":"query","required":true,"schema":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"}},{"name":"conversation_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"title":"Conversation Id"}},{"name":"board_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"title":"Board Id"}},{"name":"source_node_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Source Node Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPreferenceTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/panel-turns":{"post":{"tags":["internal-meetings"],"summary":"Run Meeting Panel Turn","description":"Select and run relevant twins without durably storing meeting context.","operationId":"run_meeting_panel_turn_v1_internal_meetings_panel_turns_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPanelTurnRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPanelTurnResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/panel-deliveries":{"post":{"tags":["internal-meetings"],"summary":"Publish Meeting Panel Delivery","description":"Publish only replies that the meeting transport accepted.","operationId":"publish_meeting_panel_delivery_v1_internal_meetings_panel_deliveries_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPanelDeliveryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingPanelDeliveryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/meetings/{session_id}/summary":{"put":{"tags":["internal-meetings"],"summary":"Update Meeting Summary","operationId":"update_meeting_summary_v1_internal_meetings__session_id__summary_put","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}},{"name":"x-evidenso-service-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Evidenso-Service-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSummaryUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSummaryUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/summary":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Summary","operationId":"get_summary_v1_admin_mcp_analytics_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"mcp_client","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Client"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/timeseries":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Timeseries","operationId":"get_timeseries_v1_admin_mcp_analytics_timeseries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"mcp_client","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Client"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"grain","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"day","title":"Grain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/tool-timeseries":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Tool Timeseries","operationId":"get_tool_timeseries_v1_admin_mcp_analytics_tool_timeseries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"grain","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"day","title":"Grain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/failure-timeseries":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Failure Timeseries","operationId":"get_failure_timeseries_v1_admin_mcp_analytics_failure_timeseries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"grain","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"day","title":"Grain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/organization-timeseries":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Organization Timeseries","operationId":"get_organization_timeseries_v1_admin_mcp_analytics_organization_timeseries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"grain","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"day","title":"Grain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/tools":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Tools","operationId":"get_tools_v1_admin_mcp_analytics_tools_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/organizations":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Organizations","operationId":"get_organizations_v1_admin_mcp_analytics_organizations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/users":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Users","operationId":"get_users_v1_admin_mcp_analytics_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/clients":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Clients","operationId":"get_clients_v1_admin_mcp_analytics_clients_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/runs":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Runs","operationId":"get_runs_v1_admin_mcp_analytics_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"mcp_client","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Client"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}},{"name":"tool_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Names"}},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/runs/{run_id}":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Run Detail","operationId":"get_run_detail_v1_admin_mcp_analytics_runs__run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/value":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Value","operationId":"get_value_v1_admin_mcp_analytics_value_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"mcp_client","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Client"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/funnels":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Funnels","operationId":"get_funnels_v1_admin_mcp_analytics_funnels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name"}},{"name":"workflow_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mcp_environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Environment"}},{"name":"mcp_client","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Client"}},{"name":"time_zone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},{"name":"organization_id_exclude","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id Exclude"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/mcp-analytics/health":{"get":{"tags":["admin-mcp-analytics"],"summary":"Get Health","operationId":"get_health_v1_admin_mcp_analytics_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/prototype-prompts/prompts/{step}":{"get":{"tags":["admin-prototype-prompts"],"summary":"Get Prompt","operationId":"get_prompt_v1_admin_prototype_prompts_prompts__step__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"step","in":"path","required":true,"schema":{"type":"string","title":"Step"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Prompt V1 Admin Prototype Prompts Prompts  Step  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/prompts/{step}/drafts":{"post":{"tags":["admin-prototype-prompts"],"summary":"Create Draft","operationId":"create_draft_v1_admin_prototype_prompts_prompts__step__drafts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"step","in":"path","required":true,"schema":{"type":"string","title":"Step"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Draft V1 Admin Prototype Prompts Prompts  Step  Drafts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/drafts/{version_id}/status":{"post":{"tags":["admin-prototype-prompts"],"summary":"Decide Draft","operationId":"decide_draft_v1_admin_prototype_prompts_drafts__version_id__status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Version Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Decide Draft V1 Admin Prototype Prompts Drafts  Version Id  Status Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/versions/{version_id}/file":{"get":{"tags":["admin-prototype-prompts"],"summary":"Draft File","operationId":"draft_file_v1_admin_prototype_prompts_versions__version_id__file_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Draft File V1 Admin Prototype Prompts Versions  Version Id  File Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/reports":{"get":{"tags":["admin-prototype-prompts"],"summary":"List Reports","operationId":"list_reports_v1_admin_prototype_prompts_reports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Reports V1 Admin Prototype Prompts Reports Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/prototype-prompts/reports/{board_id}/{section_id}":{"get":{"tags":["admin-prototype-prompts"],"summary":"Get Report","description":"What the findings picker shows for one report.","operationId":"get_report_v1_admin_prototype_prompts_reports__board_id___section_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Board Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Report V1 Admin Prototype Prompts Reports  Board Id   Section Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/runs":{"post":{"tags":["admin-prototype-prompts"],"summary":"Start Run","operationId":"start_run_v1_admin_prototype_prompts_runs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Run V1 Admin Prototype Prompts Runs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin-prototype-prompts"],"summary":"List Runs","operationId":"list_runs_v1_admin_prototype_prompts_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs V1 Admin Prototype Prompts Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/prototype-prompts/runs/{run_id}":{"get":{"tags":["admin-prototype-prompts"],"summary":"Get Run","operationId":"get_run_v1_admin_prototype_prompts_runs__run_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Run V1 Admin Prototype Prompts Runs  Run Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/prototype-prompts/live":{"post":{"tags":["prototype-prompts-internal"],"summary":"Publish Live","description":"A runner deploy says which prompts it put live in this backend's environment.","operationId":"publish_live_internal_prototype_prompts_live_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/stream":{"post":{"tags":["discovery"],"summary":"Discovery Stream","description":"Start a new discovery session. Returns SSE stream.","operationId":"discovery_stream_v3_discovery_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/resume":{"post":{"tags":["discovery"],"summary":"Discovery Resume","description":"Resume a discovery session after an interrupt (clarification or plan review).","operationId":"discovery_resume_v3_discovery_resume_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/cancel":{"post":{"tags":["discovery"],"summary":"Discovery Cancel","description":"Cancel a paused execution: null pending_action, mark cancelled.\n\nUsed by the UI when the user deletes the source node, closes the tool\nsetup modal, or the board hydrates with an orphaned execution (source\nnode missing from the graph). No-op on non-paused rows — cancelling a\nlive graph.astream(...) is out of scope for this endpoint.","operationId":"discovery_cancel_v3_discovery_cancel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/templates":{"get":{"tags":["discovery"],"summary":"List Templates","description":"Return available research templates grouped by category.","operationId":"list_templates_v3_discovery_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/surface":{"get":{"tags":["discovery"],"summary":"Get Discovery Surface","description":"Which discovery capabilities are exposed in this environment.\n\nLets the board's palette/entry curation mirror the MCP surface gated by\nEVIDENSO_DISCOVERY_ALLOWLIST. Visibility only (Phase 2) — the run path is\nintentionally not gated here; the MCP surface is the hard gate.","operationId":"get_discovery_surface_v3_discovery_surface_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/boards":{"post":{"tags":["boards"],"summary":"Create Board","operationId":"create_board_v3_boards_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBoardRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["boards"],"summary":"List Boards","operationId":"list_boards_v3_boards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"active","title":"Status"}},{"name":"include_preview","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Preview"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}":{"get":{"tags":["boards"],"summary":"Get Board","description":"Full board state: graph + all executions with sections.\n\nAdmins can view any board read-only (write endpoints still enforce\nverify_access, so an uninvited admin can look but not edit). get_board_full\nraises 404 on a missing board, so the existence check is preserved.","operationId":"get_board_v3_boards__board_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["boards"],"summary":"Update Board","operationId":"update_board_v3_boards__board_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBoardRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["boards"],"summary":"Delete Board","operationId":"delete_board_v3_boards__board_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/context-preview":{"post":{"tags":["boards"],"summary":"Preview Board Context","operationId":"preview_board_context_v3_boards__board_id__context_preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/context-images":{"post":{"tags":["boards"],"summary":"Upload Context Image","operationId":"upload_context_image_v3_boards__board_id__context_images_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextImageUploadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions":{"post":{"tags":["boards"],"summary":"Create Execution","description":"Create a board execution (general-purpose container for sections).\n\nUNMETERED, and `CreditSku.NONE` is typed out rather than defaulted so\nthat stays a decision. This is the twin-chat node persisting a chat that\nhas ALREADY finished — the client posts `status: \"completed\"` — so every\nmodel call it could pay for was made and paid for somewhere else. The\nledger still writes the delta=0 row: that is the execution's idempotency\nrecord, and it is what makes a later refund a well-defined zero movement\ninstead of an unexplained 'no_deduct'.","operationId":"create_execution_v3_boards__board_id__executions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExecutionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions/{execution_id}":{"delete":{"tags":["boards"],"summary":"Delete Execution","description":"Durably discard an execution and hide its sections from the board.","operationId":"delete_execution_v3_boards__board_id__executions__execution_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions/{execution_id}/sections":{"post":{"tags":["boards"],"summary":"Create Section","description":"Upsert a canvas section (create or replace by step_id).","operationId":"create_section_v3_boards__board_id__executions__execution_id__sections_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions/{execution_id}/sections/{step_id}":{"put":{"tags":["boards"],"summary":"Update Section","description":"Save user edits to a single canvas section.","operationId":"update_section_v3_boards__board_id__executions__execution_id__sections__step_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions/{execution_id}/sections/{step_id}/prototype-screenshot":{"post":{"tags":["boards"],"summary":"Save Prototype Screenshot","description":"Persist a rendered prototype screenshot and attach it to the prototype section.","operationId":"save_prototype_screenshot_v3_boards__board_id__executions__execution_id__sections__step_id__prototype_screenshot_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrototypeScreenshotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/collaborators":{"get":{"tags":["boards"],"summary":"List Board Collaborators","description":"List collaborators with editor access on this board. Owner-only.","operationId":"list_board_collaborators_v3_boards__board_id__collaborators_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["boards"],"summary":"Add Board Collaborator","description":"Grant editor access to `user_email`. Owner-only.","operationId":"add_board_collaborator_v3_boards__board_id__collaborators_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCollaboratorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/collaborator-candidates":{"get":{"tags":["boards"],"summary":"List Collaborator Candidates","description":"Org members the owner can invite — drives the invite-modal autocomplete.\nOwner-only; never returns the owner or already-invited members.","operationId":"list_collaborator_candidates_v3_boards__board_id__collaborator_candidates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/collaborators/batch":{"post":{"tags":["boards"],"summary":"Batch Add Board Collaborators","description":"Best-effort batch invite. Owner-only. Returns per-email results so\nthe frontend can show partial-success state and keep failed picks\nstaged for retry.","operationId":"batch_add_board_collaborators_v3_boards__board_id__collaborators_batch_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAddCollaboratorsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/collaborators/{user_email}":{"delete":{"tags":["boards"],"summary":"Remove Board Collaborator","description":"Revoke `user_email`'s editor access. Owner-only.","operationId":"remove_board_collaborator_v3_boards__board_id__collaborators__user_email__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"user_email","in":"path","required":true,"schema":{"type":"string","title":"User Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/workflow-runs":{"get":{"tags":["workflow-runs"],"summary":"List Workflow Runs","operationId":"list_workflow_runs_v3_workflow_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":48,"minimum":1,"default":12,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/workflow-runs/{execution_id}":{"get":{"tags":["workflow-runs"],"summary":"Get Workflow Run","operationId":"get_workflow_run_v3_workflow_runs__execution_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Execution Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/models/registry":{"get":{"tags":["models"],"summary":"Get Model Registry","description":"Every registered chat model, plus the purposes a board may repoint.\n\nAdmin-only: this is the experiment surface, and a wrong choice here changes\nwhat every run on the board costs and says.","operationId":"get_model_registry_v3_models_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Model Registry V3 Models Registry Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/twin-chat/stream":{"post":{"tags":["twin-chat"],"summary":"Twin Chat Stream","operationId":"twin_chat_stream_v3_discovery_twin_chat_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwinChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/twin-chat/{conversation_id}/evidence":{"get":{"tags":["twin-chat"],"summary":"Get Twin Chat Evidence","description":"Get the conversation-scoped Evidence Trail v2 for a Chat with\nCustomers conversation.\n\nReturns the cached trail when present, otherwise lazy-builds it\nusing the persona on the conversation document. Lazy-build does\nNOT have access to the original upstream context / mentioned\nproducts — those are only available on the chat-stream call path.\nLazy-built trails surface only the persona's Gold-grounded market\nintelligence; connected_nodes and product_context stay empty until\nthe chat stream rebuilds the trail on a subsequent message.","operationId":"get_twin_chat_evidence_v3_discovery_twin_chat__conversation_id__evidence_get","security":[{"HTTPBearer":[]}],"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"}}}}}}},"/v3/discovery/tiebreaks":{"post":{"tags":["tiebreaker"],"summary":"Create Tiebreak","operationId":"create_tiebreak_v3_discovery_tiebreaks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTiebreakRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v3/discovery/tiebreaks/board/{board_id}/participants":{"get":{"tags":["tiebreaker"],"summary":"List Participants","description":"Owner + collaborator emails for the partner picker. Exists because\n``GET /v3/boards/{id}/collaborators`` is owner-only and the initiator may\nthemselves be a collaborator.","operationId":"list_participants_v3_discovery_tiebreaks_board__board_id__participants_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/by-node/{board_id}/{node_id}":{"get":{"tags":["tiebreaker"],"summary":"Get Tiebreak By Node","operationId":"get_tiebreak_by_node_v3_discovery_tiebreaks_by_node__board_id___node_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}/remind":{"post":{"tags":["tiebreaker"],"summary":"Remind Partner","description":"Re-send the \"state your side\" invite while the ballot is still open.\n\nInitiator-only: the partner reminding themselves makes no sense, and an\nobserver nudging on someone else's behalf is not their call. No server\nthrottle for now; the UI disables the button after one send per session.","operationId":"remind_partner_v3_discovery_tiebreaks__tiebreak_id__remind_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}":{"get":{"tags":["tiebreaker"],"summary":"Get Tiebreak","description":"The 2s polling endpoint.","operationId":"get_tiebreak_v3_discovery_tiebreaks__tiebreak_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}/evidence":{"get":{"tags":["tiebreaker"],"summary":"Get Tiebreak Evidence","description":"The evidence trail behind a resolved tiebreak.\n\nPure cache read — the trail is assembled once in ``_run_study`` where\nevery input is in scope, so there is no rebuild branch (unlike\ntwin_chat's lazy path). Board-level access only, not participant:\nthe result is shared and observers can already read it via GET /{id}.\nServed separately from the projection because that endpoint is polled\nand the trail can be tens of KB.","operationId":"get_tiebreak_evidence_v3_discovery_tiebreaks__tiebreak_id__evidence_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}/position":{"post":{"tags":["tiebreaker"],"summary":"Submit Position","description":"The partner states their side. Partner-only — the initiator's position\nwas fixed at create, so nobody ever authors the opposing case.","operationId":"submit_position_v3_discovery_tiebreaks__tiebreak_id__position_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitPositionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}/run":{"post":{"tags":["tiebreaker"],"summary":"Run Tiebreak","description":"Explicit run from READY (or retry from RUN_FAILED). The CAS transition\nis the concurrency guard — a second click 409s harmlessly.","operationId":"run_tiebreak_v3_discovery_tiebreaks__tiebreak_id__run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/discovery/tiebreaks/{tiebreak_id}/abort":{"post":{"tags":["tiebreaker"],"summary":"Abort Tiebreak","operationId":"abort_tiebreak_v3_discovery_tiebreaks__tiebreak_id__abort_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tiebreak_id","in":"path","required":true,"schema":{"type":"string","title":"Tiebreak Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/design-auth-sessions":{"post":{"tags":["design-auth-sessions"],"summary":"Create Design Auth Session","operationId":"create_design_auth_session_v1_design_auth_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDesignAuthSessionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignAuthSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/design-auth-sessions/{session_id}/confirm":{"post":{"tags":["design-auth-sessions"],"summary":"Confirm Design Auth Session","operationId":"confirm_design_auth_session_v1_design_auth_sessions__session_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignAuthSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/design-auth-sessions/{session_id}/reopen":{"post":{"tags":["design-auth-sessions"],"summary":"Reopen Design Auth Session","operationId":"reopen_design_auth_session_v1_design_auth_sessions__session_id__reopen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignAuthSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/design-auth-sessions/{session_id}":{"get":{"tags":["design-auth-sessions"],"summary":"Get Design Auth Session","operationId":"get_design_auth_session_v1_design_auth_sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignAuthSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["design-auth-sessions"],"summary":"Disconnect Design Auth Session","operationId":"disconnect_design_auth_session_v1_design_auth_sessions__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignAuthSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/boards/{board_id}/executions/{execution_id}/sections/{step_id}/iterate":{"post":{"tags":["section-iteration"],"summary":"Iterate Section Endpoint","description":"Stream an iteration over a single canvas section.\n\nReturns SSE with: ``iteration_started``, ``step_thought`` (router decision),\none of ``canvas_section`` (rewrite success) or ``error`` (regenerate stub or\nfailure), and a final ``iteration_complete`` on the happy path.","operationId":"iterate_section_endpoint_v3_boards__board_id__executions__execution_id__sections__step_id__iterate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"string","title":"Execution Id"}},{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IterateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/connections":{"get":{"tags":["knowledge-graph"],"summary":"Get Connections","operationId":"get_connections_knowledge_graph_connections_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/supported-sources":{"get":{"tags":["knowledge-graph"],"summary":"Get Supported Sources","operationId":"get_supported_sources_knowledge_graph_supported_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/knowledge-graph/connections/{source_slug}":{"delete":{"tags":["knowledge-graph"],"summary":"Disconnect Source","description":"Hard-reset disconnect for a single integration.\n\nBehavior:\n  1. Delete every Composio `connected_account` for this\n     (user_id, toolkit_slug). Source of truth for connection state\n     lives in Composio (see `GET /connections`); once removed, the\n     next /connections poll returns no row for this slug, so the UI\n     badge naturally flips to \"Not connected\".\n  2. Best-effort: clear the access-policy grants so a future\n     re-connect starts at access_mode='none' (Settings UX) rather\n     than carrying a stale \"selected\" set the user can't see.\n\nAlready-ingested Bronze data and existing societies are untouched —\nthey live in BigQuery / `bronze_doc_entity_links`. Only **future**\nfetches break until the user reconnects.\n\nDeliberate scope:\n  We do NOT update `society_source_connections.status` for past\n  societies that used this connection. That table is keyed by\n  society_id, and mapping a Composio user back to \"all societies\n  this user owns\" requires a join through organization_users +\n  organization_societies that's bigger than this endpoint. The\n  pipeline's refresh path re-resolves the live Composio account by\n  `make_composio_user_id(uid, product_name)` rather than reading\n  `composio_connection_id` from the row (the column is declared in\n  the migration but currently never written — see\n  `digital-twin-api/migrations/2026_05_society_source_connections.sql:23`),\n  so a stale `status='connected'` on past rows is a UI hint that\n  goes stale, not a correctness break. Refresh-on-disconnect for\n  historical rows is a follow-up.\n\nReturns the deleted account id list so the UI can log/toast the\noutcome (`{\"deleted\": N, \"deleted_ids\": [...], \"status\": \"disconnected\"}`).","operationId":"disconnect_source_knowledge_graph_connections__source_slug__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_slug","in":"path","required":true,"schema":{"type":"string","title":"Source Slug"}},{"name":"product_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/connect":{"post":{"tags":["knowledge-graph"],"summary":"Connect Source","operationId":"connect_source_knowledge_graph_connect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/knowledge-graph/slack/connect":{"post":{"tags":["knowledge-graph"],"summary":"Slack Connect","description":"Begin a direct Slack install. Returns `{authUrl}` for the client to open.\n\nMirrors the Granola connect surface so the frontend's existing popup flow works\nunchanged — the only difference is that Slack's client is static config rather\nthan DCR-negotiated, so there is no registration step to run first.","operationId":"slack_connect_knowledge_graph_slack_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/knowledge-graph/slack/callback":{"get":{"tags":["knowledge-graph"],"summary":"Slack Oauth Callback","description":"OAuth redirect target for the Slack install flow.\n\nPublic by necessity — Slack sends the user's browser here with no auth headers.\nCSRF protection is the unguessable `state`, which we paired with the initiating\nuser_id; an unknown or expired state is treated exactly like a forged one.\n\nReuses `_granola_callback_redirect` because the contract it implements is about\nthe BROWSER round-trip (callbackUrl + ?status), not about Granola.","operationId":"slack_oauth_callback_knowledge_graph_slack_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/granola/callback":{"get":{"tags":["knowledge-graph"],"summary":"Granola Oauth Callback","description":"OAuth 2.1 redirect target for Granola's authorize flow.\n\nPublic (no Firebase auth) — Granola redirects the user's browser\nhere with no auth headers. CSRF protection comes from the\nunguessable `state` token, which we paired with the original\nuser_id when we kicked off the flow.","operationId":"granola_oauth_callback_knowledge_graph_granola_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/git/{provider}/callback":{"get":{"tags":["knowledge-graph"],"summary":"Git Oauth Callback","description":"OAuth redirect target for GitHub/GitLab (our own OAuth apps). Public — the provider\nredirects the browser here with no auth headers; CSRF is the unguessable `state`.","operationId":"git_oauth_callback_knowledge_graph_git__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/access-policy":{"get":{"tags":["knowledge-graph"],"summary":"Get Access Policy","operationId":"get_access_policy_knowledge_graph_access_policy_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_name","in":"query","required":true,"schema":{"type":"string","title":"Product Name"}},{"name":"source_slug","in":"query","required":true,"schema":{"type":"string","title":"Source Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["knowledge-graph"],"summary":"Save Access Policy","operationId":"save_access_policy_knowledge_graph_access_policy_put","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveAccessPolicyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/sources/{source_slug}/resources":{"get":{"tags":["knowledge-graph"],"summary":"List Source Resources","operationId":"list_source_resources_knowledge_graph_sources__source_slug__resources_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_slug","in":"path","required":true,"schema":{"type":"string","title":"Source Slug"}},{"name":"product_name","in":"query","required":true,"schema":{"type":"string","title":"Product Name"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","default":"","title":"Query"}},{"name":"parent_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Parent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/git/{provider}/repos":{"get":{"tags":["knowledge-graph"],"summary":"List Git Repos","description":"List the connected user's accessible repositories for the Product Context Graph repo picker.\nReturns {repos: [{full_name, clone_url, private, default_branch}], connected, needs_reconnect?}.\n- connected=False when the provider isn't linked (UI shows a Connect prompt).\n- needs_reconnect=True on an auth/permission failure the user fixes by reconnecting (a stale GitLab\n  token without a listing scope, or a revoked token).","operationId":"list_git_repos_knowledge_graph_git__provider__repos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"product_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/inventories":{"get":{"tags":["knowledge-graph"],"summary":"List Source Inventories","operationId":"list_source_inventories_knowledge_graph_inventories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_name","in":"query","required":true,"schema":{"type":"string","title":"Product Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/inventories/refresh":{"post":{"tags":["knowledge-graph"],"summary":"Refresh Source Inventory","operationId":"refresh_source_inventory_knowledge_graph_inventories_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshInventoryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/knowledge-graph/integrations/linear/projects":{"get":{"tags":["knowledge-graph"],"summary":"List Linear Projects","operationId":"list_linear_projects_knowledge_graph_integrations_linear_projects_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/integrations/linear/projects/{project_id}/issues":{"post":{"tags":["knowledge-graph"],"summary":"Create Linear Issues","operationId":"create_linear_issues_knowledge_graph_integrations_linear_projects__project_id__issues_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinearIssueBulkCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/products/{product_id}/build":{"post":{"tags":["knowledge-graph"],"summary":"Build Product Graph","description":"Trigger a Product Context Graph build for a product from its connected git repo.\n\nReuses `build_product_graph_for_user` (the MCP tool's path) so token handling lives in one\nplace. Returns `{job_id}` on success; poll GET /knowledge-graph/products/jobs/{job_id}.","operationId":"build_product_graph_knowledge_graph_products__product_id__build_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductGraphBuildBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/knowledge-graph/products/jobs/{job_id}":{"get":{"tags":["knowledge-graph"],"summary":"Get Product Graph Job","description":"Poll a product-graph build job by proxying dt-api's job store with the service token.","operationId":"get_product_graph_job_knowledge_graph_products_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/societies/create-from-integrations":{"post":{"tags":["societies"],"summary":"Create Society From Integrations","description":"Kick off a society-creation orchestration. The actual ingest +\npipeline run happens asynchronously; the response returns the\nsociety_id immediately so the UI can show in-progress state.\n\nMode 2 prerequisite: every selected integration must already have\nan active OAuth connection for the requesting user (set up through\nSettings → Integrations). The orchestrator surfaces missing\nconnections as `last_error` on the corresponding row in\n`society_source_connections`.","operationId":"create_society_from_integrations_v1_societies_create_from_integrations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocietyCreationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocietyCreationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/societies/pipeline-job":{"get":{"tags":["societies"],"summary":"Get Pipeline Job For Society","description":"Resolve the most recent pipeline job_id for a Mode 2 society.\n\nThe Mode 2 flow goes:\n  1. UI → POST /v1/societies/create-from-integrations\n     → returns society_uuid + society_key synchronously, but the\n     pipeline job_id doesn't exist yet (the orchestrator hasn't\n     called digital-twin-api /pipelines/full yet).\n  2. Orchestrator (background) does Bronze pushes, then triggers\n     /pipelines/full, gets job_id back, stashes it on every\n     `society_source_connections` row for that society.\n  3. UI polls THIS endpoint with (market, name) until job_id\n     appears (could take a few seconds for fast Mode 2 / many\n     minutes for heavy Bronze pushes), then switches to polling\n     `/api/societies/pipelines/jobs/{job_id}` for live progress.\n\nReturns `{job_id: <uuid>}` once stashed, `{job_id: null}` while the\norchestrator is still pre-pipeline. Mode 1 societies have no\n`society_source_connections` row, so this endpoint will keep\nreturning null for them — Mode 1 callers receive job_id directly\nfrom `/api/societies/pipelines/full` and don't need to dereference.","operationId":"get_pipeline_job_for_society_v1_societies_pipeline_job_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"market","in":"query","required":true,"schema":{"type":"string","description":"Slugified market (matches societies.market).","title":"Market"},"description":"Slugified market (matches societies.market)."},{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Slugified name (matches societies.name).","title":"Name"},"description":"Slugified name (matches societies.name)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Pipeline Job For Society V1 Societies Pipeline Job Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/societies/{society_id}":{"delete":{"tags":["societies"],"summary":"Remove Society For User","description":"User-facing society removal from the Digital Twins tab.\n\nBranches on the society's `source_mode`:\n  - Mode 2 (`customer`/`mixed`) societies are fully deleted (personas,\n    Gold, Bronze/Silver, GCS) — same cascade as the admin panel — but\n    ONLY when the society belongs to no organization other than the\n    caller's, so a shared artifact is never destroyed out from under\n    someone else.\n  - Mode 1 (`market`) societies — and any case where the mode is\n    ambiguous or the society is shared — are only *unassigned* from the\n    caller's organization. The artifact is preserved and an admin can\n    re-assign it later to restore access.\n\n`society_id` is the UUID primary key minted by `ensure_society_row` (what\nthe persona-groups gallery renders), not the \"market/name\" key.\n\nRefused for an organization on limited access: it sees its customers (the\nsociety its Compass calls make) read-only.","operationId":"remove_society_for_user_v1_societies__society_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Society For User V1 Societies  Society Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/societies/{society_id}/sources":{"get":{"tags":["societies"],"summary":"Get Society Sources","description":"Add-documents context for an EXISTING Mode 2 society: the build\n`product_name`, which scopes the modal's Composio connection browsing.\n\n`society_id` is the UUID PK (what the persona-groups gallery renders), not\nthe \"market/name\" key. (Historically returned already-ingested resource ids\nfor a grey-out delta; that was retired when add-documents moved to the\nidempotent-dedup model.)","operationId":"get_society_sources_v1_societies__society_id__sources_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocietyAddContextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/societies/{society_id}/add-documents":{"post":{"tags":["societies"],"summary":"Add Documents To Society","description":"Add NEW documents to an EXISTING Mode 2 society, incrementally.\n\nSame integration/scope surface as the create flow (all-access, folders,\nindividual files/meetings/channels) — it's just an incremental re-ingest of\nthe existing society. Gold extraction runs with `clear_existing=False`, so\nexisting personas/companies are reused and enriched, not rebuilt, and the\nrun inherits the society's frozen `societies.llm_stack`.\n\nNo strict server-side delta: the pipeline's Bronze dedup (an idempotent\nMERGE on a deterministic `doc_id`) skips any doc already ingested BEFORE it\nreaches Silver, so a re-picked doc is never re-chunked and only genuinely-new\ndocuments enrich. `society_id` is the UUID PK, matching GET /{id}/sources.","operationId":"add_documents_to_society_v1_societies__society_id__add_documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"society_id","in":"path","required":true,"schema":{"type":"string","title":"Society Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDocumentsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDocumentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/societies/refresh-context":{"post":{"tags":["societies"],"summary":"Society Refresh Context","description":"Service token only (dt-api's scheduled refresh). Runs the SAME guards as\nmanual Add documents for the refresh's pinned owner and returns the complete\nadd-documents pipeline request, so an unattended refresh is exactly that run\non a timer — never a replay of the build payload.\n\nA tenant problem aborts the whole run: the owner left the org (403), the\nsociety is not theirs (404) or is shared with another org (409), the org has\nno active billing (402), or there is no completed build (422). A source the\nowner is not connected to is only left out and reported, so the rest still\nrefresh while the digest asks for a reconnect.","operationId":"society_refresh_context_v1_societies_refresh_context_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshContextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshContextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/fetch-for-bronze":{"post":{"tags":["integrations"],"summary":"Fetch For Bronze","description":"Fetch + shape integration data for a single source. Returns the\npayload dict the corresponding digital-twin-api Bronze adapter's\n`shape_payload()` accepts, plus the adapter slug + doc_type so the\ncaller can route into `run_bronze_ingest_sources()` directly.\n\nA plain `def` endpoint: FastAPI runs it in its threadpool, so the\nsynchronous Composio SDK calls (and HubSpot's bounded parallel reads)\nnever block the event loop.","operationId":"fetch_for_bronze_v1_integrations_fetch_for_bronze_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchForBronzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchForBronzeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/products/{product_id}/refresh-scope":{"get":{"tags":["products"],"summary":"Get Product Refresh Scope","description":"What a scheduled refresh of this product would read. `configured: false` means the\nproduct predates build-input recording and cannot be refreshed until it is rebuilt\nonce — the same condition POST /refresh reports as a 409.","operationId":"get_product_refresh_scope_v1_products__product_id__refresh_scope_get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Product Refresh Scope V1 Products  Product Id  Refresh Scope Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["products"],"summary":"Put Product Refresh Scope","operationId":"put_product_refresh_scope_v1_products__product_id__refresh_scope_put","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductScopeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Product Refresh Scope V1 Products  Product Id  Refresh Scope Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/products/{product_id}/refresh":{"post":{"tags":["products"],"summary":"Refresh Product Graph","description":"Replay this product's build incrementally. Returns `{job_id}` to poll on dt-api.\n\n`clear_existing=False` is not negotiable here: a refresh must never wipe the graph it\nis updating. Extraction is already incremental, so an unchanged product re-extracts\nnothing.","operationId":"refresh_product_graph_v1_products__product_id__refresh_post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRefreshRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Product Graph V1 Products  Product Id  Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/society-progress/{job_id}":{"options":{"tags":["mcp-iframe-polling"],"summary":"Society Progress Preflight","description":"CORS preflight handler. No body, no auth — just headers.","operationId":"society_progress_preflight_v1_mcp_society_progress__job_id__options","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-polling"],"summary":"Society Progress Poll","description":"Return the current society-progress payload for an in-flight job.\n\nCalled by the iframe every ~3 s. The signature is HMAC-SHA256 over\n`job_id` with `MCP_SOCIETY_PROGRESS_SIGNING_SECRET` (or\n`INTERNAL_SERVICE_TOKEN` as the fallback). On signature mismatch we\nreturn 403 — same shape as expired/leaked URLs.\n\nResponse body:\n    {\"society_progress\": {...}}  — matches `_meta.society_progress`\n    from the MCP tool results, so the iframe's\n    `extractSocietyProgress()` works against either source.","operationId":"society_progress_poll_v1_mcp_society_progress__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature from the kickoff URL.","title":"Sig"},"description":"HMAC signature from the kickoff URL."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/society-progress/{job_id}/cancel":{"options":{"tags":["mcp-iframe-polling"],"summary":"Society Progress Cancel Preflight","description":"CORS preflight for the cancel endpoint.","operationId":"society_progress_cancel_preflight_v1_mcp_society_progress__job_id__cancel_options","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-polling"],"summary":"Society Progress Cancel","description":"Cancel an in-flight society creation job from the iframe.\n\nSame auth model as the poll endpoint: HMAC over `job_id` with the\nserver's signing secret. The Cancel button in the rich-UI panel\nPOSTs here; we proxy the call to digital-twin-api's\n`POST /pipelines/jobs/{job_id}/cancel` using the service token, then\nreturn the freshest `society_progress` payload so the iframe re-\nrenders to the cancelled state without waiting for the next poll\ntick.\n\nDT-API's cancel is COOPERATIVE on running jobs (worker sees the\nflag at the next step boundary, unwinds, runs artifact cleanup)\nand a direct status flip on queued jobs. Both paths return JSON\nwith the new status; we don't try to distinguish them here.\n\nIdempotent — cancelling an already-terminal job returns its\ncurrent state.","operationId":"society_progress_cancel_v1_mcp_society_progress__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature from the cancel URL.","title":"Sig"},"description":"HMAC signature from the cancel URL."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/scope-proposal/{proposal_id}":{"options":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Preflight","operationId":"scope_proposal_preflight_v1_mcp_scope_proposal__proposal_id__options","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Get","operationId":"scope_proposal_get_v1_mcp_scope_proposal__proposal_id__get","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/scope-proposal/{proposal_id}/submit":{"options":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Submit Preflight","operationId":"scope_proposal_submit_preflight_v1_mcp_scope_proposal__proposal_id__submit_options","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Submit","description":"Confirm the proposal with the user's final scope_by_integration.\n\nBody shape (JSON in any Content-Type — see below):\n    {\"scope_by_integration\": {<slug>: <ScopeConfig>, ...}}\n\nWe read the raw request body and parse JSON ourselves rather than\nrelying on FastAPI's `Body(...)` because the iframe deliberately\nsends the POST WITHOUT `Content-Type: application/json` to keep it\ninside the CORS \"simple request\" rules. Setting Content-Type to\napplication/json would trigger a browser preflight (OPTIONS), and\nCloudflare quick-tunnel (trycloudflare.com) blocks preflights with\n`Origin: https://*.claudemcpcontent.com` — they get 400\n\"Disallowed CORS origin\". Simple requests skip preflight entirely\nso the POST gets through to our handler, which returns proper\n`Access-Control-Allow-Origin: *` for the response itself.","operationId":"scope_proposal_submit_v1_mcp_scope_proposal__proposal_id__submit_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/scope-proposal/{proposal_id}/cancel":{"options":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Cancel Preflight","operationId":"scope_proposal_cancel_preflight_v1_mcp_scope_proposal__proposal_id__cancel_options","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Cancel","operationId":"scope_proposal_cancel_v1_mcp_scope_proposal__proposal_id__cancel_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/scope-proposal/{proposal_id}/resources":{"options":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Resources Preflight","operationId":"scope_proposal_resources_preflight_v1_mcp_scope_proposal__proposal_id__resources_options","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-scope-proposal"],"summary":"Scope Proposal Resources","description":"On-demand resource listing for tree navigation in the picker.\n\nThe proposal's initial `resource_cache` only holds root-level items\n(the agent doesn't pre-recurse into folders). When the user clicks\ninto a folder in the picker, the iframe calls this endpoint with\nthe parent's `resource_id` and we proxy through to the existing\n`list_source_resources` route handler — the same one the platform's\n`SourceScopePicker.tsx` uses for Drive/Granola navigation.\n\nAuth: HMAC signature on the proposal_id (same scheme as the other\niframe endpoints). The proposal row carries the original user_id\nwe set at creation, which we synthesize into the\n`list_source_resources` call so the Composio/Granola permissions\nmatch the user who owns the proposal.","operationId":"scope_proposal_resources_v1_mcp_scope_proposal__proposal_id__resources_get","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","title":"Proposal Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."},{"name":"source","in":"query","required":true,"schema":{"type":"string","description":"Integration slug (granola_mcp / slack / googledrive / hubspot).","title":"Source"},"description":"Integration slug (granola_mcp / slack / googledrive / hubspot)."},{"name":"parent_id","in":"query","required":false,"schema":{"type":"string","description":"Folder id to list children of; empty for root.","default":"","title":"Parent Id"},"description":"Folder id to list children of; empty for root."},{"name":"query","in":"query","required":false,"schema":{"type":"string","description":"Search query.","default":"","title":"Query"},"description":"Search query."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/workflow-progress/{run_id}":{"options":{"tags":["mcp-iframe-polling"],"summary":"Workflow Progress Preflight","description":"CORS preflight handler. No body, no auth — just headers.","operationId":"workflow_progress_preflight_v1_mcp_workflow_progress__run_id__options","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-polling"],"summary":"Workflow Progress Poll","description":"Return the current live-progress payload for an in-flight workflow run.\n\nCalled by the workflow-result iframe every ~3s. The signature is\nHMAC-SHA256 over `run_id` with `MCP_WORKFLOW_PROGRESS_SIGNING_SECRET`\n(or `INTERNAL_SERVICE_TOKEN` as the fallback). On signature mismatch we\nreturn 403 — same shape as expired/leaked URLs.\n\nResponse body:\n    {\"workflow_progress\": {...}}  — matches `_meta.workflow_progress`\n    from the MCP tool results, so the iframe reads either source the\n    same way. On terminal/paused runs the payload carries just\n    {run_id, board_id, status} so the iframe stops polling.","operationId":"workflow_progress_poll_v1_mcp_workflow_progress__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature from the kickoff URL.","title":"Sig"},"description":"HMAC signature from the kickoff URL."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Upload Preflight","operationId":"design_upload_preflight_v1_mcp_design_upload__session_id__options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-design-upload"],"summary":"Design Upload Get","operationId":"design_upload_get_v1_mcp_design_upload__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}/upload":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Upload Upload Preflight","operationId":"design_upload_upload_preflight_v1_mcp_design_upload__session_id__upload_options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-design-upload"],"summary":"Design Upload Upload","description":"Store one base64 image into the session.\n\nBody is form-encoded (`data=<json>`) to skip the CORS preflight — see the\nmodule docstring and `scope_proposal_api.scope_proposal_submit` for why.","operationId":"design_upload_upload_v1_mcp_design_upload__session_id__upload_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}/auth/connect":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Connect Preflight","operationId":"design_auth_connect_preflight_v1_mcp_design_upload__session_id__auth_connect_options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Connect","operationId":"design_auth_connect_v1_mcp_design_upload__session_id__auth_connect_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}/auth/{auth_session_id}/confirm":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Confirm Preflight","operationId":"design_auth_confirm_preflight_v1_mcp_design_upload__session_id__auth__auth_session_id__confirm_options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Confirm","operationId":"design_auth_confirm_v1_mcp_design_upload__session_id__auth__auth_session_id__confirm_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}/auth/{auth_session_id}/reopen":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Reopen Preflight","operationId":"design_auth_reopen_preflight_v1_mcp_design_upload__session_id__auth__auth_session_id__reopen_options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Reopen","operationId":"design_auth_reopen_v1_mcp_design_upload__session_id__auth__auth_session_id__reopen_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-upload/{session_id}/auth/{auth_session_id}":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Disconnect Preflight","operationId":"design_auth_disconnect_preflight_v1_mcp_design_upload__session_id__auth__auth_session_id__options","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["mcp-iframe-design-upload"],"summary":"Design Auth Disconnect","operationId":"design_auth_disconnect_v1_mcp_design_upload__session_id__auth__auth_session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"auth_session_id","in":"path","required":true,"schema":{"type":"string","title":"Auth Session Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature.","title":"Sig"},"description":"HMAC signature."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/design-image":{"options":{"tags":["mcp-iframe-design-upload"],"summary":"Design Image Preflight","operationId":"design_image_preflight_v1_mcp_design_image_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"get":{"tags":["mcp-iframe-design-upload"],"summary":"Design Image","description":"Stream a GCS image for the design_annotations rich-UI card.\n\nAuth is the HMAC over the exact `path` (minted by `build_image_url` at the\nMCP chokepoint) — the sig only ever covers paths the server itself chose to\nexpose, and can't be forged for other paths. No Firebase token needed, so\nthe sandboxed iframe can load it directly via `<img src>` (img-src CSP\nwhitelists this origin via `_meta.ui.csp.resourceDomains`).","operationId":"design_image_v1_mcp_design_image_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"GCS object path.","title":"Path"},"description":"GCS object path."},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature over the path.","title":"Sig"},"description":"HMAC signature over the path."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/twin-chat/{chat_id}/turn":{"options":{"tags":["mcp-iframe-twin-chat"],"summary":"Twin Chat Turn Preflight","operationId":"twin_chat_turn_preflight_v1_mcp_twin_chat__chat_id__turn_options","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp-iframe-twin-chat"],"summary":"Twin Chat Snapshot","operationId":"twin_chat_snapshot_v1_mcp_twin_chat__chat_id__turn_get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"board_id","in":"query","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"source_node_id","in":"query","required":true,"schema":{"type":"string","title":"Source Node Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","title":"Sig"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mcp-iframe-twin-chat"],"summary":"Twin Chat Turn","operationId":"twin_chat_turn_v1_mcp_twin_chat__chat_id__turn_post","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"board_id","in":"query","required":true,"schema":{"type":"string","title":"Board Id"}},{"name":"source_node_id","in":"query","required":true,"schema":{"type":"string","title":"Source Node Id"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","title":"Sig"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwinChatTurnBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/me":{"get":{"tags":["compass"],"summary":"Get Me","description":"Who is signed in, for the app's menu. Works before the user has an organisation.\n\nCarries the organisation's access (full or limited, and whether full access\nhas been requested) for Settings > Account.","operationId":"get_me_v1_compass_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Me V1 Compass Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/compass/full-access-request":{"post":{"tags":["compass"],"summary":"Request Full Access","description":"Ask for the full Evidenso experience from Compass: the web's request, from Settings > Account.","operationId":"request_full_access_v1_compass_full_access_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Request Full Access V1 Compass Full Access Request Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/compass/calls":{"post":{"tags":["compass"],"summary":"Create Call","description":"Create a call; the same `client_call_id` returns the same call.","operationId":"create_call_v1_compass_calls_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCallRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Call V1 Compass Calls Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["compass"],"summary":"List Calls","operationId":"list_calls_v1_compass_calls_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response List Calls V1 Compass Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}":{"get":{"tags":["compass"],"summary":"Get Call","operationId":"get_call_v1_compass_calls__call_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Call V1 Compass Calls  Call Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["compass"],"summary":"Delete Call","description":"Tombstone first (its own transaction), then remove everything else.","operationId":"delete_call_v1_compass_calls__call_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/boards/{board_id}/call":{"get":{"tags":["compass"],"summary":"Get Board Call","description":"The caller's call whose board this is, as GET /calls/{call_id} has it: the web app opens a call's board on\nthe call's page. 404 for a board that is no call of the caller's (another kind of board, or a teammate's call).\nWith `market` and `product`: where Market Intel and the product context took the call (see _market, _product),\nwhich the page links to.","operationId":"get_board_call_v1_compass_boards__board_id__call_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Board Call V1 Compass Boards  Board Id  Call Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/share":{"post":{"tags":["compass"],"summary":"Share Call","description":"A public link to the call's page: its notes and findings, never the transcript. The call's live link when it\nhas one, else a new one, made as the web app's Share makes it: a snapshot of the call's run on its board.","operationId":"share_call_v1_compass_calls__call_id__share_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Share Call V1 Compass Calls  Call Id  Share Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/note":{"patch":{"tags":["compass"],"summary":"Edit Call Note","description":"The owner's edits to a call's notes; returns the whole record.\n\nThe goal can change once the call is over, the note's lines and the\ninsights' meanings once the note is written (409 before). The board is\nrebuilt when what it shows changed.","operationId":"edit_call_note_v1_compass_calls__call_id__note_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteEditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Edit Call Note V1 Compass Calls  Call Id  Note Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/feedback":{"put":{"tags":["compass"],"summary":"Put Coach Feedback","description":"The owner's thumbs up or down on the coach for this call, with what helped or got in the way.\n\nThe Mac panel asks while the note is written, so any state but deleted\ntakes it. Each PUT replaces the last.","operationId":"put_coach_feedback_v1_compass_calls__call_id__feedback_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachFeedbackRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/grant":{"post":{"tags":["compass"],"summary":"Renew Grant","operationId":"renew_grant_v1_compass_calls__call_id__grant_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Renew Grant V1 Compass Calls  Call Id  Grant Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/meetings":{"put":{"tags":["compass"],"summary":"Save Meetings","description":"Save the app's meeting records, each by its key: a new key is a new record, a known one is rewritten.\n\nThe backend links each to the call coached in it (the caller's call with the same `meeting_key`) and keeps it\nuntil 90 days after the meeting ends, or as long as a call in it is kept; the app never sets either. A meeting\nthat ended more than 90 days ago is not stored, so `saved` can be less than what was sent. The same key twice:\nthe later one is saved. A save keeps what another of the user's Macs saw of the offer (see the repository's\nupsert).","operationId":"save_meetings_v1_compass_meetings_put","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Save Meetings V1 Compass Meetings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["compass"],"summary":"Delete Meetings From Source","description":"Delete the caller's records from one calendar (it was disconnected), except the coached calls': each of\nthose goes with its call.","operationId":"delete_meetings_from_source_v1_compass_meetings_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"query","required":true,"schema":{"enum":["google","mac"],"type":"string","title":"Source"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/meetings/delete":{"post":{"tags":["compass"],"summary":"Delete Meetings","description":"Delete the caller's records with these keys, except those a call was coached in (each goes with its call).\n204 either way, and for keys the caller has no record of: repeating a delete is not an error. A POST with the\nkeys in the body, not a DELETE by path: a key holds a calendar event id, which stays out of URLs and logs.","operationId":"delete_meetings_v1_compass_meetings_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingDeleteRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/compass/calls/{call_id}/state":{"get":{"tags":["compass"],"summary":"Get Call State","operationId":"get_call_state_v1_compass_calls__call_id__state_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Call State V1 Compass Calls  Call Id  State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["compass"],"summary":"Set Call State","operationId":"set_call_state_v1_compass_calls__call_id__state_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveStateRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/batches":{"post":{"tags":["compass"],"summary":"Append Batch","description":"Append turns and events; answers only after the commit.","operationId":"append_batch_v1_compass_calls__call_id__batches_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Append Batch V1 Compass Calls  Call Id  Batches Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/finalise":{"post":{"tags":["compass"],"summary":"Finalise Call","description":"Save the request, mark `finalising`, enqueue the note job once, and return the call's board link (the\nboard exists from now on; the note job fills it).","operationId":"finalise_call_v1_compass_calls__call_id__finalise_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinaliseRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finalise Call V1 Compass Calls  Call Id  Finalise Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/record":{"get":{"tags":["compass"],"summary":"Get Call Record","description":"The whole record with whose call it is (the call's own user and organisation: Market Intel routes by them),\nand the meeting the call was coached in, null when it came from none or the record is gone. Market Intel reads\nthe meeting's title, attendees and whether it was a customer call from here.","operationId":"get_call_record_v1_compass_calls__call_id__record_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Call Record V1 Compass Calls  Call Id  Record Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/internal/sweep":{"post":{"tags":["compass"],"summary":"Sweep Interrupted Calls","description":"Finalise calls left `interrupted` (Cloud Scheduler, every 10 minutes), so each still gets its note and board,\nthen delete meeting records past their retention, and bring Market Intel and the product context the calls they\nstill wait for (src/compass/market_intel.py, src/compass/product_context.py, once the response is sent).","operationId":"sweep_interrupted_calls_v1_compass_internal_sweep_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sweep Interrupted Calls V1 Compass Internal Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/insights":{"put":{"tags":["compass"],"summary":"Put Call Insights","description":"Replace the insights, complete the call, then build its board. Once the response is sent, the call goes where\nits note says (src/compass/routing.py): the organisation's market (src/compass/market_intel.py), its product\ncontext (src/compass/product_context.py), both or neither.","operationId":"put_call_insights_v1_compass_calls__call_id__insights_put","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Call Insights V1 Compass Calls  Call Id  Insights Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compass/calls/{call_id}/note-status":{"post":{"tags":["compass"],"summary":"Post Note Status","operationId":"post_note_status_v1_compass_calls__call_id__note_status_post","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteStatusRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp-auth/status":{"get":{"tags":["mcp-auth"],"summary":"Auth Status","description":"Report whether the current MCP bearer token is usable.\n\nThis endpoint is intentionally reachable without MCP auth so clients can\ndistinguish \"server is reachable\" from \"MCP bearer token is missing/stale\".\nIt never returns token values or Firebase user IDs.","operationId":"auth_status_mcp_auth_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp-auth/session":{"get":{"tags":["mcp-auth"],"summary":"Session Hint","description":"What the app's login page should say about this pending connection.","operationId":"session_hint_mcp_auth_session_get","parameters":[{"name":"session","in":"query","required":true,"schema":{"type":"string","title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp-auth/callback":{"post":{"tags":["mcp-auth"],"summary":"Login Callback","description":"Exchange a Firebase ID token for an OAuth authorization code.\n\nBody: { \"id_token\": \"<firebase-id-token>\", \"session\": \"<session-id>\" }\nReturns: { \"redirect_url\": \"<redirect_uri>?code=<code>&state=<state>\" }","operationId":"login_callback_mcp_auth_callback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"summary":"Rfc8414 Oauth Metadata","operationId":"rfc8414_oauth_metadata__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server/mcp/sse":{"get":{"summary":"Rfc8414 Oauth Metadata","operationId":"rfc8414_oauth_metadata__well_known_oauth_authorization_server_mcp_sse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server/mcp":{"get":{"summary":"Rfc8414 Oauth Metadata","operationId":"rfc8414_oauth_metadata__well_known_oauth_authorization_server_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"summary":"Rfc9728 Protected Resource","operationId":"rfc9728_protected_resource__well_known_oauth_protected_resource_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"summary":"Rfc9728 Protected Resource","operationId":"rfc9728_protected_resource__well_known_oauth_protected_resource_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource/mcp/sse":{"get":{"summary":"Rfc9728 Protected Resource","operationId":"rfc9728_protected_resource__well_known_oauth_protected_resource_mcp_sse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Health check endpoint for Docker and load balancers","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/conversations/{conversation_id}/history":{"get":{"summary":"Get Conversation History","description":"Get conversation history - requires authentication","operationId":"get_conversation_history_conversations__conversation_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signup/complete":{"post":{"summary":"Signup Complete","description":"Complete user signup by verifying the Firebase ID token and storing user data.\n\nThis endpoint:\n1. Verifies the Firebase ID token\n2. Extracts user information (uid, email, provider)\n3. Upserts the user profile in PostgreSQL\n4. Sends the branded verification email once for capable clients","operationId":"signup_complete_v1_signup_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/password-reset":{"post":{"summary":"Request Password Reset","description":"Send the branded password reset email.\n\nUnauthenticated on purpose: the requester has, by definition, lost their\ncredentials. The response never reveals whether the account exists; the\nservice reports unknown accounts (and throttled repeats) as sent. The\nfallback flag tells the web client to use Firebase's built-in reset email\nwhen the branded send is unavailable.","operationId":"request_password_reset_v1_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signup/resend-verification":{"post":{"summary":"Resend Verification Email","description":"Send the branded verification email again, for the \"Check your inbox\"\nscreen. The ID token travels in the body like signup_complete's: the\ncaller is an account every authenticated route refuses until it verifies.\nAn already-verified account gets nothing (both flags false).","operationId":"resend_verification_email_v1_signup_resend_verification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendVerificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users":{"post":{"summary":"Create User","description":"Create a new user","operationId":"create_user_api_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__user__UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/{firebase_uid}":{"get":{"summary":"Get User","description":"Get user by Firebase UID","operationId":"get_user_api_users__firebase_uid__get","parameters":[{"name":"firebase_uid","in":"path","required":true,"schema":{"type":"string","title":"Firebase Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__user__UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/email/{email}":{"get":{"summary":"Get User By Email","description":"Get user by email - requires authentication","operationId":"get_user_by_email_api_users_email__email__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__models__user__UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/persona/preview":{"post":{"summary":"Preview Persona","description":"Preview extracted persona data from LinkedIn URL without creating the twin","operationId":"preview_persona_persona_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewPersonaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewPersonaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/persona":{"post":{"summary":"Create Persona","description":"Create a new persona in a society - requires authentication","operationId":"create_persona_persona_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePersonaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePersonaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/inteligance/ask":{"post":{"summary":"Ask","operationId":"ask_inteligance_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskResp"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AcceptInviteRequest":{"properties":{"token":{"type":"string","title":"Token","description":"Raw invite token from the invite link"}},"type":"object","required":["token"],"title":"AcceptInviteRequest"},"AcceptInviteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"organization_id":{"type":"string","title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"already_member":{"type":"boolean","title":"Already Member"}},"type":"object","required":["success","organization_id","already_member"],"title":"AcceptInviteResponse"},"AddCasesRequest":{"properties":{"basketVersionId":{"type":"string","maxLength":64,"minLength":1,"title":"Basketversionid"},"caseKeys":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Casekeys"},"signIns":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object","maxProperties":20},{"type":"null"}],"title":"Signins"}},"type":"object","required":["basketVersionId","caseKeys"],"title":"AddCasesRequest"},"AddCollaboratorRequest":{"properties":{"userEmail":{"type":"string","maxLength":320,"title":"Useremail"}},"type":"object","required":["userEmail"],"title":"AddCollaboratorRequest"},"AddDocumentsRequest":{"properties":{"scopeByIntegration":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Scopebyintegration","description":"Sources + scope to add, keyed by source slug — the SAME shape the create flow accepts: {'granola_mcp': {'mode': 'all'}} or {'googledrive': {'mode': 'selected', 'file_ids': [...], 'folder_ids': [...]}}. There is no strict delta; the pipeline's Bronze dedup skips anything already ingested before it re-chunks, so only genuinely-new documents enrich the society."}},"type":"object","required":["scopeByIntegration"],"title":"AddDocumentsRequest"},"AddDocumentsResponse":{"properties":{"society_id":{"type":"string","title":"Society Id"},"society_key":{"type":"string","title":"Society Key"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"pipeline_jobs id to poll for progress."},"eta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Eta"}},"type":"object","required":["society_id","society_key"],"title":"AddDocumentsResponse"},"AgentBrowserRequest":{"properties":{"attemptId":{"type":"string","maxLength":36,"minLength":36,"title":"Attemptid"},"workerId":{"type":"string","maxLength":36,"minLength":36,"title":"Workerid"},"attempt":{"type":"integer","maximum":2.0,"minimum":1.0,"title":"Attempt"}},"additionalProperties":false,"type":"object","required":["attemptId","workerId","attempt"],"title":"AgentBrowserRequest"},"AgentClaimRequest":{"properties":{"attemptId":{"type":"string","maxLength":36,"minLength":36,"title":"Attemptid"},"workerId":{"type":"string","maxLength":36,"minLength":36,"title":"Workerid"},"capabilities":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Capabilities"}},"additionalProperties":false,"type":"object","required":["attemptId","workerId"],"title":"AgentClaimRequest"},"AgentFinalizeRequest":{"properties":{"attemptId":{"type":"string","maxLength":36,"minLength":36,"title":"Attemptid"},"workerId":{"type":"string","maxLength":36,"minLength":36,"title":"Workerid"},"runnerError":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Runnererror"},"waitKind":{"anyOf":[{"type":"string","enum":["sign_in","browser_busy"]},{"type":"null"}],"title":"Waitkind"}},"additionalProperties":false,"type":"object","required":["attemptId","workerId"],"title":"AgentFinalizeRequest"},"AgentParticipantCheckpointRequest":{"properties":{"attemptId":{"type":"string","maxLength":36,"minLength":36,"title":"Attemptid"},"workerId":{"type":"string","maxLength":36,"minLength":36,"title":"Workerid"},"attempt":{"type":"integer","maximum":2.0,"minimum":1.0,"title":"Attempt"},"status":{"type":"string","enum":["completed","failed"],"title":"Status"},"rawResponse":{"anyOf":[{"type":"string","maxLength":400000},{"type":"null"}],"title":"Rawresponse"},"error":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Error"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":500,"title":"Actions"},"screenshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Screenshot"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"additionalProperties":false,"type":"object","required":["attemptId","workerId","attempt","status"],"title":"AgentParticipantCheckpointRequest"},"AskReq":{"properties":{"personaId":{"type":"string","title":"Personaid"},"question":{"type":"string","title":"Question"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"topK":{"type":"integer","title":"Topk","default":3},"imageData":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imagedata"},"images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Images"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},"type":"object","required":["personaId","question"],"title":"AskReq"},"AskResp":{"properties":{"answer":{"type":"string","title":"Answer"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"sources":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Sources"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"},"sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sequence"},"confidence_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Confidence Score"},"justification":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Justification"}},"type":"object","required":["answer"],"title":"AskResp"},"AssignProductsRequest":{"properties":{"product_ids":{"items":{"type":"string"},"type":"array","title":"Product Ids","description":"List of product IDs to assign"}},"type":"object","required":["product_ids"],"title":"AssignProductsRequest"},"AssignSocietiesRequest":{"properties":{"society_ids":{"items":{"type":"string"},"type":"array","title":"Society Ids","description":"List of society/digital twin IDs to assign"}},"type":"object","required":["society_ids"],"title":"AssignSocietiesRequest"},"AssignUsersRequest":{"properties":{"user_ids":{"items":{"type":"string"},"type":"array","title":"User Ids","description":"List of user IDs to assign"}},"type":"object","required":["user_ids"],"title":"AssignUsersRequest"},"Attendee":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Email"},"outside":{"type":"boolean","title":"Outside"},"named":{"type":"boolean","title":"Named"}},"type":"object","required":["outside","named"],"title":"Attendee","description":"Someone invited to a meeting, as the app read them from the calendar."},"BatchAddCollaboratorsRequest":{"properties":{"userEmails":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Useremails"}},"type":"object","required":["userEmails"],"title":"BatchAddCollaboratorsRequest"},"BatchRequest":{"properties":{"batch_id":{"type":"string","maxLength":128,"minLength":1,"title":"Batch Id"},"items":{"items":{"oneOf":[{"$ref":"#/components/schemas/TurnItem"},{"$ref":"#/components/schemas/EventItem"}],"discriminator":{"propertyName":"type","mapping":{"event":"#/components/schemas/EventItem","turn":"#/components/schemas/TurnItem"}}},"type":"array","maxItems":500,"title":"Items"}},"type":"object","required":["batch_id","items"],"title":"BatchRequest"},"BenchmarkQuery":{"properties":{"query_text":{"type":"string","maxLength":8000,"title":"Query Text","default":""},"query_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query Category"},"decision_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Type"},"difficulty_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Difficulty Level"},"expected_context_need":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Context Need"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"additionalProperties":true,"type":"object","title":"BenchmarkQuery"},"BillingStatusResponse":{"properties":{"billing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Status"},"billing_exempt":{"type":"boolean","title":"Billing Exempt","default":false},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","default":false},"can_manage":{"type":"boolean","title":"Can Manage","default":false},"configured":{"type":"boolean","title":"Configured","default":false},"blocked":{"type":"boolean","title":"Blocked","default":false},"billing_enforcement_enabled":{"type":"boolean","title":"Billing Enforcement Enabled","default":true},"credit_balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credit Balance"},"credits_blocked":{"type":"boolean","title":"Credits Blocked","default":false},"topup_configured":{"type":"boolean","title":"Topup Configured","default":false},"topup_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Topup Credits"},"subscription_terminal":{"type":"boolean","title":"Subscription Terminal","default":false},"monthly_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Credits"},"has_payment_method":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Payment Method"},"access":{"type":"string","enum":["full","limited"],"title":"Access","default":"full"},"full_access_requested_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Full Access Requested At"}},"type":"object","title":"BillingStatusResponse"},"CancelRequest":{"properties":{"executionId":{"type":"string","title":"Executionid"}},"type":"object","required":["executionId"],"title":"CancelRequest"},"CoachFeedbackRequest":{"properties":{"rating":{"type":"string","enum":["up","down"],"title":"Rating"},"reasons":{"items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"type":"array","maxItems":8,"title":"Reasons"},"text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Text"}},"additionalProperties":false,"type":"object","required":["rating"],"title":"CoachFeedbackRequest","description":"The owner's thumbs up or down on the coach for one call, and what helped or got in the way.\n\nSent whole each time: the rating alone when a thumb is clicked, then with\nthe reasons and words if they send them. The last one wins."},"CompanyInfo":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"company_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Size"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"growth_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Stage"},"business_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Model"},"hq_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Location"},"markets_served":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markets Served"},"main_clients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Clients"},"main_workflows":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Workflows"},"tech_maturity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech Maturity"},"regulatory_environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regulatory Environment"},"ownership_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ownership Type"},"business_cycle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Cycle"},"macro_environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Macro Environment"},"organizational_change":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizational Change"},"ecosystem_dependencies":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ecosystem Dependencies"},"region_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Focus"},"operating_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operating Model"},"preferred_tools":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Tools"},"key_integrations":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Integrations"}},"type":"object","title":"CompanyInfo","description":"Company characteristics associated with a persona"},"ConnectRequest":{"properties":{"nodeId":{"type":"string","title":"Nodeid"},"source":{"type":"string","title":"Source"},"productName":{"type":"string","title":"Productname","default":""},"callbackUrl":{"type":"string","title":"Callbackurl","default":""}},"type":"object","required":["nodeId","source"],"title":"ConnectRequest"},"ContextImageUploadRequest":{"properties":{"imageDataUrl":{"type":"string","title":"Imagedataurl"},"filename":{"type":"string","maxLength":512,"title":"Filename","default":"image"}},"type":"object","required":["imageDataUrl"],"title":"ContextImageUploadRequest"},"ContextPreviewRequest":{"properties":{"contextSectionIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextsectionids"},"contextNodeIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextnodeids"},"targetNodeId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetnodeid"},"currentObjective":{"type":"string","maxLength":5000,"title":"Currentobjective","default":""}},"type":"object","title":"ContextPreviewRequest"},"ConversationListResponse":{"properties":{"conversations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conversations"},"total_count":{"type":"integer","title":"Total Count"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["conversations","total_count","has_more"],"title":"ConversationListResponse","description":"Response for listing conversations"},"CreateBasketRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"cases":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":100,"minItems":1,"title":"Cases"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","cases"],"title":"CreateBasketRequest"},"CreateBasketVersionRequest":{"properties":{"cases":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":100,"minItems":1,"title":"Cases"},"baseVersionId":{"type":"string","maxLength":64,"minLength":1,"title":"Baseversionid"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"}},"type":"object","required":["cases","baseVersionId"],"title":"CreateBasketVersionRequest"},"CreateBatchRequest":{"properties":{"requestId":{"type":"string","maxLength":64,"minLength":1,"title":"Requestid"},"basketVersionId":{"type":"string","maxLength":64,"minLength":1,"title":"Basketversionid"},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"caseKeys":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Casekeys"},"shuffle":{"type":"boolean","title":"Shuffle","default":true},"agentClient":{"type":"string","enum":["claude_code","codex"],"title":"Agentclient","default":"codex"},"comparisonModelId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Comparisonmodelid"},"judgeModelId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Judgemodelid"},"allowSameModelJudge":{"type":"boolean","title":"Allowsamemodeljudge","default":false},"designFeedbackCount":{"type":"integer","maximum":2.0,"minimum":1.0,"title":"Designfeedbackcount","default":1},"agentCount":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Agentcount","default":5},"twinModels":{"type":"string","enum":["default","mix"],"title":"Twinmodels","default":"default"},"signIns":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object","maxProperties":20},{"type":"null"}],"title":"Signins"}},"type":"object","required":["requestId","basketVersionId"],"title":"CreateBatchRequest"},"CreateBoardRequest":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name","default":"Untitled Board"},"nodes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Nodes"},"edges":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Edges"},"defaultSocietyIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Defaultsocietyids"},"defaultProductId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Defaultproductid"}},"type":"object","title":"CreateBoardRequest"},"CreateCallRequest":{"properties":{"client_call_id":{"type":"string","format":"uuid","title":"Client Call Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"participant":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Participant"},"role":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Role"},"company":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Company"},"goal":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Goal"},"objective":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Objective"},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language"},"mode":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Mode"},"product_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Product Id"},"app_version":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"App Version"},"protocol":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Protocol"},"brief":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Brief"},"meeting_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meeting Key"}},"type":"object","required":["client_call_id"],"title":"CreateCallRequest"},"CreateConversationRequest":{"properties":{"title":{"type":"string","title":"Title"},"participant_ids":{"items":{"type":"string"},"type":"array","title":"Participant Ids","default":[]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["title"],"title":"CreateConversationRequest","description":"Request to create a new conversation"},"CreateConversationResponse":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["conversation_id","title","created_at"],"title":"CreateConversationResponse","description":"Response for conversation creation"},"CreateDesignAuthSessionRequest":{"properties":{"targetUrl":{"type":"string","maxLength":2048,"minLength":1,"title":"Targeturl"}},"additionalProperties":false,"type":"object","required":["targetUrl"],"title":"CreateDesignAuthSessionRequest"},"CreateExecutionRequest":{"properties":{"sourceNodeId":{"type":"string","title":"Sourcenodeid"},"executionType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executiontype"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["sourceNodeId"],"title":"CreateExecutionRequest"},"CreateInviteRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Invitee's email address"}},"type":"object","required":["email"],"title":"CreateInviteRequest"},"CreateInviteResponse":{"properties":{"invite_id":{"type":"string","title":"Invite Id"},"email":{"type":"string","title":"Email"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"email_scheduled":{"type":"boolean","title":"Email Scheduled"},"invite_url":{"type":"string","title":"Invite Url"}},"type":"object","required":["invite_id","email","email_scheduled","invite_url"],"title":"CreateInviteResponse"},"CreatePersonaRequest":{"properties":{"society_id":{"type":"string","title":"Society Id","description":"Society identifier (market/job_role)"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"age":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Age"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"additional_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Context","description":"Additional context about the person"}},"type":"object","required":["society_id"],"title":"CreatePersonaRequest"},"CreatePersonaResponse":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"individual_characteristics_id":{"type":"string","title":"Individual Characteristics Id"},"company_characteristics_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Characteristics Id"},"decision_characteristics_id":{"type":"string","title":"Decision Characteristics Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["persona_id","individual_characteristics_id","company_characteristics_id","decision_characteristics_id","status","message"],"title":"CreatePersonaResponse"},"CreatePresentationRequest":{"properties":{"boardId":{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Boardid"},"audience":{"type":"string","enum":["customers","engineers","manager","product_manager_team","executive_team"],"title":"Audience"},"sourceRefs":{"items":{"$ref":"#/components/schemas/PresentationSourceRef"},"type":"array","maxItems":50,"minItems":1,"title":"Sourcerefs"}},"additionalProperties":false,"type":"object","required":["boardId","audience","sourceRefs"],"title":"CreatePresentationRequest"},"CreateQuerySetRequest":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"queries":{"items":{"$ref":"#/components/schemas/BenchmarkQuery"},"type":"array","title":"Queries"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"},"is_canonical":{"type":"boolean","title":"Is Canonical","default":false},"parent_query_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Query Set Id"}},"type":"object","required":["name"],"title":"CreateQuerySetRequest"},"CreateQuerySetVersionRequest":{"properties":{"queries":{"items":{"$ref":"#/components/schemas/BenchmarkQuery"},"type":"array","title":"Queries"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"}},"type":"object","title":"CreateQuerySetVersionRequest"},"CreateSectionRequest":{"properties":{"stepId":{"type":"integer","title":"Stepid"},"artifactType":{"type":"string","title":"Artifacttype"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"sectionId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sectionid"},"stepTitle":{"type":"string","title":"Steptitle","default":""}},"type":"object","required":["stepId","artifactType","data"],"title":"CreateSectionRequest"},"CreateShareRequest":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id","description":"The conversation ID to share"},"share_type":{"type":"string","enum":["canvas_only","full_conversation"],"title":"Share Type","description":"Type of content to share","default":"canvas_only"},"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days","description":"Number of days until link expires (None = never)"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url","description":"Base URL for the share link (e.g., http://localhost:5173)"},"canvas_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Canvas Version","description":"Specific canvas version to share (None = current/latest)"}},"type":"object","required":["conversation_id"],"title":"CreateShareRequest","description":"Request to create a share link for a conversation"},"CreateSignInRequest":{"properties":{"requestId":{"type":"string","maxLength":64,"minLength":1,"title":"Requestid"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"accountLabel":{"type":"string","maxLength":200,"minLength":1,"title":"Accountlabel"},"targetUrl":{"type":"string","maxLength":2048,"minLength":1,"title":"Targeturl"},"checkUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Checkurl"},"expectedText":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Expectedtext"}},"additionalProperties":false,"type":"object","required":["requestId","name","accountLabel","targetUrl"],"title":"CreateSignInRequest"},"CreateTiebreakRequest":{"properties":{"boardId":{"type":"string","title":"Boardid"},"nodeId":{"type":"string","maxLength":200,"minLength":1,"title":"Nodeid"},"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"positionText":{"type":"string","maxLength":500,"minLength":1,"title":"Positiontext"},"positionImage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Positionimage"},"positionImageFilename":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Positionimagefilename"},"society":{"$ref":"#/components/schemas/SocietySelection"},"sampleSize":{"type":"integer","maximum":100.0,"minimum":10.0,"title":"Samplesize","default":50},"partnerEmail":{"type":"string","maxLength":320,"title":"Partneremail"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/MentionedProductIn"},"type":"array","maxItems":50},{"type":"null"}],"title":"Mentionedproducts"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/MentionedFeatureIn"},"type":"array","maxItems":100},{"type":"null"}],"title":"Mentionedfeatures"}},"type":"object","required":["boardId","nodeId","question","positionText","society","partnerEmail"],"title":"CreateTiebreakRequest"},"CreateUserRequest":{"properties":{"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":"default-org"},"firebase_uid":{"type":"string","title":"Firebase Uid"}},"type":"object","required":["email","first_name","last_name","firebase_uid"],"title":"CreateUserRequest","description":"Request model for creating a user"},"DecisionRequest":{"properties":{"status":{"type":"string","enum":["approved","declined"],"title":"Status"}},"type":"object","required":["status"],"title":"DecisionRequest"},"DesignAuthSessionPreviewResponse":{"properties":{"status":{"type":"string","title":"Status"},"url":{"type":"string","title":"Url"},"title":{"type":"string","title":"Title"},"screenshotUrl":{"type":"string","title":"Screenshoturl"}},"type":"object","required":["status","url","title","screenshotUrl"],"title":"DesignAuthSessionPreviewResponse"},"DesignAuthSessionResponse":{"properties":{"sessionId":{"type":"string","title":"Sessionid"},"status":{"type":"string","title":"Status"},"targetUrl":{"type":"string","title":"Targeturl"},"targetSite":{"type":"string","title":"Targetsite"},"expiresAt":{"type":"string","title":"Expiresat"},"boardId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boardid"},"executionId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executionid"},"loginUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Loginurl"},"preview":{"anyOf":[{"$ref":"#/components/schemas/DesignAuthSessionPreviewResponse"},{"type":"null"}]}},"type":"object","required":["sessionId","status","targetUrl","targetSite","expiresAt"],"title":"DesignAuthSessionResponse"},"DiscoveryRequest":{"properties":{"question":{"type":"string","maxLength":5000,"minLength":1,"title":"Question"},"boardId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boardid"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"templateId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Templateid"},"workflowId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflowid"},"modelOverride":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modeloverride","description":"Primary model to use for this discovery run. None = Auto (use YAML defaults)."},"images":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":20},{"type":"null"}],"title":"Images"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__discovery_api__MentionedProduct"},"type":"array","maxItems":50},{"type":"null"}],"title":"Mentionedproducts"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__discovery_api__MentionedFeature"},"type":"array","maxItems":100},{"type":"null"}],"title":"Mentionedfeatures"},"selectedPersonaGroups":{"anyOf":[{"items":{"$ref":"#/components/schemas/PersonaGroupOverride"},"type":"array","maxItems":20},{"type":"null"}],"title":"Selectedpersonagroups"},"plan":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan"},"sourceNodeId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sourcenodeid"},"isStandalone":{"type":"boolean","title":"Isstandalone","default":false},"contextSectionIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextsectionids"},"contextNodeIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextnodeids"},"toolState":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Toolstate"}},"type":"object","required":["question"],"title":"DiscoveryRequest"},"DraftRequest":{"properties":{"instructions":{"type":"string","minLength":1,"title":"Instructions"},"note":{"type":"string","maxLength":500,"title":"Note","default":""}},"type":"object","required":["instructions"],"title":"DraftRequest"},"EventItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"seq":{"type":"integer","minimum":0.0,"title":"Seq"},"schema":{"type":"integer","minimum":1.0,"title":"Schema"},"type":{"type":"string","const":"event","title":"Type"},"kind":{"type":"string","maxLength":64,"minLength":1,"title":"Kind"},"t":{"type":"number","minimum":0.0,"title":"T"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["id","seq","schema","type","kind","t"],"title":"EventItem"},"ExcludeCaseRequest":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"}},"type":"object","required":["reason"],"title":"ExcludeCaseRequest"},"ExpertReviewCallbackRequest":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version"},"run_id":{"type":"string","maxLength":36,"minLength":36,"title":"Run Id"},"attempt_id":{"type":"string","maxLength":36,"minLength":36,"title":"Attempt Id"},"execution_id":{"type":"string","maxLength":64,"minLength":1,"title":"Execution Id"},"status":{"type":"string","enum":["completed","failed"],"title":"Status"},"auth_mode":{"type":"string","enum":["public","authenticated"],"title":"Auth Mode"},"artifact_uri":{"type":"string","maxLength":4096,"minLength":1,"title":"Artifact Uri"},"run_uri":{"type":"string","maxLength":4096,"minLength":1,"title":"Run Uri"},"result_uri":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Result Uri"},"error":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Error"}},"additionalProperties":false,"type":"object","required":["schema_version","run_id","attempt_id","execution_id","status","auth_mode","artifact_uri","run_uri"],"title":"ExpertReviewCallbackRequest"},"ExportPresentationRequest":{"properties":{"format":{"type":"string","enum":["pdf","pptx"],"title":"Format","default":"pdf"},"baseUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Baseurl"}},"additionalProperties":false,"type":"object","title":"ExportPresentationRequest"},"FeatureCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Feature name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Feature description"}},"type":"object","required":["name"],"title":"FeatureCreate","description":"Feature creation model"},"FeatureResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"title":"Created At"}},"type":"object","required":["id","name","created_at"],"title":"FeatureResponse","description":"Feature response model"},"Feeds":{"properties":{"customers":{"type":"boolean","title":"Customers"},"customers_why":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customers Why"},"product":{"type":"boolean","title":"Product"},"product_why":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Why"}},"type":"object","required":["customers","product"],"title":"Feeds","description":"Where the note job says the call's content goes (src/compass/routing.py), each with its one-line reason: the\norganisation's customers society, its product context, both or neither."},"FetchForBronzeRequest":{"properties":{"society_id":{"type":"string","title":"Society Id","description":"Composite 'market/name' identifier (digital-twin-api convention)."},"source_slug":{"type":"string","title":"Source Slug","description":"Composio toolkit slug, e.g. 'granola_mcp' or 'slack'."},"user_id":{"type":"string","title":"User Id","description":"Firebase uid of the user the society is being created for. Used to resolve the Composio user_id scope."},"product_name":{"type":"string","title":"Product Name","description":"Optional product scope. Empty for org-level connections (the default for society-creation flows).","default":""},"internal_domains":{"items":{"type":"string"},"type":"array","title":"Internal Domains","description":"Host org email domains, used by adapters to exclude internal participants from CLIENT-domain inference."},"scope":{"additionalProperties":true,"type":"object","title":"Scope","description":"Per-source scope filter. Per-source shape: Slack `{mode, channel_ids?}`, Google `{mode, folder_ids?, file_ids?}`, Granola `{mode, meeting_ids?}`, Notion `{mode, page_ids?}`, HubSpot `{mode: 'selected', contact_ids: ['portalId:contactId']}` where `mode` is 'all' or 'selected' (HubSpot: 'selected' only)."},"agent_payload_id":{"type":"string","title":"Agent Payload Id","description":"Id of an mcp_agent_document_payloads row holding documents the user's agent pre-extracted via its own integrations. Required when source_slug='agent_documents'; ignored for Composio-backed sources.","default":""}},"type":"object","required":["society_id","source_slug","user_id"],"title":"FetchForBronzeRequest","description":"Input for /fetch-for-bronze. Pipeline supplies the user's uid\n(so we can resolve their Composio user_id) plus the source slug\nbeing fetched."},"FetchForBronzeResponse":{"properties":{"adapter_slug":{"type":"string","title":"Adapter Slug","description":"Slug used by `digital-twin-api/src/market_intelligence/bronze/connectors/__init__.py:get_adapter()`."},"doc_type":{"type":"string","title":"Doc Type"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["adapter_slug","doc_type","payload"],"title":"FetchForBronzeResponse"},"FinaliseRequest":{"properties":{"ended_at":{"type":"string","format":"date-time","title":"Ended At"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"},"versions":{"additionalProperties":true,"type":"object","title":"Versions"}},"type":"object","required":["ended_at"],"title":"FinaliseRequest"},"FullAccessResponse":{"properties":{"access":{"type":"string","title":"Access"},"full_access_requested_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Access Requested At"}},"type":"object","required":["access"],"title":"FullAccessResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Insight":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["finding","follow_up_question","strongest_evidence","missed_thread"],"title":"Kind"},"quote":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Quote"},"interpretation":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Interpretation"},"confidence":{"anyOf":[{"type":"string","enum":["high","medium","low"]},{"type":"null"}],"title":"Confidence"},"hypothesis":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Hypothesis"},"turn_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Turn Ids"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["id","kind"],"title":"Insight"},"InsightsRequest":{"properties":{"note":{"$ref":"#/components/schemas/Note"},"insights":{"items":{"$ref":"#/components/schemas/Insight"},"type":"array","maxItems":200,"title":"Insights"},"versions":{"additionalProperties":true,"type":"object","title":"Versions"}},"type":"object","required":["note"],"title":"InsightsRequest"},"InviteLookupRequest":{"properties":{"token":{"type":"string","title":"Token","description":"Raw invite token from the invite link"}},"type":"object","required":["token"],"title":"InviteLookupRequest"},"InviteLookupResponse":{"properties":{"email":{"type":"string","title":"Email"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"}},"type":"object","required":["email"],"title":"InviteLookupResponse"},"IterateRequest":{"properties":{"instruction":{"type":"string","maxLength":5000,"minLength":1,"title":"Instruction"},"itemRef":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Itemref"},"sourceNodeId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Sourcenodeid"},"contextSectionIds":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Contextsectionids"},"contextNodeIds":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Contextnodeids"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__section_iteration_api__MentionedProduct"},"type":"array","maxItems":50},{"type":"null"}],"title":"Mentionedproducts"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__section_iteration_api__MentionedFeature"},"type":"array","maxItems":100},{"type":"null"}],"title":"Mentionedfeatures"}},"type":"object","required":["instruction"],"title":"IterateRequest"},"LinearIssueBulkCreateRequest":{"properties":{"productName":{"type":"string","title":"Productname","default":""},"teamId":{"type":"string","title":"Teamid","default":""},"items":{"items":{"$ref":"#/components/schemas/LinearIssueCreateItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"LinearIssueBulkCreateRequest"},"LinearIssueCreateItem":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"rationale":{"type":"string","title":"Rationale","default":""},"priority":{"type":"string","title":"Priority","default":""},"effort":{"type":"string","title":"Effort","default":""},"horizon":{"type":"string","title":"Horizon","default":""},"context":{"type":"string","title":"Context","default":""}},"type":"object","required":["title"],"title":"LinearIssueCreateItem"},"LiveRequest":{"properties":{"environment":{"type":"string","maxLength":60,"minLength":1,"title":"Environment"},"commit_sha":{"type":"string","maxLength":64,"minLength":1,"title":"Commit Sha"},"files":{"additionalProperties":{"type":"string"},"type":"object","title":"Files"}},"type":"object","required":["environment","commit_sha","files"],"title":"LiveRequest"},"LiveStateRequest":{"properties":{"state":{"type":"string","enum":["interrupted","active"],"title":"State"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"}},"type":"object","required":["state"],"title":"LiveStateRequest"},"MeetingDeleteRequest":{"properties":{"meeting_keys":{"items":{"type":"string","maxLength":1024,"minLength":1},"type":"array","maxItems":100,"minItems":1,"title":"Meeting Keys"}},"type":"object","required":["meeting_keys"],"title":"MeetingDeleteRequest","description":"Meeting keys to delete, in the body: a key holds a calendar event id, so it stays out of URLs and logs."},"MeetingDeliveredReply":{"properties":{"persona_id":{"type":"string","maxLength":160,"minLength":1,"title":"Persona Id"},"text":{"type":"string","maxLength":4096,"minLength":1,"title":"Text"},"claim_map":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":100,"title":"Claim Map"}},"type":"object","required":["persona_id","text"],"title":"MeetingDeliveredReply"},"MeetingPanelDeliveryRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"session_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Session Id"},"trigger_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Trigger Id"},"conversation_id":{"type":"string","maxLength":160,"minLength":1,"title":"Conversation Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"source_node_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Node Id"},"replies":{"items":{"$ref":"#/components/schemas/MeetingDeliveredReply"},"type":"array","maxItems":12,"minItems":1,"title":"Replies"}},"type":"object","required":["owner_user_id","trace_subject_id","session_id","trigger_id","conversation_id","board_id","source_node_id","replies"],"title":"MeetingPanelDeliveryRequest"},"MeetingPanelDeliveryResponse":{"properties":{"status":{"type":"string","enum":["published","context_not_found"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"},"trigger_id":{"type":"string","title":"Trigger Id"},"published_persona_ids":{"items":{"type":"string"},"type":"array","title":"Published Persona Ids"}},"type":"object","required":["status","session_id","trigger_id"],"title":"MeetingPanelDeliveryResponse"},"MeetingPanelReply":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"society_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Society Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"text":{"type":"string","title":"Text"},"evidence_refs":{"items":{"type":"string"},"type":"array","title":"Evidence Refs"},"claim_map":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":100,"title":"Claim Map"},"evidence_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","required":["persona_id","name","text"],"title":"MeetingPanelReply"},"MeetingPanelTurnRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"session_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Session Id"},"trigger_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Trigger Id"},"conversation_id":{"type":"string","maxLength":160,"minLength":1,"title":"Conversation Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"source_node_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Node Id"},"roster_ids":{"items":{"type":"string"},"type":"array","maxItems":12,"minItems":1,"title":"Roster Ids"},"triggering_text":{"type":"string","maxLength":6000,"minLength":1,"title":"Triggering Text"},"triggering_speaker":{"type":"string","maxLength":100,"minLength":1,"title":"Triggering Speaker"},"thread_turns":{"items":{"$ref":"#/components/schemas/MeetingThreadTurn"},"type":"array","maxItems":20,"title":"Thread Turns"},"mentioned_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Mentioned Ids"}},"type":"object","required":["owner_user_id","trace_subject_id","session_id","trigger_id","conversation_id","board_id","source_node_id","roster_ids","triggering_text","triggering_speaker"],"title":"MeetingPanelTurnRequest"},"MeetingPanelTurnResponse":{"properties":{"status":{"type":"string","enum":["ok","generation_failed","context_not_found"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"},"trigger_id":{"type":"string","title":"Trigger Id"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"board_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Id"},"board_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Url"},"source_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Node Id"},"roster_ids":{"items":{"type":"string"},"type":"array","title":"Roster Ids"},"decisions":{"items":{"$ref":"#/components/schemas/MeetingTwinDecision"},"type":"array","title":"Decisions"},"replies":{"items":{"$ref":"#/components/schemas/MeetingPanelReply"},"type":"array","title":"Replies"}},"type":"object","required":["status","session_id","trigger_id"],"title":"MeetingPanelTurnResponse"},"MeetingPreferenceOptionResult":{"properties":{"label":{"type":"string","title":"Label"},"text":{"type":"string","title":"Text"},"count":{"type":"integer","minimum":0.0,"title":"Count"},"percentage":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Percentage"}},"type":"object","required":["label","text","count","percentage"],"title":"MeetingPreferenceOptionResult"},"MeetingPreferenceResult":{"properties":{"actual_response_count":{"type":"integer","minimum":0.0,"title":"Actual Response Count"},"winner":{"anyOf":[{"$ref":"#/components/schemas/MeetingPreferenceWinner"},{"type":"null"}]},"percentages":{"items":{"$ref":"#/components/schemas/MeetingPreferenceOptionResult"},"type":"array","title":"Percentages"},"evidence_depth":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evidence Depth"},"synthesized_insight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Synthesized Insight"}},"type":"object","required":["actual_response_count"],"title":"MeetingPreferenceResult"},"MeetingPreferenceTestRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"pulse_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Pulse Id"},"conversation_id":{"type":"string","maxLength":160,"minLength":1,"title":"Conversation Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"source_node_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Node Id"},"society_ids":{"items":{"type":"string","maxLength":160,"minLength":1},"type":"array","maxItems":50,"minItems":1,"title":"Society Ids"},"question":{"type":"string","maxLength":1200,"minLength":1,"title":"Question"},"variants":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":4,"minItems":2,"title":"Variants"}},"type":"object","required":["owner_user_id","trace_subject_id","pulse_id","conversation_id","board_id","source_node_id","society_ids","question","variants"],"title":"MeetingPreferenceTestRequest"},"MeetingPreferenceTestResponse":{"properties":{"status":{"type":"string","enum":["running","completed","failed","context_not_found"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"},"execution_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Id"},"board_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Id"},"board_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Url"},"result":{"anyOf":[{"$ref":"#/components/schemas/MeetingPreferenceResult"},{"type":"null"}]}},"type":"object","required":["status","session_id"],"title":"MeetingPreferenceTestResponse"},"MeetingPreferenceWinner":{"properties":{"label":{"type":"string","title":"Label"},"text":{"type":"string","title":"Text"},"count":{"type":"integer","minimum":0.0,"title":"Count"},"percentage":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Percentage"}},"type":"object","required":["label","text","count","percentage"],"title":"MeetingPreferenceWinner"},"MeetingRecord":{"properties":{"meeting_key":{"type":"string","maxLength":1024,"minLength":1,"title":"Meeting Key"},"source":{"anyOf":[{"type":"string","enum":["google","mac"]},{"type":"null"}],"title":"Source"},"series":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Series"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"title":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Title"},"attendees":{"items":{"$ref":"#/components/schemas/Attendee"},"type":"array","maxItems":30,"title":"Attendees"},"customer_call":{"type":"boolean","title":"Customer Call"},"customer_call_source":{"anyOf":[{"type":"string","enum":["user","classifier","rule"]},{"type":"null"}],"title":"Customer Call Source"},"goal":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Goal"},"goal_source":{"anyOf":[{"type":"string","enum":["user","compass","invite","last_call"]},{"type":"null"}],"title":"Goal Source"},"notes":{"anyOf":[{"type":"string","maxLength":3000},{"type":"null"}],"title":"Notes"},"notes_source":{"anyOf":[{"type":"string","enum":["user","compass"]},{"type":"null"}],"title":"Notes Source"},"offered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Offered At"},"offer_via":{"anyOf":[{"type":"string","enum":["calendar","detected"]},{"type":"null"}],"title":"Offer Via"},"offer_answer":{"anyOf":[{"type":"string","enum":["coach","skip"]},{"type":"null"}],"title":"Offer Answer"},"not_offered_reason":{"anyOf":[{"type":"string","enum":["app_closed","offers_off","internal","busy","missed"]},{"type":"null"}],"title":"Not Offered Reason"}},"type":"object","required":["meeting_key","starts_at","ends_at","customer_call"],"title":"MeetingRecord","description":"One occurrence of a calendar meeting, as the app knows it; the app saves it again whenever that changes.\n\n`call_id` and `retention_until` are the backend's: sent anyway, they are ignored. Each of the user's Macs\nsaves its own view of a meeting, so a save keeps what another one saw of the offer (see the repository's\nupsert); every other field is the latest save's."},"MeetingRosterMember":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"society_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Society Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["persona_id","name"],"title":"MeetingRosterMember"},"MeetingSessionCleanupRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"conversation_id":{"type":"string","maxLength":160,"minLength":1,"title":"Conversation Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"source_node_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Node Id"},"summary_execution_id":{"type":"string","maxLength":160,"minLength":1,"title":"Summary Execution Id"}},"type":"object","required":["owner_user_id","trace_subject_id","conversation_id","board_id","source_node_id","summary_execution_id"],"title":"MeetingSessionCleanupRequest"},"MeetingSessionCleanupResponse":{"properties":{"status":{"type":"string","enum":["cleaned","context_not_found"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["status","session_id"],"title":"MeetingSessionCleanupResponse"},"MeetingSessionRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"session_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Session Id"},"provider":{"type":"string","enum":["google_meet","zoom"],"title":"Provider"},"society_ids":{"items":{"type":"string","maxLength":160,"minLength":1},"type":"array","maxItems":50,"minItems":1,"title":"Society Ids"},"eligible_twin_ids_by_society":{"anyOf":[{"additionalProperties":{"items":{"type":"string","maxLength":160,"minLength":1},"type":"array"},"propertyNames":{"maxLength":160,"minLength":1},"type":"object"},{"type":"null"}],"title":"Eligible Twin Ids By Society"}},"type":"object","required":["owner_user_id","trace_subject_id","session_id","provider","society_ids"],"title":"MeetingSessionRequest"},"MeetingSessionResponse":{"properties":{"status":{"type":"string","enum":["ok","no_twins"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"board_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Id"},"board_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Url"},"source_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Node Id"},"summary_execution_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Execution Id"},"roster_ids":{"items":{"type":"string"},"type":"array","title":"Roster Ids"},"roster":{"items":{"$ref":"#/components/schemas/MeetingRosterMember"},"type":"array","title":"Roster"}},"type":"object","required":["status","session_id"],"title":"MeetingSessionResponse"},"MeetingSummary":{"properties":{"overview":{"type":"string","maxLength":6000,"title":"Overview","default":""},"topics":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Topics"},"decisions":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Decisions"},"assumptions":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Assumptions"},"objections":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Objections"},"risks":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Risks"},"open_questions":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Open Questions"},"customer_sensitive_moments":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Customer Sensitive Moments"},"twin_reactions":{"items":{"type":"string","maxLength":1200,"minLength":1},"type":"array","maxItems":50,"title":"Twin Reactions"}},"type":"object","title":"MeetingSummary"},"MeetingSummaryUpdateRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^meeting-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"conversation_id":{"type":"string","maxLength":160,"minLength":1,"title":"Conversation Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"summary_execution_id":{"type":"string","maxLength":160,"minLength":1,"title":"Summary Execution Id"},"version":{"type":"integer","minimum":1.0,"title":"Version"},"final":{"type":"boolean","title":"Final","default":false},"summary":{"$ref":"#/components/schemas/MeetingSummary"}},"type":"object","required":["owner_user_id","trace_subject_id","conversation_id","board_id","summary_execution_id","version","summary"],"title":"MeetingSummaryUpdateRequest"},"MeetingSummaryUpdateResponse":{"properties":{"status":{"type":"string","enum":["updated","stale_ignored","context_not_found"],"title":"Status"},"session_id":{"type":"string","title":"Session Id"},"version":{"type":"integer","title":"Version"},"final":{"type":"boolean","title":"Final"}},"type":"object","required":["status","session_id","version","final"],"title":"MeetingSummaryUpdateResponse"},"MeetingThreadTurn":{"properties":{"speaker":{"type":"string","maxLength":100,"minLength":1,"title":"Speaker"},"text":{"type":"string","maxLength":6000,"minLength":1,"title":"Text"}},"type":"object","required":["speaker","text"],"title":"MeetingThreadTurn"},"MeetingTwinDecision":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"should_respond":{"type":"boolean","title":"Should Respond"},"reason":{"type":"string","enum":["selected_relevant","not_selected"],"title":"Reason"}},"type":"object","required":["persona_id","should_respond","reason"],"title":"MeetingTwinDecision"},"MeetingsRequest":{"properties":{"meetings":{"items":{"$ref":"#/components/schemas/MeetingRecord"},"type":"array","maxItems":50,"title":"Meetings"}},"type":"object","required":["meetings"],"title":"MeetingsRequest"},"MentionedFeatureIn":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeatureIn"},"MentionedProductIn":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProductIn"},"MessageListResponse":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"total_count":{"type":"integer","title":"Total Count"},"has_more":{"type":"boolean","title":"Has More"},"conversation_info":{"additionalProperties":true,"type":"object","title":"Conversation Info"}},"type":"object","required":["messages","total_count","has_more","conversation_info"],"title":"MessageListResponse","description":"Response for listing messages"},"Note":{"properties":{"call_type":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Call Type"},"call_kind":{"anyOf":[{"type":"string","enum":["discovery","sales_or_pilot","hiring","internal","other"]},{"type":"null"}],"title":"Call Kind"},"biggest_missed_thread":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Biggest Missed Thread"},"strongest_evidence":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Strongest Evidence"},"next_call_question":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Next Call Question"},"feeds":{"anyOf":[{"$ref":"#/components/schemas/Feeds"},{"type":"null"}]},"product_notes":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProductNote"},"type":"array"},{"type":"null"}],"title":"Product Notes"}},"type":"object","title":"Note"},"NoteEditRequest":{"properties":{"goal":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Goal"},"call_type":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Call Type"},"biggest_missed_thread":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Biggest Missed Thread"},"strongest_evidence":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Strongest Evidence"},"next_call_question":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Next Call Question"},"interpretations":{"additionalProperties":{"type":"string","maxLength":4000,"minLength":1},"propertyNames":{"format":"uuid"},"type":"object","maxProperties":200,"title":"Interpretations"}},"additionalProperties":false,"type":"object","title":"NoteEditRequest","description":"The owner's own words for a finished call: its goal, the note's lines, and what each insight means.\n\nOnly the goal and what the note job wrote can change. The quotes are the\ncustomer's words, checked against the transcript, so they stay as said:\nany other field is a 422, and so is an edit that changes nothing."},"NoteStatusRequest":{"properties":{"status":{"type":"string","const":"failed","title":"Status"},"error":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Error"},"attempt":{"type":"integer","minimum":0.0,"title":"Attempt"}},"type":"object","required":["status","attempt"],"title":"NoteStatusRequest"},"OrgMemberResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"role":{"type":"string","title":"Role"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["user_id","email","first_name","last_name","role"],"title":"OrgMemberResponse"},"OrgMembersResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"viewer_role":{"type":"string","title":"Viewer Role"},"members":{"items":{"$ref":"#/components/schemas/OrgMemberResponse"},"type":"array","title":"Members"}},"type":"object","required":["organization_id","viewer_role","members"],"title":"OrgMembersResponse"},"OrganizationAccessResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"access":{"type":"string","title":"Access"},"full_access_requested_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Access Requested At"},"billing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Status"},"trial_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial Ends At"}},"type":"object","required":["organization_id","access"],"title":"OrganizationAccessResponse"},"OrganizationAccessUpdate":{"properties":{"access":{"type":"string","const":"full","title":"Access"}},"type":"object","required":["access"],"title":"OrganizationAccessUpdate"},"OrganizationCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Organization name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Organization description"}},"type":"object","required":["name"],"title":"OrganizationCreate"},"OrganizationProductResponse":{"properties":{"product_id":{"type":"string","title":"Product Id"},"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"target_audience":{"type":"string","title":"Target Audience"},"product_website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Website"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["product_id","organization_id","name","description","target_audience"],"title":"OrganizationProductResponse"},"OrganizationResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"access":{"type":"string","title":"Access","default":"full"},"full_access_requested_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Access Requested At"}},"type":"object","required":["organization_id","name","description"],"title":"OrganizationResponse"},"OrganizationSocietyResponse":{"properties":{"society_id":{"type":"string","title":"Society Id"},"organization_id":{"type":"string","title":"Organization Id"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["society_id","organization_id"],"title":"OrganizationSocietyResponse"},"OrganizationUserResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"organization_id":{"type":"string","title":"Organization Id"},"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"company":{"type":"string","title":"Company"},"role":{"type":"string","title":"Role","default":"member"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["user_id","organization_id","email","first_name","last_name","company"],"title":"OrganizationUserResponse"},"PasswordResetRequest":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email","description":"Account email"}},"type":"object","required":["email"],"title":"PasswordResetRequest"},"PasswordResetResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"message":{"type":"string","title":"Message"},"reset_email_sent":{"type":"boolean","title":"Reset Email Sent","default":false},"reset_email_fallback_required":{"type":"boolean","title":"Reset Email Fallback Required","default":false}},"type":"object","required":["message"],"title":"PasswordResetResponse"},"PendingInviteResponse":{"properties":{"invite_id":{"type":"string","title":"Invite Id"},"email":{"type":"string","title":"Email"},"invited_by":{"type":"string","title":"Invited By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"role":{"type":"string","title":"Role"}},"type":"object","required":["invite_id","email","invited_by","role"],"title":"PendingInviteResponse"},"PendingInvitesResponse":{"properties":{"invites":{"items":{"$ref":"#/components/schemas/PendingInviteResponse"},"type":"array","title":"Invites"}},"type":"object","required":["invites"],"title":"PendingInvitesResponse"},"PersonaGroup":{"properties":{"society_id":{"type":"string","title":"Society Id","description":"Stable society identifier for this group"},"society_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Society Key","description":"Composite '{market}/{name}' key from the societies row. `society_id` is the UUID PK; the Gold layer, BigQuery persona_group and GCS prefix are keyed on this string instead, so callers reading those stores (e.g. the knowledge-graph viewer) must use it. None when the group's societies row is missing."},"source_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Mode","description":"How the society was built: 'market' (web research), 'customer' / 'mixed' (Mode 2, from integrations). Authoritative (prefers the latest pipeline job's mode). Lets the UI gate Mode-2-only actions like 'add documents'. None when it can't be resolved."},"market":{"type":"string","title":"Market"},"job_role":{"type":"string","title":"Job Role","description":"Primary role within the market segment"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"User-facing society name for UI rendering"},"display_market":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Market","description":"User-facing market label for UI rendering"},"persona_count":{"type":"integer","title":"Persona Count","description":"Number of individual personas in the group"},"summary":{"type":"string","title":"Summary","description":"Human-readable synopsis of the group"},"experience_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Experience Range","description":"Human-friendly description of experience span"},"representative_titles":{"items":{"type":"string"},"type":"array","title":"Representative Titles","description":"Sample titles seen within the role"},"key_characteristics":{"items":{"type":"string"},"type":"array","title":"Key Characteristics","description":"Sample traits/highlights"},"seniority_levels":{"items":{"type":"string"},"type":"array","title":"Seniority Levels"},"departments":{"items":{"type":"string"},"type":"array","title":"Departments"},"teams":{"items":{"type":"string"},"type":"array","title":"Teams"},"notes_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes Summary","description":"Concatenated highlights from persona notes"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"Society creation timestamp used for UI sorting"},"gold_node_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gold Node Count","description":"Nodes in the society's Gold knowledge graph (keyed on `society_key`); 0 when it has none yet. None when the Gold table can't be read."},"gold_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gold Updated At","description":"When the society's Gold nodes last changed. None when it has none."},"sample_personas":{"anyOf":[{"items":{"$ref":"#/components/schemas/PersonaSample"},"type":"array"},{"type":"null"}],"title":"Sample Personas","description":"Small preview of personas (name + avatar) for UI chips. Populated only when the caller opts in."}},"type":"object","required":["society_id","market","job_role","persona_count","summary"],"title":"PersonaGroup"},"PersonaGroupOverride":{"properties":{"society_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Society Id"},"market":{"type":"string","title":"Market"},"job_role":{"type":"string","title":"Job Role"}},"type":"object","required":["market","job_role"],"title":"PersonaGroupOverride"},"PersonaGroupsResponse":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/PersonaGroup"},"type":"array","title":"Groups"},"total_groups":{"type":"integer","title":"Total Groups"}},"type":"object","required":["groups","total_groups"],"title":"PersonaGroupsResponse"},"PersonaInfo":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uuid"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"job":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job"},"age":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Age"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"interests":{"items":{"type":"string"},"type":"array","title":"Interests"},"pain_points":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pain Points","description":"List of pain points from decision characteristics"},"company":{"anyOf":[{"$ref":"#/components/schemas/CompanyInfo"},{"type":"null"}],"description":"Company characteristics associated with the persona"},"isFavorite":{"type":"boolean","title":"Isfavorite"},"createdAt":{"type":"string","title":"Createdat"}},"type":"object","required":["id","name","interests","isFavorite","createdAt"],"title":"PersonaInfo"},"PersonaListResp":{"properties":{"personas":{"items":{"$ref":"#/components/schemas/PersonaInfo"},"type":"array","title":"Personas"}},"type":"object","required":["personas"],"title":"PersonaListResp"},"PersonaSample":{"properties":{"name":{"type":"string","title":"Name"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"}},"type":"object","required":["name"],"title":"PersonaSample","description":"Minimal persona info used for avatar previews on society cards/strips."},"PortalSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalSessionResponse"},"PresentationBlockPatch":{"properties":{"type":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Type"},"items":{"anyOf":[{"items":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"object"},{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"array","maxItems":20},{"type":"null"}],"title":"Items"},"rows":{"anyOf":[{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"object"},"type":"array","maxItems":20},{"type":"null"}],"title":"Rows"},"stages":{"anyOf":[{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"object"},"type":"array","maxItems":20},{"type":"null"}],"title":"Stages"},"annotations":{"anyOf":[{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"object"},"type":"array","maxItems":20},{"type":"null"}],"title":"Annotations"},"risks":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Risks"},"imagePaths":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Imagepaths"},"decision":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Decision"}},"additionalProperties":false,"type":"object","required":["type"],"title":"PresentationBlockPatch"},"PresentationExportResponse":{"properties":{"format":{"type":"string","enum":["pdf","pptx"],"title":"Format"},"presentation":{"additionalProperties":true,"type":"object","title":"Presentation"}},"type":"object","required":["format","presentation"],"title":"PresentationExportResponse"},"PresentationResponse":{"properties":{"presentation_id":{"type":"string","title":"Presentation Id"},"owner_id":{"type":"string","title":"Owner Id"},"board_id":{"type":"string","title":"Board Id"},"title":{"type":"string","title":"Title"},"audience":{"type":"string","title":"Audience"},"theme":{"additionalProperties":true,"type":"object","title":"Theme"},"status":{"type":"string","title":"Status"},"source_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Refs"},"source_snapshot":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Snapshot"},"slides":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Slides"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["presentation_id","owner_id","board_id","title","audience","theme","status","source_refs","source_snapshot","slides","created_at","updated_at"],"title":"PresentationResponse"},"PresentationSlidePatch":{"properties":{"id":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Id"},"layout":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Layout"},"sourceRef":{"anyOf":[{"$ref":"#/components/schemas/PresentationSourceRef"},{"type":"null"}]},"sourceType":{"anyOf":[{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Sourcetype"},"title":{"type":"string","maxLength":240,"minLength":1,"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Subtitle"},"body":{"anyOf":[{"type":"string","maxLength":1200},{"type":"null"}],"title":"Body"},"bullets":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Bullets"},"blocks":{"anyOf":[{"items":{"$ref":"#/components/schemas/PresentationBlockPatch"},"type":"array","maxItems":20},{"type":"null"}],"title":"Blocks"}},"additionalProperties":false,"type":"object","required":["id","layout","title"],"title":"PresentationSlidePatch"},"PresentationSourceRef":{"properties":{"nodeId":{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Nodeid"},"executionId":{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Executionid"},"stepId":{"type":"integer","minimum":0.0,"title":"Stepid"},"sectionType":{"type":"string","maxLength":120,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Sectiontype"},"sourceLabel":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Sourcelabel"}},"additionalProperties":false,"type":"object","required":["nodeId","executionId","stepId","sectionType"],"title":"PresentationSourceRef"},"PreviewPersonaRequest":{"properties":{"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL"},"society_id":{"type":"string","title":"Society Id","description":"Society identifier (market/job_role)"}},"type":"object","required":["linkedin_url","society_id"],"title":"PreviewPersonaRequest"},"PreviewPersonaResponse":{"properties":{"extracted_data":{"additionalProperties":true,"type":"object","title":"Extracted Data"},"linkedin_url":{"type":"string","title":"Linkedin Url"},"suggested_urls":{"items":{"type":"string"},"type":"array","title":"Suggested Urls"},"additional_context":{"type":"string","title":"Additional Context"},"mindset_details":{"type":"string","title":"Mindset Details"},"system_prompt_context":{"type":"string","title":"System Prompt Context"}},"type":"object","required":["extracted_data","linkedin_url","suggested_urls","additional_context","mindset_details","system_prompt_context"],"title":"PreviewPersonaResponse"},"ProductCreate":{"properties":{"name":{"type":"string","title":"Name","description":"Product name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional; the product-context build fills this"},"targetAudience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetaudience","description":"Optional; derived from the product context graph"},"productWebsite":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Productwebsite","description":"Product or company website"},"features":{"items":{"$ref":"#/components/schemas/FeatureCreate"},"type":"array","title":"Features","description":"List of features","default":[]}},"type":"object","required":["name"],"title":"ProductCreate","description":"Product creation model.\n\nOnly ``name`` is required. Description and target audience are produced by the\nproduct-context build (which researches them anyway) and written back onto the product —\nasking the user for them up front duplicated that work and let the two copies drift.\nThey remain accepted so an API caller that already knows them can seed the record — but a\nvalue supplied at CREATION is only a seed, and the build will still refine it. Ownership is\ntaken by editing an existing product, not by creating one with a description; otherwise an\nagent-created product could never be improved by its own graph."},"ProductGraphBuildBody":{"properties":{"repo_url":{"type":"string","title":"Repo Url","description":"GitHub/GitLab repo URL to clone + analyze (optional).","default":""},"website_url":{"type":"string","title":"Website Url","description":"Single public product website URL to crawl + web-search (optional).","default":""},"website_urls":{"items":{"type":"string"},"type":"array","title":"Website Urls","description":"Multiple public sites to crawl in one build (marketing + docs/help). First is primary (gets web-search discovery); the rest are crawl-only. Takes precedence over website_url."},"repo_subdir":{"type":"string","title":"Repo Subdir","description":"Analyze only this path within the repo (monorepo).","default":""},"provider":{"type":"string","title":"Provider","description":"'github' | 'gitlab'; inferred from repo_url host when blank.","default":""},"product_name":{"type":"string","title":"Product Name","description":"Scope the git token by product name; resolved from id when blank.","default":""},"include_repo_docs":{"type":"boolean","title":"Include Repo Docs","default":true},"run_extraction":{"type":"boolean","title":"Run Extraction","default":false},"clear_existing":{"type":"boolean","title":"Clear Existing","default":false},"crawl_max_pages":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Crawl Max Pages","default":50},"discover_count":{"type":"integer","maximum":50.0,"minimum":0.0,"title":"Discover Count","default":20},"selected_integrations":{"items":{"type":"string"},"type":"array","title":"Selected Integrations","description":"Connected integration slugs (slack/googledrive/…) to ingest into the product graph via fetch-for-bronze (Mode-2 parity)."},"scope_by_integration":{"additionalProperties":true,"type":"object","title":"Scope By Integration","description":"Per-integration item selection from the Manage-Access picker {slug: {mode, channel_ids?/folder_ids?/file_ids?/…}}."}},"type":"object","title":"ProductGraphBuildBody"},"ProductListResponse":{"properties":{"products":{"items":{"$ref":"#/components/schemas/ProductResponse"},"type":"array","title":"Products"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["products","total_count"],"title":"ProductListResponse","description":"Response for listing products"},"ProductNote":{"properties":{"line":{"type":"string","minLength":1,"title":"Line"},"speaker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker"}},"type":"object","required":["line"],"title":"ProductNote","description":"One fact the call gave about the team's own product, and who said it: the product context build reads these\nabove the transcript."},"ProductRefreshRequest":{"properties":{"scope_by_integration":{"additionalProperties":true,"type":"object","title":"Scope By Integration","description":"Per-integration scope OVERRIDE, used to carry the refresh watermark (`since`) into each source. Empty → the stored build scope verbatim."}},"type":"object","title":"ProductRefreshRequest"},"ProductResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"target_audience":{"type":"string","title":"Target Audience"},"product_website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Website"},"features":{"items":{"$ref":"#/components/schemas/FeatureResponse"},"type":"array","title":"Features","default":[]},"created_at":{"title":"Created At"}},"type":"object","required":["id","name","description","target_audience","created_at"],"title":"ProductResponse","description":"Product response model"},"ProductScopeUpdate":{"properties":{"scope_by_integration":{"additionalProperties":true,"type":"object","title":"Scope By Integration","description":"{source_slug: scope_config} to replay on every scheduled refresh."}},"type":"object","required":["scope_by_integration"],"title":"ProductScopeUpdate"},"ProductWebsiteEnrichmentFeature":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"ProductWebsiteEnrichmentFeature"},"ProductWebsiteEnrichmentRequest":{"properties":{"productWebsite":{"type":"string","title":"Productwebsite"},"productName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Productname"}},"type":"object","required":["productWebsite"],"title":"ProductWebsiteEnrichmentRequest"},"ProductWebsiteEnrichmentResponse":{"properties":{"productWebsite":{"type":"string","title":"Productwebsite"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"targetAudience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetaudience"},"features":{"items":{"$ref":"#/components/schemas/ProductWebsiteEnrichmentFeature"},"type":"array","title":"Features","default":[]},"sources":{"items":{"$ref":"#/components/schemas/ProductWebsiteEnrichmentSource"},"type":"array","title":"Sources","default":[]},"confidence":{"type":"string","title":"Confidence"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","default":[]}},"type":"object","required":["productWebsite","confidence"],"title":"ProductWebsiteEnrichmentResponse"},"ProductWebsiteEnrichmentSource":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ProductWebsiteEnrichmentSource"},"PrototypeScreenshotRequest":{"properties":{"imageDataUrl":{"type":"string","title":"Imagedataurl"},"prototypeCapture":{"additionalProperties":true,"type":"object","title":"Prototypecapture"}},"type":"object","required":["imageDataUrl"],"title":"PrototypeScreenshotRequest"},"PublicSharedContentResponse":{"properties":{"conversation_title":{"type":"string","title":"Conversation Title","description":"Title of the conversation"},"share_type":{"type":"string","title":"Share Type","description":"Type of share"},"content_type":{"type":"string","title":"Content Type","description":"Content type: 'research', 'discovery', 'presentation', or 'workflow_run'","default":"research"},"canvas":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Canvas","description":"Canvas data (for canvas_only or full_conversation)"},"presentation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Presentation","description":"Presentation data (presentation shares only)"},"messages":{"anyOf":[{"items":{"$ref":"#/components/schemas/SharedMessageContent"},"type":"array"},{"type":"null"}],"title":"Messages","description":"Messages (only for full_conversation share type)"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the share was created"},"snapshot_version":{"type":"integer","title":"Snapshot Version","description":"Version of canvas at time of share","default":1},"plan":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan","description":"Research plan (discovery only)"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question","description":"Original research question (discovery only)"},"board_graph":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Board Graph","description":"Board graph nodes/edges for layout (discovery only)"},"workflow_run":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Workflow Run","description":"Public summary of the shared run (workflow_run only)"},"personas":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Personas","description":"Frozen persona records referenced by interactive board nodes"},"chats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chats","description":"Frozen chat-message lists referenced by TwinChatNode"},"chat_evidence":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chat Evidence","description":"Frozen EvidenceTrail v2 keyed by chat id; lets the read-only Evidence panel render without an authenticated fetch"}},"type":"object","required":["conversation_title","share_type","created_at"],"title":"PublicSharedContentResponse","description":"Response for public shared content access"},"QuestionRequestV2":{"properties":{"personaId":{"type":"string","title":"Personaid"},"question":{"type":"string","title":"Question"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"topK":{"type":"integer","title":"Topk","default":5},"images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Images"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"LLM model to use (e.g., 'gpt-5.6-sol', 'claude-opus-5'). Defaults to the heavy tier (model_config.TIERS) if not provided","default":"gpt-6.1-sol"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v2__models__requests__MentionedProduct"},"type":"array"},{"type":"null"}],"title":"Mentionedproducts"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v2__models__requests__MentionedFeature"},"type":"array"},{"type":"null"}],"title":"Mentionedfeatures"}},"type":"object","required":["personaId","question"],"title":"QuestionRequestV2","description":"V2 request model for questions endpoint.\n\nSame fields as v1 PersonaAskRequest for backward compatibility."},"RefreshContextRequest":{"properties":{"society_key":{"type":"string","title":"Society Key","description":"Composite 'market/name' society key."},"user_id":{"type":"string","title":"User Id","description":"The refresh's pinned owner — whose connections are read."},"scope_by_integration":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Scope By Integration","description":"The society's stored per-source scope, plus this run's `since`."}},"type":"object","required":["society_key","user_id"],"title":"RefreshContextRequest"},"RefreshContextResponse":{"properties":{"society_id":{"type":"string","title":"Society Id"},"society_key":{"type":"string","title":"Society Key"},"source_mode":{"type":"string","title":"Source Mode"},"org_id":{"type":"string","title":"Org Id"},"display_name":{"type":"string","title":"Display Name"},"display_market":{"type":"string","title":"Display Market"},"society_description":{"type":"string","title":"Society Description"},"request_payload":{"additionalProperties":true,"type":"object","title":"Request Payload"},"unavailable_sources":{"additionalProperties":{"type":"string"},"type":"object","title":"Unavailable Sources","description":"Sources left out of this run, with why — the owner must reconnect them."}},"type":"object","required":["society_id","society_key","source_mode","org_id","display_name","display_market","society_description","request_payload"],"title":"RefreshContextResponse"},"RefreshInventoryRequest":{"properties":{"productName":{"type":"string","title":"Productname","default":""},"sourceSlug":{"type":"string","title":"Sourceslug"}},"type":"object","required":["sourceSlug"],"title":"RefreshInventoryRequest"},"RemoveMemberResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"RemoveMemberResponse"},"ReplaceProductOrganizationsRequest":{"properties":{"organization_ids":{"items":{"type":"string"},"type":"array","title":"Organization Ids"}},"type":"object","required":["organization_ids"],"title":"ReplaceProductOrganizationsRequest"},"ReplaceSocietyOrganizationsRequest":{"properties":{"organization_ids":{"items":{"type":"string"},"type":"array","title":"Organization Ids"}},"type":"object","required":["organization_ids"],"title":"ReplaceSocietyOrganizationsRequest"},"ReprovisionResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"billing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Status"},"stripe_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Subscription Id"}},"type":"object","required":["organization_id"],"title":"ReprovisionResponse"},"ResendVerificationRequest":{"properties":{"idToken":{"type":"string","title":"Idtoken","description":"Firebase ID token"}},"type":"object","required":["idToken"],"title":"ResendVerificationRequest"},"ResendVerificationResponse":{"properties":{"verification_email_sent":{"type":"boolean","title":"Verification Email Sent","default":false},"verification_email_fallback_required":{"type":"boolean","title":"Verification Email Fallback Required","default":false}},"type":"object","title":"ResendVerificationResponse"},"ResubscribeSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ResubscribeSessionResponse"},"ResumeRequest":{"properties":{"executionId":{"type":"string","title":"Executionid"},"userResponse":{"title":"Userresponse"}},"type":"object","required":["executionId","userResponse"],"title":"ResumeRequest"},"RevokeInviteResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"RevokeInviteResponse"},"RosterMember":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id"],"title":"RosterMember","description":"A twin in a group chat. ``name``/``role`` ground the relevance gate's\npick and label who-said-what in cross-turn history; they're not\nauthoritative (the real persona bundle is loaded at generation time)."},"RunRequest":{"properties":{"versions":{"additionalProperties":{"type":"string","format":"uuid"},"type":"object","title":"Versions"},"board_id":{"type":"string","format":"uuid","title":"Board Id"},"section_id":{"type":"string","maxLength":200,"minLength":1,"title":"Section Id"},"finding_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Finding Ids"},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""}},"type":"object","required":["versions","board_id","section_id","finding_ids"],"title":"RunRequest"},"SaveAccessPolicyRequest":{"properties":{"productName":{"type":"string","title":"Productname","default":""},"sourceSlug":{"type":"string","title":"Sourceslug"},"accessMode":{"type":"string","title":"Accessmode","default":"selected"},"grants":{"items":{"$ref":"#/components/schemas/SourceResourceGrantItem"},"type":"array","title":"Grants"}},"type":"object","required":["sourceSlug"],"title":"SaveAccessPolicyRequest"},"ScoreOverrides":{"properties":{"goal_relevance":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Goal Relevance"},"usefulness":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Usefulness"},"specificity":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Specificity"}},"additionalProperties":false,"type":"object","required":["goal_relevance","usefulness","specificity"],"title":"ScoreOverrides"},"SetMemberRoleRequest":{"properties":{"role":{"type":"string","enum":["admin","member"],"title":"Role","description":"New organization role"}},"type":"object","required":["role"],"title":"SetMemberRoleRequest"},"SetMemberRoleResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"SetMemberRoleResponse"},"ShareListItem":{"properties":{"share_token":{"type":"string","title":"Share Token"},"share_type":{"type":"string","title":"Share Type"},"is_active":{"type":"boolean","title":"Is Active"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"access_count":{"type":"integer","title":"Access Count"},"last_accessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Accessed At"},"share_url":{"type":"string","title":"Share Url"}},"type":"object","required":["share_token","share_type","is_active","expires_at","created_at","access_count","last_accessed_at","share_url"],"title":"ShareListItem","description":"Individual share in a list"},"ShareListResponse":{"properties":{"shares":{"items":{"$ref":"#/components/schemas/ShareListItem"},"type":"array","title":"Shares"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["shares","total_count"],"title":"ShareListResponse","description":"Response for listing shares"},"SharePresentationRequest":{"properties":{"expiresInDays":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Expiresindays"},"baseUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Baseurl"}},"additionalProperties":false,"type":"object","title":"SharePresentationRequest"},"ShareResponse":{"properties":{"share_token":{"type":"string","title":"Share Token","description":"The unique share token"},"share_url":{"type":"string","title":"Share Url","description":"Full URL for sharing"},"share_type":{"type":"string","title":"Share Type","description":"Type of share (canvas_only or full_conversation)"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Expiration timestamp"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"}},"type":"object","required":["share_token","share_url","share_type","created_at"],"title":"ShareResponse","description":"Response after creating a share"},"SharedMessageContent":{"properties":{"sequence":{"type":"integer","title":"Sequence"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"uploaded_files":{"anyOf":[{"items":{"$ref":"#/components/schemas/SharedUploadedFile"},"type":"array"},{"type":"null"}],"title":"Uploaded Files"},"mentioned_products":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Mentioned Products"},"mentioned_features":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Mentioned Features"}},"type":"object","required":["sequence","role","content","created_at"],"title":"SharedMessageContent","description":"Message content for public view (sanitized)"},"SharedUploadedFile":{"properties":{"filename":{"type":"string","title":"Filename"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"index":{"type":"integer","title":"Index","default":0},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"size_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Chars"},"gcs_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gcs Path"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"extraction_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extraction Status"}},"type":"object","required":["filename"],"title":"SharedUploadedFile","description":"Sanitized uploaded file metadata for public share messages."},"SignupCompleteRequest":{"properties":{"idToken":{"type":"string","title":"Idtoken","description":"Firebase ID token"},"firstName":{"type":"string","maxLength":100,"minLength":1,"title":"Firstname","description":"First name"},"lastName":{"type":"string","maxLength":100,"minLength":1,"title":"Lastname","description":"Last name"},"companyName":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Companyname","description":"Company name"},"sendBrandedVerificationEmail":{"type":"boolean","title":"Sendbrandedverificationemail","default":false},"inviteToken":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Invitetoken","description":"Org invite token, if signing up via an invite link"}},"type":"object","required":["idToken","firstName","lastName"],"title":"SignupCompleteRequest"},"SignupCompleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"user_id":{"type":"string","title":"User Id"},"verification_email_sent":{"type":"boolean","title":"Verification Email Sent","default":false},"verification_email_fallback_required":{"type":"boolean","title":"Verification Email Fallback Required","default":false},"organization_created":{"type":"boolean","title":"Organization Created","default":false},"organization_joined":{"type":"boolean","title":"Organization Joined","default":false},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"invite_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invite Warning"}},"type":"object","required":["success","message","user_id"],"title":"SignupCompleteResponse"},"SlackGroupChatContinueRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^slack-ws-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"event_id":{"type":"string","maxLength":160,"minLength":1,"title":"Event Id"},"board_id":{"type":"string","maxLength":160,"minLength":1,"title":"Board Id"},"source_node_id":{"type":"string","maxLength":200,"minLength":1,"title":"Source Node Id"},"roster_ids":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Roster Ids"},"excluded_twin_ids":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Excluded Twin Ids"},"triggering_text":{"type":"string","maxLength":6000,"minLength":1,"title":"Triggering Text"},"triggering_speaker":{"type":"string","maxLength":40,"minLength":1,"title":"Triggering Speaker","default":"Teammate 1"},"thread_messages":{"items":{"$ref":"#/components/schemas/SlackThreadTurn"},"type":"array","maxItems":15,"title":"Thread Messages"}},"type":"object","required":["owner_user_id","trace_subject_id","event_id","board_id","source_node_id","roster_ids","triggering_text"],"title":"SlackGroupChatContinueRequest"},"SlackGroupChatReply":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"society_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Society Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"text":{"type":"string","title":"Text"},"evidence_refs":{"items":{"type":"string"},"type":"array","title":"Evidence Refs"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"},"evidence_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","required":["persona_id","name","text"],"title":"SlackGroupChatReply"},"SlackGroupChatResponse":{"properties":{"status":{"type":"string","enum":["ok","generation_failed","context_not_found"],"title":"Status"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"board_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Id"},"source_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Node Id"},"board_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Url"},"roster_ids":{"items":{"type":"string"},"type":"array","title":"Roster Ids"},"decisions":{"items":{"$ref":"#/components/schemas/SlackTwinDecision"},"type":"array","title":"Decisions"},"replies":{"items":{"$ref":"#/components/schemas/SlackGroupChatReply"},"type":"array","title":"Replies"}},"type":"object","required":["status"],"title":"SlackGroupChatResponse"},"SlackGroupChatStartRequest":{"properties":{"owner_user_id":{"type":"string","maxLength":160,"minLength":1,"title":"Owner User Id"},"trace_subject_id":{"type":"string","pattern":"^slack-ws-[A-Za-z0-9-]{16,150}$","title":"Trace Subject Id"},"event_id":{"type":"string","maxLength":160,"minLength":1,"title":"Event Id"},"society_ids":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Society Ids"},"eligible_twin_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":500},{"type":"null"}],"title":"Eligible Twin Ids"},"excluded_twin_ids":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Excluded Twin Ids"},"triggering_text":{"type":"string","maxLength":6000,"minLength":1,"title":"Triggering Text"},"triggering_speaker":{"type":"string","maxLength":40,"minLength":1,"title":"Triggering Speaker","default":"Teammate 1"},"thread_messages":{"items":{"$ref":"#/components/schemas/SlackThreadTurn"},"type":"array","maxItems":15,"title":"Thread Messages"}},"type":"object","required":["owner_user_id","trace_subject_id","event_id","society_ids","triggering_text"],"title":"SlackGroupChatStartRequest"},"SlackThreadTurn":{"properties":{"speaker":{"type":"string","maxLength":40,"minLength":1,"title":"Speaker"},"text":{"type":"string","maxLength":6000,"minLength":1,"title":"Text"}},"type":"object","required":["speaker","text"],"title":"SlackThreadTurn"},"SlackTraceDeletionResponse":{"properties":{"trace_subject_id":{"type":"string","title":"Trace Subject Id"},"traces_scheduled_for_deletion":{"type":"integer","title":"Traces Scheduled For Deletion"}},"type":"object","required":["trace_subject_id","traces_scheduled_for_deletion"],"title":"SlackTraceDeletionResponse"},"SlackTwinDecision":{"properties":{"persona_id":{"type":"string","title":"Persona Id"},"should_respond":{"type":"boolean","title":"Should Respond"},"reason":{"type":"string","enum":["selected_relevant","not_selected"],"title":"Reason"}},"type":"object","required":["persona_id","should_respond","reason"],"title":"SlackTwinDecision"},"SocietyAddContextResponse":{"properties":{"society_id":{"type":"string","title":"Society Id"},"product_name":{"type":"string","title":"Product Name","default":""}},"type":"object","required":["society_id"],"title":"SocietyAddContextResponse"},"SocietyCreationRequest":{"properties":{"market":{"type":"string","minLength":1,"title":"Market","description":"Market slug, e.g. 'b2b_saas'."},"displayName":{"type":"string","minLength":1,"title":"Displayname"},"description":{"type":"string","title":"Description","default":""},"sourceMode":{"type":"string","enum":["market","customer","mixed","agent_documents"],"title":"Sourcemode","description":"'customer' fetches from the user's Composio integrations; 'agent_documents' ingests documents the user's agent already extracted and stashed via the MCP tool (no Composio fetch — requires agent_payload_id). Downstream the pipeline treats agent_documents identically to customer.","default":"market"},"agentPayloadId":{"type":"string","title":"Agentpayloadid","description":"Id of a row in mcp_agent_document_payloads holding the agent-supplied documents. Required when source_mode='agent_documents'; ignored otherwise.","default":""},"selectedMarketSignals":{"items":{"type":"string"},"type":"array","title":"Selectedmarketsignals"},"selectedIntegrations":{"items":{"type":"string"},"type":"array","title":"Selectedintegrations","description":"Composio toolkit slugs to fetch from (e.g. 'granola_mcp'). Empty list when source_mode='market'."},"scopeByIntegration":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Scopebyintegration","description":"Per-source scope keyed by wireSlug (matches selected_integrations). Persisted into society_source_connections.scope_config and honored by the bronze_integrations_snapshot fetch step. Slack: {mode, channel_ids}. Google: {mode, folder_ids, file_ids}. Granola: {mode, meeting_ids, folder_ids}. HubSpot: {mode: selected, contact_ids}, 1–50 contacts. Empty dict = full-access default except HubSpot, which requires selection."},"requirements":{"type":"string","title":"Requirements","default":""},"productName":{"type":"string","title":"Productname","default":""},"populationRows":{"type":"integer","maximum":500.0,"minimum":10.0,"title":"Populationrows","default":60},"marketReportCount":{"type":"integer","maximum":200.0,"minimum":5.0,"title":"Marketreportcount","default":30},"toolResearchCount":{"type":"integer","maximum":200.0,"minimum":5.0,"title":"Toolresearchcount","default":25},"mindsetClusterCount":{"type":"integer","maximum":100.0,"minimum":3.0,"title":"Mindsetclustercount","default":12},"extendedDocCount":{"type":"integer","maximum":200.0,"minimum":10.0,"title":"Extendeddoccount","default":40},"socialPerSourceN":{"anyOf":[{"type":"integer","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Socialpersourcen"},"llmStack":{"anyOf":[{"type":"string","enum":["openai","google"]},{"type":"null"}],"title":"Llmstack","description":"Model family preset. When omitted, Mode 1 defaults to 'openai' and Mode 2/mixed defaults to 'google' inside the orchestrator (preserves pre-feature behavior)."}},"type":"object","required":["market","displayName"],"title":"SocietyCreationRequest","description":"Mirrors the AddSocietyModal `PrototypeSociety` payload shape (see\n`evidenso-ui/client/src/components/AddSocietyModal.tsx`)."},"SocietyCreationResponse":{"properties":{"society_id":{"type":"string","title":"Society Id","description":"Society UUID (matches personas.society_id and /v1/personas/groups). Use this for in-progress card → real society reconciliation in the UI."},"society_key":{"type":"string","title":"Society Key","description":"Composite 'market/name' identifier used by digital-twin-api Gold tables. Useful for cross-service URLs."},"market":{"type":"string","title":"Market"},"name":{"type":"string","title":"Name"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"Pre-allocated pipeline job_id. Present from the moment this endpoint returns (no more polling /v1/societies/pipeline-job to dereference (market, name) → job_id). The UI uses this to wire the in-progress card to /pipelines/jobs/{id} immediately. May be null only if pre-allocation failed — in which case the UI falls back to the legacy dereference path until the orchestrator stashes a job_id on the society_source_connections rows."},"eta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Eta","description":"Expected pipeline runtime in minutes — from digital-twin-api's ``pipeline_eta`` helper at preallocation time. Shape: ``{expected_minutes, p90_minutes, basis, step_share}``. The MCP tool renders this so the agent can tell the user the expected duration upfront. May be omitted when pre-allocation couldn't return an estimate (rare; pipeline still runs)."}},"type":"object","required":["society_id","society_key","market","name"],"title":"SocietyCreationResponse"},"SocietySelection":{"properties":{"market":{"type":"string","maxLength":200,"minLength":1,"title":"Market"},"jobRole":{"type":"string","maxLength":200,"minLength":1,"title":"Jobrole"},"societyId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Societyid"}},"type":"object","required":["market","jobRole"],"title":"SocietySelection"},"SourceResourceGrantItem":{"properties":{"resourceType":{"type":"string","title":"Resourcetype"},"resourceId":{"type":"string","title":"Resourceid"},"resourceName":{"type":"string","title":"Resourcename","default":""},"parentId":{"type":"string","title":"Parentid","default":""},"mimeType":{"type":"string","title":"Mimetype","default":""},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["resourceType","resourceId"],"title":"SourceResourceGrantItem"},"StaffCreateInviteRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Invitee's email address"},"role":{"type":"string","enum":["admin","member"],"title":"Role","description":"Role the invitee joins with","default":"member"}},"type":"object","required":["email"],"title":"StaffCreateInviteRequest"},"StartExpertReviewRequest":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version"},"website_url":{"type":"string","maxLength":2048,"minLength":1,"title":"Website Url"},"researcher_brief":{"type":"string","maxLength":8000,"minLength":1,"title":"Researcher Brief"}},"additionalProperties":false,"type":"object","required":["schema_version","website_url","researcher_brief"],"title":"StartExpertReviewRequest"},"SubmitPositionRequest":{"properties":{"positionText":{"type":"string","maxLength":500,"minLength":1,"title":"Positiontext"},"positionImage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Positionimage"},"positionImageFilename":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Positionimagefilename"}},"type":"object","required":["positionText"],"title":"SubmitPositionRequest"},"SurveyRequest":{"properties":{"question":{"type":"string","title":"Question","description":"Full message content"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"topK":{"type":"integer","title":"Topk","description":"Always 3","default":3},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Always 'survey_simulation'","default":"survey_simulation"},"num_respondents":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":10.0},{"type":"null"}],"title":"Num Respondents","description":"Sample size from UI (10-100,000)","default":1000},"job_role":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Job Role","description":"Multiselect dropdown: Job roles from persona group (e.g., ['Product Manager', 'Engineer']) or single string"},"country":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Country","description":"Multiselect dropdown: Countries (e.g., ['UK', 'US']) or comma-separated string like 'UK,US'"},"seniority":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Seniority","description":"Multiselect dropdown: Seniority levels (e.g., ['Senior', 'Executive']) or single string"},"experience":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Experience","description":"Multiselect dropdown: Experience ranges (e.g., ['5-10 years', '10+ years']) or single string"},"position":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Position","description":"Multiselect dropdown: Positions/titles (e.g., ['Product Manager', 'Director']) or single string"},"images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Images","description":"Base64-encoded images"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"LLM model to use (e.g., 'gpt-5', 'gpt-4o'). Defaults to 'gpt-5' if not provided"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__models__persona_v1__MentionedProduct"},"type":"array"},{"type":"null"}],"title":"Mentionedproducts","description":"Products mentioned via @ autocomplete"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__models__persona_v1__MentionedFeature"},"type":"array"},{"type":"null"}],"title":"Mentionedfeatures","description":"Features mentioned via @ autocomplete"}},"type":"object","required":["question"],"title":"SurveyRequest"},"TopupSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"TopupSessionResponse"},"TurnItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"seq":{"type":"integer","minimum":0.0,"title":"Seq"},"schema":{"type":"integer","minimum":1.0,"title":"Schema"},"type":{"type":"string","const":"turn","title":"Type"},"channel":{"type":"string","enum":["you","customer_side"],"title":"Channel"},"start_s":{"type":"number","minimum":0.0,"title":"Start S"},"end_s":{"type":"number","minimum":0.0,"title":"End S"},"text":{"type":"string","maxLength":20000,"title":"Text"}},"type":"object","required":["id","seq","schema","type","channel","start_s","end_s","text"],"title":"TurnItem"},"TwinChatRequest":{"properties":{"personaId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personaid"},"roster":{"anyOf":[{"items":{"$ref":"#/components/schemas/RosterMember"},"type":"array","maxItems":12},{"type":"null"}],"title":"Roster"},"askAll":{"type":"boolean","title":"Askall","default":false},"mentionedPersonaIds":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":12},{"type":"null"}],"title":"Mentionedpersonaids"},"question":{"type":"string","maxLength":5000,"minLength":1,"title":"Question"},"conversationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationid"},"boardId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boardid"},"sourceNodeId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sourcenodeid"},"contextSectionIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextsectionids"},"contextNodeIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Contextnodeids"},"mentionedProducts":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__twin_chat_api__MentionedProduct"},"type":"array","maxItems":50},{"type":"null"}],"title":"Mentionedproducts"},"mentionedFeatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/src__v3__api__twin_chat_api__MentionedFeature"},"type":"array","maxItems":100},{"type":"null"}],"title":"Mentionedfeatures"},"attachments":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Attachments"}},"type":"object","required":["question"],"title":"TwinChatRequest"},"TwinChatTurnBody":{"properties":{"question":{"type":"string","minLength":1,"title":"Question"},"roster":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Roster"},"ask_all":{"type":"boolean","title":"Ask All","default":false},"mentioned_persona_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mentioned Persona Ids"}},"type":"object","required":["question"],"title":"TwinChatTurnBody"},"UpdateBoardRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"nodes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Nodes"},"edges":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Edges"},"defaultSocietyIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Defaultsocietyids"},"defaultProductId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Defaultproductid"},"defaultModelOverrides":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Defaultmodeloverrides"}},"type":"object","title":"UpdateBoardRequest"},"UpdatePresentationRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":160,"minLength":1},{"type":"null"}],"title":"Title"},"theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Theme"},"slides":{"anyOf":[{"items":{"$ref":"#/components/schemas/PresentationSlidePatch"},"type":"array","maxItems":200},{"type":"null"}],"title":"Slides"},"status":{"anyOf":[{"type":"string","enum":["draft","published","archived"]},{"type":"null"}],"title":"Status"},"expectedUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expectedupdatedat"}},"additionalProperties":false,"type":"object","title":"UpdatePresentationRequest"},"UpdateProblemScoresRequest":{"properties":{"scoreOverrides":{"$ref":"#/components/schemas/ScoreOverrides"},"assessmentId":{"anyOf":[{"type":"string","enum":["raw","extracted","delivered","agent"]},{"type":"null"}],"title":"Assessmentid"},"assessmentVersion":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Assessmentversion"}},"additionalProperties":false,"type":"object","required":["scoreOverrides"],"title":"UpdateProblemScoresRequest"},"UpdateSectionRequest":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["data"],"title":"UpdateSectionRequest"},"UpdateShareRequest":{"properties":{"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"Whether share is active"},"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days","description":"Update expiration (None = no change, 0 = remove expiration)"}},"type":"object","title":"UpdateShareRequest","description":"Request to update share settings"},"UpdateSocietyDisplayRequest":{"properties":{"display_name":{"type":"string","title":"Display Name","description":"User-facing society name"},"display_market":{"type":"string","title":"Display Market","description":"User-facing market label"}},"type":"object","required":["display_name","display_market"],"title":"UpdateSocietyDisplayRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"src__api__admin_api__UserResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"company":{"type":"string","title":"Company"}},"type":"object","required":["user_id","email","first_name","last_name","company"],"title":"UserResponse"},"src__api__design_feedback_benchmark_api__CreateRunRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url"},"goal":{"type":"string","maxLength":500,"minLength":1,"title":"Goal"},"societyId":{"type":"string","maxLength":300,"minLength":1,"title":"Societyid"},"agentClient":{"type":"string","enum":["claude_code","codex"],"title":"Agentclient","default":"claude_code"},"comparisonModelId":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Comparisonmodelid"},"judgeModelId":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Judgemodelid"},"allowSameModelJudge":{"type":"boolean","title":"Allowsamemodeljudge","default":false},"designFeedbackCount":{"type":"integer","maximum":2.0,"minimum":1.0,"title":"Designfeedbackcount","default":2},"agentCount":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Agentcount","default":10},"twinModels":{"type":"string","enum":["default","mix"],"title":"Twinmodels","default":"default"},"signInId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Signinid"}},"type":"object","required":["url","goal","societyId"],"title":"CreateRunRequest"},"src__api__market_intelligence_benchmark_api__CreateRunRequest":{"properties":{"societyId":{"type":"string","minLength":1,"title":"Societyid"},"marketIntelligenceId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Marketintelligenceid"},"querySetVersionId":{"type":"string","minLength":1,"title":"Querysetversionid"},"generationModelId":{"type":"string","minLength":1,"title":"Generationmodelid"},"judgeModelId":{"type":"string","minLength":1,"title":"Judgemodelid"},"runType":{"type":"string","pattern":"^(dry_run|full)$","title":"Runtype"},"benchmarkMode":{"type":"string","title":"Benchmarkmode","default":"third_party_search"},"queryLimit":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Querylimit"},"selectedQueryIndexes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Selectedqueryindexes"},"allowSameModelJudge":{"type":"boolean","title":"Allowsamemodeljudge","default":false}},"type":"object","required":["societyId","querySetVersionId","generationModelId","judgeModelId","runType"],"title":"CreateRunRequest"},"src__models__persona_v1__MentionedFeature":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeature","description":"Feature mention from frontend @ autocomplete"},"src__models__persona_v1__MentionedProduct":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProduct","description":"Product mention from frontend @ autocomplete"},"src__models__user__UserResponse":{"properties":{"firebase_uid":{"type":"string","title":"Firebase Uid"},"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"profile_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Image Url"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["firebase_uid","email","first_name","last_name","created_at","updated_at"],"title":"UserResponse","description":"Response model for user data"},"src__v2__models__requests__MentionedFeature":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeature","description":"Feature mention from frontend @ autocomplete"},"src__v2__models__requests__MentionedProduct":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProduct","description":"Product mention from frontend @ autocomplete"},"src__v3__api__discovery_api__MentionedFeature":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeature"},"src__v3__api__discovery_api__MentionedProduct":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProduct"},"src__v3__api__section_iteration_api__MentionedFeature":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeature"},"src__v3__api__section_iteration_api__MentionedProduct":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProduct"},"src__v3__api__twin_chat_api__MentionedFeature":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"productId":{"type":"string","title":"Productid"}},"type":"object","required":["id","name","productId"],"title":"MentionedFeature"},"src__v3__api__twin_chat_api__MentionedProduct":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"MentionedProduct"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}