{"openapi":"3.1.0","info":{"title":"Hesper AI - Claims Investigator","description":"AI-powered insurance claims investigation","version":"0.1.0"},"paths":{"/api/teams":{"get":{"summary":"List My Teams","operationId":"list_my_teams_api_teams_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List My Teams Api Teams Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create New Team","operationId":"create_new_team_api_teams_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTeamRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create New Team Api Teams Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/me":{"get":{"summary":"Get Active Team","description":"The session. Reachable while the account is still awaiting approval\n(require_identity) so the frontend can show the pending screen; every\nother route 403s until a founder approves.","operationId":"get_active_team_api_teams_me_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Active Team Api Teams Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/me/intake-address":{"get":{"summary":"Get Intake Address","description":"The address workspace members email to open a claim, or null when\ninbound email is not configured on this deployment.","operationId":"get_intake_address_api_teams_me_intake_address_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Intake Address Api Teams Me Intake Address Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/me/settings":{"patch":{"summary":"Update Active Team Settings","description":"Replace the active team's settings (insurance verticals + agent roster).\n\nScoped to the active team (X-Team-Id), so a founder in god mode writes the\nimpersonated team's settings — exactly the team whose settings the UI shows.\nmember+ can write; viewers are read-only.","operationId":"update_active_team_settings_api_teams_me_settings_patch","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Active Team Settings Api Teams Me Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/superadmin-controls":{"patch":{"summary":"Set Team Superadmin Controls","description":"Founder-only: switch a team's superadmin controls.\n\n- review_required: while on, the team's finished investigations park at\n  pending_review (with a Slack ping to the founders) and the output is\n  released to the customer only after a founder approves it.\n- hespergpt_enabled: while off, the workspace's HesperGPT claim chat is\n  hidden and the chat endpoints refuse.\n- proceed_without_documents: while on, a claim missing a required\n  document still runs to a verdict instead of parking at\n  awaiting_documents, and the claimant is not chased for the document.\n- clinical_agents_api: while on, the clinical-reasoning steps run on the\n  hosted OpenAI Agents API with the claim's full documents mounted in a\n  container (fetched from S3 by presigned URL) instead of a truncated\n  OCR-text prompt.\n- flag_threshold: the risk score at or above which the team's cases count\n  as Flagged on the Claims board (default 70, range 40-100).\n- contents_enabled: while on, the workspace gets Contents (inventory &\n  pricing); while off, /api/contents/* answers 404 for it.\n\nKept out of TeamSettingsRequest on purpose — customers must not be able\nto toggle their own flags.","operationId":"set_team_superadmin_controls_api_teams__team_id__superadmin_controls_patch","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuperadminControlsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Team Superadmin Controls Api Teams  Team Id  Superadmin Controls Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/all":{"get":{"summary":"List All Teams Route","description":"Founder/god-mode only: every team, for the cross-team switcher picker.\n\nDeclared before /teams/{team_id} so \"all\" isn't parsed as a team UUID.","operationId":"list_all_teams_route_api_teams_all_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List All Teams Route Api Teams All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users":{"get":{"summary":"List All Users Route","description":"Every account with its approval state, pending first.","operationId":"list_all_users_route_api_users_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List All Users Route Api Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/{user_id}/approve":{"post":{"summary":"Approve User Route","operationId":"approve_user_route_api_users__user_id__approve_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve User Route Api Users  User Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/{user_id}/revoke-approval":{"post":{"summary":"Revoke User Approval Route","operationId":"revoke_user_approval_route_api_users__user_id__revoke_approval_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke User Approval Route Api Users  User Id  Revoke Approval Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}":{"get":{"summary":"Get Team Detail","operationId":"get_team_detail_api_teams__team_id__get","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Team Detail Api Teams  Team Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Rename Team","operationId":"rename_team_api_teams__team_id__patch","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rename Team Api Teams  Team Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Team","operationId":"delete_team_api_teams__team_id__delete","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/members":{"get":{"summary":"List Team Members","operationId":"list_team_members_api_teams__team_id__members_get","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Team Members Api Teams  Team Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/members/{user_id}":{"patch":{"summary":"Update Member Role","operationId":"update_member_role_api_teams__team_id__members__user_id__patch","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Member Role Api Teams  Team Id  Members  User Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Remove Team Member","operationId":"remove_team_member_api_teams__team_id__members__user_id__delete","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/members/{user_id}/transfer-ownership":{"post":{"summary":"Transfer Team Ownership","operationId":"transfer_team_ownership_api_teams__team_id__members__user_id__transfer_ownership_post","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/invites":{"get":{"summary":"List Team Invites","operationId":"list_team_invites_api_teams__team_id__invites_get","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Team Invites Api Teams  Team Id  Invites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Team Invite","operationId":"create_team_invite_api_teams__team_id__invites_post","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Team Invite Api Teams  Team Id  Invites Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/invites/{invite_id}":{"delete":{"summary":"Revoke Team Invite","operationId":"revoke_team_invite_api_teams__team_id__invites__invite_id__delete","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invite Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/join-requests":{"get":{"summary":"List Team Join Requests","description":"Pending requests from same-domain signups waiting on approval (admin+).","operationId":"list_team_join_requests_api_teams__team_id__join_requests_get","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Team Join Requests Api Teams  Team Id  Join Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/join-requests/{request_id}/approve":{"post":{"summary":"Approve Team Join Request","operationId":"approve_team_join_request_api_teams__team_id__join_requests__request_id__approve_post","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/{team_id}/join-requests/{request_id}/deny":{"post":{"summary":"Deny Team Join Request","operationId":"deny_team_join_request_api_teams__team_id__join_requests__request_id__deny_post","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/join-requests":{"get":{"summary":"List My Join Requests","description":"The caller's own pending join requests.\n\nPowers the \"your company already has a workspace\" banner: it names the\nteam and surfaces the owner's email so the requester knows who to ask\nfor approval.","operationId":"list_my_join_requests_api_me_join_requests_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List My Join Requests Api Me Join Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/invites":{"get":{"summary":"List My Invites","description":"Pending invites addressed to the signed-in user's email.\n\nPowers the \"you've been invited\" banner shown after login. Includes the\ntoken because the invite is addressed to this user and the token is what\n/api/invites/accept redeems.","operationId":"list_my_invites_api_me_invites_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List My Invites Api Me Invites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invites/{token}":{"get":{"summary":"Preview Invite","description":"Public — surface team name + role so the accept page can render before sign-in.","operationId":"preview_invite_api_invites__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Invite Api Invites  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invites/accept":{"post":{"summary":"Accept Team Invite","description":"Redeem an invite. Open to accounts still awaiting approval: the invite\ncame from an approved workspace, and accepting it approves the account.","operationId":"accept_team_invite_api_invites_accept_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accept Team Invite Api Invites Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate":{"post":{"summary":"Start Investigation","description":"Start an investigation from a manual upload of zero or more files.\n\nA claim needs *something* to work from, but not necessarily a document — a\ntyped FNOL description on its own is enough. Files are optional so a\nclaims-team user can open a case from an email or phone note before any\npaperwork arrives.","operationId":"start_investigation_api_investigate_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_start_investigation_api_investigate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}":{"get":{"summary":"Get Investigation Detail","description":"Get full investigation details including all step results.","operationId":"get_investigation_detail_api_investigate__investigation_id__get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Investigation Route","description":"Delete a single investigation from the store.","operationId":"delete_investigation_route_api_investigate__investigation_id__delete","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/audit-report.pdf":{"get":{"summary":"Download Audit Report","description":"Court-ready forensic audit report (PDF) for a completed claim.\n\nTeam-scoped like every claim route; blocked while the review gate holds the\noutput. The payload is assembled server-side from the investigation and\nrendered with WeasyPrint.","operationId":"download_audit_report_api_investigate__investigation_id__audit_report_pdf_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/copilot":{"get":{"summary":"Copilot Thread","description":"The caller's private copilot thread + the claim's team insights.","operationId":"copilot_thread_api_investigate__investigation_id__copilot_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Copilot Send","description":"One grounded copilot turn: HesperGPT's agent + citation validation,\nplus a persisted private thread and assumption/insight annotations.","operationId":"copilot_send_api_investigate__investigation_id__copilot_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopilotMessage"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Copilot Clear","operationId":"copilot_clear_api_investigate__investigation_id__copilot_delete","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/copilot/messages/{log_id}/share":{"post":{"summary":"Copilot Share","description":"Promote one of the caller's copilot answers to the team insights feed.","operationId":"copilot_share_api_investigate__investigation_id__copilot_messages__log_id__share_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"log_id","in":"path","required":true,"schema":{"type":"string","title":"Log Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/copilot/insights/{insight_id}":{"delete":{"summary":"Copilot Unshare","operationId":"copilot_unshare_api_investigate__investigation_id__copilot_insights__insight_id__delete","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"insight_id","in":"path","required":true,"schema":{"type":"string","title":"Insight Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/files/{file_index}":{"get":{"summary":"Get Investigation File","description":"Stream a single attached file by index for in-app previews.\n\nRange-aware so uploaded video/audio evidence plays inline (Media Forensics\npreview). The stored content-type is corrected for A/V when it's missing or\na generic octet-stream, which would otherwise stop a <video> from decoding.","operationId":"get_investigation_file_api_investigate__investigation_id__files__file_index__get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"file_index","in":"path","required":true,"schema":{"type":"integer","title":"File Index"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/files/{file_index}/pages/{page_number}.png":{"get":{"summary":"Get Investigation File Page","description":"Render a single page of a PDF (or wrap a single image) as PNG.\n\nPowers the Document OCR viewer for live uploads — page-by-page images\nthat the frontend overlays bounding boxes on, mirroring Forensics.","operationId":"get_investigation_file_page_api_investigate__investigation_id__files__file_index__pages__page_number__png_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"file_index","in":"path","required":true,"schema":{"type":"integer","title":"File Index"}},{"name":"page_number","in":"path","required":true,"schema":{"type":"integer","title":"Page Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/files/{file_index}/ocr":{"get":{"summary":"Get Investigation File Ocr","description":"Per-page OCR with bounding boxes. Cached per (investigation, file).","operationId":"get_investigation_file_ocr_api_investigate__investigation_id__files__file_index__ocr_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"file_index","in":"path","required":true,"schema":{"type":"integer","title":"File Index"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/forensic/{filename}":{"get":{"summary":"Get Forensic Detail","description":"Fetch the full NineNine forensic document for one file in a case.\n\nAlways prefers a live NineNine fetch so we get fresh page_images_urls,\nsigned_url, and the latest analysis blob. Falls back to whatever was\npersisted in per_file[].analysis if NineNine 404s.\n\nFilenames are not unique within a claim, so `i` (the file's ord in\ninvestigation.files) disambiguates duplicates. It is only trusted when it\npoints at a file with the routed filename; otherwise resolution falls back\nto the legacy first-filename-match behavior.\n\nBy default the large Deep Scan / heatmap base64 blobs are stripped for a\nfast first render; pass `include_assets=true` to get them when a toggle is\nactivated.","operationId":"get_forensic_detail_api_investigate__investigation_id__forensic__filename__get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"include_assets","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Assets"}},{"name":"i","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"I"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/stream":{"get":{"summary":"Stream Investigation","description":"SSE stream for live investigation progress.","operationId":"stream_investigation_api_investigate__investigation_id__stream_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigations":{"get":{"summary":"List All Investigations","description":"List investigations for the active team, most recent first.\n\nWhen ``types`` is supplied (the verticals switched on in Settings), the\nlist is scoped server-side to the live pipelines backing those verticals,\nso the frontend never receives cases for switched-off verticals. With\n``page`` the response is one page plus the board's counts; ``status``,\n``product`` and ``q`` narrow that page and its ``total``.","operationId":"list_all_investigations_api_investigations_get","parameters":[{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated insurance verticals to scope the list to (e.g. 'pet,homeowners'). Omit to return every case.","title":"Types"},"description":"Comma-separated insurance verticals to scope the list to (e.g. 'pet,homeowners'). Omit to return every case."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Page to return, 50 claims per page. When present the response is {items, page, page_size, total, counts, scope_total}; when absent it is every claim in the types scope as an array.","title":"Page"},"description":"Page to return, 50 claims per page. When present the response is {items, page, page_size, total, counts, scope_total}; when absent it is every claim in the types scope as an array."},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"all, in_progress, complete, flagged or cleared. Paged only.","default":"all","title":"Status"},"description":"all, in_progress, complete, flagged or cleared. Paged only."},{"name":"product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One insurance type (the product chip), within types. Paged only.","title":"Product"},"description":"One insurance type (the product chip), within types. Paged only."},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Search text, up to 200 characters: case number, claimant, policy number, provider or a file name. Paged only.","default":"","title":"Q"},"description":"Search text, up to 200 characters: case number, claimant, policy number, provider or a file name. Paged only."},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/reinvestigate":{"post":{"summary":"Reinvestigate Route","description":"Re-run the pipeline on an existing case from scratch.\n\nClears prior step results / report / risk and re-queues the same files\nthrough the same pipeline. The SSE stream re-emits events as steps run.","operationId":"reinvestigate_route_api_investigate__investigation_id__reinvestigate_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/steps/{step_name}/reinvestigate":{"post":{"summary":"Reinvestigate Step Route","description":"Re-run a single step on an existing case, then refresh the audit report.\n\nOnly the named step (and the final audit report) re-execute; every other\nstep is served from its stored result. Use this when one step failed or\nreturned a poor result and re-running the whole pipeline would waste\nexternal-API budget. Returns 404 if the case or the named step is unknown.","operationId":"reinvestigate_step_route_api_investigate__investigation_id__steps__step_name__reinvestigate_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"step_name","in":"path","required":true,"schema":{"type":"string","title":"Step Name"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/review/approve":{"post":{"summary":"Approve Investigation Review","description":"Founder-only: release a review-gated case's output to the customer.\n\nFlips PENDING_REVIEW → COMPLETED, records who approved and when, and\npublishes the terminal `investigation_completed` event so any open stream\n(the customer's live view included) resolves to the report without a\nrefresh. Loaded without a team filter: founders approve across teams and\nrequire_superuser already gates access.","operationId":"approve_investigation_review_api_investigate__investigation_id__review_approve_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/documents":{"post":{"summary":"Add Investigation Documents","description":"Attach documents to an existing case and resume the investigation.\n\nUsed when a claim was opened from a description alone and parked at\n`awaiting_documents`: append the uploaded files, then re-run the pipeline\nfrom scratch now that there's something to analyze.","operationId":"add_investigation_documents_api_investigate__investigation_id__documents_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_add_investigation_documents_api_investigate__investigation_id__documents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browserbase/recording/{session_id}":{"get":{"summary":"Get Browserbase Recording","description":"Proxy a Browserbase session recording (rrweb event stream).\n\nRequires sign-in: replay URLs leak claim metadata.","operationId":"get_browserbase_recording_api_browserbase_recording__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/chat/manifest":{"get":{"summary":"Get Chat Manifest","description":"The claim's step manifest — what ran, what didn't, and how it ended.\n\nPowers the coverage table; same access rules as chat itself.","operationId":"get_chat_manifest_api_investigate__investigation_id__chat_manifest_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/chat":{"post":{"summary":"Chat With Investigation","description":"One grounded chat turn about a finished investigation.","operationId":"chat_with_investigation_api_investigate__investigation_id__chat_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies":{"get":{"summary":"List Policies","description":"Return policies registered by the active team.","operationId":"list_policies_api_policies_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Policy","description":"Register a new pet policy. Idempotent on (team_id, policy_number).","operationId":"create_policy_api_policies_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/{policy_number}":{"get":{"summary":"Get Policy","description":"Look up a policy by number, scoped to the active team.","operationId":"get_policy_api_policies__policy_number__get","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/extract":{"post":{"summary":"Extract Policy","description":"Kick off policy-PDF extraction as a background job; return its id.\n\nExtraction runs Reducto's agentic deep_extract (~2-3 min) — too long to hold\nthe request open (proxy/LB idle timeouts, client spinner). The client polls\nGET /api/policies/extract/{job_id} until status is completed, then renders\nthe fields as the pre-filled review form. Does NOT save.","operationId":"extract_policy_api_policies_extract_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_extract_policy_api_policies_extract_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/extract/{job_id}":{"get":{"summary":"Get Extraction Job","description":"Poll an extraction job. On completion returns the extracted fields +\ncitations + completeness audit; on failure returns the error.","operationId":"get_extraction_job_api_policies_extract__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/with-document":{"post":{"summary":"Create Policy With Document","description":"Save a policy AND attach its source PDF in one request.","operationId":"create_policy_with_document_api_policies_with_document_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_policy_with_document_api_policies_with_document_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/{policy_number}/document":{"post":{"summary":"Upload Policy Document","description":"Attach (or replace) the source PDF for an already-registered policy.","operationId":"upload_policy_document_api_policies__policy_number__document_post","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_policy_document_api_policies__policy_number__document_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Policy Document","description":"Stream the original policy PDF back so adjusters can verify the\ncoverage agent's reading against the source.","operationId":"get_policy_document_api_policies__policy_number__document_get","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/portal/login":{"post":{"summary":"Portal Login","description":"Sign a policyholder in with the email their insurer registered and\ntheir policy number. One generic failure message, so the endpoint can't be\nused to learn which emails or policy numbers exist.","operationId":"portal_login_api_portal_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/portal/me":{"get":{"summary":"Portal Me","operationId":"portal_me_api_portal_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/portal/policy/document":{"get":{"summary":"Portal Policy Document","operationId":"portal_policy_document_api_portal_policy_document_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/portal/ask":{"post":{"summary":"Portal Ask","operationId":"portal_ask_api_portal_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/portal/pet-photo":{"get":{"summary":"Portal Pet Photo","operationId":"portal_pet_photo_api_portal_pet_photo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Upload Portal Pet Photo","operationId":"upload_portal_pet_photo_api_portal_pet_photo_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_portal_pet_photo_api_portal_pet_photo_put"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Remove Portal Pet Photo","operationId":"remove_portal_pet_photo_api_portal_pet_photo_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/policies/{policy_number}/portal-access":{"get":{"summary":"List Portal Access","operationId":"list_portal_access_api_policies__policy_number__portal_access_get","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Grant Portal Access","operationId":"grant_portal_access_api_policies__policy_number__portal_access_post","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/{policy_number}/portal-access/preview":{"post":{"summary":"Preview Portal","description":"Open the portal on this policy as the signed-in team member: their own\nemail gets a grant (kept if it exists) and a portal session comes back, so\nstaff see exactly what a policyholder sees without signing in by hand.","operationId":"preview_portal_api_policies__policy_number__portal_access_preview_post","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/policies/{policy_number}/portal-access/{access_id}":{"delete":{"summary":"Revoke Portal Access","operationId":"revoke_portal_access_api_policies__policy_number__portal_access__access_id__delete","parameters":[{"name":"policy_number","in":"path","required":true,"schema":{"type":"string","title":"Policy Number"}},{"name":"access_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Access Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/references":{"get":{"summary":"List References","description":"Return the full citation catalog, in catalog order.","operationId":"list_references_api_references_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/embed":{"get":{"tags":["search"],"summary":"Embed Query","description":"Embed one search query. The browser does the ranking against the static index.","operationId":"embed_query_api_search_embed_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/sample":{"post":{"tags":["triage"],"summary":"Start Sample","description":"Start the pre-seeded hero case. Zero external API calls.\n\nIntentionally NOT rate-limited against the weekly quota — the sample is\nfree to run as many times as you want, it's a demo. The 10/minute slowapi\ncap prevents abuse.","operationId":"start_sample_api_triage_sample_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/triage/new":{"post":{"tags":["triage"],"summary":"Start Upload","operationId":"start_upload_api_triage_new_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_start_upload_api_triage_new_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/{case_id}":{"get":{"tags":["triage"],"summary":"Get Case","operationId":"get_case_api_triage__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["triage"],"summary":"Delete Case","operationId":"delete_case_api_triage__case_id__delete","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/{case_id}/stream":{"get":{"tags":["triage"],"summary":"Stream","description":"SSE stream of narration events. Closes on done/failed or client disconnect.","operationId":"stream_api_triage__case_id__stream_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/{case_id}/email":{"post":{"tags":["triage"],"summary":"Capture Email","operationId":"capture_email_api_triage__case_id__email_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailCapture"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/{case_id}/pdf":{"get":{"tags":["triage"],"summary":"Download Pdf","operationId":"download_pdf_api_triage__case_id__pdf_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triage/{case_id}/share.png":{"get":{"tags":["triage"],"summary":"Share Png","operationId":"share_png_api_triage__case_id__share_png_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/analytics":{"get":{"tags":["admin"],"summary":"Analytics","operationId":"analytics_api_admin_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/cases":{"get":{"tags":["admin"],"summary":"List Cases","operationId":"list_cases_api_admin_cases_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","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"}}}}}}},"/api/voice/vapi/webhook":{"post":{"tags":["voice"],"summary":"Vapi Webhook","operationId":"vapi_webhook_api_voice_vapi_webhook_post","parameters":[{"name":"x-vapi-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Vapi-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vapi Webhook Api Voice Vapi Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice/calls":{"get":{"tags":["voice"],"summary":"List Inbound Calls","operationId":"list_inbound_calls_api_voice_calls_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Inbound Calls Api Voice Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice/calls/{call_number}":{"get":{"tags":["voice"],"summary":"Get Inbound Call","operationId":"get_inbound_call_api_voice_calls__call_number__get","parameters":[{"name":"call_number","in":"path","required":true,"schema":{"type":"string","title":"Call Number"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Inbound Call Api Voice Calls  Call Number  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/outreach":{"get":{"tags":["outreach"],"summary":"List Outreach","operationId":"list_outreach_api_investigate__investigation_id__outreach_get","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Outreach Api Investigate  Investigation Id  Outreach Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/outreach/{action_id}/run-now":{"post":{"tags":["outreach"],"summary":"Run Outreach Now","description":"Execute a scheduled touch immediately instead of waiting out the\ncadence. Runs detached — a call polls for minutes — and the timeline\nfollows along over SSE.","operationId":"run_outreach_now_api_investigate__investigation_id__outreach__action_id__run_now_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Run Outreach Now Api Investigate  Investigation Id  Outreach  Action Id  Run Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/investigate/{investigation_id}/outreach/{action_id}/cancel":{"post":{"tags":["outreach"],"summary":"Cancel Outreach","operationId":"cancel_outreach_api_investigate__investigation_id__outreach__action_id__cancel_post","parameters":[{"name":"investigation_id","in":"path","required":true,"schema":{"type":"string","title":"Investigation Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Cancel Outreach Api Investigate  Investigation Id  Outreach  Action Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/email/inbound":{"post":{"tags":["outreach"],"summary":"Inbound Email Webhook","description":"Received-email webhook. Verified against RESEND_WEBHOOK_SECRET on the\nraw body (the signature covers bytes, not parsed JSON). Acknowledged\nimmediately; the fetch/download/attach work runs detached so the provider\nnever times out and retries a half-processed event.","operationId":"inbound_email_webhook_api_outreach_email_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Inbound Email Webhook Api Outreach Email Inbound Post"}}}}}}},"/api/contents/limits":{"get":{"summary":"Upload Limits","description":"Largest file per upload kind, as this server is set up: a direct (S3)\nupload of a walkthrough can be far larger when GCS staging is configured.","operationId":"upload_limits_api_contents_limits_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases":{"post":{"summary":"Create Case","operationId":"create_case_api_contents_cases_post","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Cases","operationId":"list_cases_api_contents_cases_get","parameters":[{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}":{"get":{"summary":"Get Case","operationId":"get_case_api_contents_cases__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/thumbnails":{"get":{"summary":"Case Thumbnails","description":"A small picture per line, keyed by item id (see service.case_thumbnails).","operationId":"case_thumbnails_api_contents_cases__case_id__thumbnails_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/evidence":{"post":{"summary":"Upload Evidence","operationId":"upload_evidence_api_contents_cases__case_id__evidence_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_evidence_api_contents_cases__case_id__evidence_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/uploads":{"post":{"summary":"Start Upload","description":"Presigned PUT for a direct browser-to-S3 upload. `mode: \"inline\"` tells\nthe client to post the file to /evidence instead (no bucket configured).","operationId":"start_upload_api_contents_cases__case_id__uploads_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/uploads/complete":{"post":{"summary":"Complete Upload","operationId":"complete_upload_api_contents_cases__case_id__uploads_complete_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadDoneIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/rooms":{"post":{"summary":"Add Room","operationId":"add_room_api_contents_cases__case_id__rooms_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/items/room":{"post":{"summary":"Move Items To Room","operationId":"move_items_to_room_api_contents_cases__case_id__items_room_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveRoomIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/evidence/{evidence_id}/url":{"get":{"summary":"Evidence Url","description":"Where the browser can fetch an upload: a presigned S3 URL (no session\nneeded, expires in minutes), or the authenticated inline route.","operationId":"evidence_url_api_contents_evidence__evidence_id__url_get","parameters":[{"name":"evidence_id","in":"path","required":true,"schema":{"type":"string","title":"Evidence Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/flows/pricing":{"post":{"summary":"Start Pricing","operationId":"start_pricing_api_contents_cases__case_id__flows_pricing_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingFlowIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/flows":{"get":{"summary":"List Flows","operationId":"list_flows_api_contents_cases__case_id__flows_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/review":{"post":{"summary":"Review","operationId":"review_api_contents_cases__case_id__review_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/evidence/{evidence_id}/content":{"get":{"summary":"Evidence Content","operationId":"evidence_content_api_contents_evidence__evidence_id__content_get","parameters":[{"name":"evidence_id","in":"path","required":true,"schema":{"type":"string","title":"Evidence Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}":{"get":{"summary":"Get Item","operationId":"get_item_api_contents_items__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Edit Item","operationId":"edit_item_api_contents_items__item_id__patch","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FieldsPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/status":{"post":{"summary":"Set Status","operationId":"set_status_api_contents_items__item_id__status_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/listings":{"post":{"summary":"Attach Listing","operationId":"attach_listing_api_contents_items__item_id__listings_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/price":{"post":{"summary":"Price Item","operationId":"price_item_api_contents_items__item_id__price_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/listings/{listing_id}":{"post":{"summary":"Set Comparable","operationId":"set_comparable_api_contents_items__item_id__listings__listing_id__post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"listing_id","in":"path","required":true,"schema":{"type":"string","title":"Listing Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComparableIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/policy":{"get":{"summary":"Get Policy","description":"The case's policy review: facts with their pages, the coverage reading,\nand checks against the inventory as it stands now. null before an upload.","operationId":"get_policy_api_contents_cases__case_id__policy_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/cases/{case_id}/policy/assess":{"post":{"summary":"Reassess Policy","description":"Read the policy again for whether the loss is covered (after the loss type or date changes).","operationId":"reassess_policy_api_contents_cases__case_id__policy_assess_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/flows/{flow_id}/retry":{"post":{"summary":"Retry Flow","description":"Run a failed inventory flow again (an interrupted or errored read of an upload).","operationId":"retry_flow_api_contents_flows__flow_id__retry_post","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","title":"Flow Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/identify":{"post":{"summary":"Identify Item","description":"Identify the line from its picture in the background (15 s to a few\nminutes). The line shows `identification.running` until it's done.","operationId":"identify_item_api_contents_items__item_id__identify_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/identification":{"post":{"summary":"Resolve Identification","operationId":"resolve_identification_api_contents_items__item_id__identification_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentificationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contents/items/{item_id}/events":{"get":{"summary":"Item Events","operationId":"item_events_api_contents_items__item_id__events_get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-Team-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Team-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","description":"Liveness probe. Always 200 if the process is up.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ready":{"get":{"summary":"Ready","description":"Readiness probe. Returns 200 only if the startup migration didn't fail\nand the DB pool can run a query.","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AcceptInviteRequest":{"properties":{"token":{"type":"string","maxLength":200,"minLength":8,"title":"Token"}},"type":"object","required":["token"],"title":"AcceptInviteRequest"},"AskIn":{"properties":{"question":{"type":"string","maxLength":1000,"minLength":2,"title":"Question"},"history":{"items":{"$ref":"#/components/schemas/AskTurnIn"},"type":"array","maxItems":6,"title":"History"}},"type":"object","required":["question"],"title":"AskIn"},"AskTurnIn":{"properties":{"question":{"type":"string","maxLength":1000,"title":"Question"},"answer":{"type":"string","maxLength":4000,"title":"Answer"}},"type":"object","required":["question","answer"],"title":"AskTurnIn"},"Body_add_investigation_documents_api_investigate__investigation_id__documents_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_add_investigation_documents_api_investigate__investigation_id__documents_post"},"Body_create_policy_with_document_api_policies_with_document_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"body":{"type":"string","title":"Body"}},"type":"object","required":["file","body"],"title":"Body_create_policy_with_document_api_policies_with_document_post"},"Body_extract_policy_api_policies_extract_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_extract_policy_api_policies_extract_post"},"Body_start_investigation_api_investigate_post":{"properties":{"files":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Files"},"claimant_name":{"type":"string","title":"Claimant Name","default":""},"policy_number":{"type":"string","title":"Policy Number","default":""},"claim_amount":{"type":"number","title":"Claim Amount","default":0.0},"description":{"type":"string","title":"Description","default":""},"pipeline":{"type":"string","title":"Pipeline","default":"default"},"enabled_steps":{"type":"string","title":"Enabled Steps","default":""}},"type":"object","title":"Body_start_investigation_api_investigate_post"},"Body_start_upload_api_triage_new_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"claimant_name":{"type":"string","title":"Claimant Name","default":""},"provider_url":{"type":"string","title":"Provider Url","default":""}},"type":"object","required":["file"],"title":"Body_start_upload_api_triage_new_post"},"Body_upload_evidence_api_contents_cases__case_id__evidence_post":{"properties":{"kind":{"type":"string","title":"Kind"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"room":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room"}},"type":"object","required":["kind","file"],"title":"Body_upload_evidence_api_contents_cases__case_id__evidence_post"},"Body_upload_policy_document_api_policies__policy_number__document_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_policy_document_api_policies__policy_number__document_post"},"Body_upload_portal_pet_photo_api_portal_pet_photo_put":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_portal_pet_photo_api_portal_pet_photo_put"},"CaseIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"loss_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Loss Date"},"loss_type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Loss Type"}},"type":"object","required":["name"],"title":"CaseIn"},"ChatRequest":{"properties":{"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"},"history":{"items":{"$ref":"#/components/schemas/ChatTurn"},"type":"array","maxItems":12,"title":"History"}},"type":"object","required":["message"],"title":"ChatRequest"},"ChatTurn":{"properties":{"role":{"type":"string","pattern":"^(user|assistant)$","title":"Role"},"content":{"type":"string","maxLength":2000,"minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatTurn"},"ComparableIn":{"properties":{"use":{"type":"boolean","title":"Use"},"reason":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reason"}},"type":"object","required":["use"],"title":"ComparableIn"},"CopilotMessage":{"properties":{"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"CopilotMessage"},"CreateInviteRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/Role","default":"member"}},"type":"object","required":["email"],"title":"CreateInviteRequest"},"CreateTeamRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"CreateTeamRequest"},"EmailCapture":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"EmailCapture"},"FieldsPatch":{"properties":{"changes":{"additionalProperties":true,"type":"object","minProperties":1,"title":"Changes"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"}},"type":"object","required":["changes","reason"],"title":"FieldsPatch"},"GrantIn":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"holder_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Holder Name"},"pet_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Pet Name"}},"type":"object","required":["email"],"title":"GrantIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IdentificationIn":{"properties":{"accept":{"type":"boolean","title":"Accept"}},"type":"object","required":["accept"],"title":"IdentificationIn"},"ListingIn":{"properties":{"url":{"type":"string","maxLength":2000,"minLength":8,"title":"Url"}},"type":"object","required":["url"],"title":"ListingIn"},"LoginIn":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"policy_number":{"type":"string","maxLength":64,"minLength":2,"title":"Policy Number"}},"type":"object","required":["email","policy_number"],"title":"LoginIn"},"MoveRoomIn":{"properties":{"item_ids":{"items":{"type":"string"},"type":"array","maxItems":5000,"minItems":1,"title":"Item Ids"},"room":{"type":"string","maxLength":80,"minLength":1,"title":"Room"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"}},"type":"object","required":["item_ids","room"],"title":"MoveRoomIn"},"PolicyIn":{"properties":{"policy_number":{"type":"string","maxLength":64,"minLength":2,"title":"Policy Number"},"plan_name":{"type":"string","title":"Plan Name","default":"Comprehensive Pet — Tier II"},"coverage_type":{"type":"string","title":"Coverage Type","default":"accident_illness"},"effective_date":{"type":"string","title":"Effective Date"},"renewal_date":{"type":"string","title":"Renewal Date"},"deductible_usd":{"type":"number","minimum":0.0,"title":"Deductible Usd"},"max_annual_payout_usd":{"type":"number","minimum":0.0,"title":"Max Annual Payout Usd"},"accident_waiting_period_days":{"type":"integer","maximum":365.0,"minimum":0.0,"title":"Accident Waiting Period Days","default":2},"illness_waiting_period_days":{"type":"integer","maximum":365.0,"minimum":0.0,"title":"Illness Waiting Period Days","default":14},"declared_pre_existing":{"items":{"type":"string"},"type":"array","title":"Declared Pre Existing","default":[]},"exclusions":{"items":{"type":"string"},"type":"array","title":"Exclusions","default":[]},"raw_exclusion_texts":{"items":{"type":"string"},"type":"array","title":"Raw Exclusion Texts","default":[]},"policy_status":{"type":"string","title":"Policy Status","default":"active"},"source_document_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Document Filename"},"reimbursement_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Reimbursement Rate","default":1.0},"sub_limits":{"additionalProperties":{"type":"number"},"type":"object","title":"Sub Limits","default":{}},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["policy_number","effective_date","renewal_date","deductible_usd","max_annual_payout_usd"],"title":"PolicyIn"},"PriceIn":{"properties":{"search":{"type":"boolean","title":"Search","default":true}},"type":"object","title":"PriceIn"},"PricingFlowIn":{"properties":{"item_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5000},{"type":"null"}],"title":"Item Ids"},"search":{"type":"boolean","title":"Search","default":true}},"type":"object","title":"PricingFlowIn"},"RenameTeamRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"RenameTeamRequest"},"ReviewIn":{"properties":{"item_ids":{"items":{"type":"string"},"type":"array","maxItems":5000,"minItems":1,"title":"Item Ids"},"status":{"type":"string","title":"Status"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"}},"type":"object","required":["item_ids","status"],"title":"ReviewIn"},"Role":{"type":"string","enum":["owner","admin","member","viewer"],"title":"Role","description":"Membership roles, ordered by privilege.\n\nowner   — single per team, set at team creation, can delete the team\nadmin   — can invite, change roles (except owner), and delete team data\nmember  — can create cases/policies and read everything in the team\nviewer  — read-only across the team"},"RoomIn":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"RoomIn"},"StatusIn":{"properties":{"status":{"type":"string","title":"Status"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"}},"type":"object","required":["status"],"title":"StatusIn"},"SuperadminControlsRequest":{"properties":{"review_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Review Required"},"hespergpt_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hespergpt Enabled"},"proceed_without_documents":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Proceed Without Documents"},"clinical_agents_api":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Clinical Agents Api"},"contents_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Contents Enabled"},"flag_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":40.0},{"type":"null"}],"title":"Flag Threshold"}},"type":"object","title":"SuperadminControlsRequest","description":"Founder-only switches for a team. Partial semantics: only the fields\npresent in the request are written, the rest keep their stored value."},"TeamSettingsRequest":{"properties":{"active_insurance_types":{"items":{"type":"string"},"type":"array","title":"Active Insurance Types"},"enabled_agents":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Enabled Agents"},"outreach_cadence":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Outreach Cadence"}},"type":"object","title":"TeamSettingsRequest","description":"Per-team config: active verticals + per-claim agent roster.\n\nReplace-semantics: the whole blob is overwritten on PATCH. The frontend\nowns the agent roster definitions and fills defaults, so we only validate\nthe shape and the one hard invariant (at least one valid vertical)."},"UpdateRoleRequest":{"properties":{"role":{"$ref":"#/components/schemas/Role"}},"type":"object","required":["role"],"title":"UpdateRoleRequest"},"UploadDoneIn":{"properties":{"key":{"type":"string","maxLength":600,"minLength":10,"title":"Key"},"kind":{"type":"string","title":"Kind"},"room":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Room"},"filename":{"type":"string","maxLength":255,"minLength":1,"title":"Filename"},"content_type":{"type":"string","maxLength":100,"minLength":1,"title":"Content Type"}},"type":"object","required":["key","kind","filename","content_type"],"title":"UploadDoneIn"},"UploadIn":{"properties":{"kind":{"type":"string","title":"Kind"},"room":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Room"},"filename":{"type":"string","maxLength":255,"minLength":1,"title":"Filename"},"content_type":{"type":"string","maxLength":100,"minLength":1,"title":"Content Type"},"size_bytes":{"type":"integer","exclusiveMinimum":0.0,"title":"Size Bytes"}},"type":"object","required":["kind","filename","content_type","size_bytes"],"title":"UploadIn"},"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"}}}}