{"openapi":"3.1.0","info":{"title":"Flagpost API","description":"M&A Advisory Platform Backend","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Check Health Get"}}}}}}},"/api/branding/meta":{"get":{"tags":["Branding"],"summary":"Get Whitelabel Meta","description":"Return brand name / document title for a whitelabel host.","operationId":"get_whitelabel_meta_api_branding_meta_get","parameters":[{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override Host, e.g. acme.flagpost.ai","title":"Host"},"description":"Override Host, e.g. acme.flagpost.ai"},{"name":"Host","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingMetaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/branding/icon":{"get":{"tags":["Branding"],"summary":"Get Whitelabel Icon","description":"Return favicon bytes for the advisory mapped to this host.\n\nSync handler so FastAPI runs blocking Supabase/GCS I/O in the threadpool.\nFallback chain when this returns 404 is handled by the frontend proxy:\nfavicon_gcs_path → logo_gcs_path → Flagpost default.","operationId":"get_whitelabel_icon_api_branding_icon_get","parameters":[{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override Host, e.g. acme.flagpost.ai","title":"Host"},"description":"Override Host, e.g. acme.flagpost.ai"},{"name":"Host","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/branding/logo":{"get":{"tags":["Branding"],"summary":"Get Whitelabel Logo","description":"Return the advisory logo for login/header branding on a whitelabel host.","operationId":"get_whitelabel_logo_api_branding_logo_get","parameters":[{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override Host, e.g. acme.flagpost.ai","title":"Host"},"description":"Override Host, e.g. acme.flagpost.ai"},{"name":"Host","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Get Me","description":"Get current authenticated user information.\n\nRequires: Bearer token in Authorization header","operationId":"get_me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Me Auth Me Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/verify":{"get":{"tags":["auth"],"summary":"Verify Token","description":"Verify if the provided token is valid.\n\nRequires: Bearer token in Authorization header","operationId":"verify_token_auth_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Verify Token Auth Verify Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/accept-eula":{"post":{"tags":["auth"],"summary":"Accept Eula","description":"Record the user's acceptance of the Product License and EULA.\n\nSets eula_accepted_at to current timestamp. Idempotent — calling\nmultiple times will not overwrite the original acceptance timestamp.","operationId":"accept_eula_auth_accept_eula_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accept Eula Auth Accept Eula Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/businesses/{business_id}/members":{"get":{"tags":["access"],"summary":"List Business Members","description":"List advisors with access to a business.","operationId":"list_business_members_api_businesses__business_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BusinessMemberResponse"},"title":"Response List Business Members Api Businesses  Business Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["access"],"summary":"Add Business Member","description":"Grant an advisor access to a business.","operationId":"add_business_member_api_businesses__business_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddBusinessMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/members/{advisor_id}":{"patch":{"tags":["access"],"summary":"Update Business Member","description":"Update a member's role on a business (member <-> maintainer).","operationId":"update_business_member_api_businesses__business_id__members__advisor_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"advisor_id","in":"path","required":true,"schema":{"type":"string","title":"Advisor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBusinessMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["access"],"summary":"Remove Business Member","description":"Revoke an advisor's access to a business.","operationId":"remove_business_member_api_businesses__business_id__members__advisor_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"advisor_id","in":"path","required":true,"schema":{"type":"string","title":"Advisor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Remove Business Member Api Businesses  Business Id  Members  Advisor Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/watch":{"get":{"tags":["access"],"summary":"Get Watch Status","description":"Check if the current admin is watching a business (has a business_advisors row).","operationId":"get_watch_status_api_businesses__business_id__watch_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["access"],"summary":"Watch Business","description":"Subscribe admin to notifications for a business.\n\nInserts a business_advisors row with role=member. Admins already have full\naccess via RLS, so this row only affects notification delivery.","operationId":"watch_business_api_businesses__business_id__watch_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["access"],"summary":"Unwatch Business","description":"Unsubscribe admin from notifications for a business.\n\nRemoves the business_advisors row. Admins retain full access via RLS.","operationId":"unwatch_business_api_businesses__business_id__watch_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/advisory/members":{"get":{"tags":["access"],"summary":"List Advisory Members","description":"List non-admin advisors in the current advisory.\n\nIntentionally NOT admin-gated. This reads through the RLS-scoped client, and\nthe advisors SELECT policy (\"Advisors can view advisors from their advisory\")\nalready exposes member advisor roster data to every advisor — so\ngating here would add no real protection (a member could query the advisors\ntable directly) while breaking the maintainer add-member flow, which needs\nthe roster to grant business access. The /settings/members *mutation* path\n(update_platform_role) is the one that is admin-gated via require_admin.","operationId":"list_advisory_members_api_advisory_members_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AdvisoryMemberResponse"},"type":"array","title":"Response List Advisory Members Api Advisory Members Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/advisory/members/{advisor_id}/enabled":{"patch":{"tags":["access"],"summary":"Update Advisor Enabled","description":"Globally enable or disable an advisor's platform access (admin only).","operationId":"update_advisor_enabled_api_advisory_members__advisor_id__enabled_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"advisor_id","in":"path","required":true,"schema":{"type":"string","title":"Advisor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAdvisorEnabledRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvisoryMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/advisory/members/{advisor_id}/role":{"patch":{"tags":["access"],"summary":"Update Platform Role","description":"Update an advisor's platform role (admin only).","operationId":"update_platform_role_api_advisory_members__advisor_id__role_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"advisor_id","in":"path","required":true,"schema":{"type":"string","title":"Advisor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePlatformRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvisoryMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/advisory/access-matrix":{"get":{"tags":["access"],"summary":"Get Access Matrix","description":"Return advisory-wide data room access for admin overview (birds-eye matrix).","operationId":"get_access_matrix_api_advisory_access_matrix_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessMatrixResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/api-keys":{"get":{"tags":["api-keys"],"summary":"List Api Keys","description":"List API keys visible to the caller (own keys; admins see advisory-wide).","operationId":"list_api_keys_api_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyResponse"},"type":"array","title":"Response List Api Keys Api Api Keys Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api-keys"],"summary":"Create Api Key","description":"Create an API key. The plaintext token is returned only in this response.","operationId":"create_api_key_api_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Api Key","description":"Soft-revoke an API key by setting revoked_at.","operationId":"revoke_api_key_api_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me":{"get":{"tags":["external-v1"],"summary":"Get Me","description":"Introspect the credential: identity, scopes, reachable businesses.","operationId":"get_me_api_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/businesses":{"get":{"tags":["external-v1"],"summary":"List Businesses","operationId":"list_businesses_api_v1_businesses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BusinessSummary"},"type":"array","title":"Response List Businesses Api V1 Businesses Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/businesses/{business_id}/insights":{"get":{"tags":["external-v1"],"summary":"Get Business Insights","operationId":"get_business_insights_api_v1_businesses__business_id__insights_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Business Insights Api V1 Businesses  Business Id  Insights Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/businesses/{business_id}/databook":{"get":{"tags":["external-v1"],"summary":"Get Business Databook","operationId":"get_business_databook_api_v1_businesses__business_id__databook_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Business Databook Api V1 Businesses  Business Id  Databook Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses":{"post":{"tags":["Businesses"],"summary":"Create Business","description":"Create business + data room.","operationId":"create_business_api_businesses_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBusinessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Business Api Businesses Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/businesses/{business_id}":{"delete":{"tags":["Businesses"],"summary":"Delete Business","description":"Delete business and all associated files.","operationId":"delete_business_api_businesses__business_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Business Api Businesses  Business Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/rescrape-website":{"post":{"tags":["Businesses"],"summary":"Rescrape Website","description":"Rescrape website to refresh insights and logo.\n\nTriggers a new website research job. Optionally provide a\ndifferent website URL to scrape.","operationId":"rescrape_website_api_businesses__business_id__rescrape_website_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RescrapeWebsiteRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rescrape Website Api Businesses  Business Id  Rescrape Website Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents":{"post":{"tags":["Businesses"],"summary":"Upload Document","description":"Upload document to GCS + index in File Search.","operationId":"upload_document_api_businesses__business_id__documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"source","in":"query","required":true,"schema":{"$ref":"#/components/schemas/UserDocumentSource"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_api_businesses__business_id__documents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Document Api Businesses  Business Id  Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Businesses"],"summary":"Get Documents","description":"Get all documents for a business.","operationId":"get_documents_api_businesses__business_id__documents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Documents Api Businesses  Business Id  Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/batch":{"post":{"tags":["Businesses"],"summary":"Upload Documents Batch","description":"Upload multiple documents at once.\n\nReturns upload summary with counts of successful and failed uploads.\nAdvisors are notified via the processing digest email after documents are processed.","operationId":"upload_documents_batch_api_businesses__business_id__documents_batch_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"source","in":"query","required":true,"schema":{"$ref":"#/components/schemas/UserDocumentSource"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_documents_batch_api_businesses__business_id__documents_batch_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Documents Batch Api Businesses  Business Id  Documents Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}":{"delete":{"tags":["Businesses"],"summary":"Delete Document","description":"Delete document from RAG + GCS + database.","operationId":"delete_document_api_businesses__business_id__documents__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Document Api Businesses  Business Id  Documents  Document Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Businesses"],"summary":"Update Document","description":"Update document (move to folder or rename).","operationId":"update_document_api_businesses__business_id__documents__document_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Document Api Businesses  Business Id  Documents  Document Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/apply-folder-suggestions":{"post":{"tags":["Businesses"],"summary":"Apply Folder Suggestions","description":"Move Staging files into the folders AI suggested.","operationId":"apply_folder_suggestions_api_businesses__business_id__documents_apply_folder_suggestions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyFolderSuggestionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Apply Folder Suggestions Api Businesses  Business Id  Documents Apply Folder Suggestions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/organize-staging":{"post":{"tags":["Businesses"],"summary":"Organize Staging","description":"Move every Staging file that already has a suggested folder.","operationId":"organize_staging_api_businesses__business_id__documents_organize_staging_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Organize Staging Api Businesses  Business Id  Documents Organize Staging Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/suggest-staging":{"post":{"tags":["Businesses"],"summary":"Suggest Staging","description":"Queue suggestions for Staging files AI has never classified.","operationId":"suggest_staging_api_businesses__business_id__documents_suggest_staging_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Suggest Staging Api Businesses  Business Id  Documents Suggest Staging Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/apply-ai-titles":{"post":{"tags":["Businesses"],"summary":"Bulk Apply Ai Titles","description":"Copy standardized_name → file_name for selected documents.\n\nDocuments without a standardized_name are skipped. Deduplication\nis applied so multiple docs with the same AI title get unique names.","operationId":"bulk_apply_ai_titles_api_businesses__business_id__documents_apply_ai_titles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkApplyAITitlesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Apply Ai Titles Api Businesses  Business Id  Documents Apply Ai Titles Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/check-missing":{"post":{"tags":["Businesses"],"summary":"Check Missing Documents","description":"Check for missing required documents and optionally send alert email.\n\nUseful for validating document completeness before generating reports\nor performing other operations that require specific documents.\n\nArgs:\n    business_id: Business UUID\n    request: List of required document types and optional alert settings\n\nReturns:\n    Dictionary with missing documents and completion status","operationId":"check_missing_documents_api_businesses__business_id__documents_check_missing_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckMissingDataRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Check Missing Documents Api Businesses  Business Id  Documents Check Missing Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/generate-email-draft":{"post":{"tags":["Businesses"],"summary":"Generate Document Email Draft","description":"Generate document request email draft without sending.\n\nReturns email content for preview before sending.","operationId":"generate_document_email_draft_api_businesses__business_id__documents_generate_email_draft_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentRequestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentEmailDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-documents":{"post":{"tags":["Businesses"],"summary":"Request Documents","description":"Send document request list to seller via email.\n\nCombines template documents with custom documents and sends to business contact_email.\n\nArgs:\n    business_id: Business UUID\n    request: Template ID, custom documents, message, and due date\n\nReturns:\n    Dictionary with status and email sent confirmation","operationId":"request_documents_api_businesses__business_id__request_documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentRequestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Request Documents Api Businesses  Business Id  Request Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/zip/upload-url":{"post":{"tags":["Businesses"],"summary":"Request Zip Upload Url","description":"Request signed URL for direct GCS upload of zip file.","operationId":"request_zip_upload_url_api_businesses__business_id__documents_zip_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZipUploadUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Request Zip Upload Url Api Businesses  Business Id  Documents Zip Upload Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/zip/complete":{"post":{"tags":["Businesses"],"summary":"Complete Zip Upload","description":"Complete zip upload and create extraction job.","operationId":"complete_zip_upload_api_businesses__business_id__documents_zip_complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"source","in":"query","required":true,"schema":{"$ref":"#/components/schemas/UserDocumentSource"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZipCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Complete Zip Upload Api Businesses  Business Id  Documents Zip Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/supersedes":{"put":{"tags":["Businesses"],"summary":"Set Document Version","description":"Mark document_id as the newer version of another file in this deal.","operationId":"set_document_version_api_businesses__business_id__documents__document_id__supersedes_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentSupersedesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Document Version Api Businesses  Business Id  Documents  Document Id  Supersedes Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Businesses"],"summary":"Clear Document Version","description":"Remove the older-version link. The older file shows in the room again.","operationId":"clear_document_version_api_businesses__business_id__documents__document_id__supersedes_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clear Document Version Api Businesses  Business Id  Documents  Document Id  Supersedes Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/versions":{"get":{"tags":["Businesses"],"summary":"Get Document Versions","description":"Newest-first version history. Advisor session only.","operationId":"get_document_versions_api_businesses__business_id__documents__document_id__versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Versions Api Businesses  Business Id  Documents  Document Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/decrypt":{"post":{"tags":["Businesses"],"summary":"Decrypt Document","description":"Unlock an encrypted file; save the unlocked copy as its newer version.","operationId":"decrypt_document_api_businesses__business_id__documents__document_id__decrypt_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentDecryptBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Decrypt Document Api Businesses  Business Id  Documents  Document Id  Decrypt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/viewer-config":{"get":{"tags":["Businesses"],"summary":"Get Spreadsheet Viewer Config","description":"Signed view-only ONLYOFFICE config for an Excel file.","operationId":"get_spreadsheet_viewer_config_api_businesses__business_id__documents__document_id__viewer_config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}},{"name":"sheet","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Sheet"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Spreadsheet Viewer Config Api Businesses  Business Id  Documents  Document Id  Viewer Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/brain/ingest":{"post":{"tags":["Businesses"],"summary":"Ingest Document Brain","description":"Queue markdown extraction for one document (internal Brain tab only).\n\n``force`` discards the old read here — pages, chunks, and tables — before\nthe job exists, so a retried job never wipes what an earlier attempt saved. The job itself only fills\nmissing pages. The file is out of AI search until the chain is indexed\nagain: the status leaves ``indexed`` for the whole re-read.","operationId":"ingest_document_brain_api_businesses__business_id__documents__document_id__brain_ingest_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Document Brain Api Businesses  Business Id  Documents  Document Id  Brain Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/documents/{document_id}/download":{"get":{"tags":["Businesses"],"summary":"Download Document","description":"Get signed download URL, or converted content with ?format=csv|excel_preview.","operationId":"download_document_api_businesses__business_id__documents__document_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/download":{"get":{"tags":["Businesses"],"summary":"Download Vdr","description":"Download single document, folder ZIP, or full VDR ZIP.","operationId":"download_vdr_api_businesses__business_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"}},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/ask/agentic":{"post":{"tags":["Businesses"],"summary":"Ask Question Agentic","description":"Ask a question using the agentic tool-calling loop.\n\nThe LLM decides which tools to call and in what order:\ninsights, manifests, sub-LLM document selection, file loading, etc.","operationId":"ask_question_agentic_api_businesses__business_id__ask_agentic_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgenticAskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/chat-sessions":{"get":{"tags":["Businesses"],"summary":"List Chat Sessions","description":"List all chat sessions for a business.","operationId":"list_chat_sessions_api_businesses__business_id__chat_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChatSessionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/chat-sessions/{session_id}/messages":{"get":{"tags":["Businesses"],"summary":"Get Session Messages","description":"Get conversation messages for a specific chat session.","operationId":"get_session_messages_api_businesses__business_id__chat_sessions__session_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSessionMessagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/templates":{"get":{"tags":["reports"],"summary":"Get Templates","description":"List report creation choices.\n\nReturns persisted advisory report templates plus creation-only options such as\nblank and pre-teaser. Templates are seeded via POST /api/templates/seed.","operationId":"get_templates_api_reports_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Templates Api Reports Templates Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/reports/analyze-custom-template":{"post":{"tags":["reports"],"summary":"Analyze Custom Template","description":"Upload reference documents and enqueue extraction of sections + style.\n\nAccepts multiple PDF files. Returns a job ID; poll /api/jobs/{job_id}\nfor the extracted sections and writing style.","operationId":"analyze_custom_template_api_reports_analyze_custom_template_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_custom_template_api_reports_analyze_custom_template_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analyze Custom Template Api Reports Analyze Custom Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/reports/analyze-pre-teaser":{"post":{"tags":["reports"],"summary":"Analyze Pre Teaser","description":"Analyze uploaded report PDF(s) for pre-teaser: full section content + detected business name.","operationId":"analyze_pre_teaser_api_reports_analyze_pre_teaser_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_pre_teaser_api_reports_analyze_pre_teaser_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analyze Pre Teaser Api Reports Analyze Pre Teaser Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/businesses/{business_id}/reports":{"post":{"tags":["reports"],"summary":"Create Report","description":"Create a new report, optionally from a template.","operationId":"create_report_api_businesses__business_id__reports_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Report Api Businesses  Business Id  Reports Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["reports"],"summary":"List Reports","description":"List reports for a specific business.","operationId":"list_reports_api_businesses__business_id__reports_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Reports Api Businesses  Business Id  Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/save-template":{"post":{"tags":["reports"],"summary":"Save Report As Template","description":"Save the report skeleton (sections/titles/descriptions only) as a template.","operationId":"save_report_as_template_api_businesses__business_id__reports__report_id__save_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveReportTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Report As Template Api Businesses  Business Id  Reports  Report Id  Save Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}":{"get":{"tags":["reports"],"summary":"Get Report","description":"Get report with all sections.","operationId":"get_report_api_businesses__business_id__reports__report_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Report Api Businesses  Business Id  Reports  Report Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["reports"],"summary":"Patch Report","description":"Update report fields (config shallow-merge).","operationId":"patch_report_api_businesses__business_id__reports__report_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Report Api Businesses  Business Id  Reports  Report Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Delete Report","description":"Delete a report and its sections (cascade).","operationId":"delete_report_api_businesses__business_id__reports__report_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Report Api Businesses  Business Id  Reports  Report Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}":{"patch":{"tags":["reports"],"summary":"Update Section","description":"Update a section's title, description, or content.","operationId":"update_section_api_businesses__business_id__reports__report_id__sections__section_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Section Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Delete Section","description":"Delete a section from a report.","operationId":"delete_section_api_businesses__business_id__reports__report_id__sections__section_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Section Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections":{"post":{"tags":["reports"],"summary":"Add Section","description":"Add a new section to a report.","operationId":"add_section_api_businesses__business_id__reports__report_id__sections_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Section Api Businesses  Business Id  Reports  Report Id  Sections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/reorder":{"put":{"tags":["reports"],"summary":"Reorder Sections","description":"Reorder sections. Provide full list of section IDs in desired order.","operationId":"reorder_sections_api_businesses__business_id__reports__report_id__sections_reorder_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderSectionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reorder Sections Api Businesses  Business Id  Reports  Report Id  Sections Reorder Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/generate":{"post":{"tags":["reports"],"summary":"Generate Section","description":"Generate a single report section (creates background job).","operationId":"generate_section_api_businesses__business_id__reports__report_id__sections__section_id__generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Section Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/generate":{"post":{"tags":["reports"],"summary":"Generate All Sections","description":"Generate all pending/failed sections (creates one job per section).","operationId":"generate_all_sections_api_businesses__business_id__reports__report_id__generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate All Sections Api Businesses  Business Id  Reports  Report Id  Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/export-pdf":{"post":{"tags":["reports"],"summary":"Export Pdf","description":"Export report as PDF document.","operationId":"export_pdf_api_businesses__business_id__reports__report_id__export_pdf_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Export Pdf Api Businesses  Business Id  Reports  Report Id  Export Pdf Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/images":{"post":{"tags":["reports"],"summary":"Upload Section Image","description":"Upload an image (chart screenshot or picture) to a section.\n\nImages are stored in generated_content/ folder and added to section's attachments.\n\nArgs:\n    source: 'system' for auto-added charts, 'internal' for manual uploads (default)","operationId":"upload_section_image_api_businesses__business_id__reports__report_id__sections__section_id__images_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_section_image_api_businesses__business_id__reports__report_id__sections__section_id__images_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Section Image Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Images Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/images/{document_id}":{"delete":{"tags":["reports"],"summary":"Delete Section Image","description":"Remove an image from a section's attachments.","operationId":"delete_section_image_api_businesses__business_id__reports__report_id__sections__section_id__images__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Section Image Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Images  Document Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/cleanup-charts":{"post":{"tags":["reports"],"summary":"Cleanup Outdated Charts","description":"Remove chart attachments that are no longer in the current chart_insight_ids.\n\nKeeps:\n- Manual uploads (attachments without insight_id)\n- Chart attachments whose insight_id is in the provided keep_insight_ids list\n\nArgs:\n    body: {\"keep_insight_ids\": [\"id1\", \"id2\", ...]}","operationId":"cleanup_outdated_charts_api_businesses__business_id__reports__report_id__sections__section_id__cleanup_charts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cleanup Outdated Charts Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Cleanup Charts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/section-versions-summary":{"get":{"tags":["reports"],"summary":"Section Versions Summary","description":"Active version author_type per section (one query for edited badges).","operationId":"section_versions_summary_api_businesses__business_id__reports__report_id__section_versions_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Section Versions Summary Api Businesses  Business Id  Reports  Report Id  Section Versions Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/versions":{"get":{"tags":["reports"],"summary":"List Section Versions","description":"List version history for a section (newest first).","operationId":"list_section_versions_api_businesses__business_id__reports__report_id__sections__section_id__versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Section Versions Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/versions/{version_id}":{"get":{"tags":["reports"],"summary":"Get Section Version","description":"Fetch a single version including full HTML for preview.","operationId":"get_section_version_api_businesses__business_id__reports__report_id__sections__section_id__versions__version_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Section Version Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Versions  Version Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reports/{report_id}/sections/{section_id}/versions/{version_id}/restore":{"post":{"tags":["reports"],"summary":"Restore Section Version","description":"Restore a prior version into the live collab document.","operationId":"restore_section_version_api_businesses__business_id__reports__report_id__sections__section_id__versions__version_id__restore_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restore Section Version Api Businesses  Business Id  Reports  Report Id  Sections  Section Id  Versions  Version Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs":{"post":{"tags":["jobs"],"summary":"Create Job","description":"Create a new background job.\n\nReturns immediately with job ID. Poll GET /api/jobs/{job_id} for status.\n\nArgs:\n    job_data: Job type and payload\n    ctx: Advisor context with RLS-scoped Supabase client\n\nReturns:\n    Created job with status 'pending'","operationId":"create_job_api_jobs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jobs/batch":{"get":{"tags":["jobs"],"summary":"Get Jobs Batch","description":"Get multiple jobs by IDs in a single request.\n\nUse this for efficient polling of multiple concurrent jobs.\n\nArgs:\n    ids: Comma-separated job UUIDs (e.g., \"id1,id2,id3\")\n    ctx: Advisor context\n\nReturns:\n    List of job statuses (only jobs user has access to via RLS)\n\nExample:\n    GET /api/jobs/batch?ids=abc123,def456,ghi789","operationId":"get_jobs_batch_api_jobs_batch_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobResponse"},"title":"Response Get Jobs Batch Api Jobs Batch Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job","description":"Get job status by ID.\n\nPoll this endpoint to check job progress.\n\nArgs:\n    job_id: Job UUID\n    ctx: Advisor context\n\nReturns:\n    Job status and result (if completed)\n\nRaises:\n    HTTPException: 404 if job not found","operationId":"get_job_api_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/active/{business_id}":{"get":{"tags":["jobs"],"summary":"Get Active Jobs","description":"Get active (pending/processing) jobs for a business.\n\nUse this on page load to resume polling for in-progress jobs.\n\nArgs:\n    business_id: Business UUID\n    ctx: Advisor context\n\nReturns:\n    List of active jobs (may be empty)","operationId":"get_active_jobs_api_jobs_active__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobResponse"},"title":"Response Get Active Jobs Api Jobs Active  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/generate":{"post":{"tags":["Insights"],"summary":"Generate Insights","description":"Generate insights from all indexed documents for a business.\n\nThis triggers insight extraction jobs for all documents that have been\nindexed (have embeddings). Each document will be processed by the\nInsightExtractionService to extract structured insights.\n\nArgs:\n    business_id: Business UUID\n    request: Options for which types of insights to generate\n    ctx: Advisor context\n\nReturns:\n    Job IDs and status information","operationId":"generate_insights_api_businesses__business_id__insights_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateInsightsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights":{"post":{"tags":["Insights"],"summary":"Create Insight","description":"Create a custom questionnaire insight.\n\nFor questionnaire insights, the description field is used as a search\nquery to auto-fill from existing documents.","operationId":"create_insight_api_businesses__business_id__insights_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInsightRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Insights"],"summary":"Get Insights","description":"Get insights for a business, optionally filtered by source.\n\nArgs:\n    business_id: Business to get insights for\n    ctx: Advisor context\n    source: Optional filter (questionnaire, data_room_ai, research)\n\nReturns:\n    List of insights","operationId":"get_insights_api_businesses__business_id__insights_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightResponse"},"title":"Response Get Insights Api Businesses  Business Id  Insights Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/search":{"get":{"tags":["Insights"],"summary":"Search Insights","description":"Search insights by label using full-text search.\n\nSupports prefix matching (e.g., \"rev\" finds \"Revenue\").\nReturns all insights for the business when q is empty.","operationId":"search_insights_api_businesses__business_id__insights_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Insights Api Businesses  Business Id  Insights Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/{field_name}":{"get":{"tags":["Insights"],"summary":"Get Insight","description":"Get a specific insight by field name.\n\nArgs:\n    business_id: Business ID\n    field_name: Field name\n    ctx: Advisor context\n\nReturns:\n    Insight data","operationId":"get_insight_api_businesses__business_id__insights__field_name__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"field_name","in":"path","required":true,"schema":{"type":"string","title":"Field Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/{insight_id}":{"put":{"tags":["Insights"],"summary":"Update Insight","description":"Update/edit an insight.\n\nThis allows advisors to override AI-generated values. The original\nAI values are preserved for reference.\n\nArgs:\n    business_id: Business ID (for verification)\n    insight_id: Insight ID to update\n    update_data: New values\n    ctx: Advisor context\n\nReturns:\n    Updated insight","operationId":"update_insight_api_businesses__business_id__insights__insight_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"insight_id","in":"path","required":true,"schema":{"type":"string","title":"Insight Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Insights"],"summary":"Delete Insight","description":"Delete an insight.\n\nArgs:\n    insight_id: Insight ID to delete\n    ctx: Advisor context\n\nReturns:\n    Status message","operationId":"delete_insight_api_businesses__business_id__insights__insight_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"insight_id","in":"path","required":true,"schema":{"type":"string","title":"Insight Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Insight Api Businesses  Business Id  Insights  Insight Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/{insight_id}/regenerate":{"post":{"tags":["Insights"],"summary":"Regenerate Insight Answer","description":"Enqueue an INSIGHT_ANSWER job to regenerate the answer for a questionnaire insight.\n\nUses the insight's current description as the question. Returns immediately;\nanswer fills in the background via the agentic pipeline.","operationId":"regenerate_insight_answer_api_businesses__business_id__insights__insight_id__regenerate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"insight_id","in":"path","required":true,"schema":{"type":"string","title":"Insight Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Insight Answer Api Businesses  Business Id  Insights  Insight Id  Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/questionnaire/apply":{"post":{"tags":["Insights"],"summary":"Apply Questionnaire Template","description":"Copy questions from a questionnaire template as empty insights.\n\nSkips questions that already exist (by field_name) on this business.\nDoes NOT trigger AI — use the /questionnaire/run endpoint after reviewing.","operationId":"apply_questionnaire_template_api_businesses__business_id__insights_questionnaire_apply_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Apply Questionnaire Template Api Businesses  Business Id  Insights Questionnaire Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/questionnaire/run":{"post":{"tags":["Insights"],"summary":"Run Questionnaire Answers","description":"Trigger AI answer generation for all unanswered questionnaire insights.\n\nCreates INSIGHT_ANSWER jobs for each insight that has a description (search query)\nbut no value_json yet. Returns immediately; answers fill in background.","operationId":"run_questionnaire_answers_api_businesses__business_id__insights_questionnaire_run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Questionnaire Answers Api Businesses  Business Id  Insights Questionnaire Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/generate-email-draft":{"post":{"tags":["Insights"],"summary":"Generate Email Draft","description":"Generate a draft email for missing insights without sending.\n\nReturns the email subject and body for advisor review/editing before\napproval.\n\nArgs:\n    business_id: Business UUID\n    request: Insight IDs and optional context message\n    ctx: Advisor context\n\nReturns:\n    Email draft with subject, body, and recipient info","operationId":"generate_email_draft_api_businesses__business_id__insights_generate_email_draft_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__insights__GenerateEmailDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/insights/request-missing":{"post":{"tags":["Insights"],"summary":"Request Missing Insights","description":"Send email to seller requesting missing or low-confidence insights.\n\nAnalyzes insights for the business and sends an email listing what\ninformation is needed. Can either auto-detect missing/low-confidence\ninsights or use a specific list.\n\nArgs:\n    business_id: Business UUID\n    request: Optional insight IDs and custom message\n    ctx: Advisor context\n\nReturns:\n    Dictionary with insights requested and email status","operationId":"request_missing_insights_api_businesses__business_id__insights_request_missing_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestMissingInsightsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Request Missing Insights Api Businesses  Business Id  Insights Request Missing Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/insights/{insight_id}/generate-charts":{"post":{"tags":["charts","charts"],"summary":"Generate Charts","description":"Generate charts for an insight.\n\nArgs:\n    insight_id: The insight ID to generate charts for\n    ctx: Advisor context\n\nReturns:\n    Success response with number of charts generated\n\nRaises:\n    HTTPException: For 404 or 403 errors only\n    (Rate limits and other API errors result in fallback charts)","operationId":"generate_charts_api_insights__insight_id__generate_charts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"insight_id","in":"path","required":true,"schema":{"type":"string","title":"Insight Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateChartsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reminders":{"post":{"tags":["Reminders"],"summary":"Create Reminder","description":"Create a new reminder schedule.\n\nArgs:\n    business_id: Business UUID\n    request: Reminder configuration\n    ctx: Advisor context\n\nReturns:\n    Created reminder","operationId":"create_reminder_api_businesses__business_id__reminders_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReminderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Reminders"],"summary":"List Reminders","description":"List all reminders for a business.\n\nArgs:\n    business_id: Business UUID\n    ctx: Advisor context\n    is_active: Optional filter by active status\n\nReturns:\n    List of reminders","operationId":"list_reminders_api_businesses__business_id__reminders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReminderResponse"},"title":"Response List Reminders Api Businesses  Business Id  Reminders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reminders/{reminder_id}":{"get":{"tags":["Reminders"],"summary":"Get Reminder","description":"Get a specific reminder.\n\nArgs:\n    business_id: Business UUID (for verification)\n    reminder_id: Reminder UUID\n    ctx: Advisor context\n\nReturns:\n    Reminder details","operationId":"get_reminder_api_businesses__business_id__reminders__reminder_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","title":"Reminder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Reminders"],"summary":"Update Reminder","description":"Update a reminder.\n\nArgs:\n    business_id: Business UUID (for verification)\n    reminder_id: Reminder UUID\n    request: Updated reminder fields\n    ctx: Advisor context\n\nReturns:\n    Updated reminder","operationId":"update_reminder_api_businesses__business_id__reminders__reminder_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","title":"Reminder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReminderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Reminders"],"summary":"Delete Reminder","description":"Delete a reminder.\n\nArgs:\n    business_id: Business UUID (for verification)\n    reminder_id: Reminder UUID\n    ctx: Advisor context\n\nReturns:\n    Status message","operationId":"delete_reminder_api_businesses__business_id__reminders__reminder_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","title":"Reminder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Reminder Api Businesses  Business Id  Reminders  Reminder Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/reminders/{reminder_id}/send-now":{"post":{"tags":["Reminders"],"summary":"Send Reminder Now","description":"Send a reminder immediately (regardless of schedule).\n\nArgs:\n    business_id: Business UUID (for verification)\n    reminder_id: Reminder UUID\n    ctx: Advisor context\n\nReturns:\n    Send status","operationId":"send_reminder_now_api_businesses__business_id__reminders__reminder_id__send_now_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","title":"Reminder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Reminder Now Api Businesses  Business Id  Reminders  Reminder Id  Send Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/templates":{"get":{"tags":["folders"],"summary":"List Folder Templates","operationId":"list_folder_templates_api_folders_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Folder Templates Api Folders Templates Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["folders"],"summary":"Create Folder Structure Template","operationId":"create_folder_structure_template_api_folders_templates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Folder Structure Template Api Folders Templates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/folders/templates/{template_id}":{"get":{"tags":["folders"],"summary":"Get Folder Structure Template","operationId":"get_folder_structure_template_api_folders_templates__template_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Folder Structure Template Api Folders Templates  Template Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/templates/{template_id}/set-default":{"post":{"tags":["folders"],"summary":"Set Default Folder Structure Template","operationId":"set_default_folder_structure_template_api_folders_templates__template_id__set_default_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Default Folder Structure Template Api Folders Templates  Template Id  Set Default Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/templates/{template_id}/items":{"post":{"tags":["folders"],"summary":"Create Folder Structure Item","operationId":"create_folder_structure_item_api_folders_templates__template_id__items_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateItemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Folder Structure Item Api Folders Templates  Template Id  Items Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/templates/items/{item_id}":{"patch":{"tags":["folders"],"summary":"Update Folder Structure Item","operationId":"update_folder_structure_item_api_folders_templates_items__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Folder Structure Item Api Folders Templates Items  Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["folders"],"summary":"Delete Folder Structure Item","operationId":"delete_folder_structure_item_api_folders_templates_items__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/templates/{template_id}/reorder":{"post":{"tags":["folders"],"summary":"Reorder Folder Structure Items","operationId":"reorder_folder_structure_items_api_folders_templates__template_id__reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reorder Folder Structure Items Api Folders Templates  Template Id  Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/business/{business_id}/templates":{"post":{"tags":["folders"],"summary":"Save Folder Template","operationId":"save_folder_template_api_folders_business__business_id__templates_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Folder Template Api Folders Business  Business Id  Templates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/business/{business_id}/apply-template":{"post":{"tags":["folders"],"summary":"Apply Folder Template","operationId":"apply_folder_template_api_folders_business__business_id__apply_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderTemplateApply"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRFolder"},"title":"Response Apply Folder Template Api Folders Business  Business Id  Apply Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/business/{business_id}":{"post":{"tags":["folders"],"summary":"Create Folder","description":"Create a new VDR folder.","operationId":"create_folder_api_folders_business__business_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolder"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["folders"],"summary":"List Folders","description":"List all folders for a business.","operationId":"list_folders_api_folders_business__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRFolder"},"title":"Response List Folders Api Folders Business  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/business/{business_id}/folder/{folder_id}":{"patch":{"tags":["folders"],"summary":"Update Folder","description":"Update folder (rename or change sort_order).","operationId":"update_folder_api_folders_business__business_id__folder__folder_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolder"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["folders"],"summary":"Delete Folder","description":"Delete folder (only if empty and not protected).","operationId":"delete_folder_api_folders_business__business_id__folder__folder_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/business/{business_id}/reorder":{"post":{"tags":["folders"],"summary":"Reorder Folders","description":"Reorder all folders for a business.","operationId":"reorder_folders_api_folders_business__business_id__reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRFolderReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRFolder"},"title":"Response Reorder Folders Api Folders Business  Business Id  Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/business/{business_id}":{"get":{"tags":["VDR Sharing"],"summary":"List Groups","operationId":"list_groups_api_vdr_sharing_groups_business__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRGroupResponse"},"title":"Response List Groups Api Vdr Sharing Groups Business  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["VDR Sharing"],"summary":"Create Group","operationId":"create_group_api_vdr_sharing_groups_business__business_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRGroupCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}":{"patch":{"tags":["VDR Sharing"],"summary":"Update Group","operationId":"update_group_api_vdr_sharing_groups__group_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["VDR Sharing"],"summary":"Delete Group","operationId":"delete_group_api_vdr_sharing_groups__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Group Api Vdr Sharing Groups  Group Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/members":{"get":{"tags":["VDR Sharing"],"summary":"List Members","operationId":"list_members_api_vdr_sharing_groups__group_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRGroupMemberResponse"},"title":"Response List Members Api Vdr Sharing Groups  Group Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["VDR Sharing"],"summary":"Add Member","operationId":"add_member_api_vdr_sharing_groups__group_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRGroupMemberCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Add Member Api Vdr Sharing Groups  Group Id  Members Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/members/{member_id}":{"delete":{"tags":["VDR Sharing"],"summary":"Remove Member","operationId":"remove_member_api_vdr_sharing_groups__group_id__members__member_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Remove Member Api Vdr Sharing Groups  Group Id  Members  Member Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/permissions":{"get":{"tags":["VDR Sharing"],"summary":"List Permissions","operationId":"list_permissions_api_vdr_sharing_groups__group_id__permissions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VDRPermissionResponse"},"title":"Response List Permissions Api Vdr Sharing Groups  Group Id  Permissions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/permissions/bulk":{"put":{"tags":["VDR Sharing"],"summary":"Set Permissions Bulk","operationId":"set_permissions_bulk_api_vdr_sharing_groups__group_id__permissions_bulk_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRPermissionBulkSet"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Set Permissions Bulk Api Vdr Sharing Groups  Group Id  Permissions Bulk Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/preview":{"get":{"tags":["VDR Sharing"],"summary":"Preview Portal","description":"Return the same payload the public portal would show for this group.\n\nUses build_library_json so the preview is always in sync with the portal.","operationId":"preview_portal_api_vdr_sharing_groups__group_id__preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Portal Api Vdr Sharing Groups  Group Id  Preview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/documents/{document_id}/portal-viewer-config":{"get":{"tags":["VDR Sharing"],"summary":"Advisor Portal Viewer Config","description":"Signed view-only spreadsheet config matching the buyer portal view.","operationId":"advisor_portal_viewer_config_api_vdr_sharing_groups__group_id__documents__document_id__portal_viewer_config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Advisor Portal Viewer Config Api Vdr Sharing Groups  Group Id  Documents  Document Id  Portal Viewer Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/documents/{document_id}/portal-preview":{"get":{"tags":["VDR Sharing"],"summary":"Advisor Portal Document Preview","description":"Render a file the way buyers see it, including office-to-PDF conversion.","operationId":"advisor_portal_document_preview_api_vdr_sharing_groups__group_id__documents__document_id__portal_preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/businesses/{business_id}/shared-folders":{"get":{"tags":["VDR Sharing"],"summary":"List Shared Folders","description":"Folders a buyer can see, including descendants, mapped to group names.","operationId":"list_shared_folders_api_vdr_sharing_businesses__business_id__shared_folders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"title":"Response List Shared Folders Api Vdr Sharing Businesses  Business Id  Shared Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/groups/{group_id}/access-link":{"post":{"tags":["VDR Sharing"],"summary":"Create Or Rotate Access Link","operationId":"create_or_rotate_access_link_api_vdr_sharing_groups__group_id__access_link_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRAccessLinkCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRAccessLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["VDR Sharing"],"summary":"Get Access Link","operationId":"get_access_link_api_vdr_sharing_groups__group_id__access_link_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VDRAccessLinkResponse"},{"type":"null"}],"title":"Response Get Access Link Api Vdr Sharing Groups  Group Id  Access Link Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["VDR Sharing"],"summary":"Revoke Access Link","operationId":"revoke_access_link_api_vdr_sharing_groups__group_id__access_link_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Revoke Access Link Api Vdr Sharing Groups  Group Id  Access Link Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/analytics/business/{business_id}":{"get":{"tags":["VDR Sharing"],"summary":"Get Analytics","operationId":"get_analytics_api_vdr_sharing_analytics_business__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/request-otp":{"post":{"tags":["VDR Sharing"],"summary":"Vdr Request Otp","operationId":"vdr_request_otp_api_vdr_sharing_public__token__request_otp_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestOTPBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Vdr Request Otp Api Vdr Sharing Public  Token  Request Otp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/verify-otp":{"post":{"tags":["VDR Sharing"],"summary":"Vdr Verify Otp","operationId":"vdr_verify_otp_api_vdr_sharing_public__token__verify_otp_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOTPBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Vdr Verify Otp Api Vdr Sharing Public  Token  Verify Otp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/library":{"get":{"tags":["VDR Sharing"],"summary":"Vdr Get Library","operationId":"vdr_get_library_api_vdr_sharing_public__token__library_get","security":[{"HTTPBearer":[]}],"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 Vdr Get Library Api Vdr Sharing Public  Token  Library Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/documents/{document_id}/viewer-config":{"get":{"tags":["VDR Sharing"],"summary":"Vdr Spreadsheet Viewer Config","description":"Signed view-only spreadsheet config for a buyer. File URL is a ticket.","operationId":"vdr_spreadsheet_viewer_config_api_vdr_sharing_public__token__documents__document_id__viewer_config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vdr Spreadsheet Viewer Config Api Vdr Sharing Public  Token  Documents  Document Id  Viewer Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/office-file/{ticket}":{"get":{"tags":["VDR Sharing"],"summary":"Vdr Office File","description":"Serve workbook bytes to the Document Server only.\n\nRequires the Document Server's outbound JWT in Authorization. A browser\nopening the ticket URL without that JWT gets 401.","operationId":"vdr_office_file_api_vdr_sharing_office_file__ticket__get","parameters":[{"name":"ticket","in":"path","required":true,"schema":{"type":"string","title":"Ticket"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/documents/{document_id}/view":{"get":{"tags":["VDR Sharing"],"summary":"Vdr View Document","operationId":"vdr_view_document_api_vdr_sharing_public__token__documents__document_id__view_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/documents/{document_id}/download":{"get":{"tags":["VDR Sharing"],"summary":"Vdr Download Document","operationId":"vdr_download_document_api_vdr_sharing_public__token__documents__document_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/download-all":{"get":{"tags":["VDR Sharing"],"summary":"Vdr Download All","description":"Download all visible documents as a single ZIP file.\n\nUses the same permission/visibility logic as the library endpoint\nso only files the user is allowed to see are included. Each file\ngets a download activity event recorded for analytics.","operationId":"vdr_download_all_api_vdr_sharing_public__token__download_all_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vdr-sharing/public/{token}/activity":{"post":{"tags":["VDR Sharing"],"summary":"Vdr Activity Heartbeat","operationId":"vdr_activity_heartbeat_api_vdr_sharing_public__token__activity_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VDRActivityHeartbeat"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Vdr Activity Heartbeat Api Vdr Sharing Public  Token  Activity Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/gmail-poll":{"post":{"tags":["Webhooks"],"summary":"Gmail Poll Webhook","description":"Enqueue a mailbox poll. Cloud Scheduler calls this about once a minute.","operationId":"gmail_poll_webhook_api_webhooks_gmail_poll_post","parameters":[{"name":"x-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gmail Poll Webhook Api Webhooks Gmail Poll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/process-reminders":{"post":{"tags":["Webhooks"],"summary":"Process Reminders Webhook","description":"Trigger reminder processing job.\n\nProtected endpoint called by Cloud Scheduler or similar service.\nRequires webhook secret in x-webhook-secret header.","operationId":"process_reminders_webhook_api_webhooks_process_reminders_post","parameters":[{"name":"x-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Process Reminders Webhook Api Webhooks Process Reminders Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/preprocessing-sweep":{"post":{"tags":["Webhooks"],"summary":"Preprocessing Sweep Webhook","description":"Start Brain preprocessing for files the upload pipeline never started.\n\nCalled every 15 minutes by Cloud Scheduler.","operationId":"preprocessing_sweep_webhook_api_webhooks_preprocessing_sweep_post","parameters":[{"name":"x-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preprocessing Sweep Webhook Api Webhooks Preprocessing Sweep Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/document-digest":{"post":{"tags":["Webhooks"],"summary":"Document Completion Digest","description":"Send combined digest emails for document processing (success + failures).\n\nCalled every 5 minutes by Cloud Scheduler.\nFinds documents where:\n- SUCCESS: all processing fields set, email not sent\n- FAILURE: >30 min old, any processing field NULL, email not sent\n\nGroups by (advisory, business, uploader) and sends one combined email.\nOnly includes non-system sources (excludes generated reports, logos, etc.).","operationId":"document_completion_digest_api_webhooks_document_digest_post","parameters":[{"name":"x-webhook-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Document Completion Digest Api Webhooks Document Digest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-intake/businesses/{business_id}":{"get":{"tags":["email-intake"],"summary":"Get Email Intake","operationId":"get_email_intake_api_email_intake_businesses__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Email Intake Api Email Intake Businesses  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-intake/businesses/{business_id}/rotate":{"post":{"tags":["email-intake"],"summary":"Rotate Email Intake","operationId":"rotate_email_intake_api_email_intake_businesses__business_id__rotate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rotate Email Intake Api Email Intake Businesses  Business Id  Rotate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/financial-review/flags":{"get":{"tags":["Financial Review"],"summary":"Get Financial Flags","description":"Get financial flags for a business, ordered by priority_rank.\n\nQuery parameters:\n    status: Filter by status (pending, discussed, added_to_bev, dismissed)\n    severity: Filter by severity (high, medium, low)\n    exclude_dismissed: Exclude dismissed flags (default true)\n    limit: Max flags to return (e.g. 10 for top-10 view)\n\nReturns:\n    Flags list with total count of matching flags","operationId":"get_financial_flags_api_businesses__business_id__financial_review_flags_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"exclude_dismissed","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Dismissed"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialFlagsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/financial-review/flags/{flag_id}":{"get":{"tags":["Financial Review"],"summary":"Get Financial Flag","description":"Get a specific financial flag by ID.\n\nArgs:\n    business_id: Business ID (for verification)\n    flag_id: Flag ID\n\nReturns:\n    Financial flag details","operationId":"get_financial_flag_api_businesses__business_id__financial_review_flags__flag_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","title":"Flag Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialFlagResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Financial Review"],"summary":"Update Financial Flag","description":"Update a financial flag.\n\nAllows advisor to:\n- Update status (pending → discussed → added_to_bev/dismissed)\n- Add notes after discussing with client\n- Record resolution\n\nArgs:\n    business_id: Business ID (for verification)\n    flag_id: Flag ID\n    update_data: Update fields\n\nReturns:\n    Updated financial flag","operationId":"update_financial_flag_api_businesses__business_id__financial_review_flags__flag_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","title":"Flag Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialFlagUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialFlagResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Financial Review"],"summary":"Delete Financial Flag","description":"Delete a financial flag.\n\nArgs:\n    business_id: Business ID (for verification)\n    flag_id: Flag ID\n\nReturns:\n    Status message","operationId":"delete_financial_flag_api_businesses__business_id__financial_review_flags__flag_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","title":"Flag Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Financial Flag Api Businesses  Business Id  Financial Review Flags  Flag Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/financial-review/flags/{flag_id}/dismiss":{"post":{"tags":["Financial Review"],"summary":"Dismiss Financial Flag","description":"Mark a financial flag as dismissed (not relevant).\n\nArgs:\n    business_id: Business ID (for verification)\n    flag_id: Flag ID\n\nReturns:\n    Status message","operationId":"dismiss_financial_flag_api_businesses__business_id__financial_review_flags__flag_id__dismiss_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"flag_id","in":"path","required":true,"schema":{"type":"string","title":"Flag Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dismiss Financial Flag Api Businesses  Business Id  Financial Review Flags  Flag Id  Dismiss Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/financial-review/regenerate":{"post":{"tags":["Financial Review"],"summary":"Regenerate Financial Review","description":"Manually trigger financial review analysis.\n\nUseful when:\n- New financial documents have been uploaded\n- Advisor wants to re-run analysis\n- Initial analysis failed or was incomplete\n\nArgs:\n    business_id: Business ID\n    request: Regeneration options\n\nReturns:\n    Analysis results","operationId":"regenerate_financial_review_api_businesses__business_id__financial_review_regenerate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Financial Review Api Businesses  Business Id  Financial Review Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/adjustments":{"get":{"tags":["Adjustments"],"summary":"Get Adjustments","description":"List adjustments for a business.","operationId":"get_adjustments_api_businesses__business_id__adjustments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"exclude_dismissed","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Exclude Dismissed"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/adjustments/generate":{"post":{"tags":["Adjustments"],"summary":"Generate Adjustments","description":"Propose adjustments from the business's red flags + consensus taxonomy.\n\nCreates a background job. Poll GET /api/jobs/{job_id} for completion.","operationId":"generate_adjustments_api_businesses__business_id__adjustments_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateAdjustmentsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/adjustments/{adjustment_id}/quantify":{"post":{"tags":["Adjustments"],"summary":"Quantify Adjustment","description":"Scan financial documents to quantify a single adjustment.\n\nCreates a background job. Poll GET /api/jobs/{job_id} for completion.","operationId":"quantify_adjustment_api_businesses__business_id__adjustments__adjustment_id__quantify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"adjustment_id","in":"path","required":true,"schema":{"type":"string","title":"Adjustment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/adjustments/{adjustment_id}":{"put":{"tags":["Adjustments"],"summary":"Update Adjustment","description":"Apply advisor edits to an adjustment (status, notes, amount, period…).","operationId":"update_adjustment_api_businesses__business_id__adjustments__adjustment_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"adjustment_id","in":"path","required":true,"schema":{"type":"string","title":"Adjustment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Adjustments"],"summary":"Delete Adjustment","description":"Delete an adjustment.","operationId":"delete_adjustment_api_businesses__business_id__adjustments__adjustment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"adjustment_id","in":"path","required":true,"schema":{"type":"string","title":"Adjustment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Adjustment Api Businesses  Business Id  Adjustments  Adjustment Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/adjustments/{adjustment_id}/dismiss":{"post":{"tags":["Adjustments"],"summary":"Dismiss Adjustment","description":"Dismiss an adjustment (not relevant).","operationId":"dismiss_adjustment_api_businesses__business_id__adjustments__adjustment_id__dismiss_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"adjustment_id","in":"path","required":true,"schema":{"type":"string","title":"Adjustment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dismiss Adjustment Api Businesses  Business Id  Adjustments  Adjustment Id  Dismiss Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure":{"get":{"tags":["Deal Structure"],"summary":"Get Deal Structure","description":"Return deal structure for the business, creating defaults if missing.","operationId":"get_deal_structure_api_businesses__business_id__deal_structure_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Deal Structure"],"summary":"Create Deal Structure","description":"Create or replace deal structure rows.","operationId":"create_deal_structure_api_businesses__business_id__deal_structure_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealStructureCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/export":{"get":{"tags":["Deal Structure"],"summary":"Export Deal Structure Xlsx","description":"Download current deal structure as an Excel workbook.","operationId":"export_deal_structure_xlsx_api_businesses__business_id__deal_structure_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/assumptions":{"put":{"tags":["Deal Structure"],"summary":"Update Assumptions","operationId":"update_assumptions_api_businesses__business_id__deal_structure_assumptions_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealAssumptionsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/scenarios":{"put":{"tags":["Deal Structure"],"summary":"Update Scenarios","operationId":"update_scenarios_api_businesses__business_id__deal_structure_scenarios_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenariosBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/auto-populate":{"post":{"tags":["Deal Structure"],"summary":"Auto Populate","operationId":"auto_populate_api_businesses__business_id__deal_structure_auto_populate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/generate-commentary":{"post":{"tags":["Deal Structure"],"summary":"Generate Commentary","operationId":"generate_commentary_api_businesses__business_id__deal_structure_generate_commentary_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/chat":{"post":{"tags":["Deal Structure"],"summary":"Deal Structure Chat","operationId":"deal_structure_chat_api_businesses__business_id__deal_structure_chat_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__deal_structure__ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Deal Structure"],"summary":"Clear Deal Structure Chat","operationId":"clear_deal_structure_chat_api_businesses__business_id__deal_structure_chat_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Clear Deal Structure Chat Api Businesses  Business Id  Deal Structure Chat Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/chat/messages":{"get":{"tags":["Deal Structure"],"summary":"List Deal Structure Messages","operationId":"list_deal_structure_messages_api_businesses__business_id__deal_structure_chat_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageOut"}},{"type":"string"},{"type":"null"}]},"title":"Response List Deal Structure Messages Api Businesses  Business Id  Deal Structure Chat Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/agent/stream":{"post":{"tags":["Deal Structure"],"summary":"Deal Structure Agent Stream","description":"SSE: status, tool_call, tool_result, prompt_user, done, error.","operationId":"deal_structure_agent_stream_api_businesses__business_id__deal_structure_agent_stream_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealStructureAgentStreamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/agent/messages":{"post":{"tags":["Deal Structure"],"summary":"Deal Structure Agent Messages","description":"Non-streaming agent turn (for tests).","operationId":"deal_structure_agent_messages_api_businesses__business_id__deal_structure_agent_messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealStructureAgentStreamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Deal Structure"],"summary":"List Deal Structure Agent Messages","operationId":"list_deal_structure_agent_messages_api_businesses__business_id__deal_structure_agent_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Deal Structure Agent Messages Api Businesses  Business Id  Deal Structure Agent Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/agent":{"delete":{"tags":["Deal Structure"],"summary":"Clear Deal Structure Agent","operationId":"clear_deal_structure_agent_api_businesses__business_id__deal_structure_agent_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Clear Deal Structure Agent Api Businesses  Business Id  Deal Structure Agent Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/deal-structure/agent/exports/{token}":{"get":{"tags":["Deal Structure"],"summary":"Download Deal Structure Agent Export","operationId":"download_deal_structure_agent_export_api_businesses__business_id__deal_structure_agent_exports__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/advisories/me/deal-template":{"get":{"tags":["deal-template"],"summary":"Get Deal Template","description":"Return current advisory deal-economics template + mapping (if any).","operationId":"get_deal_template_api_advisories_me_deal_template_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Deal Template Api Advisories Me Deal Template Get"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["deal-template"],"summary":"Delete Deal Template","operationId":"delete_deal_template_api_advisories_me_deal_template_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Delete Deal Template Api Advisories Me Deal Template Delete"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/advisories/me/deal-template/upload":{"post":{"tags":["deal-template"],"summary":"Upload Deal Template","description":"Upload or replace the advisory deal economics workbook.","operationId":"upload_deal_template_api_advisories_me_deal_template_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_deal_template_api_advisories_me_deal_template_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Deal Template Api Advisories Me Deal Template Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/advisories/me/deal-template/download":{"get":{"tags":["deal-template"],"summary":"Download Deal Template","description":"Signed URL for the saved workbook.","operationId":"download_deal_template_api_advisories_me_deal_template_download_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Download Deal Template Api Advisories Me Deal Template Download Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/advisories/me/deal-template/mapping/auto":{"post":{"tags":["deal-template"],"summary":"Auto Map Deal Template","description":"Run LLM auto-mapping proposal (does not persist).","operationId":"auto_map_deal_template_api_advisories_me_deal_template_mapping_auto_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auto Map Deal Template Api Advisories Me Deal Template Mapping Auto Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/advisories/me/deal-template/mapping":{"put":{"tags":["deal-template"],"summary":"Save Deal Template Mapping","operationId":"save_deal_template_mapping_api_advisories_me_deal_template_mapping_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingSaveBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Save Deal Template Mapping Api Advisories Me Deal Template Mapping Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/features/me":{"get":{"tags":["Features"],"summary":"Get My Features","description":"Return resolved feature flags for the authenticated advisor.","operationId":"get_my_features_api_features_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturesMeResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/businesses/{business_id}/workbook/prefill":{"get":{"tags":["Data Cleaning"],"summary":"Prefill Inputs","description":"Best-guess prefill for the data cleaning input form.","operationId":"prefill_inputs_api_businesses__business_id__workbook_prefill_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataCleaningPrefill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/source-documents":{"get":{"tags":["Data Cleaning"],"summary":"List Source Documents","description":"List financial docs with resolved internal/external roles for include/exclude UI.\n\nReturns every cleaning candidate with no exclusions applied so the client\ncan toggle files and send ``excluded_document_ids`` on the next run.","operationId":"list_source_documents_api_businesses__business_id__workbook_source_documents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceDocumentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/fill-template":{"post":{"tags":["Data Cleaning"],"summary":"Fill Template","description":"Start data cleaning. Existing query-param API for period override.\n\nAlso accepts company_names / fiscal_year_end. Prefer POST /run with a\nJSON body for full inputs (entities list).","operationId":"fill_template_api_businesses__business_id__workbook_fill_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"start_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"}},{"name":"end_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"}},{"name":"start_month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Month"}},{"name":"end_month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Month"}},{"name":"company_names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Company Names"}},{"name":"fiscal_year_end","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":12,"minimum":1},{"type":"null"}],"title":"Fiscal Year End"}},{"name":"fiscal_year_label_offset","in":"query","required":false,"schema":{"type":"integer","maximum":1,"minimum":-1,"default":0,"title":"Fiscal Year Label Offset"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_fill_template_api_businesses__business_id__workbook_fill_template_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataCleaningStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/run":{"post":{"tags":["Data Cleaning"],"summary":"Run Data Cleaning","description":"Start data cleaning with full inputs (companies, entities, FYE, periods).","operationId":"run_data_cleaning_api_businesses__business_id__workbook_run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartCleaningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartCleaningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/cancel":{"post":{"tags":["Data Cleaning"],"summary":"Cancel Job","description":"Cancel the current in-progress data cleaning job for a business.\n\nSets the domain job status to cancelled; the worker checks this between\npipeline stages and exits.","operationId":"cancel_job_api_businesses__business_id__workbook_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataCleaningStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/latest":{"get":{"tags":["Data Cleaning"],"summary":"Get Latest Job","description":"Latest domain data_cleaning_jobs status (processing / completed / failed).","operationId":"get_latest_job_api_businesses__business_id__workbook_latest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DataCleaningStatusResponse"},{"type":"null"}],"title":"Response Get Latest Job Api Businesses  Business Id  Workbook Latest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/jobs":{"get":{"tags":["Data Cleaning"],"summary":"List Jobs","operationId":"list_jobs_api_businesses__business_id__workbook_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs Api Businesses  Business Id  Workbook Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/download/{file_name}":{"get":{"tags":["Data Cleaning"],"summary":"Download Filled Template","operationId":"download_filled_template_api_businesses__business_id__workbook_download__file_name__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"file_name","in":"path","required":true,"schema":{"type":"string","title":"File Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/assumptions/{file_name}":{"get":{"tags":["Data Cleaning"],"summary":"Get Assumptions","operationId":"get_assumptions_api_businesses__business_id__workbook_assumptions__file_name__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"file_name","in":"path","required":true,"schema":{"type":"string","title":"File Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssumptionResponse"},"title":"Response Get Assumptions Api Businesses  Business Id  Workbook Assumptions  File Name  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}":{"get":{"tags":["Data Cleaning"],"summary":"Get Mapping Reconciliation","operationId":"get_mapping_reconciliation_api_businesses__business_id__workbook_mappings__artifact_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/entries/{entry_id}":{"patch":{"tags":["Data Cleaning"],"summary":"Update Mapping Entry","operationId":"update_mapping_entry_api_businesses__business_id__workbook_mappings__artifact_id__entries__entry_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingEntryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/ajes":{"patch":{"tags":["Data Cleaning"],"summary":"Upsert Mapping Aje","operationId":"upsert_mapping_aje_api_businesses__business_id__workbook_mappings__artifact_id__ajes_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingAJEUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Data Cleaning"],"summary":"Upsert Mapping Aje","operationId":"upsert_mapping_aje_api_businesses__business_id__workbook_mappings__artifact_id__ajes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingAJEUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/ajes/{aje_id}/accept":{"post":{"tags":["Data Cleaning"],"summary":"Accept Mapping Aje","operationId":"accept_mapping_aje_api_businesses__business_id__workbook_mappings__artifact_id__ajes__aje_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"aje_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Aje Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/ajes/{aje_id}/needs-support":{"post":{"tags":["Data Cleaning"],"summary":"Mark Mapping Aje Needs Support","operationId":"mark_mapping_aje_needs_support_api_businesses__business_id__workbook_mappings__artifact_id__ajes__aje_id__needs_support_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"aje_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Aje Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/immaterial":{"post":{"tags":["Data Cleaning"],"summary":"Mark Mapping Delta Immaterial","operationId":"mark_mapping_delta_immaterial_api_businesses__business_id__workbook_mappings__artifact_id__immaterial_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingImmaterialRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/ajes/{aje_id}/post":{"post":{"tags":["Data Cleaning"],"summary":"Post Mapping Aje","operationId":"post_mapping_aje_api_businesses__business_id__workbook_mappings__artifact_id__ajes__aje_id__post_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"aje_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Aje Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingPostRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/ajes/{aje_id}/reverse":{"post":{"tags":["Data Cleaning"],"summary":"Reverse Mapping Aje","operationId":"reverse_mapping_aje_api_businesses__business_id__workbook_mappings__artifact_id__ajes__aje_id__reverse_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"aje_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Aje Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingPostRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MappingReconciliationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/support":{"get":{"tags":["Data Cleaning"],"summary":"Get Mapping Support","operationId":"get_mapping_support_api_businesses__business_id__workbook_mappings__artifact_id__support_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}},{"name":"external_account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"External Account Id"}},{"name":"line_item_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Line Item Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Mapping Support Api Businesses  Business Id  Workbook Mappings  Artifact Id  Support Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/mappings/{artifact_id}/events":{"get":{"tags":["Data Cleaning"],"summary":"Get Mapping Events","operationId":"get_mapping_events_api_businesses__business_id__workbook_mappings__artifact_id__events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Mapping Events Api Businesses  Business Id  Workbook Mappings  Artifact Id  Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook":{"get":{"tags":["Data Cleaning"],"summary":"Get Databook","operationId":"get_databook_api_businesses__business_id__workbook_databook_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"include_adjustments","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Adjustments"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Entity UUID to scope the fiscal calendar / rows, 'unassigned' for null-entity rows, or omit for Consol.","title":"Entity Id"},"description":"Entity UUID to scope the fiscal calendar / rows, 'unassigned' for null-entity rows, or omit for Consol."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DatabookModel"},{"type":"null"}],"title":"Response Get Databook Api Businesses  Business Id  Workbook Databook Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/journal-entries":{"get":{"tags":["Data Cleaning"],"summary":"List Journal Entries","operationId":"list_journal_entries_api_businesses__business_id__workbook_journal_entries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntryModel"},"title":"Response List Journal Entries Api Businesses  Business Id  Workbook Journal Entries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Data Cleaning"],"summary":"Create Journal Entry","operationId":"create_journal_entry_api_businesses__business_id__workbook_journal_entries_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalEntryCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalEntryModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/remap":{"post":{"tags":["Data Cleaning"],"summary":"Remap Chart Of Accounts","description":"Re-run CoA mapping for one entity against the chart already in ``accounts``.\n\nApplied journal entries are layered onto the internal balances during\nmapping, so approving an AJE changes both the pairings and the deltas —\nbut nothing re-ran the agent afterwards. This is that trigger. It does not\nre-extract: the external chart is read back from ``accounts``, so the\nadvisor's document set and any account retyping are left alone.\n\n``entity_id`` is required. Mapping pairs one entity's internals against\nthat same entity's reported captions; a run without one summed every\nentity's books together. ``period_key`` is the year to map — omit it to\nlet the resolver pick the year both sides share.\n\n``reset`` clears this entity's existing matches first, including any the\nadvisor set by hand. A plain re-run only fills gaps, so this is the only\nway to make the matcher reconsider what it already decided.","operationId":"remap_chart_of_accounts_api_businesses__business_id__workbook_remap_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"entity_id","in":"query","required":true,"schema":{"type":"string","title":"Entity Id"}},{"name":"period_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Key"}},{"name":"reset","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Reset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Remap Chart Of Accounts Api Businesses  Business Id  Workbook Remap Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/journal-entries/{entry_id}":{"patch":{"tags":["Data Cleaning"],"summary":"Update Journal Entry","operationId":"update_journal_entry_api_businesses__business_id__workbook_journal_entries__entry_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalEntryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalEntryModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Data Cleaning"],"summary":"Delete Journal Entry","operationId":"delete_journal_entry_api_businesses__business_id__workbook_journal_entries__entry_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Journal Entry Api Businesses  Business Id  Workbook Journal Entries  Entry Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/rows/{row_id}":{"patch":{"tags":["Data Cleaning"],"summary":"Update Databook Row","operationId":"update_databook_row_api_businesses__business_id__workbook_databook_rows__row_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"row_id","in":"path","required":true,"schema":{"type":"string","title":"Row Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookRowUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookRowModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Data Cleaning"],"summary":"Delete Databook Row","operationId":"delete_databook_row_api_businesses__business_id__workbook_databook_rows__row_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"row_id","in":"path","required":true,"schema":{"type":"string","title":"Row Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Databook Row Api Businesses  Business Id  Workbook Databook Rows  Row Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/rows":{"post":{"tags":["Data Cleaning"],"summary":"Add Databook Row","operationId":"add_databook_row_api_businesses__business_id__workbook_databook_rows_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"sheet_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Kind"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookRowCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookRowModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/ebitda-bridge":{"get":{"tags":["Data Cleaning"],"summary":"Get Ebitda Bridge","operationId":"get_ebitda_bridge_api_businesses__business_id__workbook_databook_ebitda_bridge_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ebitda Bridge Api Businesses  Business Id  Workbook Databook Ebitda Bridge Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/entities":{"put":{"tags":["Data Cleaning"],"summary":"Save Databook Entities","description":"Set the business's entities, and return them with their ids.\n\nEntities belong to the business, not to a databook or a run: they are named\nonce and reused across runs. So this neither needs nor creates a databook —\nnaming an entity on a business that has never been run has to work, since\nthat is exactly when the first run needs a roster to attribute against.\n\nSaving here rather than as a side effect of running is what gives entities\nids up front.","operationId":"save_databook_entities_api_businesses__business_id__workbook_databook_entities_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityInput"},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatabookEntityModel"},"title":"Response Save Databook Entities Api Businesses  Business Id  Workbook Databook Entities Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/clear-manual-edits":{"post":{"tags":["Data Cleaning"],"summary":"Clear Databook Manual Edits","description":"Revert manual cell edits and remove user-added rows.","operationId":"clear_databook_manual_edits_api_businesses__business_id__workbook_databook_clear_manual_edits_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/reset":{"post":{"tags":["Data Cleaning"],"summary":"Reset Databook","description":"Wipe line items, columns, mapping, and journal entries. Keep GL transactions.","operationId":"reset_databook_api_businesses__business_id__workbook_databook_reset_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/conflicts":{"get":{"tags":["Data Cleaning"],"summary":"List Databook Conflicts","operationId":"list_databook_conflicts_api_businesses__business_id__workbook_databook_conflicts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Databook Conflicts Api Businesses  Business Id  Workbook Databook Conflicts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/conflicts/{conflict_id}":{"post":{"tags":["Data Cleaning"],"summary":"Resolve Databook Conflict","operationId":"resolve_databook_conflict_api_businesses__business_id__workbook_databook_conflicts__conflict_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"conflict_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conflict Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Databook Conflict Api Businesses  Business Id  Workbook Databook Conflicts  Conflict Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/source-documents/{doc_id}/supersedes":{"patch":{"tags":["Data Cleaning"],"summary":"Set Document Supersedes","operationId":"set_document_supersedes_api_businesses__business_id__workbook_source_documents__doc_id__supersedes_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Doc Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentSupersedesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Document Supersedes Api Businesses  Business Id  Workbook Source Documents  Doc Id  Supersedes Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/refresh-document":{"post":{"tags":["Data Cleaning"],"summary":"Refresh Document Run","description":"Re-run databook with selected documents marked writable (per-document refresh).","operationId":"refresh_document_run_api_businesses__business_id__workbook_databook_refresh_document_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartCleaningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartCleaningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/rows/{row_id}/revert":{"post":{"tags":["Data Cleaning"],"summary":"Revert Databook Manual Edit","description":"Revert a single manual edit — one cell, or every edit on the row.","operationId":"revert_databook_manual_edit_api_businesses__business_id__workbook_databook_rows__row_id__revert_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Row Id"}},{"name":"field","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Single edit to revert: 'value:<period_key>', 'label', 'account_id', 'entity_id', 'mapped_account_id' or 'mapping'. Omit to revert the whole row.","title":"Field"},"description":"Single edit to revert: 'value:<period_key>', 'label', 'account_id', 'entity_id', 'mapped_account_id' or 'mapping'. Omit to revert the whole row."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/rows/{row_id}/support":{"get":{"tags":["Data Cleaning"],"summary":"Get Databook Row Support","description":"Row drill-down: exact GL transactions + source documents behind a row.\n\n``period_key`` answers for one cell. Omit it only when the advisor asked\nabout the row as a whole.","operationId":"get_databook_row_support_api_businesses__business_id__workbook_databook_rows__row_id__support_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}},{"name":"row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Row Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"period_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Databook Row Support Api Businesses  Business Id  Workbook Databook Rows  Row Id  Support Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/reported-net-income":{"patch":{"tags":["Data Cleaning"],"summary":"Set Reported Net Income","description":"Save advisor-transcribed Reported Net Income for the P&L check row.","operationId":"set_reported_net_income_api_businesses__business_id__workbook_databook_reported_net_income_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportedNetIncomeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Reported Net Income Api Businesses  Business Id  Workbook Databook Reported Net Income Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/export":{"post":{"tags":["Data Cleaning"],"summary":"Export Databook","description":"Export the current databook (including manual edits) as Excel.","operationId":"export_databook_api_businesses__business_id__workbook_databook_export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/agent/stream":{"post":{"tags":["Data Cleaning"],"summary":"Stream Databook Agent Endpoint","description":"SSE: status, tool_call, tool_result, done, error.","operationId":"stream_databook_agent_endpoint_api_businesses__business_id__workbook_databook_agent_stream_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabookAgentStreamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/agent/messages":{"get":{"tags":["Data Cleaning"],"summary":"List Databook Agent Messages","description":"Return the persisted databook agent chat history for this business.","operationId":"list_databook_agent_messages_api_businesses__business_id__workbook_databook_agent_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Databook Agent Messages Api Businesses  Business Id  Workbook Databook Agent Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/workbook/databook/agent":{"delete":{"tags":["Data Cleaning"],"summary":"Clear Databook Agent","description":"Delete all databook agent chat sessions/messages for this business.","operationId":"clear_databook_agent_api_businesses__business_id__workbook_databook_agent_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Clear Databook Agent Api Businesses  Business Id  Workbook Databook Agent Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links":{"post":{"tags":["Share Links"],"summary":"Create Share Link","description":"Create a shareable link for a business's data collection portal.\n\nSellers can use this link to upload documents without logging in.\nOptionally restrict to specific email addresses via allowed_emails.","operationId":"create_share_link_api_share_links_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShareLinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/share-links/business/{business_id}":{"get":{"tags":["Share Links"],"summary":"Get Share Links","description":"Get all share links for a business.","operationId":"get_share_links_api_share_links_business__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShareLinkResponse"},"title":"Response Get Share Links Api Share Links Business  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/{link_id}":{"delete":{"tags":["Share Links"],"summary":"Revoke Share Link","description":"Revoke (deactivate) a share link.","operationId":"revoke_share_link_api_share_links__link_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Share Link Api Share Links  Link Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/request-otp":{"post":{"tags":["Share Links"],"summary":"Request Portal Otp","description":"Send a 6-digit OTP to the email for portal access.\n\nChecks the allowlist, rate-limits to 1 request per 60s, generates\na SHA-256-hashed OTP valid for 10 minutes, and emails it via Resend.","operationId":"request_portal_otp_api_share_links_public__token__request_otp_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestOTPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Request Portal Otp Api Share Links Public  Token  Request Otp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/verify-otp":{"post":{"tags":["Share Links"],"summary":"Verify Portal Otp","description":"Verify OTP and return a 30-day portal access JWT.\n\nEnforces max 5 attempts and marks the OTP as used on success.","operationId":"verify_portal_otp_api_share_links_public__token__verify_otp_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOTPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Portal Otp Api Share Links Public  Token  Verify Otp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}":{"get":{"tags":["Share Links"],"summary":"Get Public Share Link Info","description":"Get public info about a share link.\n\nReturns business name and request items for the client portal.\nRequires authentication if the link has allowed_emails set.","operationId":"get_public_share_link_info_api_share_links_public__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicShareLinkInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/upload":{"post":{"tags":["Share Links"],"summary":"Public Upload Document","description":"Upload a document via share link.\n\nValidates the token and uploads the document to the business's data room.\nUses atomic increment to prevent race conditions with max_uses quota.","operationId":"public_upload_document_api_share_links_public__token__upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_public_upload_document_api_share_links_public__token__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Upload Document Api Share Links Public  Token  Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/documents":{"get":{"tags":["Share Links"],"summary":"Get Public Uploaded Documents","description":"Get list of uploaded documents for a share link.\n\nAllows sellers to see what they've already uploaded.","operationId":"get_public_uploaded_documents_api_share_links_public__token__documents_get","security":[{"HTTPBearer":[]}],"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 Get Public Uploaded Documents Api Share Links Public  Token  Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/items/{item_id}/text":{"patch":{"tags":["Share Links"],"summary":"Public Update Text Response","description":"Client submits or updates a text response on a request item.","operationId":"public_update_text_response_api_share_links_public__token__items__item_id__text_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Update Text Response Api Share Links Public  Token  Items  Item Id  Text Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/items/{item_id}/documents":{"post":{"tags":["Share Links"],"summary":"Public Link Document","description":"Client links an uploaded document to a request item.","operationId":"public_link_document_api_share_links_public__token__items__item_id__documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Link Document Api Share Links Public  Token  Items  Item Id  Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/items/{item_id}/documents/{document_id}":{"delete":{"tags":["Share Links"],"summary":"Public Unlink Document","description":"Client unlinks a document from a request item.\n\nOnly the seller's own links: a file the advisor linked or accepted stays.","operationId":"public_unlink_document_api_share_links_public__token__items__item_id__documents__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Unlink Document Api Share Links Public  Token  Items  Item Id  Documents  Document Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/items/{item_id}/download-attachment":{"get":{"tags":["Share Links"],"summary":"Public Download Item Attachment","description":"Get a signed download URL for a request item's template attachment.\n\nAllows clients to download reference files (Firm Profile, NDA, etc.)\nattached to request list items via the share link portal.","operationId":"public_download_item_attachment_api_share_links_public__token__items__item_id__download_attachment_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Download Item Attachment Api Share Links Public  Token  Items  Item Id  Download Attachment Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/zip/upload-url":{"post":{"tags":["Share Links"],"summary":"Public Request Zip Upload Url","description":"Request signed URL for direct GCS upload of zip file via share link.","operationId":"public_request_zip_upload_url_api_share_links_public__token__zip_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZipUploadUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Request Zip Upload Url Api Share Links Public  Token  Zip Upload Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/zip/complete":{"post":{"tags":["Share Links"],"summary":"Public Complete Zip Upload","description":"Complete zip upload via share link and create extraction job.","operationId":"public_complete_zip_upload_api_share_links_public__token__zip_complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZipCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Complete Zip Upload Api Share Links Public  Token  Zip Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/share-links/public/{token}/jobs/{job_id}":{"get":{"tags":["Share Links"],"summary":"Public Get Job Status","description":"Check status of a zip extraction job via share link.","operationId":"public_get_job_status_api_share_links_public__token__jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Get Job Status Api Share Links Public  Token  Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/preferences/cim":{"get":{"tags":["Preferences"],"summary":"Get Cim Preferences","description":"Get CIM preferences for the current advisory.\n\nReturns the advisory's CIM generation preferences including\ngranularity, narrative voice, and section emphasis.","operationId":"get_cim_preferences_api_preferences_cim_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Preferences"],"summary":"Update Cim Preferences","description":"Update CIM preferences for the current advisory (full replace).\n\nThis replaces all CIM preferences with the provided values.","operationId":"update_cim_preferences_api_preferences_cim_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferences"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["Preferences"],"summary":"Clear Cim Preferences","description":"Reset CIM preferences to defaults for the current advisory.","operationId":"clear_cim_preferences_api_preferences_cim_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["Preferences"],"summary":"Patch Cim Preferences","description":"Partially update CIM preferences for the current advisory.\n\nOnly the provided fields will be updated.","operationId":"patch_cim_preferences_api_preferences_cim_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/cim/references":{"get":{"tags":["Preferences"],"summary":"Get Reference Cims","description":"Get metadata for all reference CIM documents.","operationId":"get_reference_cims_api_preferences_cim_references_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ReferenceCIMDocument"},"type":"array","title":"Response Get Reference Cims Api Preferences Cim References Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Preferences"],"summary":"Add Reference Cim","description":"Add a document as a reference report for CIM style analysis.","operationId":"add_reference_cim_api_preferences_cim_references_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddReferenceCIMRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/cim/references/{document_id}":{"delete":{"tags":["Preferences"],"summary":"Remove Reference Cim","description":"Remove a document from reference reports.","operationId":"remove_reference_cim_api_preferences_cim_references__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/preferences/cim/analyze":{"post":{"tags":["Preferences"],"summary":"Analyze Reference Cims","description":"Analyze reference CIMs and extract preferences.\n\nThis will analyze the provided documents and update the advisory's\nCIM preferences based on the inferred patterns.","operationId":"analyze_reference_cims_api_preferences_cim_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeCIMsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/cim/reanalyze":{"post":{"tags":["Preferences"],"summary":"Reanalyze Reference Cims","description":"Re-analyze existing reference CIMs.\n\nThis will re-analyze the documents already set as reference CIMs\nand update the preferences.","operationId":"reanalyze_reference_cims_api_preferences_cim_reanalyze_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/cim/upload":{"post":{"tags":["Preferences"],"summary":"Upload Reference Cim","description":"Upload a reference report file directly for CIM style analysis.","operationId":"upload_reference_cim_api_preferences_cim_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_reference_cim_api_preferences_cim_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/cim/upload/{file_id}":{"delete":{"tags":["Preferences"],"summary":"Delete Uploaded Reference Cim","description":"Delete an uploaded reference report file.","operationId":"delete_uploaded_reference_cim_api_preferences_cim_upload__file_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTypePreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/preferences/logo/analyze":{"post":{"tags":["Preferences"],"summary":"Analyze Logo","description":"Analyze a logo image and return a suggested crop box.\n\nAccepts JPEG, PNG, or WebP images up to 2MB. Returns the normalized\nimage as a base64 data URL along with suggested crop coordinates.","operationId":"analyze_logo_api_preferences_logo_analyze_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_logo_api_preferences_logo_analyze_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoCropSuggestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/logo/crop":{"post":{"tags":["Preferences"],"summary":"Crop And Save Logo","description":"Crop and optionally remove background from a logo, then save to GCS.\n\nAccepts the base64 data URL returned by /logo/analyze along with\nuser-adjusted crop coordinates.","operationId":"crop_and_save_logo_api_preferences_logo_crop_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoCropRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/preferences/logo":{"get":{"tags":["Preferences"],"summary":"Get Advisory Logo","description":"Get the current advisory logo URL and display name.\n\nReturns a signed URL for the logo (or null if unset) and the advisory's name.","operationId":"get_advisory_logo_api_preferences_logo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoResponse"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["Preferences"],"summary":"Delete Advisory Logo","description":"Delete the advisory logo.","operationId":"delete_advisory_logo_api_preferences_logo_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Delete Advisory Logo Api Preferences Logo Delete"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/research/generate":{"post":{"tags":["Research"],"summary":"Generate Research","description":"Trigger research generation job.\n\nCreates a background job to generate research insights using Perplexity API.\nRe-running will replace existing insights for this research type.","operationId":"generate_research_api_research_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/research/status/{business_id}":{"get":{"tags":["Research"],"summary":"Get Research Status","description":"Get research completion status for a business.\n\nReturns which research types have been completed and insight counts.","operationId":"get_research_status_api_research_status__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sourcing/chat":{"post":{"tags":["Sourcing"],"summary":"Sourcing Chat","description":"Send a message in a sourcing chat session.","operationId":"sourcing_chat_api_sourcing_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__sourcing__ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/sourcing/sessions/{business_id}":{"get":{"tags":["Sourcing"],"summary":"List Sessions","description":"List sourcing chat sessions for a business.","operationId":"list_sessions_api_sourcing_sessions__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionOut"},"title":"Response List Sessions Api Sourcing Sessions  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sourcing/messages/{session_id}":{"get":{"tags":["Sourcing"],"summary":"List Messages","description":"Get all messages for a sourcing chat session.","operationId":"list_messages_api_sourcing_messages__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageOut"},"title":"Response List Messages Api Sourcing Messages  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/summaries/{business_id}":{"get":{"tags":["Summaries"],"summary":"Get Summaries","description":"Get all summaries for a business (for the intelligence dashboard).","operationId":"get_summaries_api_summaries__business_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Summaries Api Summaries  Business Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/summaries/{business_id}/generate":{"post":{"tags":["Summaries"],"summary":"Generate Summaries","description":"Trigger regeneration of data room summaries for the intelligence dashboard.","operationId":"generate_summaries_api_summaries__business_id__generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSummariesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/request":{"post":{"tags":["support"],"summary":"Submit Support Request","description":"Submit support/feedback request.\n\nSends an email to support@flagpost.ai with the user's message.","operationId":"submit_support_request_support_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Submit Support Request Support Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/accounts":{"get":{"tags":["accounts"],"summary":"List Accounts","operationId":"list_accounts_api_accounts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Business Id"}},{"name":"side","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(internal|external)$"},{"type":"null"}],"title":"Side"}},{"name":"include_calculations","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Calculations"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountModel"},"title":"Response List Accounts Api Accounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["accounts"],"summary":"Create Account","operationId":"create_account_api_accounts_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/in-use":{"get":{"tags":["accounts"],"summary":"Accounts In Use","description":"Account ids this business already has data against (cannot be deleted).","operationId":"accounts_in_use_api_accounts_in_use_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Response Accounts In Use Api Accounts In Use Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}":{"patch":{"tags":["accounts"],"summary":"Update Account","operationId":"update_account_api_accounts__account_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account","operationId":"delete_account_api_accounts__account_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/reorder":{"post":{"tags":["accounts"],"summary":"Reorder Accounts","operationId":"reorder_accounts_api_accounts_reorder_post","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccountReorderItem"},"type":"array","title":"Items"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccountModel"},"type":"array","title":"Response Reorder Accounts Api Accounts Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/accounts/seed":{"post":{"tags":["accounts"],"summary":"Seed Accounts","description":"Templating is shelved — seed is a no-op kept for API compatibility.","operationId":"seed_accounts_api_accounts_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"integer"},"type":"object","title":"Response Seed Accounts Api Accounts Seed Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/templates/seed":{"post":{"tags":["templates"],"summary":"Seed Templates","description":"Seed default templates for the current advisory if not already seeded.\n\nAlways returns the request_list template so callers don't need a separate fetch.","operationId":"seed_templates_api_templates_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seed Templates Api Templates Seed Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/templates/reseed":{"post":{"tags":["templates"],"summary":"Reseed Templates","description":"Reset templates to canonical defaults.\n\nPass ?type=request_list to reset only one type. Omit to reset all.","operationId":"reseed_templates_api_templates_reseed_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemplateType"},{"type":"null"}],"title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reseed Templates Api Templates Reseed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/questionnaires":{"get":{"tags":["templates"],"summary":"List Questionnaire Templates","description":"List all questionnaire templates for the current advisory.","operationId":"list_questionnaire_templates_api_templates_questionnaires_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Questionnaire Templates Api Templates Questionnaires Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["templates"],"summary":"Create Questionnaire Template","description":"Create a new questionnaire template.","operationId":"create_questionnaire_template_api_templates_questionnaires_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Questionnaire Template Api Templates Questionnaires Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/templates/reports":{"get":{"tags":["templates"],"summary":"List Report Templates","description":"List all report templates for Settings > Templates > Reports.\n\nReturns all advisory report templates (built-in and user-created).\nTemplates are seeded via POST /api/templates/seed.","operationId":"list_report_templates_api_templates_reports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Report Templates Api Templates Reports Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/templates/{template_id}":{"delete":{"tags":["templates"],"summary":"Delete Template","description":"Delete a user-manageable template.","operationId":"delete_template_api_templates__template_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Template Api Templates  Template Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/{template_type}":{"get":{"tags":["templates"],"summary":"Get Template","description":"Get a template with all its items by type.","operationId":"get_template_api_templates__template_type__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/TemplateType"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Template Api Templates  Template Type  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/{template_id}/name":{"patch":{"tags":["templates"],"summary":"Rename Template","description":"Rename a template.","operationId":"rename_template_api_templates__template_id__name_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rename Template Api Templates  Template Id  Name Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/{template_id}/items":{"post":{"tags":["templates"],"summary":"Create Template Item","description":"Add a new item to a template.","operationId":"create_template_item_api_templates__template_id__items_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateItemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Template Item Api Templates  Template Id  Items Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/items/{item_id}":{"patch":{"tags":["templates"],"summary":"Update Template Item","description":"Update a template item.","operationId":"update_template_item_api_templates_items__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Template Item Api Templates Items  Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["templates"],"summary":"Delete Template Item","description":"Delete a template item.","operationId":"delete_template_item_api_templates_items__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Template Item Api Templates Items  Item Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/{template_id}/items/reorder":{"post":{"tags":["templates"],"summary":"Reorder Template Items","description":"Reorder template items. Body: [{\"id\": \"uuid\", \"sort_order\": 1}, ...]","operationId":"reorder_template_items_api_templates__template_id__items_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReorderItem"},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Reorder Template Items Api Templates  Template Id  Items Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/items/{item_id}/upload":{"post":{"tags":["templates"],"summary":"Upload Item Attachment","description":"Upload a file attachment for a template item.","operationId":"upload_item_attachment_api_templates_items__item_id__upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_item_attachment_api_templates_items__item_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Item Attachment Api Templates Items  Item Id  Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/items/{item_id}/download":{"get":{"tags":["templates"],"summary":"Download Item Attachment","description":"Get a signed download URL for a template item's attachment.","operationId":"download_item_attachment_api_templates_items__item_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Download Item Attachment Api Templates Items  Item Id  Download Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/items/{item_id}/attachment":{"delete":{"tags":["templates"],"summary":"Delete Item Attachment","description":"Delete a template item's file attachment.","operationId":"delete_item_attachment_api_templates_items__item_id__attachment_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Item Attachment Api Templates Items  Item Id  Attachment Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists":{"get":{"tags":["request-lists"],"summary":"Get Request Lists","description":"Get all request lists for a business.","operationId":"get_request_lists_api_businesses__business_id__request_lists_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Request Lists Api Businesses  Business Id  Request Lists Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["request-lists"],"summary":"Create Request List","description":"Create a request list, optionally from a template.","operationId":"create_request_list_api_businesses__business_id__request_lists_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestListCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Request List Api Businesses  Business Id  Request Lists Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}":{"get":{"tags":["request-lists"],"summary":"Get Request List","description":"Get a request list with all items and their linked documents.","operationId":"get_request_list_api_businesses__business_id__request_lists__request_list_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Request List Api Businesses  Business Id  Request Lists  Request List Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["request-lists"],"summary":"Delete Request List","description":"Delete a request list and all its items.","operationId":"delete_request_list_api_businesses__business_id__request_lists__request_list_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Request List Api Businesses  Business Id  Request Lists  Request List Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/from-template":{"post":{"tags":["request-lists"],"summary":"Create From Template","description":"Create a request list from the advisory's request_list template.\n\nConvenience endpoint — seeds template if needed, then copies items.","operationId":"create_from_template_api_businesses__business_id__request_lists_from_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create From Template Api Businesses  Business Id  Request Lists From Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/visibility":{"patch":{"tags":["request-lists"],"summary":"Update Request List Visibility","description":"Update whether a request list is visible in the client portal.","operationId":"update_request_list_visibility_api_businesses__business_id__request_lists__request_list_id__visibility_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestListVisibilityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Request List Visibility Api Businesses  Business Id  Request Lists  Request List Id  Visibility Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items":{"post":{"tags":["request-lists"],"summary":"Create Request Item","description":"Add a new item to a request list.","operationId":"create_request_item_api_businesses__business_id__request_lists__request_list_id__items_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestItemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Request Item Api Businesses  Business Id  Request Lists  Request List Id  Items Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}":{"patch":{"tags":["request-lists"],"summary":"Update Request Item","description":"Update a request item.\n\nOnce the seller has responded, the request itself (title, category) is\nlocked; the description stays editable so the advisor can clarify it.","operationId":"update_request_item_api_businesses__business_id__request_lists__request_list_id__items__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Request Item Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["request-lists"],"summary":"Delete Request Item","description":"Delete a request item.","operationId":"delete_request_item_api_businesses__business_id__request_lists__request_list_id__items__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Request Item Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/status":{"patch":{"tags":["request-lists"],"summary":"Update Item Status","description":"Set an item's status from the status dropdown.\n\nClosing an item (complete / N/A) pins it: links and unlinks no longer\nmove its status, and AI file matching skips it. Reopening it hands status\nback to those rules.","operationId":"update_item_status_api_businesses__business_id__request_lists__request_list_id__items__item_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestItemStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Item Status Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Status Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/status-notes":{"patch":{"tags":["request-lists"],"summary":"Update Status Notes","description":"Save the advisor's status note; the seller sees it on /share.","operationId":"update_status_notes_api_businesses__business_id__request_lists__request_list_id__items__item_id__status_notes_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusNotesUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Status Notes Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Status Notes Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/internal-notes":{"patch":{"tags":["request-lists"],"summary":"Update Internal Notes","description":"Save the advisor team's internal note; /share never selects it.","operationId":"update_internal_notes_api_businesses__business_id__request_lists__request_list_id__items__item_id__internal_notes_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalNotesUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Internal Notes Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Internal Notes Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/upload":{"post":{"tags":["request-lists"],"summary":"Upload Request Item Attachment","description":"Upload a reference attachment for a request list item.","operationId":"upload_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Request Item Attachment Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/download-attachment":{"get":{"tags":["request-lists"],"summary":"Download Request Item Attachment","description":"Get a signed download URL for a request list item attachment.","operationId":"download_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__download_attachment_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Download Request Item Attachment Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Download Attachment Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/attachment":{"delete":{"tags":["request-lists"],"summary":"Delete Request Item Attachment","description":"Delete a request list item's reference attachment.","operationId":"delete_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__attachment_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Request Item Attachment Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Attachment Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/documents":{"post":{"tags":["request-lists"],"summary":"Link Document","description":"Link a document to a request item.","operationId":"link_document_api_businesses__business_id__request_lists__request_list_id__items__item_id__documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestItemDocumentLink"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Link Document Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/documents/{document_id}":{"delete":{"tags":["request-lists"],"summary":"Unlink Document","description":"Unlink a document from a request item.","operationId":"unlink_document_api_businesses__business_id__request_lists__request_list_id__items__item_id__documents__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Unlink Document Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Documents  Document Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/suggestions/{suggestion_id}/accept":{"post":{"tags":["request-lists"],"summary":"Accept Suggestion","description":"Accept an AI-suggested file: it becomes an advisor link to the item.\n\nA file the seller already linked keeps its seller link.","operationId":"accept_suggestion_api_businesses__business_id__request_lists__request_list_id__items__item_id__suggestions__suggestion_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"suggestion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Suggestion Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accept Suggestion Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Suggestions  Suggestion Id  Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/items/{item_id}/suggestions/{suggestion_id}/reject":{"post":{"tags":["request-lists"],"summary":"Reject Suggestion","description":"Reject an AI-suggested file; it is never suggested for this item again.","operationId":"reject_suggestion_api_businesses__business_id__request_lists__request_list_id__items__item_id__suggestions__suggestion_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"suggestion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Suggestion Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Reject Suggestion Api Businesses  Business Id  Request Lists  Request List Id  Items  Item Id  Suggestions  Suggestion Id  Reject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/import-from-template":{"post":{"tags":["request-lists"],"summary":"Import Items From Template","description":"Import specific items from the advisory's template into the request list.\n\nBody: {\"item_ids\": [\"uuid1\", \"uuid2\", ...]}","operationId":"import_items_from_template_api_businesses__business_id__request_lists__request_list_id__import_from_template_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Import Items From Template Api Businesses  Business Id  Request Lists  Request List Id  Import From Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/match":{"post":{"tags":["request-lists"],"summary":"Rerun Matching","description":"Run AI file matching for a whole list, one category, one item, or the\nfiles uploaded since the last new-files run.\n\nClosed items (complete or N/A) are skipped: the advisor has decided\nthem, so new suggestions would only be noise.","operationId":"rerun_matching_api_businesses__business_id__request_lists__request_list_id__match_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rerun Matching Api Businesses  Business Id  Request Lists  Request List Id  Match Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/matching-status":{"get":{"tags":["request-lists"],"summary":"Get Matching Status","description":"What AI file matching is queued or running for this list.\n\n``item_ids`` are this list's items in a pending or running job;\n``documents`` is true while new uploads are being matched, which can\ntouch any item. ``new_files``, ``processing_files``, ``unreadable_files``\nand ``waiting_files`` describe uploads no new-files run has read yet\n(see ``new_file_status``).\n\nWith ``since`` (a previous ``as_of``), ``failed_item_ids`` are this\nlist's items that failed in a run finished since then, and\n``run_failed`` is true if a whole run failed, so the page can say so\ninstead of showing no suggestions.","operationId":"get_matching_status_api_businesses__business_id__request_lists__request_list_id__matching_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Matching Status Api Businesses  Business Id  Request Lists  Request List Id  Matching Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/generate-email-draft":{"post":{"tags":["request-lists"],"summary":"Generate Email Draft","description":"Generate an email draft for preview.","operationId":"generate_email_draft_api_businesses__business_id__request_lists__request_list_id__generate_email_draft_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__request_lists__GenerateEmailDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Generate Email Draft Api Businesses  Business Id  Request Lists  Request List Id  Generate Email Draft Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/businesses/{business_id}/request-lists/{request_list_id}/send-email":{"post":{"tags":["request-lists"],"summary":"Send Request List Email","description":"Send an information request email for a specific request list.","operationId":"send_request_list_email_api_businesses__business_id__request_lists__request_list_id__send_email_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}},{"name":"request_list_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request List Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Send Request List Email Api Businesses  Business Id  Request Lists  Request List Id  Send Email Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-status":{"get":{"tags":["Admin"],"summary":"Get Ai Status","description":"Get AI system status: kill switch, thresholds, current costs.","operationId":"get_ai_status_api_admin_ai_status_get","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ai Status Api Admin Ai Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-costs/today":{"get":{"tags":["Admin"],"summary":"Get Ai Costs Today","description":"Get today's AI cost breakdown from Langfuse.","operationId":"get_ai_costs_today_api_admin_ai_costs_today_get","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ai Costs Today Api Admin Ai Costs Today Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-kill-switch":{"post":{"tags":["Admin"],"summary":"Toggle Kill Switch","description":"Toggle the AI kill switch on or off.","operationId":"toggle_kill_switch_api_admin_ai_kill_switch_post","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KillSwitchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Toggle Kill Switch Api Admin Ai Kill Switch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-thresholds":{"post":{"tags":["Admin"],"summary":"Update Thresholds","description":"Update cost alert thresholds.","operationId":"update_thresholds_api_admin_ai_thresholds_post","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThresholdsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Thresholds Api Admin Ai Thresholds Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-check-now":{"post":{"tags":["Admin"],"summary":"Trigger Threshold Check","description":"Manually trigger a cost threshold check (for debugging).","operationId":"trigger_threshold_check_api_admin_ai_check_now_post","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Threshold Check Api Admin Ai Check Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-costs/snapshot":{"post":{"tags":["Admin"],"summary":"Create Ai Cost Snapshot","description":"Pull Langfuse for a UTC day and upsert into ai_cost_daily_snapshots.","operationId":"create_ai_cost_snapshot_api_admin_ai_costs_snapshot_post","parameters":[{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Ai Cost Snapshot Api Admin Ai Costs Snapshot Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ai-costs/snapshots":{"get":{"tags":["Admin"],"summary":"Get Ai Cost Snapshots","description":"List durable Langfuse cost snapshots from Supabase.","operationId":"get_ai_cost_snapshots_api_admin_ai_costs_snapshots_get","parameters":[{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":366,"minimum":1,"default":90,"title":"Limit"}},{"name":"x-task-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Task-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ai Cost Snapshots Api Admin Ai Costs Snapshots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/anonymization/source-documents":{"get":{"tags":["anonymization"],"summary":"List Source Documents","description":"List documents for the picker with supported/unsupported classification.","operationId":"list_source_documents_api_anonymization_source_documents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Source Documents Api Anonymization Source Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/anonymization/scan":{"post":{"tags":["anonymization"],"summary":"Start Scan","operationId":"start_scan_api_anonymization_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStartedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/anonymization/mappings":{"post":{"tags":["anonymization"],"summary":"Approve Mappings","description":"Approve candidates: hash + store aliases, discard plaintext.","operationId":"approve_mappings_api_anonymization_mappings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveMappingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Approve Mappings Api Anonymization Mappings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/anonymization/run":{"post":{"tags":["anonymization"],"summary":"Start Run","operationId":"start_run_api_anonymization_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStartedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/anonymization/runs":{"get":{"tags":["anonymization"],"summary":"List Runs","operationId":"list_runs_api_anonymization_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Business Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs Api Anonymization Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Read Root","operationId":"read_root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Read Root  Get"}}}}}}}},"components":{"schemas":{"AccessMatrixBusiness":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","name","status"],"title":"AccessMatrixBusiness"},"AccessMatrixMembership":{"properties":{"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"role":{"type":"string","enum":["maintainer","member"],"title":"Role"}},"type":"object","required":["advisor_id","business_id","role"],"title":"AccessMatrixMembership"},"AccessMatrixResponse":{"properties":{"businesses":{"items":{"$ref":"#/components/schemas/AccessMatrixBusiness"},"type":"array","title":"Businesses"},"advisors":{"items":{"$ref":"#/components/schemas/AdvisoryMemberResponse"},"type":"array","title":"Advisors"},"memberships":{"items":{"$ref":"#/components/schemas/AccessMatrixMembership"},"type":"array","title":"Memberships"}},"type":"object","required":["businesses","advisors","memberships"],"title":"AccessMatrixResponse"},"AccountCreate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Code"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"account_type":{"type":"string","enum":["asset","liability","equity","income","expense"],"title":"Account Type"},"sub_type":{"type":"string","enum":["bank","accounts_receivable","current_assets","property_plant_equipment","long_term_assets","credit_card","accounts_payable","other_current_liabilities","long_term_liabilities","equity","income","other_income","cogs","expenses","depreciation_amortization","interest_expense","income_taxes","other_expense"],"title":"Sub Type"},"side":{"type":"string","enum":["internal","external"],"title":"Side","default":"internal"},"is_calculation":{"type":"boolean","title":"Is Calculation","default":false},"business_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Business Id"},"databook_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Databook Id"},"parent_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Account Id"},"sort_order":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sort Order"}},"type":"object","required":["name","account_type","sub_type"],"title":"AccountCreate"},"AccountModel":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advisory_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Advisory Id"},"business_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Business Id"},"databook_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Databook Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"name":{"type":"string","title":"Name"},"account_type":{"type":"string","enum":["asset","liability","equity","income","expense"],"title":"Account Type"},"sub_type":{"type":"string","enum":["bank","accounts_receivable","current_assets","property_plant_equipment","long_term_assets","credit_card","accounts_payable","other_current_liabilities","long_term_liabilities","equity","income","other_income","cogs","expenses","depreciation_amortization","interest_expense","income_taxes","other_expense"],"title":"Sub Type"},"is_system":{"type":"boolean","title":"Is System","default":false},"side":{"type":"string","enum":["internal","external"],"title":"Side","default":"internal"},"is_calculation":{"type":"boolean","title":"Is Calculation","default":false},"parent_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Account Id"},"sort_order":{"type":"number","title":"Sort Order","default":0}},"type":"object","required":["id","name","account_type","sub_type"],"title":"AccountModel"},"AccountReorderItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"sort_order":{"type":"number","title":"Sort Order"}},"type":"object","required":["id","sort_order"],"title":"AccountReorderItem"},"AccountUpdate":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"account_type":{"anyOf":[{"type":"string","enum":["asset","liability","equity","income","expense"]},{"type":"null"}],"title":"Account Type"},"sub_type":{"anyOf":[{"type":"string","enum":["bank","accounts_receivable","current_assets","property_plant_equipment","long_term_assets","credit_card","accounts_payable","other_current_liabilities","long_term_liabilities","equity","income","other_income","cogs","expenses","depreciation_amortization","interest_expense","income_taxes","other_expense"]},{"type":"null"}],"title":"Sub Type"},"side":{"anyOf":[{"type":"string","enum":["internal","external"]},{"type":"null"}],"title":"Side"},"is_calculation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Calculation"},"parent_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Account Id"},"sort_order":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"AccountUpdate"},"AddBusinessMemberRequest":{"properties":{"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"},"role":{"type":"string","enum":["maintainer","member"],"title":"Role","default":"member"}},"type":"object","required":["advisor_id"],"title":"AddBusinessMemberRequest"},"AddReferenceCIMRequest":{"properties":{"document_id":{"type":"string","title":"Document Id","description":"Document ID to add as reference"}},"type":"object","required":["document_id"],"title":"AddReferenceCIMRequest","description":"Request to add a reference CIM."},"AddSectionRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","required":["title"],"title":"AddSectionRequest","description":"Request to add a new section to a report."},"AdditionalPatterns":{"properties":{"uses_case_studies":{"type":"boolean","title":"Uses Case Studies","description":"Whether reports typically include case studies","default":false},"includes_market_data":{"type":"boolean","title":"Includes Market Data","description":"Whether reports include market data/research","default":true},"financial_detail_level":{"type":"string","enum":["high","medium","low"],"title":"Financial Detail Level","description":"Level of financial detail in reports","default":"medium"},"uses_visual_elements":{"type":"boolean","title":"Uses Visual Elements","description":"Whether reports use charts, diagrams, tables","default":true},"includes_appendices":{"type":"boolean","title":"Includes Appendices","description":"Whether reports typically include appendices","default":false}},"type":"object","title":"AdditionalPatterns","description":"Additional style patterns extracted from reference reports."},"AdjustmentJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["job_id","message"],"title":"AdjustmentJobResponse","description":"Response returned when an adjustment background job is created."},"AdjustmentResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"advisory_id":{"type":"string","title":"Advisory Id"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"consensus_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consensus Id"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"},"adjustment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adjustment Type"},"name":{"type":"string","title":"Name"},"definition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition"},"direction":{"type":"string","title":"Direction"},"recurrence":{"type":"string","title":"Recurrence"},"confidence":{"type":"string","title":"Confidence"},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rationale"},"suggested_questions":{"items":{"type":"string"},"type":"array","title":"Suggested Questions"},"source_flag_ids":{"items":{"type":"string"},"type":"array","title":"Source Flag Ids"},"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Values"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"ebitda_impact":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ebitda Impact"},"period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period End"},"fiscal_year":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiscal Year"},"quantification_status":{"type":"string","title":"Quantification Status"},"evidence":{"items":{"type":"string"},"type":"array","title":"Evidence"},"source_document_ids":{"items":{"type":"string"},"type":"array","title":"Source Document Ids"},"source_documents":{"items":{"$ref":"#/components/schemas/SourceDocumentRef"},"type":"array","title":"Source Documents"},"status":{"type":"string","title":"Status"},"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"priority_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority Rank"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved By"}},"type":"object","required":["id","business_id","advisory_id","created_by","consensus_id","category","name","definition","direction","recurrence","confidence","rationale","suggested_questions","source_flag_ids","amount","ebitda_impact","period_start","period_end","fiscal_year","quantification_status","evidence","source_document_ids","status","advisor_notes","resolution","priority_rank","created_at","updated_at","resolved_at","resolved_by"],"title":"AdjustmentResponse","description":"Adjustment record returned to the frontend."},"AdjustmentUpdate":{"properties":{"status":{"anyOf":[{"type":"string","enum":["pending","accepted","dismissed"]},{"type":"null"}],"title":"Status"},"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"direction":{"anyOf":[{"type":"string","enum":["add_back","deduction","either"]},{"type":"null"}],"title":"Direction"},"period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period End"},"fiscal_year":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiscal Year"}},"type":"object","title":"AdjustmentUpdate","description":"Editable fields on an adjustment (advisor overrides)."},"AdjustmentsListResponse":{"properties":{"adjustments":{"items":{"$ref":"#/components/schemas/AdjustmentResponse"},"type":"array","title":"Adjustments"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["adjustments","total"],"title":"AdjustmentsListResponse","description":"Wrapper for the adjustments list."},"AdvisoryMemberResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"role":{"type":"string","enum":["admin","member"],"title":"Role"},"enabled":{"type":"boolean","title":"Enabled"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","email","full_name","role","enabled","created_at"],"title":"AdvisoryMemberResponse"},"AgenticAskResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"reasoning":{"type":"string","title":"Reasoning","default":""},"sources_cited":{"items":{"$ref":"#/components/schemas/SourceRef"},"type":"array","title":"Sources Cited"},"sources_searched":{"items":{"$ref":"#/components/schemas/SourceRef"},"type":"array","title":"Sources Searched"},"files_retrieved":{"type":"integer","title":"Files Retrieved"},"confidence":{"type":"string","title":"Confidence"},"agentic":{"type":"boolean","title":"Agentic","default":true},"turns":{"type":"integer","title":"Turns","default":0},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["answer","files_retrieved","confidence"],"title":"AgenticAskResponse","description":"Response model for agentic Q&A."},"AnalyzeCIMsRequest":{"properties":{"document_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Document Ids","description":"List of document IDs to analyze"}},"type":"object","required":["document_ids"],"title":"AnalyzeCIMsRequest","description":"Request to analyze reference CIMs."},"ApiKeyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"business_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Business Ids"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"}},"type":"object","required":["id","name","prefix","scopes","business_ids","expires_at","last_used_at","revoked_at","created_at","advisor_id"],"title":"ApiKeyResponse"},"ApplyFolderSuggestionsRequest":{"properties":{"document_ids":{"items":{"type":"string"},"type":"array","title":"Document Ids"},"dismiss":{"type":"boolean","title":"Dismiss","default":false}},"type":"object","required":["document_ids"],"title":"ApplyFolderSuggestionsRequest"},"ApplyTemplateRequest":{"properties":{"template_id":{"type":"string","title":"Template Id"}},"type":"object","required":["template_id"],"title":"ApplyTemplateRequest","description":"Request to apply a questionnaire template to a business."},"ApproveMappingsRequest":{"properties":{"business_id":{"type":"string","format":"uuid","title":"Business Id"},"mappings":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Mappings","description":"[{\"real\": \"...\", \"alias\": \"...\", \"kind\": \"company\"}]"}},"type":"object","required":["business_id","mappings"],"title":"ApproveMappingsRequest"},"AskRequest":{"properties":{"question":{"type":"string","title":"Question"},"conversation_history":{"items":{"$ref":"#/components/schemas/ConversationMessage"},"type":"array","title":"Conversation History","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["question"],"title":"AskRequest","description":"Request model for asking a question."},"AssumptionResponse":{"properties":{"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"},"cell_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cell Reference"},"sheet_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Name"},"source_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Value"},"target_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Value"},"confidence":{"type":"number","title":"Confidence","default":0.8}},"type":"object","required":["type","description"],"title":"AssumptionResponse","description":"A single assumption made during data cleaning."},"Body_analyze_custom_template_api_reports_analyze_custom_template_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_analyze_custom_template_api_reports_analyze_custom_template_post"},"Body_analyze_logo_api_preferences_logo_analyze_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_analyze_logo_api_preferences_logo_analyze_post"},"Body_analyze_pre_teaser_api_reports_analyze_pre_teaser_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_analyze_pre_teaser_api_reports_analyze_pre_teaser_post"},"Body_fill_template_api_businesses__business_id__workbook_fill_template_post":{"properties":{"template":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Template"}},"type":"object","title":"Body_fill_template_api_businesses__business_id__workbook_fill_template_post"},"Body_public_upload_document_api_share_links_public__token__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_public_upload_document_api_share_links_public__token__upload_post"},"Body_upload_deal_template_api_advisories_me_deal_template_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_deal_template_api_advisories_me_deal_template_upload_post"},"Body_upload_document_api_businesses__business_id__documents_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_document_api_businesses__business_id__documents_post"},"Body_upload_documents_batch_api_businesses__business_id__documents_batch_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_upload_documents_batch_api_businesses__business_id__documents_batch_post"},"Body_upload_item_attachment_api_templates_items__item_id__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_item_attachment_api_templates_items__item_id__upload_post"},"Body_upload_reference_cim_api_preferences_cim_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_reference_cim_api_preferences_cim_upload_post"},"Body_upload_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_request_item_attachment_api_businesses__business_id__request_lists__request_list_id__items__item_id__upload_post"},"Body_upload_section_image_api_businesses__business_id__reports__report_id__sections__section_id__images_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"insight_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insight Id"}},"type":"object","required":["file"],"title":"Body_upload_section_image_api_businesses__business_id__reports__report_id__sections__section_id__images_post"},"BrandingMetaResponse":{"properties":{"brand_name":{"type":"string","title":"Brand Name"},"title":{"type":"string","title":"Title"},"has_icon":{"type":"boolean","title":"Has Icon"},"has_logo":{"type":"boolean","title":"Has Logo"}},"type":"object","required":["brand_name","title","has_icon","has_logo"],"title":"BrandingMetaResponse"},"BulkApplyAITitlesRequest":{"properties":{"document_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Document Ids"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"},"all_documents":{"type":"boolean","title":"All Documents","default":false}},"type":"object","title":"BulkApplyAITitlesRequest","description":"Request to apply AI-generated titles as display names.\n\nSupports three scopes (mutually exclusive, checked in this order):\n1. all_documents=True → apply to entire VDR\n2. folder_id set → apply to all docs in that folder\n3. document_ids set → apply to specific docs"},"BusinessMemberResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"role":{"type":"string","enum":["maintainer","member"],"title":"Role"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","advisor_id","business_id","role","email","full_name","created_at"],"title":"BusinessMemberResponse"},"BusinessSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","name"],"title":"BusinessSummary"},"ChatMessageOut":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","role","content"],"title":"ChatMessageOut"},"ChatResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"response":{"type":"string","title":"Response"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","default":[]},"search_queries":{"items":{"type":"string"},"type":"array","title":"Search Queries","default":[]}},"type":"object","required":["session_id","response"],"title":"ChatResponse"},"ChatSessionResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"message_count":{"type":"integer","title":"Message Count"},"last_message_at":{"type":"string","title":"Last Message At"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","name","message_count","last_message_at","created_at"],"title":"ChatSessionResponse","description":"Response model for a chat session."},"CheckMissingDataRequest":{"properties":{"required_documents":{"items":{"type":"string"},"type":"array","title":"Required Documents"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"send_alert":{"type":"boolean","title":"Send Alert","default":false}},"type":"object","required":["required_documents"],"title":"CheckMissingDataRequest","description":"Request to check for missing documents."},"ConflictResolveRequest":{"properties":{"action":{"type":"string","title":"Action","description":"accepted or dismissed"}},"type":"object","required":["action"],"title":"ConflictResolveRequest"},"ConversationMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"ConversationMessage","description":"A message in the conversation history."},"CreateApiKeyRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"business_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Business Ids"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["name","expires_at"],"title":"CreateApiKeyRequest"},"CreateApiKeyResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"business_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Business Ids"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"},"token":{"type":"string","title":"Token"}},"type":"object","required":["id","name","prefix","scopes","business_ids","expires_at","last_used_at","revoked_at","created_at","advisor_id","token"],"title":"CreateApiKeyResponse","description":"Includes the plaintext token — returned once at creation."},"CreateBusinessRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"industry":{"type":"string","title":"Industry"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","required":["name","industry"],"title":"CreateBusinessRequest"},"CreateInsightRequest":{"properties":{"field_name":{"type":"string","title":"Field Name"},"field_label":{"type":"string","title":"Field Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"value_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value Json"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},"type":"object","required":["field_name","field_label"],"title":"CreateInsightRequest","description":"Request model for creating a custom insight."},"CreateReminderRequest":{"properties":{"reminder_type":{"type":"string","title":"Reminder Type"},"recipient_email":{"type":"string","title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"schedule_type":{"type":"string","title":"Schedule Type"},"scheduled_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled Date"},"recurrence_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Pattern"},"recurrence_interval":{"type":"integer","title":"Recurrence Interval","default":1},"max_sends":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Sends"}},"type":"object","required":["reminder_type","recipient_email","subject","message","schedule_type"],"title":"CreateReminderRequest","description":"Request to create a reminder."},"CreateReportRequest":{"properties":{"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"},"report_type":{"type":"string","title":"Report Type","default":"custom"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"custom_sections":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomSectionInput"},"type":"array"},{"type":"null"}],"title":"Custom Sections","description":"Sections extracted from reference analysis (overrides template sections)"},"custom_style":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Style","description":"Style preferences extracted from reference analysis (stored in report config)"},"reference_files":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Reference Files","description":"Metadata for uploaded reference files"},"enable_document_query":{"type":"boolean","title":"Enable Document Query","description":"When true, each section will query the data room via RAG at generation time","default":false},"pre_teaser_config":{"anyOf":[{"$ref":"#/components/schemas/PreTeaserConfigInput"},{"type":"null"}],"description":"When set with template pre-teaser, imports PDF content rebranded to this business"}},"type":"object","title":"CreateReportRequest","description":"Request to create a new report."},"CreateShareLinkRequest":{"properties":{"business_id":{"type":"string","title":"Business Id"},"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days"},"max_uses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Uses"},"allowed_emails":{"items":{"type":"string"},"type":"array","title":"Allowed Emails"},"request_list_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request List Id"}},"type":"object","required":["business_id","allowed_emails"],"title":"CreateShareLinkRequest","description":"Request to create a share link."},"CustomSectionInput":{"properties":{"section_id":{"type":"string","title":"Section Id"},"title":{"type":"string","title":"Title"},"template_text":{"type":"string","title":"Template Text","default":""},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["section_id","title"],"title":"CustomSectionInput","description":"A section extracted from reference document analysis."},"DataCleaningInputs":{"properties":{"company_names":{"items":{"type":"string"},"type":"array","title":"Company Names","description":"Company/entity display names the user expects in the workbook"},"entities":{"items":{"$ref":"#/components/schemas/EntityInput"},"type":"array","title":"Entities","description":"Entities for multi-entity extraction (best-effort prefill)"},"fiscal_year_end":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Fiscal Year End","description":"Fiscal year end month (1=Jan .. 12=Dec)"},"fiscal_year_label_offset":{"type":"integer","maximum":1.0,"minimum":-1.0,"title":"Fiscal Year Label Offset","description":"Years the fiscal year's name runs ahead of the calendar year its months fall in. 0 = same. +1 when a year end in the first days of January makes Jan-Dec 2024 into fiscal 2025.","default":0},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year","description":"Start year for periods"},"start_month":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Start Month","description":"Start month (1-12)"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year","description":"End year for periods"},"end_month":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"End Month","description":"End month (1-12)"},"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids","description":"Per-run allowlist of financial document IDs. Empty means every financial document that is not in ``excluded_document_ids``."},"excluded_document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Excluded Document Ids","description":"Durable databook-level exclusions: files that are not part of this databook. Distinct from the per-run allowlist."},"ignore_periods_outside_window":{"type":"boolean","title":"Ignore Periods Outside Window","description":"Drop period values (including prior-year comparatives on external financials) that fall outside the selected window before fold/clamp.","default":false},"persist_mode":{"type":"string","enum":["merge","rebuild"],"title":"Persist Mode","description":"How AI line items are persisted. ``merge`` is the production default (cumulative). ``rebuild`` wipes ``ai_generated`` rows and re-inserts — kept for tests and explicit escape-hatch runs.","default":"merge"},"refresh_document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Refresh Document Ids","description":"Document IDs whose previously written AI cells may be overwritten on this run (per-document refresh)."}},"type":"object","title":"DataCleaningInputs","description":"User-facing inputs that drive a data cleaning run."},"DataCleaningPrefill":{"properties":{"company_names":{"items":{"type":"string"},"type":"array","title":"Company Names"},"entities":{"items":{"$ref":"#/components/schemas/PrefillEntity"},"type":"array","title":"Entities"},"fiscal_year_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year End"},"fiscal_year_label_offset":{"type":"integer","title":"Fiscal Year Label Offset","default":0},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"start_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Month"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"end_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Month"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","title":"DataCleaningPrefill","description":"Best-guess prefill for the data cleaning input form."},"DataCleaningStatusResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"status":{"type":"string","title":"Status","default":"completed"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"assumptions_count":{"type":"integer","title":"Assumptions Count","default":0},"assumptions_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assumptions Summary"},"source_documents":{"items":{"type":"string"},"type":"array","title":"Source Documents","default":[]},"temporal_mismatch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Temporal Mismatch"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"data_cleaning_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Cleaning Job Id"}},"type":"object","required":["success","message"],"title":"DataCleaningStatusResponse","description":"Status response for data cleaning operations."},"DatabookAgentStreamRequest":{"properties":{"message":{"type":"string","minLength":1,"title":"Message"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["message"],"title":"DatabookAgentStreamRequest","description":"SSE chat request for the databook agent."},"DatabookColumnModel":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"period_key":{"type":"string","title":"Period Key"},"label":{"type":"string","title":"Label"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"year":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year"},"depth":{"type":"integer","title":"Depth","default":0},"derived":{"type":"boolean","title":"Derived","default":false},"closing_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closing Period"},"rolling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rolling"}},"type":"object","required":["period_key","label"],"title":"DatabookColumnModel","description":"Period column definition for a databook.\n\nColumns are fiscal years. Months exist only inside the year that contains\nthem, which is what an advisor expects from a spreadsheet: one column per\nyear, expandable to the detail behind it."},"DatabookEntityModel":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"fiscal_year_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year End"},"fiscal_year_label_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year Label Offset"},"effective_fiscal_year_end":{"type":"integer","title":"Effective Fiscal Year End","default":12},"effective_label_offset":{"type":"integer","title":"Effective Label Offset","default":0}},"type":"object","required":["id","name"],"title":"DatabookEntityModel","description":"Entity available in the databook (drives per-entity views, template '- A/- B' sheets)."},"DatabookModel":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"advisory_id":{"type":"string","format":"uuid","title":"Advisory Id"},"status":{"$ref":"#/components/schemas/DatabookStatus","default":"empty"},"fiscal_year_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year End"},"fiscal_year_label_offset":{"type":"integer","title":"Fiscal Year Label Offset","default":0},"currency":{"type":"string","title":"Currency","default":"USD"},"granularity":{"$ref":"#/components/schemas/TemporalGranularity","default":"yearly"},"period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period End"},"company_names":{"items":{"type":"string"},"type":"array","title":"Company Names"},"inputs":{"$ref":"#/components/schemas/DataCleaningInputs"},"source_job_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Job Id"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"columns":{"items":{"$ref":"#/components/schemas/DatabookColumnModel"},"type":"array","title":"Columns"},"sheets":{"items":{"$ref":"#/components/schemas/DatabookSheetModel"},"type":"array","title":"Sheets"},"entities":{"items":{"$ref":"#/components/schemas/DatabookEntityModel"},"type":"array","title":"Entities"},"has_mixed_fiscal_calendars":{"type":"boolean","title":"Has Mixed Fiscal Calendars","default":false},"entity_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Scope"},"calendar_warnings":{"items":{"type":"string"},"type":"array","title":"Calendar Warnings"},"has_manual_edits":{"type":"boolean","title":"Has Manual Edits","default":false},"last_merge_stats":{"additionalProperties":true,"type":"object","title":"Last Merge Stats"},"adjustments_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adjustments Error"},"applied_adjustment_count":{"type":"integer","title":"Applied Adjustment Count","default":0},"draft_adjustment_count":{"type":"integer","title":"Draft Adjustment Count","default":0},"aje_extraction":{"additionalProperties":true,"type":"object","title":"Aje Extraction"},"reported_net_income":{"additionalProperties":{"type":"number"},"type":"object","title":"Reported Net Income"}},"type":"object","required":["id","business_id","advisory_id"],"title":"DatabookModel","description":"Full databook payload returned to the UI."},"DatabookRowCreate":{"properties":{"label":{"type":"string","minLength":1,"title":"Label"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"section":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"mapped_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mapped Account Id"},"statement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statement"},"row_type":{"$ref":"#/components/schemas/DatabookRowType","default":"line_item"},"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Values"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"}},"type":"object","required":["label"],"title":"DatabookRowCreate","description":"Create a new row on a sheet."},"DatabookRowModel":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"sheet_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sheet Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"label":{"type":"string","title":"Label"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"section":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"mapped_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mapped Account Id"},"mapped_account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mapped Account Name"},"mapping":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mapping"},"contributors":{"items":{"type":"string"},"type":"array","title":"Contributors"},"row_type":{"$ref":"#/components/schemas/DatabookRowType","default":"line_item"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"depth":{"type":"integer","title":"Depth","default":0},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"built":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Built"},"delta":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Delta"},"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Values"},"superseded_periods":{"items":{"type":"string"},"type":"array","title":"Superseded Periods"},"values_meta":{"additionalProperties":true,"type":"object","title":"Values Meta"},"source":{"additionalProperties":true,"type":"object","title":"Source"},"source_document_ids":{"items":{"type":"string"},"type":"array","title":"Source Document Ids"},"is_manual_edit":{"type":"boolean","title":"Is Manual Edit","default":false}},"type":"object","required":["label"],"title":"DatabookRowModel","description":"One row in a databook sheet (maps to a grid row)."},"DatabookRowType":{"type":"string","enum":["line_item","subtotal","total","header"],"title":"DatabookRowType","description":"Row classification inside a databook sheet."},"DatabookRowUpdate":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"section":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"mapped_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Mapped Account Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"mapping":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mapping"},"row_type":{"anyOf":[{"$ref":"#/components/schemas/DatabookRowType"},{"type":"null"}]},"values":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Values"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"DatabookRowUpdate","description":"Partial update for a databook row."},"DatabookSheetKind":{"type":"string","enum":["pnl","balance_sheet","clean_pl","clean_bs","mapping"],"title":"DatabookSheetKind","description":"Sheet kinds stored in the internal databook."},"DatabookSheetModel":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"kind":{"$ref":"#/components/schemas/DatabookSheetKind"},"name":{"type":"string","title":"Name"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"rows":{"items":{"$ref":"#/components/schemas/DatabookRowModel"},"type":"array","title":"Rows"}},"type":"object","required":["kind","name"],"title":"DatabookSheetModel","description":"Sheet within a databook (P&L, Balance Sheet, and their clean views)."},"DatabookStatus":{"type":"string","enum":["empty","processing","ready","failed"],"title":"DatabookStatus","description":"Lifecycle status of a business databook."},"DayJitterMode":{"type":"string","enum":["none","monotone","free"],"title":"DayJitterMode"},"DealAssumptions":{"properties":{"total_aum":{"type":"number","minimum":0.0,"title":"Total Aum","description":"Total AUM ($)","default":0.0},"gross_revenue":{"type":"number","minimum":0.0,"title":"Gross Revenue","description":"Annual gross revenue ($)","default":0.0},"operating_expenses_annual":{"type":"number","minimum":0.0,"title":"Operating Expenses Annual","description":"Annual operating expenses ($)","default":0.0},"valuation_multiple":{"type":"number","minimum":0.0,"title":"Valuation Multiple","description":"Applied to gross revenue or adjusted EBITDA for purchase price (see valuation_basis)","default":0.0},"platform_fee_pct":{"type":"number","title":"Platform Fee Pct","description":"Platform fee on AUM as annual decimal (e.g. 0.0012 = 12 bps)","default":0.0012},"advisor_grid":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Advisor Grid","description":"Advisor grid / revenue share factor","default":0.9},"seller_note_interest_rate":{"type":"number","title":"Seller Note Interest Rate","description":"Annual seller note rate (decimal)","default":0.04},"down_payment_interest_rate":{"type":"number","title":"Down Payment Interest Rate","description":"Annual bank / DP loan rate (decimal)","default":0.075},"purchasing_interest_pct":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Purchasing Interest Pct","description":"Share of revenue / economics purchased","default":0.5},"advisor_profitability_headcount":{"type":"number","minimum":0.0,"title":"Advisor Profitability Headcount","default":1.0},"admin_profitability_headcount":{"type":"number","minimum":0.0,"title":"Admin Profitability Headcount","default":1.0},"comp_model_annual":{"type":"number","title":"Comp Model Annual","description":"Comp model annual amount ($)","default":0.0},"adjusted_ebitda_annual":{"type":"number","minimum":0.0,"title":"Adjusted Ebitda Annual","description":"Normalized / adjusted EBITDA ($) — used when valuation_basis is ebitda","default":0.0},"valuation_basis":{"type":"string","enum":["revenue","ebitda"],"title":"Valuation Basis","description":"Purchase price = multiple × (revenue or adjusted EBITDA) × purchasing interest","default":"revenue"}},"type":"object","title":"DealAssumptions","description":"Fixed inputs shared across scenarios (matches Scenario Analysis fixed assumptions)."},"DealAssumptionsUpdate":{"properties":{"total_aum":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Aum"},"gross_revenue":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Revenue"},"platform_fee_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Platform Fee Pct"},"advisor_grid":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Advisor Grid"},"valuation_multiple":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Valuation Multiple"},"seller_note_interest_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Seller Note Interest Rate"},"down_payment_interest_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Down Payment Interest Rate"},"operating_expenses_annual":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Expenses Annual"},"purchasing_interest_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Purchasing Interest Pct"},"advisor_profitability_headcount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Advisor Profitability Headcount"},"admin_profitability_headcount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Admin Profitability Headcount"},"comp_model_annual":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Comp Model Annual"},"adjusted_ebitda_annual":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adjusted Ebitda Annual"},"valuation_basis":{"anyOf":[{"type":"string","enum":["revenue","ebitda"]},{"type":"null"}],"title":"Valuation Basis"}},"type":"object","title":"DealAssumptionsUpdate","description":"Partial update for assumptions (all fields optional)."},"DealScenario":{"properties":{"name":{"type":"string","title":"Name"},"down_payment_pct":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Down Payment Pct"},"seller_note_pct":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Seller Note Pct"},"earnout_pct":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Earnout Pct","default":0.0},"earnout_term_years":{"type":"number","minimum":0.0,"title":"Earnout Term Years","description":"Earnout payout period in years (0 if no earnout)","default":0.0},"seller_note_term_years":{"type":"number","exclusiveMinimum":0.0,"title":"Seller Note Term Years"},"down_payment_loan_term_years":{"type":"number","exclusiveMinimum":0.0,"title":"Down Payment Loan Term Years"},"purchasing_interest_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Purchasing Interest Pct","description":"Override global purchasing interest for this scenario if set"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","down_payment_pct","seller_note_pct","seller_note_term_years","down_payment_loan_term_years"],"title":"DealScenario","description":"One deal structure column (inputs)."},"DealStructureAgentStreamRequest":{"properties":{"message":{"type":"string","maxLength":8000,"minLength":1,"title":"Message"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["message"],"title":"DealStructureAgentStreamRequest"},"DealStructureCreate":{"properties":{"assumptions":{"$ref":"#/components/schemas/DealAssumptions"},"scenarios":{"items":{"$ref":"#/components/schemas/DealScenario"},"type":"array","maxItems":8,"minItems":1,"title":"Scenarios"}},"type":"object","required":["assumptions","scenarios"],"title":"DealStructureCreate","description":"Create payload."},"DocumentDecryptBody":{"properties":{"password":{"type":"string","maxLength":512,"minLength":1,"format":"password","title":"Password","writeOnly":true}},"type":"object","required":["password"],"title":"DocumentDecryptBody","description":"Password to unlock an encrypted PDF or Office file. Never logged or stored."},"DocumentEmailDraftResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"body_text":{"type":"string","title":"Body Text"},"recipient_email":{"type":"string","title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"requested_documents":{"items":{"type":"string"},"type":"array","title":"Requested Documents"}},"type":"object","required":["subject","body_html","body_text","recipient_email","recipient_name","requested_documents"],"title":"DocumentEmailDraftResponse","description":"Response for document request email draft."},"DocumentRequestRequest":{"properties":{"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"},"custom_documents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Documents"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"},"custom_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Subject"},"custom_body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Body Html"}},"type":"object","title":"DocumentRequestRequest","description":"Request to send document request list to seller."},"DocumentSupersedesBody":{"properties":{"supersedes_document_id":{"type":"string","format":"uuid","title":"Supersedes Document Id"}},"type":"object","required":["supersedes_document_id"],"title":"DocumentSupersedesBody","description":"Older file that this upload replaces. Set by an advisor, never by AI."},"DocumentSupersedesRequest":{"properties":{"supersedes_document_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Supersedes Document Id"}},"type":"object","title":"DocumentSupersedesRequest"},"DocumentUpdate":{"properties":{"folder_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Folder Id"},"standardized_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standardized Name"}},"type":"object","title":"DocumentUpdate","description":"Update document fields."},"EmailDraftResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"body_text":{"type":"string","title":"Body Text"},"recipient_email":{"type":"string","title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"missing_insights":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Missing Insights"}},"type":"object","required":["subject","body_html","body_text","recipient_email","recipient_name","missing_insights"],"title":"EmailDraftResponse","description":"Response with generated email draft."},"EntityInput":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Canonical entity display name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases","description":"Alternate names that should map to this entity"},"fiscal_year_end":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Fiscal Year End","description":"Entity fiscal year end month (1=Jan .. 12=Dec). Null means inherit the databook reporting year end."},"fiscal_year_label_offset":{"anyOf":[{"type":"integer","maximum":1.0,"minimum":-1.0},{"type":"null"}],"title":"Fiscal Year Label Offset","description":"Entity fiscal year label offset. Null inherits the databook offset."}},"type":"object","required":["name"],"title":"EntityInput","description":"User-defined entity for multi-entity data cleaning."},"FeaturesMeResponse":{"properties":{"flags":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Flags"}},"type":"object","required":["flags"],"title":"FeaturesMeResponse"},"FinancialFlagResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"advisory_id":{"type":"string","title":"Advisory Id"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"item":{"type":"string","title":"Item"},"statement_type":{"type":"string","title":"Statement Type"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"fiscal_year":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiscal Year"},"concern":{"type":"string","title":"Concern"},"severity":{"type":"string","title":"Severity"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"suggested_questions":{"items":{"type":"string"},"type":"array","title":"Suggested Questions"},"source_document_ids":{"items":{"type":"string"},"type":"array","title":"Source Document Ids"},"status":{"type":"string","title":"Status"},"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"priority_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority Rank"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved By"}},"type":"object","required":["id","business_id","advisory_id","created_by","item","statement_type","location","amount","fiscal_year","concern","severity","category","suggested_questions","source_document_ids","status","advisor_notes","resolution","created_at","updated_at","resolved_at","resolved_by"],"title":"FinancialFlagResponse","description":"Financial flag response model."},"FinancialFlagUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"}},"type":"object","title":"FinancialFlagUpdate","description":"Model for updating a financial flag."},"FinancialFlagsListResponse":{"properties":{"flags":{"items":{"$ref":"#/components/schemas/FinancialFlagResponse"},"type":"array","title":"Flags"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["flags","total"],"title":"FinancialFlagsListResponse","description":"Wrapper for paginated flags list."},"GenerateAdjustmentsRequest":{"properties":{},"type":"object","title":"GenerateAdjustmentsRequest","description":"Request to (re)generate adjustments."},"GenerateChartsResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"insight_id":{"type":"string","title":"Insight Id"},"charts_generated":{"type":"integer","title":"Charts Generated"}},"type":"object","required":["success","insight_id","charts_generated"],"title":"GenerateChartsResponse","description":"Response for generate charts request."},"GenerateInsightsResponse":{"properties":{"job_ids":{"items":{"type":"string"},"type":"array","title":"Job Ids"},"total_jobs":{"type":"integer","title":"Total Jobs"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["job_ids","total_jobs","status","message"],"title":"GenerateInsightsResponse","description":"Response model for generate insights endpoint."},"GenerateReportRequest":{"properties":{"model_name":{"type":"string","title":"Model Name","default":"gemini-3.1-pro-preview"},"temperature":{"type":"number","title":"Temperature","default":1},"location":{"type":"string","title":"Location","default":"global"},"generation_mode":{"type":"string","enum":["build_on_current","start_fresh"],"title":"Generation Mode","default":"build_on_current"}},"type":"object","title":"GenerateReportRequest","description":"Request to generate report section(s)."},"GenerateResearchRequest":{"properties":{"business_id":{"type":"string","title":"Business Id"},"research_type":{"type":"string","enum":["website","industry","competitive"],"title":"Research Type"},"max_insights":{"type":"integer","title":"Max Insights","default":15}},"type":"object","required":["business_id","research_type"],"title":"GenerateResearchRequest","description":"Request to generate research insights."},"GenerateResearchResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["job_id","message"],"title":"GenerateResearchResponse","description":"Response from research generation request."},"GenerateSummariesResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["job_id","message"],"title":"GenerateSummariesResponse","description":"Response from summary regeneration request."},"GetSessionMessagesResponse":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/SessionMessageResponse"},"type":"array","title":"Messages"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["messages","session_id"],"title":"GetSessionMessagesResponse","description":"Response model for getting session messages."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InsightResponse":{"properties":{"id":{"type":"string","title":"Id"},"field_name":{"type":"string","title":"Field Name"},"field_label":{"type":"string","title":"Field Label"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"priority":{"type":"integer","title":"Priority","default":3},"value_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Value Json"},"sources":{"items":{"$ref":"#/components/schemas/SourceRef"},"type":"array","title":"Sources"},"insight_source":{"type":"string","title":"Insight Source"},"research_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Research Type"},"is_edited":{"type":"boolean","title":"Is Edited"},"original_value_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Original Value Json"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"edited_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited At"},"edited_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited By"},"suggested_charts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Suggested Charts"}},"type":"object","required":["id","field_name","field_label","category","description","value_json","sources","insight_source","is_edited","original_value_json","created_at","updated_at"],"title":"InsightResponse","description":"API response for a single insight."},"InsightUpdate":{"properties":{"value_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Value Json"},"is_revert":{"type":"boolean","title":"Is Revert","default":false},"field_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"InsightUpdate","description":"Update request for editing an insight."},"InternalNotesUpdate":{"properties":{"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"}},"type":"object","title":"InternalNotesUpdate","description":"The advisor team's internal note for an item; never shown to the seller."},"JobCreate":{"properties":{"job_type":{"$ref":"#/components/schemas/JobType"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["job_type"],"title":"JobCreate","description":"Model for creating a new job."},"JobResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"$ref":"#/components/schemas/JobStatus"},"job_type":{"$ref":"#/components/schemas/JobType"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","status","job_type","created_at"],"title":"JobResponse","description":"API response model for job status."},"JobStartedResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"}},"type":"object","required":["job_id"],"title":"JobStartedResponse"},"JobStatus":{"type":"string","enum":["pending","processing","completed","failed"],"title":"JobStatus","description":"Job status enum - must match database enum job_status."},"JobType":{"type":"string","enum":["report_generation","custom_report_analysis","report_section_generation","zip_extraction","reminder_processing","document_processing","rag_engine_upload","file_search_index","manifest_generation","vdr_classification","insight_extraction","red_flag_extraction","advisor_insight_fill","research_generation","summary_generation","insight_answer","request_matching","adjustment_generation","adjustment_quantification","data_cleaning","coa_remapping","anonymization_scan","anonymization_run","markdown_extraction","document_indexing","table_extraction","markdown_batch_poll","inbound_email"],"title":"JobType","description":"Job type enum - must match database enum job_type."},"JournalEntryCreate":{"properties":{"memo":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Memo"},"period_key":{"type":"string","maxLength":100,"minLength":1,"title":"Period Key"},"status":{"$ref":"#/components/schemas/JournalEntryStatus","default":"draft"},"entry_no":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Entry No"},"lines":{"items":{"$ref":"#/components/schemas/JournalEntryLineInput"},"type":"array","maxItems":500,"minItems":2,"title":"Lines"}},"type":"object","required":["period_key","lines"],"title":"JournalEntryCreate","description":"Create a new journal entry with 2..n lines."},"JournalEntryLineInput":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"amount":{"type":"number","title":"Amount"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"raw_label":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Raw Label"}},"type":"object","required":["amount"],"title":"JournalEntryLineInput","description":"One debit/credit leg of a journal entry.\n\nAmounts are universal: debits positive, credits negative.\n``account_id`` may be omitted on extracted drafts when ``raw_label`` is set\nso the advisor can resolve the caption before applying."},"JournalEntryLineModel":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"amount":{"type":"number","title":"Amount"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"raw_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Label"}},"type":"object","required":["id","amount"],"title":"JournalEntryLineModel","description":"Persisted journal entry line."},"JournalEntryModel":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"advisory_id":{"type":"string","format":"uuid","title":"Advisory Id"},"databook_id":{"type":"string","format":"uuid","title":"Databook Id"},"memo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memo"},"period_key":{"type":"string","title":"Period Key"},"status":{"$ref":"#/components/schemas/JournalEntryStatus","default":"draft"},"origin":{"$ref":"#/components/schemas/JournalEntryOrigin","default":"manual"},"entry_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry No"},"source_document_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Document Id"},"source_meta":{"additionalProperties":true,"type":"object","title":"Source Meta"},"version":{"type":"integer","title":"Version","default":1},"lines":{"items":{"$ref":"#/components/schemas/JournalEntryLineModel"},"type":"array","title":"Lines"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","business_id","advisory_id","databook_id","period_key"],"title":"JournalEntryModel","description":"Full journal entry payload returned to the UI."},"JournalEntryOrigin":{"type":"string","enum":["manual","extracted"],"title":"JournalEntryOrigin","description":"How the entry entered the ledger."},"JournalEntryStatus":{"type":"string","enum":["draft","applied"],"title":"JournalEntryStatus","description":"Status of a journal entry. Only ``applied`` affects balances."},"JournalEntryUpdate":{"properties":{"memo":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Memo"},"period_key":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Period Key"},"status":{"anyOf":[{"$ref":"#/components/schemas/JournalEntryStatus"},{"type":"null"}]},"lines":{"anyOf":[{"items":{"$ref":"#/components/schemas/JournalEntryLineInput"},"type":"array","maxItems":500,"minItems":2},{"type":"null"}],"title":"Lines"},"version":{"type":"integer","minimum":1.0,"title":"Version"}},"type":"object","required":["version"],"title":"JournalEntryUpdate","description":"Partial update; lines, when provided, fully replace existing lines."},"KillSwitchRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["enabled"],"title":"KillSwitchRequest"},"LinkedBy":{"type":"string","enum":["client","advisor"],"title":"LinkedBy","description":"Who linked a document to a request item. AI suggestions are not links."},"ListChatSessionsResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/ChatSessionResponse"},"type":"array","title":"Sessions"}},"type":"object","required":["sessions"],"title":"ListChatSessionsResponse","description":"Response model for listing chat sessions."},"LogoCropRequest":{"properties":{"image_data_url":{"type":"string","title":"Image Data Url"},"crop_x":{"type":"integer","title":"Crop X"},"crop_y":{"type":"integer","title":"Crop Y"},"crop_width":{"type":"integer","title":"Crop Width"},"crop_height":{"type":"integer","title":"Crop Height"},"remove_background":{"type":"boolean","title":"Remove Background","default":false}},"type":"object","required":["image_data_url","crop_x","crop_y","crop_width","crop_height"],"title":"LogoCropRequest","description":"Request to crop and save a logo."},"LogoCropSuggestionResponse":{"properties":{"image_data_url":{"type":"string","title":"Image Data Url"},"image_width":{"type":"integer","title":"Image Width"},"image_height":{"type":"integer","title":"Image Height"},"crop_x":{"type":"integer","title":"Crop X"},"crop_y":{"type":"integer","title":"Crop Y"},"crop_width":{"type":"integer","title":"Crop Width"},"crop_height":{"type":"integer","title":"Crop Height"},"has_uniform_background":{"type":"boolean","title":"Has Uniform Background"}},"type":"object","required":["image_data_url","image_width","image_height","crop_x","crop_y","crop_width","crop_height","has_uniform_background"],"title":"LogoCropSuggestionResponse","description":"Response from logo analysis for crop editor."},"LogoResponse":{"properties":{"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"advisory_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisory Name"}},"type":"object","title":"LogoResponse","description":"Response model for advisory logo."},"MappingAJELineInput":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"external_account_id":{"type":"string","format":"uuid","title":"External Account Id"},"adjustment_amount":{"type":"number","title":"Adjustment Amount"},"posting_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Posting Account Id"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"posting_period_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posting Period Key"}},"type":"object","required":["external_account_id","adjustment_amount"],"title":"MappingAJELineInput"},"MappingAJEUpsert":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"reason":{"type":"string","enum":["depreciation","amortization","expense_accrual","prepaid_deferral","revenue_accrual","capitalization","provision","income_tax_provision","draws_to_equity","reclass","loan_payment_split","intercompany_elimination_revenue_expense","intercompany_elimination_balances","rounding","unexplained"],"title":"Reason"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"advisor_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisor Notes"},"evidence":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence"},"lines":{"items":{"$ref":"#/components/schemas/MappingAJELineInput"},"type":"array","minItems":1,"title":"Lines"},"version":{"type":"integer","minimum":1.0,"title":"Version"}},"type":"object","required":["reason","lines","version"],"title":"MappingAJEUpsert"},"MappingEntryUpdate":{"properties":{"external_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"External Account Id"},"version":{"type":"integer","minimum":1.0,"title":"Version"}},"type":"object","required":["version"],"title":"MappingEntryUpdate"},"MappingImmaterialRequest":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"},"external_account_id":{"type":"string","format":"uuid","title":"External Account Id"}},"type":"object","required":["version","external_account_id"],"title":"MappingImmaterialRequest"},"MappingPostRequest":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"},"confirm":{"type":"boolean","title":"Confirm","default":false}},"type":"object","required":["version"],"title":"MappingPostRequest"},"MappingReconciliationResponse":{"properties":{"artifact_id":{"type":"string","format":"uuid","title":"Artifact Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"databook_id":{"type":"string","format":"uuid","title":"Databook Id"},"target_kind":{"type":"string","title":"Target Kind"},"period_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Key"},"version":{"type":"integer","title":"Version"},"status":{"type":"string","title":"Status"},"entries":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Entries"},"external_accounts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"External Accounts"},"deltas":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Deltas"},"ajes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Ajes"},"advisory_accounts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Advisory Accounts"},"entities":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Entities"},"summary":{"additionalProperties":{"type":"integer"},"type":"object","title":"Summary"}},"type":"object","required":["artifact_id","business_id","databook_id","target_kind","version","status"],"title":"MappingReconciliationResponse"},"MappingSaveBody":{"properties":{"entries":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Entries"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","title":"MappingSaveBody"},"MappingVersionRequest":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"}},"type":"object","required":["version"],"title":"MappingVersionRequest"},"MatchRequest":{"properties":{"scope":{"type":"string","enum":["list","category","item","new_files"],"title":"Scope"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"item_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Item Id"}},"type":"object","required":["scope"],"title":"MatchRequest"},"MeResponse":{"properties":{"advisor_id":{"type":"string","format":"uuid","title":"Advisor Id"},"advisory_id":{"type":"string","format":"uuid","title":"Advisory Id"},"role":{"type":"string","title":"Role"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"allowed_business_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Allowed Business Ids"},"api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Api Key Id"},"api_key_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Prefix"},"businesses":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Businesses"}},"type":"object","required":["advisor_id","advisory_id","role","scopes","allowed_business_ids","api_key_id","api_key_prefix","businesses"],"title":"MeResponse"},"MessageMetadata":{"properties":{"sources_cited":{"items":{"$ref":"#/components/schemas/MessageSourceCited"},"type":"array","title":"Sources Cited","default":[]},"sources_searched":{"items":{"$ref":"#/components/schemas/MessageSourceCited"},"type":"array","title":"Sources Searched","default":[]}},"type":"object","title":"MessageMetadata"},"MessageOut":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","role","content","created_at"],"title":"MessageOut"},"MessageSourceCited":{"properties":{"file_name":{"type":"string","title":"File Name"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"chunk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Id"},"sheet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet"},"citation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Citation"}},"type":"object","required":["file_name"],"title":"MessageSourceCited"},"NarrativeVoice":{"properties":{"style_adjectives":{"items":{"type":"string"},"type":"array","title":"Style Adjectives","description":"Adjectives describing the writing style (e.g., 'professional', 'data-driven')"},"tone":{"type":"string","enum":["formal","conversational","balanced"],"title":"Tone","description":"Overall tone of the writing","default":"balanced"},"vocabulary_patterns":{"items":{"type":"string"},"type":"array","title":"Vocabulary Patterns","description":"Notable vocabulary patterns or recurring phrases"},"sentence_structure":{"type":"string","enum":["complex","simple","varied"],"title":"Sentence Structure","description":"Typical sentence structure complexity","default":"varied"},"formatting_preferences":{"items":{"type":"string"},"type":"array","title":"Formatting Preferences","description":"Formatting preferences (e.g., 'bullet points', 'tables')"},"voice_instructions":{"type":"string","title":"Voice Instructions","description":"Full narrative voice instructions for prompt injection","default":""}},"type":"object","title":"NarrativeVoice","description":"Narrative voice preferences extracted from reference reports."},"PatchReportRequest":{"properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Merged into reports.config (e.g. pdf_page_break_after_each_section)"}},"type":"object","title":"PatchReportRequest","description":"Partial update for a report. `config` keys are shallow-merged into existing config."},"PreTeaserConfigInput":{"properties":{"sections":{"items":{"$ref":"#/components/schemas/PreTeaserSectionInput"},"type":"array","title":"Sections"},"source_business_name":{"type":"string","title":"Source Business Name","description":"Business name detected in the uploaded report (to replace)"},"uploaded_references":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Uploaded References","description":"Metadata for uploaded source PDFs"}},"type":"object","required":["sections","source_business_name"],"title":"PreTeaserConfigInput","description":"Payload for creating a pre-teaser report with rebranded content."},"PreTeaserSectionInput":{"properties":{"section_id":{"type":"string","title":"Section Id"},"title":{"type":"string","title":"Title"},"content_markdown":{"type":"string","title":"Content Markdown","default":""}},"type":"object","required":["section_id","title"],"title":"PreTeaserSectionInput","description":"One section from pre-teaser analysis (markdown body before rebrand on create)."},"PrefillEntity":{"properties":{"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"confidence":{"type":"number","title":"Confidence","default":0.5},"matched_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched From"},"fiscal_year_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year End"},"fiscal_year_label_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year Label Offset"}},"type":"object","required":["name"],"title":"PrefillEntity","description":"Entity suggestion from prefill."},"PublicShareLinkInfo":{"properties":{"business_name":{"type":"string","title":"Business Name"},"business_id":{"type":"string","title":"Business Id"},"advisory_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisory Name"},"advisory_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advisory Logo Url"},"is_valid":{"type":"boolean","title":"Is Valid"},"request_items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Request Items"}},"type":"object","required":["business_name","business_id","is_valid","request_items"],"title":"PublicShareLinkInfo","description":"Public share link info for sellers."},"ReferenceCIMDocument":{"properties":{"id":{"type":"string","title":"Id"},"file_name":{"type":"string","title":"File Name"},"gcs_path":{"type":"string","title":"Gcs Path"},"mime_type":{"type":"string","title":"Mime Type"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","file_name","gcs_path","mime_type","created_at"],"title":"ReferenceCIMDocument","description":"Reference CIM document metadata."},"RegenerateReviewRequest":{"properties":{"force":{"type":"boolean","title":"Force","default":false}},"type":"object","title":"RegenerateReviewRequest","description":"Request to regenerate financial review."},"ReminderResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"reminder_type":{"type":"string","title":"Reminder Type"},"recipient_email":{"type":"string","title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"schedule_type":{"type":"string","title":"Schedule Type"},"scheduled_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled Date"},"recurrence_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Pattern"},"recurrence_interval":{"type":"integer","title":"Recurrence Interval"},"next_send_date":{"type":"string","format":"date-time","title":"Next Send Date"},"last_sent_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sent Date"},"is_active":{"type":"boolean","title":"Is Active"},"send_count":{"type":"integer","title":"Send Count"},"max_sends":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Sends"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","business_id","reminder_type","recipient_email","recipient_name","subject","message","schedule_type","scheduled_date","recurrence_pattern","recurrence_interval","next_send_date","last_sent_date","is_active","send_count","max_sends","created_at","updated_at"],"title":"ReminderResponse","description":"Reminder response model."},"ReorderItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"sort_order":{"type":"integer","title":"Sort Order"}},"type":"object","required":["id","sort_order"],"title":"ReorderItem","description":"Single item in a reorder request."},"ReorderSectionsRequest":{"properties":{"section_ids":{"items":{"type":"string"},"type":"array","title":"Section Ids"}},"type":"object","required":["section_ids"],"title":"ReorderSectionsRequest","description":"Request to reorder sections. List of section IDs in new order."},"ReportTypePreferences":{"properties":{"reference_report_ids":{"items":{"type":"string"},"type":"array","title":"Reference Report Ids","description":"Document IDs of reference reports from data rooms"},"uploaded_references":{"items":{"$ref":"#/components/schemas/UploadedReference"},"type":"array","title":"Uploaded References","description":"Directly uploaded reference report files"},"style":{"$ref":"#/components/schemas/ReportTypeStyle","description":"Style preferences extracted from reference reports"},"last_analyzed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Analyzed At","description":"When the reference reports were last analyzed"}},"type":"object","title":"ReportTypePreferences","description":"Preferences for a specific report type (e.g. CIM, custom)."},"ReportTypePreferencesResponse":{"properties":{"reference_report_ids":{"items":{"type":"string"},"type":"array","title":"Reference Report Ids"},"uploaded_references":{"items":{"$ref":"#/components/schemas/UploadedReferenceResponse"},"type":"array","title":"Uploaded References"},"style":{"$ref":"#/components/schemas/ReportTypeStyleResponse"},"last_analyzed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Analyzed At"}},"type":"object","required":["reference_report_ids","uploaded_references","style","last_analyzed_at"],"title":"ReportTypePreferencesResponse","description":"Response model for report type preferences."},"ReportTypePreferencesUpdate":{"properties":{"page_count_preference":{"anyOf":[{"type":"string","enum":["detailed","concise","standard"]},{"type":"null"}],"title":"Page Count Preference"},"granularity_level":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Granularity Level"},"narrative_voice":{"anyOf":[{"$ref":"#/components/schemas/NarrativeVoice"},{"type":"null"}]},"additional_patterns":{"anyOf":[{"$ref":"#/components/schemas/AdditionalPatterns"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"ReportTypePreferencesUpdate","description":"Model for partially updating report type style preferences.\n\nUses extra='allow' so new style fields can be patched without model changes."},"ReportTypeStyle":{"properties":{"narrative_voice":{"$ref":"#/components/schemas/NarrativeVoice"},"granularity_level":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Granularity Level","description":"Granularity level: 1=high-level, 5=very detailed","default":3},"page_count_preference":{"type":"string","enum":["detailed","concise","standard"],"title":"Page Count Preference","description":"Preferred level of detail/length","default":"standard"},"additional_patterns":{"$ref":"#/components/schemas/AdditionalPatterns"}},"additionalProperties":true,"type":"object","title":"ReportTypeStyle","description":"Style preferences extracted from reference reports via LLM analysis.\n\nUses extra='allow' so new LLM-captured fields can be added without model changes.\nSimply update the prompt + _parse_llm_response to capture new attributes."},"ReportTypeStyleResponse":{"properties":{"narrative_voice":{"$ref":"#/components/schemas/NarrativeVoice"},"granularity_level":{"type":"integer","title":"Granularity Level"},"page_count_preference":{"type":"string","title":"Page Count Preference"},"additional_patterns":{"$ref":"#/components/schemas/AdditionalPatterns"}},"type":"object","required":["narrative_voice","granularity_level","page_count_preference","additional_patterns"],"title":"ReportTypeStyleResponse","description":"Response model for report type style preferences."},"ReportedNetIncomeUpdate":{"properties":{"values":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object","title":"Values"}},"type":"object","required":["values"],"title":"ReportedNetIncomeUpdate","description":"Full replacement map: column key -> advisor-entered NI (null clears)."},"RequestItemCreate":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"description":{"type":"string","minLength":1,"title":"Description"},"is_required":{"type":"boolean","title":"Is Required","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["title","description"],"title":"RequestItemCreate","description":"Create a new request item."},"RequestItemDocumentLink":{"properties":{"document_id":{"type":"string","format":"uuid","title":"Document Id"},"linked_by":{"$ref":"#/components/schemas/LinkedBy"}},"type":"object","required":["document_id","linked_by"],"title":"RequestItemDocumentLink","description":"Link a document to a request item."},"RequestItemStatus":{"type":"string","enum":["pending","in_progress","fulfilled","not_applicable"],"title":"RequestItemStatus","description":"Status of a request item. Only advisors and the seller set it; the AI never does."},"RequestItemStatusUpdate":{"properties":{"status":{"$ref":"#/components/schemas/RequestItemStatus"}},"type":"object","required":["status"],"title":"RequestItemStatusUpdate","description":"An advisor sets an item's status by hand."},"RequestItemUpdate":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"title":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Description"},"is_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Required"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"RequestItemUpdate","description":"Update a request item (advisor editing)."},"RequestListCreate":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"source":{"$ref":"#/components/schemas/RequestListSource","default":"advisor"}},"type":"object","required":["title"],"title":"RequestListCreate","description":"Create a request list (from template or scratch)."},"RequestListSource":{"type":"string","enum":["advisor","buyer"],"title":"RequestListSource","description":"Origin of a request list."},"RequestListVisibilityUpdate":{"properties":{"client_visible":{"type":"boolean","title":"Client Visible"}},"type":"object","required":["client_visible"],"title":"RequestListVisibilityUpdate","description":"Update whether a request list is visible in the client portal."},"RequestMissingInsightsRequest":{"properties":{"insight_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Insight Ids"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"custom_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Subject"},"custom_body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Body Html"}},"type":"object","title":"RequestMissingInsightsRequest","description":"Request to send missing insights email."},"RequestOTPBody":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"RequestOTPBody"},"RequestOTPRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"RequestOTPRequest","description":"Request a 6-digit OTP for portal access."},"RescrapeWebsiteRequest":{"properties":{"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","title":"RescrapeWebsiteRequest","description":"Request to rescrape website insights."},"ResearchStatusResponse":{"properties":{"business_id":{"type":"string","title":"Business Id"},"research_completed":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Research Completed"},"insight_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Insight Counts"}},"type":"object","required":["business_id","research_completed","insight_counts"],"title":"ResearchStatusResponse","description":"Response with research completion status."},"RunRequest":{"properties":{"business_id":{"type":"string","format":"uuid","title":"Business Id"},"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"Document Ids"},"numeric_scale":{"type":"number","exclusiveMinimum":0.0,"title":"Numeric Scale","default":1.37},"year_offset":{"type":"integer","maximum":50.0,"minimum":-50.0,"title":"Year Offset","default":3},"day_jitter":{"$ref":"#/components/schemas/DayJitterMode","default":"monotone"},"output_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Name"},"block_scanned_pdfs":{"type":"boolean","title":"Block Scanned Pdfs","default":true}},"type":"object","required":["business_id","document_ids"],"title":"RunRequest"},"SaveReportTemplateRequest":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"overwrite_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Overwrite Template Id"}},"type":"object","required":["name"],"title":"SaveReportTemplateRequest","description":"Save a report's section skeleton as an advisory-level report template."},"ScanRequest":{"properties":{"business_id":{"type":"string","format":"uuid","title":"Business Id"},"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"Document Ids"},"use_llm":{"type":"boolean","title":"Use Llm","default":true}},"type":"object","required":["business_id","document_ids"],"title":"ScanRequest"},"ScenariosBody":{"properties":{"scenarios":{"items":{"$ref":"#/components/schemas/DealScenario"},"type":"array","maxItems":8,"minItems":1,"title":"Scenarios"}},"type":"object","required":["scenarios"],"title":"ScenariosBody","description":"Replace all scenario columns."},"SendEmailRequest":{"properties":{"recipient_email":{"type":"string","title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"personal_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personal Note"},"custom_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Subject"},"custom_body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Body Html"}},"type":"object","required":["recipient_email"],"title":"SendEmailRequest"},"SessionMessageResponse":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/MessageMetadata"},{"type":"null"}]},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp"}},"type":"object","required":["role","content"],"title":"SessionMessageResponse","description":"Response model for a single message in a session."},"SessionOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"message_count":{"type":"integer","title":"Message Count"},"last_message_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message At"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","name","message_count","last_message_at","created_at"],"title":"SessionOut"},"ShareLinkResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"token":{"type":"string","title":"Token"},"url":{"type":"string","title":"Url"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"max_uses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Uses"},"use_count":{"type":"integer","title":"Use Count"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","title":"Created At"},"allowed_emails":{"items":{"type":"string"},"type":"array","title":"Allowed Emails"},"request_list_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request List Id"}},"type":"object","required":["id","business_id","token","url","expires_at","max_uses","use_count","is_active","created_at","allowed_emails"],"title":"ShareLinkResponse","description":"Share link details."},"SnapshotRequest":{"properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date","description":"UTC day YYYY-MM-DD; defaults to today UTC"},"finalize":{"type":"boolean","title":"Finalize","default":false},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","title":"SnapshotRequest"},"SourceDocumentItem":{"properties":{"id":{"type":"string","title":"Id"},"file_name":{"type":"string","title":"File Name"},"document_subtype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Subtype"},"role":{"type":"string","title":"Role"},"supersedes_document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supersedes Document Id"}},"type":"object","required":["id","file_name","role"],"title":"SourceDocumentItem","description":"One financial source file candidate for include/exclude UI."},"SourceDocumentRef":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"SourceDocumentRef","description":"A document an adjustment is sourced from."},"SourceDocumentsResponse":{"properties":{"documents":{"items":{"$ref":"#/components/schemas/SourceDocumentItem"},"type":"array","title":"Documents"}},"type":"object","required":["documents"],"title":"SourceDocumentsResponse"},"SourceRef":{"properties":{"file_name":{"type":"string","title":"File Name"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"chunk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk"},"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"},"page_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Id"},"sheet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet"},"source_locator":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Locator"},"citation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Citation"}},"type":"object","required":["file_name"],"title":"SourceRef","description":"A source reference with optional rich citation data."},"StartCleaningRequest":{"properties":{"company_names":{"items":{"type":"string"},"type":"array","title":"Company Names"},"entities":{"items":{"$ref":"#/components/schemas/EntityInput"},"type":"array","title":"Entities"},"fiscal_year_end":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Fiscal Year End"},"fiscal_year_label_offset":{"type":"integer","maximum":1.0,"minimum":-1.0,"title":"Fiscal Year Label Offset","default":0},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"start_month":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Start Month"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"},"end_month":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"End Month"},"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Document Ids"},"excluded_document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Excluded Document Ids"},"ignore_periods_outside_window":{"type":"boolean","title":"Ignore Periods Outside Window","default":false},"persist_mode":{"type":"string","enum":["merge","rebuild"],"title":"Persist Mode","default":"merge"},"refresh_document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Refresh Document Ids"}},"type":"object","title":"StartCleaningRequest","description":"JSON body for starting a data cleaning run."},"StartCleaningResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"status":{"type":"string","title":"Status","default":"processing"},"job_id":{"type":"string","title":"Job Id"},"data_cleaning_job_id":{"type":"string","title":"Data Cleaning Job Id"}},"type":"object","required":["success","message","job_id","data_cleaning_job_id"],"title":"StartCleaningResponse"},"StatusNotesUpdate":{"properties":{"status_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Notes"}},"type":"object","title":"StatusNotesUpdate","description":"The advisor's status note for an item; the seller sees it on /share."},"SupportRequest":{"properties":{"category":{"type":"string","maxLength":100,"minLength":1,"title":"Category"},"message":{"type":"string","maxLength":5000,"minLength":10,"title":"Message"}},"type":"object","required":["category","message"],"title":"SupportRequest","description":"Support request from user."},"TemplateCreate":{"properties":{"type":{"$ref":"#/components/schemas/TemplateType"},"name":{"type":"string","title":"Name"}},"type":"object","required":["type","name"],"title":"TemplateCreate","description":"Create a new template."},"TemplateItemCreate":{"properties":{"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_required":{"type":"boolean","title":"Is Required","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"TemplateItemCreate","description":"Create a new template item."},"TemplateItemUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Required"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"TemplateItemUpdate","description":"Update a template item."},"TemplateType":{"type":"string","enum":["request_list","data_cleaning","questionnaire","engagement_status","report","colour_palette"],"title":"TemplateType","description":"Types of advisory-level templates."},"TemporalGranularity":{"type":"string","enum":["monthly","quarterly","yearly"],"title":"TemporalGranularity","description":"Time period granularity of financial data."},"ThresholdsRequest":{"properties":{"query_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Query Usd"},"business_daily_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Business Daily Usd"},"platform_daily_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Platform Daily Usd"},"kill_switch_daily_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Kill Switch Daily Usd"}},"type":"object","title":"ThresholdsRequest"},"UpdateAdvisorEnabledRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"UpdateAdvisorEnabledRequest"},"UpdateBusinessMemberRequest":{"properties":{"role":{"type":"string","enum":["maintainer","member"],"title":"Role"}},"type":"object","required":["role"],"title":"UpdateBusinessMemberRequest"},"UpdatePlatformRoleRequest":{"properties":{"role":{"type":"string","enum":["admin","member"],"title":"Role"}},"type":"object","required":["role"],"title":"UpdatePlatformRoleRequest"},"UpdateReminderRequest":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"scheduled_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled Date"},"recurrence_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Pattern"},"recurrence_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recurrence Interval"},"max_sends":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Sends"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"UpdateReminderRequest","description":"Request to update a reminder."},"UpdateSectionRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"output_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Html"}},"type":"object","title":"UpdateSectionRequest","description":"Request to update a section (title, description, or content)."},"UploadedReference":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for the uploaded file"},"file_name":{"type":"string","title":"File Name","description":"Original file name"},"gcs_path":{"type":"string","title":"Gcs Path","description":"Path in GCS"},"mime_type":{"type":"string","title":"Mime Type","description":"MIME type","default":"application/pdf"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At","description":"When the file was uploaded"}},"type":"object","required":["id","file_name","gcs_path","uploaded_at"],"title":"UploadedReference","description":"Metadata for a directly uploaded reference report file."},"UploadedReferenceResponse":{"properties":{"id":{"type":"string","title":"Id"},"file_name":{"type":"string","title":"File Name"},"gcs_path":{"type":"string","title":"Gcs Path"},"mime_type":{"type":"string","title":"Mime Type"},"uploaded_at":{"type":"string","title":"Uploaded At"}},"type":"object","required":["id","file_name","gcs_path","mime_type","uploaded_at"],"title":"UploadedReferenceResponse","description":"Response model for an uploaded reference report."},"UserDocumentSource":{"type":"string","enum":["client","internal"],"title":"UserDocumentSource","description":"Document sources allowed from user-facing endpoints (no system)."},"VDRAccessLinkCreate":{"properties":{"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days"}},"type":"object","title":"VDRAccessLinkCreate"},"VDRAccessLinkResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"group_id":{"type":"string","title":"Group Id"},"token":{"type":"string","title":"Token"},"url":{"type":"string","title":"Url"},"is_active":{"type":"boolean","title":"Is Active"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","business_id","group_id","token","url","is_active","expires_at","created_at","updated_at"],"title":"VDRAccessLinkResponse"},"VDRActivityHeartbeat":{"properties":{"document_id":{"type":"string","title":"Document Id"},"duration_seconds":{"type":"integer","maximum":3600.0,"minimum":0.0,"title":"Duration Seconds"}},"type":"object","required":["document_id","duration_seconds"],"title":"VDRActivityHeartbeat"},"VDRAnalyticsResponse":{"properties":{"by_document":{"items":{"$ref":"#/components/schemas/VDRDocumentAnalyticsRow"},"type":"array","title":"By Document"},"by_user":{"items":{"$ref":"#/components/schemas/VDRUserAnalyticsRow"},"type":"array","title":"By User"},"by_group":{"items":{"$ref":"#/components/schemas/VDRGroupAnalyticsRow"},"type":"array","title":"By Group"}},"type":"object","required":["by_document","by_user","by_group"],"title":"VDRAnalyticsResponse"},"VDRDocumentAnalyticsRow":{"properties":{"document_id":{"type":"string","title":"Document Id"},"file_name":{"type":"string","title":"File Name"},"view_count":{"type":"integer","title":"View Count"},"unique_viewers":{"type":"integer","title":"Unique Viewers"},"total_time_seconds":{"type":"integer","title":"Total Time Seconds"},"download_count":{"type":"integer","title":"Download Count"}},"type":"object","required":["document_id","file_name","view_count","unique_viewers","total_time_seconds","download_count"],"title":"VDRDocumentAnalyticsRow"},"VDRFolder":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advisory_id":{"type":"string","format":"uuid","title":"Advisory Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","title":"Name"},"sort_order":{"type":"integer","title":"Sort Order"},"is_protected":{"type":"boolean","title":"Is Protected"},"is_staging":{"type":"boolean","title":"Is Staging","default":false},"system_kind":{"anyOf":[{"type":"string","enum":["staging","generated","emails"]},{"type":"null"}],"title":"System Kind"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","advisory_id","business_id","name","sort_order","is_protected","created_at","updated_at"],"title":"VDRFolder","description":"VDR folder record."},"VDRFolderCreate":{"properties":{"business_id":{"type":"string","format":"uuid","title":"Business Id"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"sort_order":{"type":"integer","minimum":0.0,"title":"Sort Order","default":0},"is_protected":{"type":"boolean","title":"Is Protected","default":false}},"type":"object","required":["business_id","name"],"title":"VDRFolderCreate","description":"Create VDR folder payload."},"VDRFolderReorder":{"properties":{"folder_orders":{"additionalProperties":{"type":"integer"},"type":"object","title":"Folder Orders","description":"Map of folder_id -> new sort_order"}},"type":"object","required":["folder_orders"],"title":"VDRFolderReorder","description":"Reorder all folders for a business."},"VDRFolderTemplateApply":{"properties":{"template_id":{"type":"string","format":"uuid","title":"Template Id"}},"type":"object","required":["template_id"],"title":"VDRFolderTemplateApply","description":"Apply a reusable folder tree to a business."},"VDRFolderTemplateCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"VDRFolderTemplateCreate","description":"Save a business's current folder tree as an advisory template."},"VDRFolderTemplateItemCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"sort_order":{"type":"integer","minimum":0.0,"title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"VDRFolderTemplateItemCreate"},"VDRFolderTemplateItemUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"sort_order":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"VDRFolderTemplateItemUpdate"},"VDRFolderTemplateReorder":{"properties":{"item_orders":{"additionalProperties":{"type":"integer"},"type":"object","title":"Item Orders"}},"type":"object","required":["item_orders"],"title":"VDRFolderTemplateReorder"},"VDRFolderUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"sort_order":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Sort Order"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"}},"type":"object","title":"VDRFolderUpdate","description":"Update VDR folder payload."},"VDRGroupAnalyticsRow":{"properties":{"group_id":{"type":"string","title":"Group Id"},"group_name":{"type":"string","title":"Group Name"},"view_count":{"type":"integer","title":"View Count"},"unique_viewers":{"type":"integer","title":"Unique Viewers"},"total_time_seconds":{"type":"integer","title":"Total Time Seconds"},"download_count":{"type":"integer","title":"Download Count"}},"type":"object","required":["group_id","group_name","view_count","unique_viewers","total_time_seconds","download_count"],"title":"VDRGroupAnalyticsRow"},"VDRGroupCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"group_type":{"type":"string","enum":["buyer","seller","lender","advisor","other"],"title":"Group Type","default":"other"},"can_download":{"type":"boolean","title":"Can Download","default":true},"watermark_enabled":{"type":"boolean","title":"Watermark Enabled","default":false}},"type":"object","required":["name"],"title":"VDRGroupCreate"},"VDRGroupMemberCreate":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"}},"type":"object","required":["email"],"title":"VDRGroupMemberCreate"},"VDRGroupMemberResponse":{"properties":{"id":{"type":"string","title":"Id"},"group_id":{"type":"string","title":"Group Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","group_id","email","name","created_at"],"title":"VDRGroupMemberResponse"},"VDRGroupResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"advisory_id":{"type":"string","title":"Advisory Id"},"name":{"type":"string","title":"Name"},"group_type":{"type":"string","title":"Group Type"},"can_download":{"type":"boolean","title":"Can Download"},"watermark_enabled":{"type":"boolean","title":"Watermark Enabled"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"member_count":{"type":"integer","title":"Member Count","default":0},"permission_count":{"type":"integer","title":"Permission Count","default":0}},"type":"object","required":["id","business_id","advisory_id","name","group_type","can_download","watermark_enabled","created_at","updated_at"],"title":"VDRGroupResponse"},"VDRGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"group_type":{"anyOf":[{"type":"string","enum":["buyer","seller","lender","advisor","other"]},{"type":"null"}],"title":"Group Type"},"can_download":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Download"},"watermark_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Watermark Enabled"}},"type":"object","title":"VDRGroupUpdate"},"VDRPermissionBulkSet":{"properties":{"folder_ids":{"items":{"type":"string"},"type":"array","title":"Folder Ids"},"document_ids":{"items":{"type":"string"},"type":"array","title":"Document Ids"}},"type":"object","title":"VDRPermissionBulkSet","description":"Replace folder/document grants for a group (allowlist)."},"VDRPermissionResponse":{"properties":{"id":{"type":"string","title":"Id"},"group_id":{"type":"string","title":"Group Id"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","group_id","folder_id","document_id","created_at"],"title":"VDRPermissionResponse"},"VDRUserAnalyticsRow":{"properties":{"member_id":{"type":"string","title":"Member Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_active":{"type":"boolean","title":"Is Active","default":true},"documents_viewed":{"type":"integer","title":"Documents Viewed"},"time_spent_seconds":{"type":"integer","title":"Time Spent Seconds"},"last_active":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Active"},"download_count":{"type":"integer","title":"Download Count"},"documents_detail":{"items":{"$ref":"#/components/schemas/VDRUserDocumentDetail"},"type":"array","title":"Documents Detail"}},"type":"object","required":["member_id","email","name","documents_viewed","time_spent_seconds","last_active","download_count"],"title":"VDRUserAnalyticsRow"},"VDRUserDocumentDetail":{"properties":{"document_id":{"type":"string","title":"Document Id"},"file_name":{"type":"string","title":"File Name"},"view_count":{"type":"integer","title":"View Count"},"total_time_seconds":{"type":"integer","title":"Total Time Seconds"},"download_count":{"type":"integer","title":"Download Count"},"last_viewed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Viewed At"}},"type":"object","required":["document_id","file_name","view_count","total_time_seconds","download_count"],"title":"VDRUserDocumentDetail"},"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"},"VerifyOTPBody":{"properties":{"email":{"type":"string","title":"Email"},"code":{"type":"string","title":"Code"}},"type":"object","required":["email","code"],"title":"VerifyOTPBody"},"VerifyOTPRequest":{"properties":{"email":{"type":"string","title":"Email"},"code":{"type":"string","title":"Code"}},"type":"object","required":["email","code"],"title":"VerifyOTPRequest","description":"Verify an OTP and receive an access token."},"WatchStatusResponse":{"properties":{"is_watching":{"type":"boolean","title":"Is Watching"}},"type":"object","required":["is_watching"],"title":"WatchStatusResponse"},"ZipCompleteRequest":{"properties":{"gcs_path":{"type":"string","title":"Gcs Path"},"file_name":{"type":"string","title":"File Name"}},"type":"object","required":["gcs_path","file_name"],"title":"ZipCompleteRequest","description":"Request body for completing zip upload."},"ZipUploadUrlRequest":{"properties":{"file_name":{"type":"string","title":"File Name"},"file_size":{"type":"integer","title":"File Size"},"content_type":{"type":"string","title":"Content Type"}},"type":"object","required":["file_name","file_size","content_type"],"title":"ZipUploadUrlRequest","description":"Request body for requesting zip upload URL."},"app__routers__deal_structure__ChatRequest":{"properties":{"message":{"type":"string","maxLength":8000,"minLength":1,"title":"Message"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["message"],"title":"ChatRequest"},"app__routers__insights__GenerateEmailDraftRequest":{"properties":{"insight_ids":{"items":{"type":"string"},"type":"array","title":"Insight Ids"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["insight_ids"],"title":"GenerateEmailDraftRequest","description":"Request to generate email draft preview."},"app__routers__request_lists__GenerateEmailDraftRequest":{"properties":{"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"personal_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Personal Note"}},"type":"object","title":"GenerateEmailDraftRequest"},"app__routers__sourcing__ChatRequest":{"properties":{"business_id":{"type":"string","title":"Business Id"},"message":{"type":"string","title":"Message"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"side":{"type":"string","title":"Side","default":"buy-side"}},"type":"object","required":["business_id","message"],"title":"ChatRequest"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}