{"openapi":"3.1.0","info":{"title":"CaptivaHQ API","version":"1.0.0","description":"Machine-readable contract for the CaptivaHQ `/api/v1/*` REST plane. Generated from `defineRoute` metadata + the ACL registry. The MCP tool catalog is served separately at /api/v1/public/mcp/catalog."},"servers":[{"url":"/"}],"components":{"securitySchemes":{"bearerAuth":{"type":"oauth2","description":"OAuth 2.0 client-credentials Bearer JWT. Scopes mirror ACL (entity:action).","flows":{"clientCredentials":{"tokenUrl":"/api/v1/public/auth/token","scopes":{"account:create":"Create a new account","account:delete":"Soft-delete a account","account:enrich":"LLM-enrich an account's firmographic fields (metered)","account:export":"Export accounts","account:import":"Import accounts","account:list":"List accounts with filters and pagination","account:read":"View a account","account:set_risk":"Set/clear the at-risk flag on an account","account:update":"Update fields on a account","activity:create":"Create a new activity","activity:delete":"Soft-delete a activity","activity:list":"List activitys with filters and pagination","activity:read":"View a activity","activity:update":"Update fields on a activity","agent_config:create":"Create a new agent_config","agent_config:delete":"Soft-delete a agent_config","agent_config:list":"List agent_configs with filters and pagination","agent_config:read":"View a agent_config","agent_config:update":"Update fields on a agent_config","ai_call:create":"Invoke an LLM via /api/v1/llm/*","ai_call:list":"ai_call:list","ai_call:read":"ai_call:read","ai_system:create":"Create a new ai_system","ai_system:delete":"Soft-delete a ai_system","ai_system:list":"List ai_systems with filters and pagination","ai_system:read":"View a ai_system","ai_system:update":"Update fields on a ai_system","amendment:create":"Create a new amendment","amendment:delete":"Soft-delete a amendment","amendment:list":"List amendments with filters and pagination","amendment:read":"View a amendment","amendment:update":"Update fields on a amendment","approval_request:cancel":"Cancel an in-flight approval request","approval_request:create":"Start an approval on a record","approval_request:decide":"Approve or reject the current approval step","approval_request:read":"Read an approval request + its action history","approval_workflow:create":"Create an approval workflow (steps + binding)","approval_workflow:delete":"Soft-delete an approval workflow","approval_workflow:list":"List approval workflows for an entity / record type","approval_workflow:read":"Read an approval workflow definition","approval_workflow:update":"Update an approval workflow (steps, binding, active)","asset:create":"Create a new asset","asset:delete":"Soft-delete a asset","asset:list":"List assets with filters and pagination","asset:read":"View a asset","asset:update":"Update fields on a asset","assignment:create":"Create a new assignment","assignment:delete":"Soft-delete a assignment","assignment:list":"List assignments with filters and pagination","assignment:read":"View a assignment","assignment:update":"Update fields on a assignment","attachment:create":"Create a new attachment","attachment:delete":"Soft-delete a attachment","attachment:list":"List attachments with filters and pagination","attachment:read":"View a attachment","attendee:create":"Create a new attendee","attendee:delete":"Soft-delete a attendee","attendee:list":"List attendees with filters and pagination","attendee:read":"View a attendee","attendee:update":"Update fields on a attendee","audit_finding:create":"Create a new audit_finding","audit_finding:delete":"Soft-delete a audit_finding","audit_finding:list":"List audit_findings with filters and pagination","audit_finding:read":"View a audit_finding","audit_finding:update":"Update fields on a audit_finding","audit_run:create":"Create a new audit_run","audit_run:delete":"Soft-delete a audit_run","audit_run:list":"List audit_runs with filters and pagination","audit_run:read":"View a audit_run","audit_run:update":"Update fields on a audit_run","automation_template:create":"Create a new automation_template","automation_template:delete":"Soft-delete a automation_template","automation_template:list":"List automation_templates with filters and pagination","automation_template:read":"View a automation_template","automation_template:update":"Update fields on a automation_template","bom:create":"Create a new bom","bom:delete":"Soft-delete a bom","bom:list":"List boms with filters and pagination","bom:read":"View a bom","bom:update":"Update fields on a bom","bom_line:create":"Create a new bom_line","bom_line:delete":"Soft-delete a bom_line","bom_line:list":"List bom_lines with filters and pagination","bom_line:read":"View a bom_line","bom_line:update":"Update fields on a bom_line","branding:read":"branding:read","branding:update":"branding:update","business_card:create":"Create lead / account + contact records from a staged business-card extraction","business_card:extract":"Extract fields from a business-card image (metered vision call)","calendar:analyze_availability":"Analyze staffing fit, availability, PTO blackouts, and recent overwork trends","calendar:check_availability":"Compute per-user availability (free windows) for a calendar over a date range","calendar:create":"Create a new calendar","calendar:delete":"Soft-delete a calendar","calendar:list":"List calendars with filters and pagination","calendar:manage_allowed_users":"Set the booking allow-list for a calendar","calendar:read":"View a calendar","calendar:suggest_assignee":"Suggest the optimal allow-listed assignee for a time window","calendar:update":"Update fields on a calendar","calendar_event:create":"Create a new calendar_event","calendar_event:delete":"Soft-delete a calendar_event","calendar_event:list":"List calendar_events with filters and pagination","calendar_event:read":"View a calendar_event","calendar_event:update":"Update fields on a calendar_event","campaign:cancel":"Cancel scheduled send","campaign:create":"Create a new campaign","campaign:delete":"Soft-delete a campaign","campaign:list":"List campaigns with filters and pagination","campaign:read":"View a campaign","campaign:send":"Send campaign","campaign:test_send":"Send a test email of the campaign to specified addresses","campaign:update":"Update fields on a campaign","carrier:create":"carrier:create","carrier:delete":"carrier:delete","carrier:list":"carrier:list","carrier:read":"carrier:read","carrier:update":"carrier:update","certificate:create":"Create a new certificate","certificate:delete":"Soft-delete a certificate","certificate:list":"List certificates with filters and pagination","certificate:read":"View a certificate","certificate:update":"Update fields on a certificate","change_order:create":"Create a new change_order","change_order:delete":"Soft-delete a change_order","change_order:list":"List change_orders with filters and pagination","change_order:read":"View a change_order","change_order:update":"Update fields on a change_order","charge:approve":"Mark charge as paid","charge:cancel":"Cancel charge","charge:create":"Create a new charge","charge:credit":"Issue a credit (charge_type=credit) against an account/contract","charge:delete":"Soft-delete a charge","charge:list":"List charges with filters and pagination","charge:read":"View a charge","charge:update":"Update fields on a charge","claim:approve":"Approve claim payment","claim:cancel":"Close claim without payment","claim:create":"Create a new claim","claim:delete":"Soft-delete a claim","claim:list":"List claims with filters and pagination","claim:read":"View a claim","claim:update":"Update fields on a claim","clause:create":"clause:create","clause:delete":"clause:delete","clause:list":"clause:list","clause:read":"clause:read","clause:update":"clause:update","commission:approve":"Approve commission payout","commission:list":"List commissions with filters and pagination","commission:read":"View a commission","commission:scan":"Reconcile paid invoices into commission ledger entries + clawbacks","commission:update":"Update fields on a commission","competitor:battlecard":"Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","competitor:create":"Create a new competitor","competitor:delete":"Soft-delete a competitor","competitor:enrich":"Re-run the AI/company enrichment for a competitor (profile, size, market share, strengths/weaknesses, socials, people)","competitor:insights":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","competitor:list":"List competitors with filters and pagination","competitor:read":"View a competitor","competitor:refresh":"Re-run the full competitor gather (enrich + tech stack + news + snapshot + socials) for a competitor","competitor:update":"Update fields on a competitor","consent:create":"Create a new consent","consent:delete":"Soft-delete a consent","consent:list":"List consents with filters and pagination","consent:read":"View a consent","consent:update":"Update fields on a consent","contact:create":"Create a new contact","contact:delete":"Soft-delete a contact","contact:enrich":"LLM-enrich a contact's fields (metered)","contact:export":"Export contacts","contact:import":"Import contacts","contact:list":"List contacts with filters and pagination","contact:read":"View a contact","contact:update":"Update fields on a contact","contract:approve":"Mark as signed","contract:cancel":"Cancel contract","contract:create":"Create a new contract","contract:delete":"Soft-delete a contract","contract:download":"Download a generated or signed contract document","contract:list":"List contracts with filters and pagination","contract:read":"View a contract","contract:renew":"Renew contract","contract:send":"Send for signature","contract:update":"Update fields on a contract","contract_template:create":"contract_template:create","contract_template:delete":"contract_template:delete","contract_template:list":"contract_template:list","contract_template:manage_permissions":"contract_template:manage_permissions","contract_template:read":"contract_template:read","contract_template:update":"contract_template:update","control:create":"Create a new control","control:delete":"Soft-delete a control","control:list":"List controls with filters and pagination","control:read":"View a control","control:update":"Update fields on a control","control_mapping:create":"Create a new control_mapping","control_mapping:delete":"Soft-delete a control_mapping","control_mapping:list":"List control_mappings with filters and pagination","control_mapping:read":"View a control_mapping","control_mapping:update":"Update fields on a control_mapping","control_test:create":"Create a new control_test","control_test:delete":"Soft-delete a control_test","control_test:list":"List control_tests with filters and pagination","control_test:read":"View a control_test","control_test:update":"Update fields on a control_test","cost_center:create":"cost_center:create","cost_center:delete":"cost_center:delete","cost_center:list":"cost_center:list","cost_center:read":"cost_center:read","cost_center:update":"cost_center:update","credit_note:create":"Create a new credit_note","credit_note:delete":"Soft-delete a credit_note","credit_note:list":"List credit_notes with filters and pagination","credit_note:read":"View a credit_note","credit_note:update":"Update fields on a credit_note","custom_field:create":"custom_field:create","custom_object:create":"Create a new custom_object","custom_object:delete":"Soft-delete a custom_object","custom_object:list":"List custom_objects with filters and pagination","custom_object:read":"View a custom_object","custom_object:update":"Update fields on a custom_object","custom_object_record:create":"Create a new custom_object_record","custom_object_record:delete":"Soft-delete a custom_object_record","custom_object_record:list":"List custom_object_records with filters and pagination","custom_object_record:read":"View a custom_object_record","custom_object_record:update":"Update fields on a custom_object_record","cycle_count:create":"Create a new cycle_count","cycle_count:delete":"Soft-delete a cycle_count","cycle_count:list":"List cycle_counts with filters and pagination","cycle_count:read":"View a cycle_count","cycle_count:update":"Update fields on a cycle_count","data_processing_activity:create":"Create a new data_processing_activity","data_processing_activity:delete":"Soft-delete a data_processing_activity","data_processing_activity:list":"List data_processing_activitys with filters and pagination","data_processing_activity:read":"View a data_processing_activity","data_processing_activity:update":"Update fields on a data_processing_activity","deal:analyze":"Run AI deal analysis for a deal (metered LLM call)","deal:bulk_update":"Bulk update deals","deal:create":"Create a new deal","deal:delete":"Soft-delete a deal","deal:fulfill":"Close as won","deal:import":"Import deals","deal:list":"List deals with filters and pagination","deal:read":"View a deal","deal:transition":"Move deal through pipeline stages","deal:update":"Update fields on a deal","deal_stage_history:list":"List stage transition history for a deal","deal_stage_history:read":"Read field schema for stage transition history (/meta)","demand_campaign:create":"Create a new demand_campaign","demand_campaign:delete":"Soft-delete a demand_campaign","demand_campaign:list":"List demand_campaigns with filters and pagination","demand_campaign:read":"View a demand_campaign","demand_campaign:update":"Update fields on a demand_campaign","department:create":"department:create","department:delete":"department:delete","department:list":"department:list","department:read":"department:read","department:update":"department:update","dpia:create":"Create a new dpia","dpia:delete":"Soft-delete a dpia","dpia:list":"List dpias with filters and pagination","dpia:read":"View a dpia","dpia:update":"Update fields on a dpia","dsr:approve":"Approve DSR request","dsr:create":"Create a new dsr","dsr:delete":"Soft-delete a dsr","dsr:list":"List dsrs with filters and pagination","dsr:read":"View a dsr","dsr:update":"Update fields on a dsr","email_template:create":"email_template:create","email_template:delete":"email_template:delete","email_template:list":"email_template:list","email_template:read":"email_template:read","email_template:update":"email_template:update","employee-compensation:create":"Create a new employee-compensation","employee-compensation:delete":"Soft-delete a employee-compensation","employee-compensation:list":"List employee-compensations with filters and pagination","employee-compensation:read":"View a employee-compensation","employee-compensation:update":"Update fields on a employee-compensation","employee-document:create":"Create a new employee-document","employee-document:delete":"Soft-delete a employee-document","employee-document:list":"List employee-documents with filters and pagination","employee-document:read":"View a employee-document","employee-document:update":"Update fields on a employee-document","employee:create":"Create a new employee","employee:list":"List employees with filters and pagination","employee:mention":"List active tenant teammates for an explicit @mention or draft-recipient picker","employee:read":"View a employee","employee:update":"Update fields on a employee","endorsement:create":"Create a new endorsement","endorsement:delete":"Soft-delete a endorsement","endorsement:list":"List endorsements with filters and pagination","endorsement:read":"View a endorsement","endorsement:update":"Update fields on a endorsement","entity_label:list":"entity_label:list","entity_label:read":"entity_label:read","entity_label:update":"Rename an entity (Customer → Patient)","event_session:create":"Create a new event_session","event_session:delete":"Soft-delete a event_session","event_session:list":"List event_sessions with filters and pagination","event_session:read":"View a event_session","event_session:update":"Update fields on a event_session","evidence:create":"Create a new evidence","evidence:delete":"Soft-delete a evidence","evidence:list":"List evidences with filters and pagination","evidence:read":"View a evidence","evidence:update":"Update fields on a evidence","evidence_mapping:create":"Create a new evidence_mapping","evidence_mapping:delete":"Soft-delete a evidence_mapping","evidence_mapping:list":"List evidence_mappings with filters and pagination","evidence_mapping:read":"View a evidence_mapping","evidence_mapping:update":"Update fields on a evidence_mapping","expense_line:create":"Create a new expense_line","expense_line:delete":"Soft-delete a expense_line","expense_line:list":"List expense_lines with filters and pagination","expense_line:read":"View a expense_line","expense_line:update":"Update fields on a expense_line","expense_receipt:apply":"Create expense line(s) from a receipt's extracted fields","expense_receipt:create":"Create a new expense_receipt","expense_receipt:delete":"Soft-delete a expense_receipt","expense_receipt:extract":"Run AI extraction on an uploaded receipt","expense_receipt:read":"View a expense_receipt","expense_report:create":"Create a new expense_report","expense_report:delete":"Soft-delete a expense_report","expense_report:list":"List expense_reports with filters and pagination","expense_report:read":"View a expense_report","expense_report:update":"Update fields on a expense_report","feedback:delete":"feedback:delete","feedback:list":"feedback:list","feedback:read":"feedback:read","forecast:create":"Create a new forecast","forecast:delete":"Soft-delete a forecast","forecast:list":"List forecasts with filters and pagination","forecast:read":"View a forecast","forecast:update":"Update fields on a forecast","framework:create":"framework:create","framework:delete":"framework:delete","framework:export":"Build and download the audit pack","framework:list":"framework:list","framework:read":"framework:read","framework:update":"framework:update","framework_requirement:approve":"Approve / reject a submitted requirement (four-eyes)","framework_requirement:complete":"Submit a requirement for review (with proof)","framework_requirement:create":"Create a new framework_requirement","framework_requirement:delete":"Soft-delete a framework_requirement","framework_requirement:list":"List framework_requirements with filters and pagination","framework_requirement:read":"View a framework_requirement","framework_requirement:update":"Update fields on a framework_requirement","goods_receipt:create":"Create a new goods_receipt","goods_receipt:delete":"Soft-delete a goods_receipt","goods_receipt:list":"List goods_receipts with filters and pagination","goods_receipt:read":"View a goods_receipt","goods_receipt:update":"Update fields on a goods_receipt","group:create":"group:create","group:delete":"group:delete","group:list":"group:list","group:manage_members":"Manage the members of a group","group:manage_permissions":"Manage the permission keys granted to a group","group:read":"group:read","group:update":"group:update","ict_certification:create":"Create a new ict_certification","ict_certification:delete":"Soft-delete a ict_certification","ict_certification:list":"List ict_certifications with filters and pagination","ict_certification:read":"View a ict_certification","ict_certification:update":"Update fields on a ict_certification","ict_contract:create":"Create a new ict_contract","ict_contract:delete":"Soft-delete a ict_contract","ict_contract:list":"List ict_contracts with filters and pagination","ict_contract:read":"View a ict_contract","ict_contract:update":"Update fields on a ict_contract","ict_exit_strategy:create":"Create a new ict_exit_strategy","ict_exit_strategy:delete":"Soft-delete a ict_exit_strategy","ict_exit_strategy:list":"List ict_exit_strategys with filters and pagination","ict_exit_strategy:read":"View a ict_exit_strategy","ict_exit_strategy:update":"Update fields on a ict_exit_strategy","ict_provider:create":"Create a new ict_provider","ict_provider:delete":"Soft-delete a ict_provider","ict_provider:list":"List ict_providers with filters and pagination","ict_provider:read":"View a ict_provider","ict_provider:update":"Update fields on a ict_provider","ict_service:create":"Create a new ict_service","ict_service:delete":"Soft-delete a ict_service","ict_service:list":"List ict_services with filters and pagination","ict_service:read":"View a ict_service","ict_service:update":"Update fields on a ict_service","ict_subcontractor:create":"Create a new ict_subcontractor","ict_subcontractor:delete":"Soft-delete a ict_subcontractor","ict_subcontractor:list":"List ict_subcontractors with filters and pagination","ict_subcontractor:read":"View a ict_subcontractor","ict_subcontractor:update":"Update fields on a ict_subcontractor","inbound_call:accept":"Accept a pending inbound call and create the BOT activity + tasks","inbound_call:create":"Create a new inbound_call","inbound_call:list":"List inbound_calls with filters and pagination","inbound_call:read":"View a inbound_call","inbound_call:reject":"Reject a pending inbound call","incident:create":"Create a new incident","incident:delete":"Soft-delete a incident","incident:list":"List incidents with filters and pagination","incident:read":"View a incident","incident:update":"Update fields on a incident","insurance_product:create":"insurance_product:create","insurance_product:delete":"insurance_product:delete","insurance_product:list":"insurance_product:list","insurance_product:read":"insurance_product:read","insurance_product:update":"insurance_product:update","insurance_quote:create":"Create a new insurance_quote","insurance_quote:delete":"Soft-delete a insurance_quote","insurance_quote:list":"List insurance_quotes with filters and pagination","insurance_quote:read":"View a insurance_quote","insurance_quote:update":"Update fields on a insurance_quote","integration:list":"List integrations with filters and pagination","integration:update":"Update fields on a integration","inventory_alert:create":"Create a new inventory_alert","inventory_alert:delete":"Soft-delete a inventory_alert","inventory_alert:list":"List inventory_alerts with filters and pagination","inventory_alert:read":"View a inventory_alert","inventory_alert:update":"Update fields on a inventory_alert","inventory_item:create":"Create a new inventory_item","inventory_item:delete":"Soft-delete a inventory_item","inventory_item:list":"List inventory_items with filters and pagination","inventory_item:read":"View a inventory_item","inventory_item:update":"Update fields on a inventory_item","inventory_transaction:create":"Create a new inventory_transaction","inventory_transaction:delete":"Soft-delete a inventory_transaction","inventory_transaction:list":"List inventory_transactions with filters and pagination","inventory_transaction:read":"View a inventory_transaction","inventory_transaction:update":"Update fields on a inventory_transaction","invoice:approve":"Mark as paid","invoice:create":"Create a new invoice","invoice:delete":"Soft-delete a invoice","invoice:list":"List invoices with filters and pagination","invoice:read":"View a invoice","invoice:send":"Send invoice to customer","invoice:update":"Update fields on a invoice","invoice_match:create":"Create a new invoice_match","invoice_match:delete":"Soft-delete a invoice_match","invoice_match:list":"List invoice_matchs with filters and pagination","invoice_match:read":"View a invoice_match","invoice_match:update":"Update fields on a invoice_match","job_title:create":"Create a job title","job_title:delete":"Deactivate a job title","job_title:list":"List job titles for this tenant","job_title:update":"Rename or reorder a job title","kb_article:read":"View a kb_article","kb_hub:create":"Create a shared knowledge hub","kb_hub:delete":"Delete a knowledge hub","kb_hub:list":"List knowledge hubs visible to the user","kb_hub:manage_members":"Manage who can access a shared knowledge hub","kb_hub:read":"Read a knowledge hub","kb_hub:update":"Update a knowledge hub","kb_hub_item:create":"Add an item to a writable knowledge hub","kb_hub_item:delete":"Delete a knowledge hub item","kb_hub_item:list":"List items in an accessible knowledge hub","kb_hub_item:read":"Read a knowledge hub item","kb_hub_item:update":"Update a knowledge hub item","kb_page:approve":"Accept or dismiss AI-suggested page structures and article blocks","kb_page:create":"Create a living documentation page","kb_page:delete":"Delete a living documentation page","kb_page:list":"List AI-authored living documentation pages","kb_page:manage_permissions":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","kb_page:read":"Read an AI-authored living documentation page","kb_page:refresh":"Run a bounded AI refresh that proposes reviewable knowledge updates","kb_page:update":"Edit page structure and article content without approving AI drafts","lead:convert":"Convert lead to account+contact+deal","lead:create":"Create a new lead","lead:delete":"Soft-delete a lead","lead:enrich":"LLM-enrich a lead's person + company fields (metered)","lead:export":"Export leads","lead:import":"Import leads","lead:list":"List leads with filters and pagination","lead:read":"View a lead","lead:update":"Update fields on a lead","lead_find_run:complete":"Mark a reviewed run as completed","lead_find_run:create":"Start a new lead-find run","lead_find_run:delete":"Delete a lead-find run (does not delete accepted leads)","lead_find_run:list":"List lead-find runs","lead_find_run:read":"View a lead-find run with its candidates","lead_find_run:retry":"Re-queue a failed lead-find run","llm:chat":"llm:chat","llm:summarize":"llm:summarize","llm:translate":"llm:translate","location:create":"Create a new location","location:delete":"Soft-delete a location","location:export":"Export locations","location:list":"List locations with filters and pagination","location:read":"View a location","location:update":"Update fields on a location","loss_run:create":"loss_run:create","loss_run:delete":"loss_run:delete","loss_run:list":"loss_run:list","loss_run:read":"loss_run:read","loss_run:update":"loss_run:update","macro:create":"macro:create","macro:delete":"macro:delete","macro:list":"macro:list","macro:read":"macro:read","macro:update":"macro:update","mailbox:configure":"Configure the signed-in user's mailbox connection (e.g. cached message count)","mailbox:create_draft":"Create an email draft in the user's mailbox Drafts folder (never sends)","mailbox:delete":"Delete a message from the signed-in user's connected mailbox (moves to Trash/Deleted Items at the provider)","mailbox:list":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","mailbox:read":"Read the signed-in user's connected mailbox (live, not stored)","mailbox:search":"Search the signed-in user's connected mailbox (live, not stored)","mailbox:send":"Send or reply to email from the signed-in user's connected mailbox","mailbox:update":"Change read state or file a message in the signed-in user's connected mailbox","marketing_settings:read":"marketing_settings:read","marketing_settings:update":"marketing_settings:update","meeting:dismiss":"Dismiss a meeting from the list","meeting:list":"List meetings from connected recording providers and uploads","meeting:log":"Log a meeting as an activity, tasks and a knowledge-hub item","meeting:read":"Read a meeting's summary, action items and transcript","meeting:review":"AI review of a meeting → suggested links, record updates and contacts","meeting:upload":"Upload a meeting recording for transcription (metered LLM call)","milestone:create":"Create a new milestone","milestone:delete":"Soft-delete a milestone","milestone:list":"List milestones with filters and pagination","milestone:read":"View a milestone","milestone:update":"Update fields on a milestone","notification:list":"List my notifications","notification:update":"Mark-read / mark-all-read / dismiss a notification","oauth_app:create":"Create an OAuth app (returns secret once)","oauth_app:delete":"Revoke OAuth app + all its tokens, or permanently delete a revoked app","oauth_app:list":"oauth_app:list","oauth_app:read":"oauth_app:read","oauth_app:rotate":"Rotate client_secret (returns new secret once)","oauth_app:update":"oauth_app:update","org_chart:list":"View the org chart","org_chart:read":"Read org chart metadata","payment:create":"Create a new payment","payment:delete":"Soft-delete a payment","payment:list":"List payments with filters and pagination","payment:read":"View a payment","payment:update":"Update fields on a payment","pipeline:create":"Create a new sales pipeline","pipeline:delete":"Delete a pipeline","pipeline:list":"List sales pipelines","pipeline:read":"View a pipeline with its stages","pipeline:update":"Update a pipeline or its stages","policy:create":"policy:create","policy:delete":"policy:delete","policy:list":"policy:list","policy:read":"policy:read","policy:update":"policy:update","policy_record:create":"Create a new policy_record","policy_record:delete":"Soft-delete a policy_record","policy_record:list":"List policy_records with filters and pagination","policy_record:read":"View a policy_record","policy_record:update":"Update fields on a policy_record","price_book:create":"price_book:create","price_book:delete":"price_book:delete","price_book:list":"price_book:list","price_book:read":"price_book:read","price_book:update":"price_book:update","product:create":"Create a new product","product:delete":"Soft-delete a product","product:list":"List products with filters and pagination","product:read":"View a product","product:update":"Update fields on a product","project:create":"Create a new project","project:delete":"Soft-delete a project","project:list":"List projects with filters and pagination","project:read":"View a project","project:summary":"Generate the Atlas AI project summary (progress, risks, predictions, next actions)","project:update":"Update fields on a project","project_phase:create":"Create a project phase","project_phase:delete":"Delete a project phase","project_phase:list":"List project phases","project_phase_instance:create":"Create a new project phase","project_phase_instance:delete":"Soft-delete a project phase","project_phase_instance:list":"List project phases with filters and pagination","project_phase_instance:read":"View a project phase","project_phase_instance:update":"Update fields on a project phase","project_role:create":"Create a new project team role","project_role:delete":"Soft-delete a project team role","project_role:list":"List project team roles with filters and pagination","project_role:read":"View a project team role","project_role:update":"Update fields on a project team role","project_settings:list":"View the Projects module settings","project_settings:update":"Change the Projects module settings","project_task:create":"Create a new project_task","project_task:delete":"Soft-delete a project_task","project_task:list":"List project_tasks with filters and pagination","project_task:read":"View a project_task","project_task:update":"Update fields on a project_task","project_template:create":"Create a new project_template","project_template:delete":"Soft-delete a project_template","project_template:list":"List project_templates with filters and pagination","project_template:read":"View a project_template","project_template:update":"Update fields on a project_template","pto_entry:create":"Create a new pto_entry","pto_entry:delete":"Soft-delete a pto_entry","pto_entry:list":"List pto_entrys with filters and pagination","pto_entry:read":"View a pto_entry","pto_entry:update":"Update fields on a pto_entry","pulse_message:create":"Create a new pulse_message","pulse_message:delete":"Soft-delete a pulse_message","pulse_message:list":"List pulse_messages with filters and pagination","pulse_message:react":"React with an emoji to a pulse message","pulse_message:read":"View a pulse_message","pulse_message:unreact":"Remove your emoji reaction from a pulse message","pulse_message:update":"Update fields on a pulse_message","pulse_reaction:list":"List reactions on a pulse message","purchase_order:approve":"purchase_order:approve","purchase_order:cancel":"purchase_order:cancel","purchase_order:create":"Create a new purchase_order","purchase_order:delete":"Soft-delete a purchase_order","purchase_order:list":"List purchase_orders with filters and pagination","purchase_order:read":"View a purchase_order","purchase_order:send":"purchase_order:send","purchase_order:update":"Update fields on a purchase_order","queue:create":"queue:create","queue:delete":"queue:delete","queue:list":"queue:list","queue:read":"queue:read","queue:update":"queue:update","quote:approve":"Mark quote accepted by customer","quote:convert":"Convert accepted quote into invoice + subscriptions","quote:create":"Create a new quote","quote:delete":"Soft-delete a quote","quote:list":"List quotes with filters and pagination","quote:read":"View a quote","quote:send":"Send quote to customer","quote:update":"Update fields on a quote","rate_card:create":"Create a new rate card","rate_card:delete":"Soft-delete a rate card","rate_card:list":"List rate cards with filters and pagination","rate_card:read":"View a rate card","rate_card:update":"Update fields on a rate card","record_type:create":"Create a Record Type (a deal/work-order/project flavor)","record_type:delete":"Delete a Record Type (records fall back to default)","record_type:list":"List Record Types for an entity","record_type:update":"Rename / set default / set pipeline of a Record Type","region:create":"region:create","region:delete":"region:delete","region:list":"region:list","region:read":"region:read","region:update":"region:update","registration:create":"Create a new registration","registration:delete":"Soft-delete a registration","registration:list":"List registrations with filters and pagination","registration:read":"View a registration","registration:update":"Update fields on a registration","remediation_plan:create":"Create a new remediation_plan","remediation_plan:delete":"Soft-delete a remediation_plan","remediation_plan:list":"List remediation_plans with filters and pagination","remediation_plan:read":"View a remediation_plan","remediation_plan:update":"Update fields on a remediation_plan","renewal:create":"Create a new renewal","renewal:delete":"Soft-delete a renewal","renewal:list":"List renewals with filters and pagination","renewal:read":"View a renewal","renewal:update":"Update fields on a renewal","requirement_comment:create":"Create a new requirement_comment","requirement_comment:delete":"Soft-delete a requirement_comment","requirement_comment:list":"List requirement_comments with filters and pagination","requirement_comment:read":"View a requirement_comment","requirement_comment:update":"Update fields on a requirement_comment","requisition:approve":"Approve requisition","requisition:create":"Create a new requisition","requisition:delete":"Soft-delete a requisition","requisition:list":"List requisitions with filters and pagination","requisition:read":"View a requisition","requisition:update":"Update fields on a requisition","risk:create":"Create a new risk","risk:delete":"Soft-delete a risk","risk:list":"List risks with filters and pagination","risk:read":"View a risk","risk:update":"Update fields on a risk","risk_assessment:create":"Create a new risk_assessment","risk_assessment:delete":"Soft-delete a risk_assessment","risk_assessment:list":"List risk_assessments with filters and pagination","risk_assessment:read":"View a risk_assessment","risk_assessment:update":"Update fields on a risk_assessment","scheduling_status:delete":"Delete a dispatch status","scheduling_status:read":"Read dispatch-status configuration","scheduling_status:update":"Update dispatch-status configuration","segment:build":"Materialise/rebuild the segment's member snapshot","segment:create":"Create a new segment","segment:delete":"Soft-delete a segment","segment:list":"List segments with filters and pagination","segment:read":"View a segment","segment:update":"Update fields on a segment","service_route:create":"Create a new service_route","service_route:delete":"Soft-delete a service_route","service_route:list":"List service_routes with filters and pagination","service_route:optimize":"Optimize the stop order for a technician's day","service_route:read":"View a service_route","service_route:update":"Update fields on a service_route","shipment:create":"Create a new shipment","shipment:delete":"Soft-delete a shipment","shipment:list":"List shipments with filters and pagination","shipment:read":"View a shipment","shipment:update":"Update fields on a shipment","shipping_carrier:create":"Create a new shipping_carrier","shipping_carrier:delete":"Soft-delete a shipping_carrier","shipping_carrier:list":"List shipping_carriers with filters and pagination","shipping_carrier:read":"View a shipping_carrier","shipping_carrier:update":"Update fields on a shipping_carrier","sla_policy:create":"sla_policy:create","sla_policy:delete":"sla_policy:delete","sla_policy:list":"sla_policy:list","sla_policy:read":"sla_policy:read","sla_policy:update":"sla_policy:update","sow_template:read":"sow_template:read","spend_budget:create":"Create a new spend_budget","spend_budget:delete":"Soft-delete a spend_budget","spend_budget:list":"List spend_budgets with filters and pagination","spend_budget:read":"View a spend_budget","spend_budget:update":"Update fields on a spend_budget","stock_transfer:create":"Create a new stock_transfer","stock_transfer:delete":"Soft-delete a stock_transfer","stock_transfer:list":"List stock_transfers with filters and pagination","stock_transfer:read":"View a stock_transfer","stock_transfer:update":"Update fields on a stock_transfer","subscription:cancel":"Cancel subscription","subscription:create":"Create a new subscription","subscription:delete":"Soft-delete a subscription","subscription:list":"List subscriptions with filters and pagination","subscription:read":"View a subscription","subscription:update":"Update fields on a subscription","suppression:create":"suppression:create","suppression:delete":"suppression:delete","suppression:list":"suppression:list","suppression:read":"suppression:read","survey:analyze":"Generate AI analysis of responses","survey:create":"Create a new survey","survey:delete":"Soft-delete a survey","survey:list":"List surveys with filters and pagination","survey:read":"View a survey","survey:respond":"Complete an internal form","survey:send":"Send survey","survey:update":"Update fields on a survey","target:create":"Create a new target","target:delete":"Soft-delete a target","target:list":"List targets with filters and pagination","target:read":"View a target","target:update":"Update fields on a target","task:create":"Create a new task","task:delete":"Soft-delete a task","task:list":"List tasks with filters and pagination","task:read":"View a task","task:update":"Update fields on a task","technician:create":"Create a new technician","technician:delete":"Soft-delete a technician","technician:list":"List technicians with filters and pagination","technician:read":"View a technician","technician:update":"Update fields on a technician","technician_location:create":"Record the authenticated technician's location","technician_location:list":"List technician location history","ticket:approve":"Resolve ticket (legacy alias)","ticket:assign":"Assign ticket","ticket:create":"Create a new ticket","ticket:delete":"Soft-delete a ticket","ticket:list":"List tickets with filters and pagination","ticket:read":"View a ticket","ticket:reopen":"Reopen a solved/closed ticket","ticket:status_change":"Change ticket status","ticket:update":"Update fields on a ticket","ticket_ai_insight:read":"Read AI insights for a ticket (agent-only)","ticket_ai_insight:refresh":"Force regenerate AI insights for a ticket (agent-only)","ticket_comment:create":"Post a comment on a ticket","ticket_comment:list":"ticket_comment:list","ticket_comment:read":"ticket_comment:read","time_entry:create":"Create a new time_entry","time_entry:delete":"Soft-delete a time_entry","time_entry:list":"List time_entrys with filters and pagination","time_entry:read":"View a time_entry","time_entry:update":"Update fields on a time_entry","user:create":"Invite a user","user:list":"user:list","vendor:create":"Create a new vendor","vendor:delete":"Soft-delete a vendor","vendor:list":"List vendors with filters and pagination","vendor:read":"View a vendor","vendor:update":"Update fields on a vendor","warehouse:create":"warehouse:create","warehouse:delete":"warehouse:delete","warehouse:list":"warehouse:list","warehouse:read":"warehouse:read","warehouse:update":"warehouse:update","warehouse_bin:create":"Create a new warehouse_bin","warehouse_bin:delete":"Soft-delete a warehouse_bin","warehouse_bin:list":"List warehouse_bins with filters and pagination","warehouse_bin:read":"View a warehouse_bin","warehouse_bin:update":"Update fields on a warehouse_bin","warehouse_zone:create":"Create a new warehouse_zone","warehouse_zone:delete":"Soft-delete a warehouse_zone","warehouse_zone:list":"List warehouse_zones with filters and pagination","warehouse_zone:read":"View a warehouse_zone","warehouse_zone:update":"Update fields on a warehouse_zone","watcher:follow":"Subscribe to a record's changes","watcher:list":"Check / enumerate my watch state for a record","watcher:unfollow":"Unsubscribe from a record's changes","web_property:brief":"Generate the AI weekly digital-presence brief (summary, top fixes, anomalies) for a web property","web_property:create":"Create a new web_property","web_property:delete":"Soft-delete a web_property","web_property:insights":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","web_property:list":"List web_propertys with filters and pagination","web_property:read":"View a web_property","web_property:submit_index":"Submit URLs for search-engine indexing (IndexNow) for a web property","web_property:update":"Update fields on a web_property","webhook:create":"webhook:create","webhook:delete":"webhook:delete","webhook:list":"webhook:list","webhook:read":"webhook:read","webhook:rotate":"Rotate signing secret","webhook:update":"webhook:update","webhook_delivery:list":"webhook_delivery:list","work_order:approve":"work_order:approve","work_order:assign":"work_order:assign","work_order:cancel":"work_order:cancel","work_order:create":"Create a new work_order","work_order:delete":"Soft-delete a work_order","work_order:list":"List work_orders with filters and pagination","work_order:read":"View a work_order","work_order:update":"Update fields on a work_order","work_order_type:create":"Create a new work_order_type","work_order_type:delete":"Soft-delete a work_order_type","work_order_type:list":"List work_order_types with filters and pagination","work_order_type:read":"View a work_order_type","work_order_type:update":"Update fields on a work_order_type","workflow:create":"Create a new workflow","workflow:delete":"Soft-delete a workflow","workflow:list":"List workflows with filters and pagination","workflow:read":"View a workflow","workflow:test":"Dry-run workflow","workflow:update":"Update fields on a workflow","workforce_user:list":"List workspace members for dropdowns","workforce_user:read":"Read workforce member metadata","workforce_user:update":"Set a member's title and manager","writing_profile:delete":"Clear (delete) the signed-in user's email writing profile + exemplars","writing_profile:list":"List the signed-in user's email writing-profile summaries (internal/external register)","writing_profile:update":"Rebuild the signed-in user's email writing profile from sent mail (metered LLM + embeddings)"}}}},"cookieAuth":{"type":"apiKey","in":"cookie","name":"captivahq_session","description":"Signed session JWT cookie (Web Console / same-origin)."}}},"paths":{"/api/v1/admin/acl/groups/{id}/members/{userId}":{"delete":{"summary":"Manage the members of a group","description":"Manage the members of a group","operationId":"delete_api_v1_admin_acl_groups_id_members_userId","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"manage_members","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["group:manage_members"]},{"cookieAuth":["group:manage_members"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/acl/groups/{id}/members":{"post":{"summary":"Manage the members of a group","description":"Manage the members of a group","operationId":"post_api_v1_admin_acl_groups_id_members","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"manage_members","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["group:manage_members"]},{"cookieAuth":["group:manage_members"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64}},"required":["userId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/acl/groups/{id}/permissions":{"put":{"summary":"Manage the permission keys granted to a group","description":"Manage the permission keys granted to a group","operationId":"put_api_v1_admin_acl_groups_id_permissions","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"manage_permissions","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["group:manage_permissions"]},{"cookieAuth":["group:manage_permissions"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"array","items":{"type":"string","minLength":3,"maxLength":80},"maxItems":2000},"enabledModules":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100},"financialAccess":{"type":"object","properties":{"default":{"type":"boolean"},"modules":{"type":"object","additionalProperties":{"type":"boolean"},"default":{}}},"required":["default"],"additionalProperties":false,"nullable":true},"recordScopes":{"type":"object","additionalProperties":{"type":"string","enum":["all","team","own"]}},"hiddenModules":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100}},"required":["permissions","enabledModules"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/acl/groups/{id}":{"get":{"summary":"GET /api/v1/admin/acl/groups/{id}","operationId":"get_api_v1_admin_acl_groups_id","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["group:read"]},{"cookieAuth":["group:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/admin/acl/groups/{id}","operationId":"patch_api_v1_admin_acl_groups_id","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["group:update"]},{"cookieAuth":["group:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500,"nullable":true},"color":{"type":"string","maxLength":32,"nullable":true},"recordScope":{"type":"string","enum":["all","team","own"]},"financialAccess":{"type":"object","properties":{"default":{"type":"boolean"},"modules":{"type":"object","additionalProperties":{"type":"boolean"},"default":{}}},"required":["default"],"additionalProperties":false,"nullable":true},"recordScopes":{"type":"object","additionalProperties":{"type":"string","enum":["all","team","own"]}},"hiddenModules":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/admin/acl/groups/{id}","operationId":"delete_api_v1_admin_acl_groups_id","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"delete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["group:delete"]},{"cookieAuth":["group:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/acl/groups":{"get":{"summary":"GET /api/v1/admin/acl/groups","operationId":"get_api_v1_admin_acl_groups","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}}],"security":[{"bearerAuth":["group:list"]},{"cookieAuth":["group:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/admin/acl/groups","operationId":"post_api_v1_admin_acl_groups","tags":["group"],"x-surface":"admin","x-entity":"group","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["group:create"]},{"cookieAuth":["group:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500,"nullable":true},"color":{"type":"string","maxLength":32,"nullable":true},"recordScope":{"type":"string","enum":["all","team","own"],"default":"own"},"permissions":{"type":"array","items":{"type":"string","minLength":3,"maxLength":80},"maxItems":2000,"default":[]},"enabledModules":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100,"default":[]},"preset":{"type":"string","maxLength":64,"nullable":true},"financialAccess":{"type":"object","properties":{"default":{"type":"boolean"},"modules":{"type":"object","additionalProperties":{"type":"boolean"},"default":{}}},"required":["default"],"additionalProperties":false,"nullable":true},"recordScopes":{"type":"object","additionalProperties":{"type":"string","enum":["all","team","own"]},"default":{}},"hiddenModules":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100,"default":[]}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/approval-workflows/{id}":{"get":{"summary":"Read an approval workflow definition","description":"Read an approval workflow definition","operationId":"get_api_v1_admin_approval_workflows_id","tags":["approval_workflow"],"x-surface":"admin","x-entity":"approval_workflow","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_workflow:read"]},{"cookieAuth":["approval_workflow:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update an approval workflow (steps, binding, active)","description":"Update an approval workflow (steps, binding, active)","operationId":"patch_api_v1_admin_approval_workflows_id","tags":["approval_workflow"],"x-surface":"admin","x-entity":"approval_workflow","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_workflow:update"]},{"cookieAuth":["approval_workflow:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500,"nullable":true},"active":{"type":"boolean"},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"steps":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":120},"order":{"type":"integer","minimum":0},"approver_mode":{"type":"string","enum":["static","group","field_ref","creator_manager"]},"approver_ref":{"type":"string","maxLength":128,"nullable":true},"condition":{"type":"object","additionalProperties":{},"nullable":true},"allow_self_approve":{"type":"boolean","default":false}},"required":["key","name","order","approver_mode"],"additionalProperties":false},"minItems":1,"maxItems":20}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete an approval workflow","description":"Soft-delete an approval workflow","operationId":"delete_api_v1_admin_approval_workflows_id","tags":["approval_workflow"],"x-surface":"admin","x-entity":"approval_workflow","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_workflow:delete"]},{"cookieAuth":["approval_workflow:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/approval-workflows":{"get":{"summary":"List approval workflows for an entity / record type","description":"List approval workflows for an entity / record type","operationId":"get_api_v1_admin_approval_workflows","tags":["approval_workflow"],"x-surface":"admin","x-entity":"approval_workflow","x-action":"list","x-idempotent":false,"parameters":[{"name":"entity","in":"query","required":true,"schema":{"type":"string"}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_workflow:list"]},{"cookieAuth":["approval_workflow:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create an approval workflow (steps + binding)","description":"Create an approval workflow (steps + binding)","operationId":"post_api_v1_admin_approval_workflows","tags":["approval_workflow"],"x-surface":"admin","x-entity":"approval_workflow","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["approval_workflow:create"]},{"cookieAuth":["approval_workflow:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","minLength":1,"maxLength":64},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500,"nullable":true},"active":{"type":"boolean","default":true},"steps":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":120},"order":{"type":"integer","minimum":0},"approver_mode":{"type":"string","enum":["static","group","field_ref","creator_manager"]},"approver_ref":{"type":"string","maxLength":128,"nullable":true},"condition":{"type":"object","additionalProperties":{},"nullable":true},"allow_self_approve":{"type":"boolean","default":false}},"required":["key","name","order","approver_mode"],"additionalProperties":false},"minItems":1,"maxItems":20}},"required":["entity","name","steps"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/branding/assets/{kind}":{"get":{"summary":"GET /api/v1/admin/branding/assets/{kind}","operationId":"get_api_v1_admin_branding_assets_kind","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"read","x-idempotent":false,"parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","enum":["logo_light","logo_dark","favicon","ppt"]}}],"security":[{"bearerAuth":["branding:read"]},{"cookieAuth":["branding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/branding":{"get":{"summary":"GET /api/v1/admin/branding","operationId":"get_api_v1_admin_branding","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["branding:read"]},{"cookieAuth":["branding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"PUT /api/v1/admin/branding","operationId":"put_api_v1_admin_branding","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["branding:update"]},{"cookieAuth":["branding:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"logo_light_url":{"type":"string","maxLength":20000},"logo_dark_url":{"type":"string","maxLength":20000},"favicon_url":{"type":"string","maxLength":20000},"color_primary":{"type":"string","maxLength":20000},"color_secondary":{"type":"string","maxLength":20000},"color_accent":{"type":"string","maxLength":20000},"font":{"type":"string","maxLength":20000},"contact_email":{"type":"string","maxLength":20000},"reply_to":{"type":"string","maxLength":20000},"display_name":{"type":"string","maxLength":20000},"company_legal_name":{"type":"string","maxLength":20000},"address":{"type":"string","maxLength":20000},"email_signature":{"type":"string","maxLength":20000},"ppt_template_url":{"type":"string","maxLength":20000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"[DEPRECATED alias] PUT /api/v1/admin/branding","operationId":"put_api_v1_admin_branding__deprecated_alias","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["branding:update"]},{"cookieAuth":["branding:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"logo_light_url":{"type":"string","maxLength":20000},"logo_dark_url":{"type":"string","maxLength":20000},"favicon_url":{"type":"string","maxLength":20000},"color_primary":{"type":"string","maxLength":20000},"color_secondary":{"type":"string","maxLength":20000},"color_accent":{"type":"string","maxLength":20000},"font":{"type":"string","maxLength":20000},"contact_email":{"type":"string","maxLength":20000},"reply_to":{"type":"string","maxLength":20000},"display_name":{"type":"string","maxLength":20000},"company_legal_name":{"type":"string","maxLength":20000},"address":{"type":"string","maxLength":20000},"email_signature":{"type":"string","maxLength":20000},"ppt_template_url":{"type":"string","maxLength":20000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/admin/branding` instead. Reason: singleton takes PUT, not POST; body unchanged. ","x-successor":{"method":"PUT","path":"/api/v1/admin/branding"}}},"/api/v1/admin/branding/upload":{"post":{"summary":"POST /api/v1/admin/branding/upload","operationId":"post_api_v1_admin_branding_upload","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["branding:update"]},{"cookieAuth":["branding:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/commissions/meta":{"get":{"summary":"View a commission","description":"View a commission","operationId":"get_api_v1_admin_commissions_meta","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["commission:read"]},{"cookieAuth":["commission:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/commissions/payouts":{"post":{"summary":"Approve commission payout","description":"Approve commission payout","operationId":"post_api_v1_admin_commissions_payouts","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"approve","x-idempotent":false,"security":[{"bearerAuth":["commission:approve"]},{"cookieAuth":["commission:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["approve","confirm"]},"entryIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"paymentMethod":{"type":"string"},"paymentReference":{"type":"string"},"bankTransferId":{"type":"string"},"notes":{"type":"string"}},"required":["action","entryIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/commissions/scans":{"post":{"summary":"Reconcile paid invoices into commission ledger entries + clawbacks","description":"Reconcile paid invoices into commission ledger entries + clawbacks","operationId":"post_api_v1_admin_commissions_scans","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"scan","x-idempotent":false,"security":[{"bearerAuth":["commission:scan"]},{"cookieAuth":["commission:scan"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/commissions/settings":{"get":{"summary":"List commissions with filters and pagination","description":"List commissions with filters and pagination","operationId":"get_api_v1_admin_commissions_settings","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["commission:list"]},{"cookieAuth":["commission:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a commission","description":"Update fields on a commission","operationId":"put_api_v1_admin_commissions_settings","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["commission:update"]},{"cookieAuth":["commission:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"settings":{"type":"object","properties":{"commission_mode":{"type":"string"},"payout_schedule":{"type":"string"},"auto_calculate":{"type":"boolean"},"require_approval":{"type":"boolean"},"approval_threshold":{"type":"number"},"include_tax":{"type":"boolean"},"base_currency":{"type":"string"}},"additionalProperties":false},"overrides":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"string","minLength":1},"manager_id":{"type":"string","minLength":1},"override_rate":{"type":"number"},"level":{"type":"integer"},"is_active":{"type":"boolean"}},"required":["user_id","manager_id"],"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"[DEPRECATED alias] Update fields on a commission","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/admin/commissions/settings` instead. Reason: singleton takes PUT, not POST+PUT; duplicate POST removed, body unchanged. Update fields on a commission","operationId":"put_api_v1_admin_commissions_settings__deprecated_alias","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["commission:update"]},{"cookieAuth":["commission:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"settings":{"type":"object","properties":{"commission_mode":{"type":"string"},"payout_schedule":{"type":"string"},"auto_calculate":{"type":"boolean"},"require_approval":{"type":"boolean"},"approval_threshold":{"type":"number"},"include_tax":{"type":"boolean"},"base_currency":{"type":"string"}},"additionalProperties":false},"overrides":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"string","minLength":1},"manager_id":{"type":"string","minLength":1},"override_rate":{"type":"number"},"level":{"type":"integer"},"is_active":{"type":"boolean"}},"required":["user_id","manager_id"],"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/admin/commissions/settings"}}},"/api/v1/admin/crm-settings":{"get":{"summary":"List integrations with filters and pagination","description":"List integrations with filters and pagination","operationId":"get_api_v1_admin_crm_settings","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["integration:list"]},{"cookieAuth":["integration:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"put_api_v1_admin_crm_settings","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"action":{"type":"string","enum":["create_stage"]},"name":{"type":"string","minLength":1,"maxLength":200},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100},"requiredFields":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"exitCriteria":{"type":"string","maxLength":2000,"nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_stage"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100},"exitCriteria":{"type":"string","maxLength":2000,"nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"required":["action","id","name","order","probability"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_stage"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["reorder_stages"]},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"order":{"type":"integer","minimum":0}},"required":["id","order"],"additionalProperties":false},"maxItems":500}},"required":["action","stages"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["save_setting"]},"key":{"type":"string","minLength":1,"maxLength":120},"value":{}},"required":["action","key"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["create_plan"]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"baseRate":{"type":"number","minimum":0},"defaultSplits":{"type":"array","items":{"type":"object","additionalProperties":{}}},"payoutTrigger":{"type":"string","maxLength":60},"clawbackMonths":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_plan"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"baseRate":{"type":"number","minimum":0},"defaultSplits":{"type":"array","items":{"type":"object","additionalProperties":{}}},"payoutTrigger":{"type":"string","maxLength":60},"clawbackMonths":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"},"isActive":{"type":"boolean"}},"required":["action","id","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_plan"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["create_region"]},"name":{"type":"string","minLength":1,"maxLength":200},"quotas":{"type":"object","additionalProperties":{}},"owner_user_id":{"type":"string","maxLength":120}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_region"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"quotas":{"type":"object","additionalProperties":{}},"owner_user_id":{"type":"string","maxLength":120}},"required":["action","id","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_region"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"[DEPRECATED alias] Update fields on a integration","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/admin/crm-settings` instead. Reason: singleton takes PUT, not POST+PUT; duplicate POST removed, body unchanged. Update fields on a integration","operationId":"put_api_v1_admin_crm_settings__deprecated_alias","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"action":{"type":"string","enum":["create_stage"]},"name":{"type":"string","minLength":1,"maxLength":200},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100},"requiredFields":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"exitCriteria":{"type":"string","maxLength":2000,"nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_stage"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100},"exitCriteria":{"type":"string","maxLength":2000,"nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"required":["action","id","name","order","probability"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_stage"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["reorder_stages"]},"stages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"order":{"type":"integer","minimum":0}},"required":["id","order"],"additionalProperties":false},"maxItems":500}},"required":["action","stages"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["save_setting"]},"key":{"type":"string","minLength":1,"maxLength":120},"value":{}},"required":["action","key"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["create_plan"]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"baseRate":{"type":"number","minimum":0},"defaultSplits":{"type":"array","items":{"type":"object","additionalProperties":{}}},"payoutTrigger":{"type":"string","maxLength":60},"clawbackMonths":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_plan"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"baseRate":{"type":"number","minimum":0},"defaultSplits":{"type":"array","items":{"type":"object","additionalProperties":{}}},"payoutTrigger":{"type":"string","maxLength":60},"clawbackMonths":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"},"isActive":{"type":"boolean"}},"required":["action","id","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_plan"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["create_region"]},"name":{"type":"string","minLength":1,"maxLength":200},"quotas":{"type":"object","additionalProperties":{}},"owner_user_id":{"type":"string","maxLength":120}},"required":["action","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["update_region"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":200},"quotas":{"type":"object","additionalProperties":{}},"owner_user_id":{"type":"string","maxLength":120}},"required":["action","id","name"],"additionalProperties":false},{"type":"object","properties":{"action":{"type":"string","enum":["delete_region"]},"id":{"type":"string","format":"uuid"}},"required":["action","id"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/admin/crm-settings"}}},"/api/v1/admin/custom-objects/{id}/fields/{fieldId}":{"patch":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"patch_api_v1_admin_custom_objects_id_fields_fieldId","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"fieldId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"fieldType":{"type":"string","enum":["text","textarea","rich_text","number","decimal","currency","boolean","toggle","date","datetime","time","email","url","phone","select","multiselect","radio","checkbox_group","lookup","multi_lookup","file","image","color","rating","slider","progress","address","json","auto_number"]},"description":{"type":"string","maxLength":2000,"nullable":true},"placeholder":{"type":"string","maxLength":200,"nullable":true},"helpText":{"type":"string","maxLength":2000,"nullable":true},"groupName":{"type":"string","maxLength":120,"nullable":true},"groupOrder":{"type":"integer","minimum":0,"maximum":10000},"displayOrder":{"type":"integer","minimum":0,"maximum":10000},"columnSpan":{"type":"integer","minimum":1,"maximum":4},"required":{"type":"boolean"},"uniquePerTenant":{"type":"boolean"},"defaultValue":{},"options":{},"hidden":{"type":"boolean"},"readOnly":{"type":"boolean"},"hiddenOnCreate":{"type":"boolean"},"hiddenOnEdit":{"type":"boolean"},"hiddenOnList":{"type":"boolean"},"minLength":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"maxLength":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"lookupEntity":{"type":"string","maxLength":80,"nullable":true},"lookupDisplayField":{"type":"string","maxLength":80,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"delete_api_v1_admin_custom_objects_id_fields_fieldId","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"fieldId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/custom-objects/{id}/fields":{"get":{"summary":"View a custom_object","description":"View a custom_object","operationId":"get_api_v1_admin_custom_objects_id_fields","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:read"]},{"cookieAuth":["custom_object:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"post_api_v1_admin_custom_objects_id_fields","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fieldKey":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-z0-9_]+$"},"label":{"type":"string","minLength":1,"maxLength":120},"fieldType":{"type":"string","enum":["text","textarea","rich_text","number","decimal","currency","boolean","toggle","date","datetime","time","email","url","phone","select","multiselect","radio","checkbox_group","lookup","multi_lookup","file","image","color","rating","slider","progress","address","json","auto_number"]},"description":{"type":"string","maxLength":2000,"nullable":true},"placeholder":{"type":"string","maxLength":200,"nullable":true},"helpText":{"type":"string","maxLength":2000,"nullable":true},"groupName":{"type":"string","maxLength":120,"nullable":true},"groupOrder":{"type":"integer","minimum":0,"maximum":10000},"displayOrder":{"type":"integer","minimum":0,"maximum":10000},"columnSpan":{"type":"integer","minimum":1,"maximum":4},"required":{"type":"boolean"},"uniquePerTenant":{"type":"boolean"},"defaultValue":{},"options":{},"hidden":{"type":"boolean"},"readOnly":{"type":"boolean"},"hiddenOnCreate":{"type":"boolean"},"hiddenOnEdit":{"type":"boolean"},"hiddenOnList":{"type":"boolean"},"minLength":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"maxLength":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"lookupEntity":{"type":"string","maxLength":80,"nullable":true},"lookupDisplayField":{"type":"string","maxLength":80,"nullable":true}},"required":["fieldKey","label","fieldType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/custom-objects/{id}/relationships/{relationshipId}":{"delete":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"delete_api_v1_admin_custom_objects_id_relationships_relationshipId","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"relationshipId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/custom-objects/{id}/relationships":{"post":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"post_api_v1_admin_custom_objects_id_relationships","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targetObjectId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"targetSystemEntity":{"type":"string","minLength":1,"maxLength":80,"nullable":true},"relationshipType":{"type":"string","enum":["one_to_one","one_to_many","many_to_many","lookup"]},"foreignKeyField":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","maxLength":160,"nullable":true},"cascadeDelete":{"type":"boolean"}},"required":["relationshipType","foreignKeyField"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/custom-objects/{id}":{"get":{"summary":"View a custom_object","description":"View a custom_object","operationId":"get_api_v1_admin_custom_objects_id","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:read"]},{"cookieAuth":["custom_object:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a custom_object","description":"Update fields on a custom_object","operationId":"patch_api_v1_admin_custom_objects_id","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_object:update"]},{"cookieAuth":["custom_object:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"labelSingular":{"type":"string","minLength":1,"maxLength":120},"labelPlural":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":2000,"nullable":true},"icon":{"type":"string","maxLength":40},"moduleId":{"type":"string","maxLength":64},"allowAttachments":{"type":"boolean"},"allowComments":{"type":"boolean"},"allowActivityFeed":{"type":"boolean"},"displayOrder":{"type":"integer","minimum":0,"maximum":10000},"showInMainMenu":{"type":"boolean"},"tabTargets":{"type":"array","items":{"type":"string","minLength":1,"maxLength":160},"maxItems":100},"aclMode":{"type":"string","enum":["open","restricted"]},"aclGroupIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":160},"maxItems":100},"visibleInRecordTypes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":50,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a custom_object","description":"Soft-delete a custom_object","operationId":"delete_api_v1_admin_custom_objects_id","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["custom_object:delete"]},{"cookieAuth":["custom_object:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/custom-objects":{"get":{"summary":"List custom_objects with filters and pagination","description":"List custom_objects with filters and pagination","operationId":"get_api_v1_admin_custom_objects","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["custom_object:list"]},{"cookieAuth":["custom_object:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new custom_object","description":"Create a new custom_object","operationId":"post_api_v1_admin_custom_objects","tags":["custom_object"],"x-surface":"admin","x-entity":"custom_object","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_object:create"]},{"cookieAuth":["custom_object:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"labelSingular":{"type":"string","minLength":1,"maxLength":120},"labelPlural":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":1,"maxLength":63},"description":{"type":"string","maxLength":2000,"nullable":true},"icon":{"type":"string","maxLength":40},"moduleId":{"type":"string","maxLength":64},"allowAttachments":{"type":"boolean"},"allowComments":{"type":"boolean"},"allowActivityFeed":{"type":"boolean"},"showInMainMenu":{"type":"boolean"},"tabTargets":{"type":"array","items":{"type":"string","minLength":1,"maxLength":160},"maxItems":100},"aclMode":{"type":"string","enum":["open","restricted"]},"aclGroupIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":160},"maxItems":100},"visibleInRecordTypes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":50,"nullable":true}},"required":["name","labelSingular","labelPlural"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/departments/{id}":{"get":{"summary":"GET /api/v1/admin/departments/{id}","operationId":"get_api_v1_admin_departments_id","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["department:read"]},{"cookieAuth":["department:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/admin/departments/{id}","operationId":"patch_api_v1_admin_departments_id","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["department:update"]},{"cookieAuth":["department:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"parentDeptId":{"type":"string","maxLength":64,"nullable":true},"headUserId":{"type":"string","maxLength":64,"nullable":true},"enabledModules":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"costCenterId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/admin/departments/{id}","operationId":"delete_api_v1_admin_departments_id","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["department:delete"]},{"cookieAuth":["department:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/departments/meta":{"get":{"summary":"GET /api/v1/admin/departments/meta","operationId":"get_api_v1_admin_departments_meta","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["department:read"]},{"cookieAuth":["department:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/departments":{"get":{"summary":"GET /api/v1/admin/departments","operationId":"get_api_v1_admin_departments","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"parentDeptId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"headUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["department:list"]},{"cookieAuth":["department:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/admin/departments","operationId":"post_api_v1_admin_departments","tags":["department"],"x-surface":"admin","x-entity":"department","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["department:create"]},{"cookieAuth":["department:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"parentDeptId":{"type":"string","maxLength":64,"nullable":true},"headUserId":{"type":"string","maxLength":64,"nullable":true},"enabledModules":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"costCenterId":{"type":"string","maxLength":64,"nullable":true}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/entity-pipelines/{pipelineId}/stages/{stageId}":{"delete":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"delete_api_v1_admin_entity_pipelines_pipelineId_stages_stageId","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"stageId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/entity-pipelines/{pipelineId}/stages/order":{"put":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"put_api_v1_admin_entity_pipelines_pipelineId_stages_order","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":true,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":200}},"required":["ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/entity-pipelines/{pipelineId}/stages":{"get":{"summary":"GET /api/v1/admin/entity-pipelines/{pipelineId}/stages","operationId":"get_api_v1_admin_entity_pipelines_pipelineId_stages","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"list","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["entity_label:list"]},{"cookieAuth":["entity_label:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"put_api_v1_admin_entity_pipelines_pipelineId_stages","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":true,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"key":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","minLength":1,"maxLength":120},"orderIndex":{"type":"integer","minimum":0,"maximum":10000},"color":{"type":"string","minLength":1,"maxLength":32},"stageType":{"type":"string","enum":["open","done","cancelled"]},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}},"stageShipmentConfig":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"status":{"type":"string","minLength":1,"maxLength":40}},"additionalProperties":false},"requiredFields":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":100},"exitCriteriaRules":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["field_required","activity_required"]},"field":{"type":"string","minLength":1,"maxLength":128},"activity":{"type":"string","enum":["pulse","task_done","time_entry"]}},"required":["kind"],"additionalProperties":false},"maxItems":50},"approvalConfig":{"type":"object","properties":{"required":{"type":"boolean","default":false},"approverMode":{"type":"string","enum":["static","group","field_ref","creator_manager"]},"approverIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"maxItems":20},"groupId":{"type":"string","minLength":1,"maxLength":128},"fieldRef":{"type":"string","minLength":1,"maxLength":128}},"additionalProperties":false}},"required":["key","name","orderIndex","stageType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/entity-pipelines":{"get":{"summary":"GET /api/v1/admin/entity-pipelines","operationId":"get_api_v1_admin_entity_pipelines","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"list","x-idempotent":false,"parameters":[{"name":"entityType","in":"query","required":true,"schema":{"type":"string","enum":["project","work_order","project_task"]}}],"security":[{"bearerAuth":["entity_label:list"]},{"cookieAuth":["entity_label:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"put_api_v1_admin_entity_pipelines","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["project","work_order","project_task"]},"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":120},"isDefault":{"type":"boolean"}},"required":["entityType","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/expense-approval-settings":{"get":{"summary":"List integrations with filters and pagination","description":"List integrations with filters and pagination","operationId":"get_api_v1_admin_expense_approval_settings","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["integration:list"]},{"cookieAuth":["integration:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"patch_api_v1_admin_expense_approval_settings","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"approvalLevels":{"type":"integer","minimum":1,"maximum":3},"approver1Mode":{"type":"string","enum":["static","direct_manager"]},"approver1UserId":{"type":"string","nullable":true},"approver2UserId":{"type":"string","nullable":true},"approver3UserId":{"type":"string","nullable":true},"paymentManagerUserId":{"type":"string","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/import-jobs/{jobId}/configuration-proposals":{"post":{"summary":"POST /api/v1/admin/import-jobs/{jobId}/configuration-proposals","operationId":"post_api_v1_admin_import_jobs_jobId_configuration_proposals","tags":["custom_field"],"x-surface":"admin","x-entity":"custom_field","x-action":"create","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["custom_field:create"]},{"cookieAuth":["custom_field:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["lead","contact","account","deal"]},"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100}},"required":["entityType","columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/import-jobs/{jobId}/configuration":{"put":{"summary":"PUT /api/v1/admin/import-jobs/{jobId}/configuration","operationId":"put_api_v1_admin_import_jobs_jobId_configuration","tags":["custom_field"],"x-surface":"admin","x-entity":"custom_field","x-action":"create","x-idempotent":true,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_field:create"]},{"cookieAuth":["custom_field:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["lead","contact","account","deal"]},"fingerprint":{"type":"string","minLength":64,"maxLength":64},"approved":{"type":"boolean","enum":[true]}},"required":["entityType","fingerprint","approved"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/integrations/imap":{"post":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"post_api_v1_admin_integrations_imap","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"delete_api_v1_admin_integrations_imap","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/integrations/meeting":{"post":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"post_api_v1_admin_integrations_meeting","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["fathom"]},"apiKey":{"type":"string","minLength":8,"maxLength":512}},"required":["provider","apiKey"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["fireflies"]},"apiKey":{"type":"string","minLength":8,"maxLength":512}},"required":["provider","apiKey"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["otter"]},"apiKey":{"type":"string","minLength":8,"maxLength":512}},"required":["provider","apiKey"],"additionalProperties":false},{"type":"object","properties":{"provider":{"type":"string","enum":["zoom"]},"accountId":{"type":"string","minLength":1,"maxLength":256},"clientId":{"type":"string","minLength":1,"maxLength":256},"clientSecret":{"type":"string","minLength":1,"maxLength":512}},"required":["provider","accountId","clientId","clientSecret"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"delete_api_v1_admin_integrations_meeting","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":false,"parameters":[{"name":"provider","in":"query","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/job-titles/{id}":{"patch":{"summary":"Rename or reorder a job title","description":"Rename or reorder a job title","operationId":"patch_api_v1_admin_job_titles_id","tags":["job_title"],"x-surface":"admin","x-entity":"job_title","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["job_title:update"]},{"cookieAuth":["job_title:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"sortOrder":{"type":"integer"},"isActive":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Deactivate a job title","description":"Deactivate a job title","operationId":"delete_api_v1_admin_job_titles_id","tags":["job_title"],"x-surface":"admin","x-entity":"job_title","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["job_title:delete"]},{"cookieAuth":["job_title:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"[DEPRECATED alias] Rename or reorder a job title","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PATCH /api/v1/admin/job-titles/:id` instead. Reason: partial update is PATCH (departments idiom); body unchanged. Rename or reorder a job title","operationId":"patch_api_v1_admin_job_titles_id__deprecated_alias","tags":["job_title"],"x-surface":"admin","x-entity":"job_title","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["job_title:update"]},{"cookieAuth":["job_title:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"sortOrder":{"type":"integer"},"isActive":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PATCH","path":"/api/v1/admin/job-titles/:id"}}},"/api/v1/admin/job-titles":{"get":{"summary":"List job titles for this tenant","description":"List job titles for this tenant","operationId":"get_api_v1_admin_job_titles","tags":["job_title"],"x-surface":"admin","x-entity":"job_title","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["job_title:list"]},{"cookieAuth":["job_title:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a job title","description":"Create a job title","operationId":"post_api_v1_admin_job_titles","tags":["job_title"],"x-surface":"admin","x-entity":"job_title","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["job_title:create"]},{"cookieAuth":["job_title:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"sortOrder":{"type":"integer"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/members/{userId}":{"put":{"summary":"Set a member's title and manager","description":"Set a member's title and manager","operationId":"put_api_v1_admin_members_userId","tags":["workforce_user"],"x-surface":"admin","x-entity":"workforce_user","x-action":"update","x-idempotent":true,"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["workforce_user:update"]},{"cookieAuth":["workforce_user:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":80},"lastName":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","maxLength":100,"nullable":true},"managerId":{"type":"string","nullable":true},"departmentId":{"type":"string","maxLength":64,"nullable":true},"costCenterId":{"type":"string","maxLength":64,"nullable":true},"regionId":{"type":"string","maxLength":64,"nullable":true},"locale":{"type":"string","enum":["en","en-GB","de","fr","es","it","pt","nl"],"nullable":true},"country":{"type":"string","pattern":"^[a-zA-Z]{2}$","nullable":true},"timezone":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/module-customization/{moduleId}":{"get":{"summary":"GET /api/v1/admin/module-customization/{moduleId}","operationId":"get_api_v1_admin_module_customization_moduleId","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"read","x-idempotent":false,"parameters":[{"name":"moduleId","in":"path","required":true,"schema":{"type":"string"}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}}],"security":[{"bearerAuth":["entity_label:read"]},{"cookieAuth":["entity_label:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"put_api_v1_admin_module_customization_moduleId","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":true,"parameters":[{"name":"moduleId","in":"path","required":true,"schema":{"type":"string"}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"moduleLabel":{"type":"string","minLength":1,"maxLength":120},"entityAliases":{"type":"object","additionalProperties":{"type":"string","maxLength":120}},"entityPluralAliases":{"type":"object","additionalProperties":{"type":"string","maxLength":120}},"fieldOverrides":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"hidden":{"type":"boolean"},"hiddenOnList":{"type":"boolean"},"hiddenOnCreate":{"type":"boolean"},"hiddenOnEdit":{"type":"boolean"},"order":{"type":"number"},"placeholder":{"type":"string"},"helpText":{"type":"string","maxLength":2000},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"color":{"type":"string"}},"required":["value","label"],"additionalProperties":false}},"lookupEntity":{"type":"string","minLength":1,"maxLength":80},"isSystem":{"type":"boolean"},"clientScripts":{"type":"object","properties":{"onInit":{"type":"string","maxLength":20000},"onFocus":{"type":"string","maxLength":20000},"onBlur":{"type":"string","maxLength":20000},"onChange":{"type":"string","maxLength":20000}},"additionalProperties":false},"clientScriptsEnabled":{"type":"boolean"},"searchable":{"type":"boolean"},"filterable":{"type":"boolean"},"sortable":{"type":"boolean"},"defaultValue":{}},"required":["key"],"additionalProperties":false}}},"udfUpsert":{"type":"object","properties":{"entity":{"type":"string"},"field":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-z0-9_]+$"},"label":{"type":"string","minLength":1,"maxLength":120},"fieldType":{"type":"string","minLength":1,"maxLength":40},"required":{"type":"boolean","default":false},"hidden":{"type":"boolean","default":false},"hiddenOnList":{"type":"boolean","default":false},"hiddenOnCreate":{"type":"boolean","default":false},"hiddenOnEdit":{"type":"boolean","default":false},"placeholder":{"type":"string","maxLength":200},"helpText":{"type":"string","maxLength":2000},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"string","minLength":1,"maxLength":100}},"required":["label","value"],"additionalProperties":false}},"lookupEntity":{"type":"string","minLength":1,"maxLength":80},"clientScripts":{"type":"object","properties":{"onInit":{"type":"string","maxLength":20000},"onFocus":{"type":"string","maxLength":20000},"onBlur":{"type":"string","maxLength":20000},"onChange":{"type":"string","maxLength":20000}},"additionalProperties":false},"clientScriptsEnabled":{"type":"boolean"},"defaultValue":{},"searchable":{"type":"boolean"},"filterable":{"type":"boolean"},"sortable":{"type":"boolean"}},"required":["key","label","fieldType"],"additionalProperties":false}},"required":["entity","field"],"additionalProperties":false},"udfDelete":{"type":"object","properties":{"entity":{"type":"string"},"fieldKey":{"type":"string"}},"required":["entity","fieldKey"],"additionalProperties":false},"reorder":{"type":"object","properties":{"entity":{"type":"string"},"orderedKeys":{"type":"array","items":{"type":"string"}}},"required":["entity","orderedKeys"],"additionalProperties":false},"layout":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"blocks":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"kind":{"type":"string","enum":["card"]},"title":{"type":"string","maxLength":200},"columns":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[3]},{"type":"number","enum":[4]}],"default":1},"fields":{"type":"array","items":{"type":"object","properties":{"fieldKey":{"type":"string","minLength":1,"maxLength":120},"colSpan":{"anyOf":[{"type":"integer","minimum":1,"maximum":4},{"type":"string","enum":["full"]}],"default":1}},"required":["fieldKey"],"additionalProperties":false},"maxItems":200,"default":[]}},"required":["id","kind","title"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"kind":{"type":"string","enum":["separator"]},"label":{"type":"string","maxLength":200}},"required":["id","kind"],"additionalProperties":false}]},"maxItems":60}},"required":["entity","blocks"],"additionalProperties":false},"listColumns":{"type":"object","properties":{"entity":{"type":"string","minLength":1},"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":100}},"required":["entity","columns"],"additionalProperties":false},"recordTypeId":{"type":"string","minLength":1,"maxLength":80}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/module-customization/crm-deals/fulfillment-defaults":{"get":{"summary":"List sales pipelines","description":"List sales pipelines","operationId":"get_api_v1_admin_module_customization_crm_deals_fulfillment_defaults","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["pipeline:list"]},{"cookieAuth":["pipeline:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"put_api_v1_admin_module_customization_crm_deals_fulfillment_defaults","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fulfillmentDefaults":{"type":"object","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean"},"autoCreate":{"type":"boolean"},"defaultAssignee":{"type":"string","nullable":true}},"required":["enabled","autoCreate","defaultAssignee"],"additionalProperties":false}}},"required":["fulfillmentDefaults"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/module-customization/crm-deals/win-loss-reasons":{"get":{"summary":"List sales pipelines","description":"List sales pipelines","operationId":"get_api_v1_admin_module_customization_crm_deals_win_loss_reasons","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["pipeline:list"]},{"cookieAuth":["pipeline:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"put_api_v1_admin_module_customization_crm_deals_win_loss_reasons","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"winReasons":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"lossReasons":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"lossReasonRequired":{"type":"boolean"},"lossCommentRequired":{"type":"boolean"}},"required":["winReasons","lossReasons"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/module-customization/projects/tabs":{"get":{"summary":"View the Projects module settings","description":"View the Projects module settings","operationId":"get_api_v1_admin_module_customization_projects_tabs","tags":["project_settings"],"x-surface":"admin","x-entity":"project_settings","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["project_settings:list"]},{"cookieAuth":["project_settings:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Change the Projects module settings","description":"Change the Projects module settings","operationId":"put_api_v1_admin_module_customization_projects_tabs","tags":["project_settings"],"x-surface":"admin","x-entity":"project_settings","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_settings:update"]},{"cookieAuth":["project_settings:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hiddenTabs":{"type":"array","items":{"type":"string","enum":["time","burn"]}}},"required":["hiddenTabs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/numbering/{entity}":{"get":{"summary":"GET /api/v1/admin/numbering/{entity}","operationId":"get_api_v1_admin_numbering_entity","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"read","x-idempotent":false,"parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:read"]},{"cookieAuth":["entity_label:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Rename an entity (Customer → Patient)","description":"Rename an entity (Customer → Patient)","operationId":"put_api_v1_admin_numbering_entity","tags":["entity_label"],"x-surface":"admin","x-entity":"entity_label","x-action":"update","x-idempotent":true,"parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["entity_label:update"]},{"cookieAuth":["entity_label:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"string","minLength":1,"maxLength":120,"pattern":"^\\S+$"},"enabled":{"type":"boolean","default":true},"startValue":{"type":"integer","minimum":1,"maximum":1000000000,"default":1}},"required":["template"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/oauth-apps/{id}/rotate":{"post":{"summary":"Rotate client_secret (returns new secret once)","description":"Rotate client_secret (returns new secret once)","operationId":"post_api_v1_admin_oauth_apps_id_rotate","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"rotate","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["oauth_app:rotate"]},{"cookieAuth":["oauth_app:rotate"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/oauth-apps/{id}":{"get":{"summary":"GET /api/v1/admin/oauth-apps/{id}","operationId":"get_api_v1_admin_oauth_apps_id","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["oauth_app:read"]},{"cookieAuth":["oauth_app:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/admin/oauth-apps/{id}","operationId":"patch_api_v1_admin_oauth_apps_id","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["oauth_app:update"]},{"cookieAuth":["oauth_app:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500,"nullable":true},"scopes":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50},"scopeProfile":{"type":"string","enum":["view","edit","full"]},"includeWorkspaceAi":{"type":"boolean"},"redirectUris":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2000},"maxItems":20}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Revoke OAuth app + all its tokens, or permanently delete a revoked app","description":"Revoke OAuth app + all its tokens, or permanently delete a revoked app","operationId":"delete_api_v1_admin_oauth_apps_id","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"permanent","in":"query","required":false,"schema":{"type":"string","enum":["true"]}}],"security":[{"bearerAuth":["oauth_app:delete"]},{"cookieAuth":["oauth_app:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/oauth-apps":{"get":{"summary":"GET /api/v1/admin/oauth-apps","operationId":"get_api_v1_admin_oauth_apps","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["oauth_app:list"]},{"cookieAuth":["oauth_app:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create an OAuth app (returns secret once)","description":"Create an OAuth app (returns secret once)","operationId":"post_api_v1_admin_oauth_apps","tags":["oauth_app"],"x-surface":"admin","x-entity":"oauth_app","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["oauth_app:create"]},{"cookieAuth":["oauth_app:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"scopes":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50},"scopeProfile":{"type":"string","enum":["view","edit","full"]},"includeWorkspaceAi":{"type":"boolean"},"vendor":{"type":"string","enum":["claude-ai","chatgpt","microsoft-365-copilot","copilot-studio","euchat-ai","landock-ai","custom"]},"connectionType":{"type":"string","enum":["api","mcp"]},"redirectUris":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2000},"maxItems":20}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/pipelines/{pipelineId}":{"get":{"summary":"View a pipeline with its stages","description":"View a pipeline with its stages","operationId":"get_api_v1_admin_pipelines_pipelineId","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"read","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:read"]},{"cookieAuth":["pipeline:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"patch_api_v1_admin_pipelines_pipelineId","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"currency":{"type":"string","minLength":3,"maxLength":3},"isDefault":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a pipeline","description":"Delete a pipeline","operationId":"delete_api_v1_admin_pipelines_pipelineId","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"delete","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:delete"]},{"cookieAuth":["pipeline:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/pipelines/{pipelineId}/stages/{stageId}":{"patch":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"patch_api_v1_admin_pipelines_pipelineId_stages_stageId","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}},{"name":"stageId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":80},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100,"default":0},"forecastCategory":{"type":"string","enum":["omitted","pipeline","best_case","commit","closed"],"default":"pipeline"},"requiredFields":{"type":"array","items":{"type":"string"},"default":[]},"exitCriteriaRules":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["field_required","activity_required"]},"field":{"type":"string"},"activityType":{"type":"string"}},"required":["type"],"additionalProperties":false},"default":[]},"isWon":{"type":"boolean","default":false},"isLost":{"type":"boolean","default":false},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a pipeline","description":"Delete a pipeline","operationId":"delete_api_v1_admin_pipelines_pipelineId_stages_stageId","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"delete","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}},{"name":"stageId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:delete"]},{"cookieAuth":["pipeline:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/pipelines/{pipelineId}/stages/order":{"put":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"put_api_v1_admin_pipelines_pipelineId_stages_order","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":true,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/pipelines/{pipelineId}/stages":{"get":{"summary":"List sales pipelines","description":"List sales pipelines","operationId":"get_api_v1_admin_pipelines_pipelineId_stages","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"list","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:list"]},{"cookieAuth":["pipeline:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update a pipeline or its stages","description":"Update a pipeline or its stages","operationId":"post_api_v1_admin_pipelines_pipelineId_stages","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"update","x-idempotent":false,"parameters":[{"name":"pipelineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pipeline:update"]},{"cookieAuth":["pipeline:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":80},"order":{"type":"integer","minimum":0},"probability":{"type":"number","minimum":0,"maximum":100,"default":0},"forecastCategory":{"type":"string","enum":["omitted","pipeline","best_case","commit","closed"],"default":"pipeline"},"requiredFields":{"type":"array","items":{"type":"string"},"default":[]},"exitCriteriaRules":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["field_required","activity_required"]},"field":{"type":"string"},"activityType":{"type":"string"}},"required":["type"],"additionalProperties":false},"default":[]},"isWon":{"type":"boolean","default":false},"isLost":{"type":"boolean","default":false},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","nullable":true},"stageTaskTemplates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"enabled":{"type":"boolean","default":true},"title":{"type":"string","minLength":1},"description":{"type":"string"},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueInDays":{"type":"integer","minimum":0},"assignment":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["mover"]}},"required":["mode"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["static"]},"userId":{"type":"string","minLength":1}},"required":["mode","userId"],"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["unassigned"]}},"required":["mode"],"additionalProperties":false}]}},"required":["title","assignment"],"additionalProperties":false}}},"required":["name","order"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/pipelines":{"get":{"summary":"List sales pipelines","description":"List sales pipelines","operationId":"get_api_v1_admin_pipelines","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["pipeline:list"]},{"cookieAuth":["pipeline:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new sales pipeline","description":"Create a new sales pipeline","operationId":"post_api_v1_admin_pipelines","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["pipeline:create"]},{"cookieAuth":["pipeline:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"currency":{"type":"string","minLength":3,"maxLength":3},"isDefault":{"type":"boolean","default":false},"cloneStagesFromId":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/portal-config/logo":{"post":{"summary":"POST /api/v1/admin/portal-config/logo","operationId":"post_api_v1_admin_portal_config_logo","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["branding:update"]},{"cookieAuth":["branding:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/portal-config":{"get":{"summary":"GET /api/v1/admin/portal-config","operationId":"get_api_v1_admin_portal_config","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["branding:read"]},{"cookieAuth":["branding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"PUT /api/v1/admin/portal-config","operationId":"put_api_v1_admin_portal_config","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["branding:update"]},{"cookieAuth":["branding:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"vanityLabel":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,40}$","nullable":true},"primaryColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"welcomeMessage":{"type":"string","maxLength":2000},"allowProjectView":{"type":"boolean"},"allowWorkOrderView":{"type":"boolean"},"allowTicketView":{"type":"boolean"},"allowTaskView":{"type":"boolean"},"allowTicketCreation":{"type":"boolean"},"allowTaskCreation":{"type":"boolean"},"magicLinkTtlMinutes":{"type":"integer","minimum":1,"maximum":1440},"sessionTtlHours":{"type":"integer","minimum":1,"maximum":720}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/project-phases/{id}":{"delete":{"summary":"Delete a project phase","description":"Delete a project phase","operationId":"delete_api_v1_admin_project_phases_id","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase:delete"]},{"cookieAuth":["project_phase:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/project-phases":{"get":{"summary":"List project phases","description":"List project phases","operationId":"get_api_v1_admin_project_phases","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["project_phase:list"]},{"cookieAuth":["project_phase:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a project phase","description":"Create a project phase","operationId":"post_api_v1_admin_project_phases","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase:create"]},{"cookieAuth":["project_phase:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":4,"maxLength":20},"orderIndex":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/record-types/{id}":{"patch":{"summary":"Rename / set default / set pipeline of a Record Type","description":"Rename / set default / set pipeline of a Record Type","operationId":"patch_api_v1_admin_record_types_id","tags":["record_type"],"x-surface":"admin","x-entity":"record_type","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["record_type:update"]},{"cookieAuth":["record_type:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"op":{"type":"string","enum":["rename"]},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["op","name"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["set_pipeline"]},"pipelineId":{"type":"string","maxLength":64,"nullable":true}},"required":["op","pipelineId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["set_default"]}},"required":["op"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["set_enabled"]},"enabled":{"type":"boolean"}},"required":["op","enabled"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a Record Type (records fall back to default)","description":"Delete a Record Type (records fall back to default)","operationId":"delete_api_v1_admin_record_types_id","tags":["record_type"],"x-surface":"admin","x-entity":"record_type","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["record_type:delete"]},{"cookieAuth":["record_type:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/record-types/order":{"put":{"summary":"Rename / set default / set pipeline of a Record Type","description":"Rename / set default / set pipeline of a Record Type","operationId":"put_api_v1_admin_record_types_order","tags":["record_type"],"x-surface":"admin","x-entity":"record_type","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["record_type:update"]},{"cookieAuth":["record_type:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","enum":["deal","work_order","project","contract"]},"ids":{"type":"array","items":{"type":"string"},"maxItems":100}},"required":["entity","ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/record-types":{"get":{"summary":"List Record Types for an entity","description":"List Record Types for an entity","operationId":"get_api_v1_admin_record_types","tags":["record_type"],"x-surface":"admin","x-entity":"record_type","x-action":"list","x-idempotent":false,"parameters":[{"name":"entity","in":"query","required":true,"schema":{"type":"string","enum":["deal","work_order","project","contract"]}}],"security":[{"bearerAuth":["record_type:list"]},{"cookieAuth":["record_type:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a Record Type (a deal/work-order/project flavor)","description":"Create a Record Type (a deal/work-order/project flavor)","operationId":"post_api_v1_admin_record_types","tags":["record_type"],"x-surface":"admin","x-entity":"record_type","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["record_type:create"]},{"cookieAuth":["record_type:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","enum":["deal","work_order","project","contract"]},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500,"nullable":true},"pipelineId":{"type":"string","maxLength":64,"nullable":true},"color":{"type":"string","maxLength":32,"nullable":true},"icon":{"type":"string","maxLength":64,"nullable":true},"enabled":{"type":"boolean"}},"required":["entity","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/scheduling-statuses/{key}":{"delete":{"summary":"Delete a dispatch status","description":"Delete a dispatch status","operationId":"delete_api_v1_admin_scheduling_statuses_key","tags":["scheduling_status"],"x-surface":"admin","x-entity":"scheduling_status","x-action":"delete","x-idempotent":false,"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["scheduling_status:delete"]},{"cookieAuth":["scheduling_status:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/scheduling-statuses":{"get":{"summary":"Read dispatch-status configuration","description":"Read dispatch-status configuration","operationId":"get_api_v1_admin_scheduling_statuses","tags":["scheduling_status"],"x-surface":"admin","x-entity":"scheduling_status","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["scheduling_status:read"]},{"cookieAuth":["scheduling_status:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update dispatch-status configuration","description":"Update dispatch-status configuration","operationId":"put_api_v1_admin_scheduling_statuses","tags":["scheduling_status"],"x-surface":"admin","x-entity":"scheduling_status","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["scheduling_status:update"]},{"cookieAuth":["scheduling_status:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/trust-center":{"get":{"summary":"List integrations with filters and pagination","description":"List integrations with filters and pagination","operationId":"get_api_v1_admin_trust_center","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["integration:list"]},{"cookieAuth":["integration:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a integration","description":"Update fields on a integration","operationId":"put_api_v1_admin_trust_center","tags":["integration"],"x-surface":"admin","x-entity":"integration","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["integration:update"]},{"cookieAuth":["integration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"frameworkIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":100}},"required":["enabled","frameworkIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/users":{"get":{"summary":"GET /api/v1/admin/users","operationId":"get_api_v1_admin_users","tags":["user"],"x-surface":"admin","x-entity":"user","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","pending","suspended","revoked"]}}],"security":[{"bearerAuth":["user:list"]},{"cookieAuth":["user:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Invite a user","description":"Invite a user","operationId":"post_api_v1_admin_users","tags":["user"],"x-surface":"admin","x-entity":"user","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["user:create"]},{"cookieAuth":["user:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":1},"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"role":{"type":"string","enum":["owner","admin","member"]},"groupId":{"type":"string","minLength":1,"maxLength":64},"employeeId":{"type":"string","minLength":1,"maxLength":128}},"required":["email","firstName","lastName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/webhooks/{id}/deliveries":{"get":{"summary":"GET /api/v1/admin/webhooks/{id}/deliveries","operationId":"get_api_v1_admin_webhooks_id_deliveries","tags":["webhook_delivery"],"x-surface":"admin","x-entity":"webhook_delivery","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["webhook_delivery:list"]},{"cookieAuth":["webhook_delivery:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/webhooks/{id}/rotate":{"post":{"summary":"Rotate signing secret","description":"Rotate signing secret","operationId":"post_api_v1_admin_webhooks_id_rotate","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"rotate","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["webhook:rotate"]},{"cookieAuth":["webhook:rotate"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/webhooks/{id}":{"get":{"summary":"GET /api/v1/admin/webhooks/{id}","operationId":"get_api_v1_admin_webhooks_id","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["webhook:read"]},{"cookieAuth":["webhook:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/admin/webhooks/{id}","operationId":"patch_api_v1_admin_webhooks_id","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["webhook:update"]},{"cookieAuth":["webhook:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","format":"uri","maxLength":2000},"events":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"minItems":1,"maxItems":100},"active":{"type":"boolean"},"description":{"type":"string","maxLength":500},"headers":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/admin/webhooks/{id}","operationId":"delete_api_v1_admin_webhooks_id","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["webhook:delete"]},{"cookieAuth":["webhook:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/admin/webhooks":{"get":{"summary":"GET /api/v1/admin/webhooks","operationId":"get_api_v1_admin_webhooks","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["webhook:list"]},{"cookieAuth":["webhook:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/admin/webhooks","operationId":"post_api_v1_admin_webhooks","tags":["webhook"],"x-surface":"admin","x-entity":"webhook","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["webhook:create"]},{"cookieAuth":["webhook:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","format":"uri","maxLength":2000},"events":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"minItems":1,"maxItems":100},"active":{"type":"boolean"},"description":{"type":"string","maxLength":500},"headers":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","url","events"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/ai/agent-configs/{id}":{"get":{"summary":"View a agent_config","description":"View a agent_config","operationId":"get_api_v1_ai_agent_configs_id","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["agent_config:read"]},{"cookieAuth":["agent_config:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a agent_config","description":"Update fields on a agent_config","operationId":"patch_api_v1_ai_agent_configs_id","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["agent_config:update"]},{"cookieAuth":["agent_config:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"agentType":{"type":"string","maxLength":80},"description":{"type":"string","maxLength":2000,"nullable":true},"model":{"type":"string","maxLength":120},"systemPrompt":{"type":"string","maxLength":16000},"toolsAllowed":{"type":"array","items":{}},"maxSteps":{"type":"number","minimum":1,"maximum":100},"timeoutSeconds":{"type":"number","minimum":1,"maximum":3600},"requiresApproval":{"type":"boolean"},"approvalActions":{"type":"array","items":{}},"enabled":{"type":"boolean"},"schedule":{"type":"string","maxLength":120,"nullable":true},"config":{"type":"object","additionalProperties":{}},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a agent_config","description":"Soft-delete a agent_config","operationId":"delete_api_v1_ai_agent_configs_id","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["agent_config:delete"]},{"cookieAuth":["agent_config:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/ai/agent-configs/meta":{"get":{"summary":"View a agent_config","description":"View a agent_config","operationId":"get_api_v1_ai_agent_configs_meta","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["agent_config:read"]},{"cookieAuth":["agent_config:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/ai/agent-configs":{"get":{"summary":"List agent_configs with filters and pagination","description":"List agent_configs with filters and pagination","operationId":"get_api_v1_ai_agent_configs","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"agentType","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"enabled","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["agent_config:list"]},{"cookieAuth":["agent_config:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new agent_config","description":"Create a new agent_config","operationId":"post_api_v1_ai_agent_configs","tags":["agent_config"],"x-surface":"data","x-entity":"agent_config","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["agent_config:create"]},{"cookieAuth":["agent_config:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"agentType":{"type":"string","maxLength":80,"minLength":1},"description":{"type":"string","maxLength":2000,"nullable":true},"model":{"type":"string","maxLength":120,"minLength":1},"systemPrompt":{"type":"string","maxLength":16000,"minLength":1},"toolsAllowed":{"type":"array","items":{}},"maxSteps":{"type":"number","minimum":1,"maximum":100},"timeoutSeconds":{"type":"number","minimum":1,"maximum":3600},"requiresApproval":{"type":"boolean"},"approvalActions":{"type":"array","items":{}},"enabled":{"type":"boolean"},"schedule":{"type":"string","maxLength":120,"nullable":true},"config":{"type":"object","additionalProperties":{}},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","agentType","model","systemPrompt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/approvals/requests/{id}/cancel":{"post":{"summary":"Cancel an in-flight approval request","description":"Cancel an in-flight approval request","operationId":"post_api_v1_approvals_requests_id_cancel","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:cancel"]},{"cookieAuth":["approval_request:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/approvals/requests/{id}/decision":{"post":{"summary":"Approve or reject the current approval step","description":"Approve or reject the current approval step","operationId":"post_api_v1_approvals_requests_id_decision","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"decide","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:decide"]},{"cookieAuth":["approval_request:decide"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["approved","rejected"]},"comment":{"type":"string","maxLength":2000,"nullable":true}},"required":["decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/approvals/requests":{"get":{"summary":"Read an approval request + its action history","description":"Read an approval request + its action history","operationId":"get_api_v1_approvals_requests","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"read","x-idempotent":false,"parameters":[{"name":"entity","in":"query","required":true,"schema":{"type":"string"}},{"name":"recordId","in":"query","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:read"]},{"cookieAuth":["approval_request:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Start an approval on a record","description":"Start an approval on a record","operationId":"post_api_v1_approvals_requests","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["approval_request:create"]},{"cookieAuth":["approval_request:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","minLength":1,"maxLength":64},"recordId":{"type":"string","minLength":1,"maxLength":64},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"workflowId":{"type":"string","minLength":1,"maxLength":128,"nullable":true},"payload":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","recordId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets/{id}/image":{"post":{"summary":"Update fields on a asset","description":"Update fields on a asset","operationId":"post_api_v1_assets_assets_id_image","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:update"]},{"cookieAuth":["asset:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a asset","description":"Update fields on a asset","operationId":"delete_api_v1_assets_assets_id_image","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:update"]},{"cookieAuth":["asset:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets/{id}/links/{linkId}":{"delete":{"summary":"Update fields on a asset","description":"Update fields on a asset","operationId":"delete_api_v1_assets_assets_id_links_linkId","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:update"]},{"cookieAuth":["asset:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets/{id}/links":{"get":{"summary":"View a asset","description":"View a asset","operationId":"get_api_v1_assets_assets_id_links","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:read"]},{"cookieAuth":["asset:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a asset","description":"Update fields on a asset","operationId":"post_api_v1_assets_assets_id_links","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:update"]},{"cookieAuth":["asset:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toType":{"type":"string"},"toId":{"type":"string"},"linkType":{"type":"string","minLength":1,"maxLength":64},"note":{"type":"string","maxLength":2000}},"required":["toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets/{id}":{"get":{"summary":"View a asset","description":"View a asset","operationId":"get_api_v1_assets_assets_id","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:read"]},{"cookieAuth":["asset:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a asset","description":"Update fields on a asset","operationId":"patch_api_v1_assets_assets_id","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:update"]},{"cookieAuth":["asset:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetTag":{"type":"string","maxLength":120},"serialNumber":{"type":"string","maxLength":200,"nullable":true},"name":{"type":"string","maxLength":300},"brand":{"type":"string","maxLength":200,"nullable":true},"manufacturer":{"type":"string","maxLength":200,"nullable":true},"modelName":{"type":"string","maxLength":200,"nullable":true},"countryOfManufacture":{"type":"string","maxLength":120,"nullable":true},"description":{"type":"string","nullable":true},"categoryId":{"type":"string","maxLength":80,"nullable":true},"statusId":{"type":"string","maxLength":80,"nullable":true},"modelId":{"type":"string","maxLength":80,"nullable":true},"locationId":{"type":"string","maxLength":80,"nullable":true},"assignedToEmployeeId":{"type":"string","maxLength":80,"nullable":true},"departmentId":{"type":"string","maxLength":80,"nullable":true},"usageCount":{"type":"number","nullable":true},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"expectedReplacementDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"purchaseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"purchaseCost":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","maxLength":3,"nullable":true},"supplier":{"type":"string","maxLength":200,"nullable":true},"invoiceNumber":{"type":"string","maxLength":120,"nullable":true},"warrantyExpiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"warrantyMonths":{"type":"number","minimum":0,"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true},"vin":{"type":"string","maxLength":120,"nullable":true},"licensePlate":{"type":"string","maxLength":60,"nullable":true},"registrationExpiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"odometerReading":{"type":"number","minimum":0,"nullable":true},"odometerUnit":{"type":"string","maxLength":8,"nullable":true},"fuelType":{"type":"string","maxLength":40,"nullable":true},"insurancePolicyId":{"type":"string","maxLength":120,"nullable":true},"hourMeter":{"type":"number","minimum":0,"nullable":true},"capacity":{"type":"string","maxLength":200,"nullable":true},"lastInspectedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"nextInspectionDue":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"jurisdiction":{"type":"string","maxLength":120,"nullable":true},"registrationNumber":{"type":"string","maxLength":120,"nullable":true},"filingDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"grantedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expiryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"applicant":{"type":"string","maxLength":200,"nullable":true},"inventor":{"type":"string","maxLength":200,"nullable":true},"renewalDue":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"propertyAddress":{"type":"string","maxLength":400,"nullable":true},"propertyAreaSqm":{"type":"number","minimum":0,"nullable":true},"propertyUse":{"type":"string","maxLength":60,"nullable":true},"ownershipType":{"type":"string","maxLength":40,"nullable":true},"lessor":{"type":"string","maxLength":200,"nullable":true},"leaseStartDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"leaseEndDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"depreciationMethod":{"type":"string","maxLength":40,"nullable":true},"usefulLifeMonths":{"type":"number","minimum":0,"nullable":true},"salvageValue":{"type":"number","minimum":0,"nullable":true},"glAccount":{"type":"string","maxLength":80,"nullable":true},"costCenter":{"type":"string","maxLength":80,"nullable":true},"costCenterId":{"type":"string","maxLength":80,"nullable":true},"notes":{"type":"string","nullable":true},"imageUrl":{"type":"string","maxLength":1000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a asset","description":"Soft-delete a asset","operationId":"delete_api_v1_assets_assets_id","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:delete"]},{"cookieAuth":["asset:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets/meta":{"get":{"summary":"View a asset","description":"View a asset","operationId":"get_api_v1_assets_assets_meta","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["asset:read"]},{"cookieAuth":["asset:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/assets/assets":{"get":{"summary":"List assets with filters and pagination","description":"List assets with filters and pagination","operationId":"get_api_v1_assets_assets","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"statusId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"locationId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"departmentId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["asset:list"]},{"cookieAuth":["asset:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new asset","description":"Create a new asset","operationId":"post_api_v1_assets_assets","tags":["asset"],"x-surface":"data","x-entity":"asset","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["asset:create"]},{"cookieAuth":["asset:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetTag":{"type":"string","maxLength":120,"minLength":1},"serialNumber":{"type":"string","maxLength":200,"nullable":true},"name":{"type":"string","maxLength":300,"minLength":1},"brand":{"type":"string","maxLength":200,"nullable":true},"manufacturer":{"type":"string","maxLength":200,"nullable":true},"modelName":{"type":"string","maxLength":200,"nullable":true},"countryOfManufacture":{"type":"string","maxLength":120,"nullable":true},"description":{"type":"string","nullable":true},"categoryId":{"type":"string","maxLength":80,"nullable":true},"statusId":{"type":"string","maxLength":80,"nullable":true},"modelId":{"type":"string","maxLength":80,"nullable":true},"locationId":{"type":"string","maxLength":80,"nullable":true},"assignedToEmployeeId":{"type":"string","maxLength":80,"nullable":true},"departmentId":{"type":"string","maxLength":80,"nullable":true},"usageCount":{"type":"number","nullable":true},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"expectedReplacementDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"purchaseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"purchaseCost":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","maxLength":3,"nullable":true},"supplier":{"type":"string","maxLength":200,"nullable":true},"invoiceNumber":{"type":"string","maxLength":120,"nullable":true},"warrantyExpiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"warrantyMonths":{"type":"number","minimum":0,"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true},"vin":{"type":"string","maxLength":120,"nullable":true},"licensePlate":{"type":"string","maxLength":60,"nullable":true},"registrationExpiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"odometerReading":{"type":"number","minimum":0,"nullable":true},"odometerUnit":{"type":"string","maxLength":8,"nullable":true},"fuelType":{"type":"string","maxLength":40,"nullable":true},"insurancePolicyId":{"type":"string","maxLength":120,"nullable":true},"hourMeter":{"type":"number","minimum":0,"nullable":true},"capacity":{"type":"string","maxLength":200,"nullable":true},"lastInspectedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"nextInspectionDue":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"jurisdiction":{"type":"string","maxLength":120,"nullable":true},"registrationNumber":{"type":"string","maxLength":120,"nullable":true},"filingDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"grantedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expiryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"applicant":{"type":"string","maxLength":200,"nullable":true},"inventor":{"type":"string","maxLength":200,"nullable":true},"renewalDue":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"propertyAddress":{"type":"string","maxLength":400,"nullable":true},"propertyAreaSqm":{"type":"number","minimum":0,"nullable":true},"propertyUse":{"type":"string","maxLength":60,"nullable":true},"ownershipType":{"type":"string","maxLength":40,"nullable":true},"lessor":{"type":"string","maxLength":200,"nullable":true},"leaseStartDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"leaseEndDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"depreciationMethod":{"type":"string","maxLength":40,"nullable":true},"usefulLifeMonths":{"type":"number","minimum":0,"nullable":true},"salvageValue":{"type":"number","minimum":0,"nullable":true},"glAccount":{"type":"string","maxLength":80,"nullable":true},"costCenter":{"type":"string","maxLength":80,"nullable":true},"costCenterId":{"type":"string","maxLength":80,"nullable":true},"notes":{"type":"string","nullable":true},"imageUrl":{"type":"string","maxLength":1000,"nullable":true}},"required":["assetTag","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/templates/{id}":{"get":{"summary":"View a automation_template","description":"View a automation_template","operationId":"get_api_v1_automation_templates_id","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["automation_template:read"]},{"cookieAuth":["automation_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a automation_template","description":"Update fields on a automation_template","operationId":"patch_api_v1_automation_templates_id","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["automation_template:update"]},{"cookieAuth":["automation_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":5000,"nullable":true},"trigger":{"type":"object","additionalProperties":{}},"steps":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"oneClickSetup":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a automation_template","description":"Soft-delete a automation_template","operationId":"delete_api_v1_automation_templates_id","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["automation_template:delete"]},{"cookieAuth":["automation_template:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/templates/meta":{"get":{"summary":"View a automation_template","description":"View a automation_template","operationId":"get_api_v1_automation_templates_meta","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["automation_template:read"]},{"cookieAuth":["automation_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/templates":{"get":{"summary":"List automation_templates with filters and pagination","description":"List automation_templates with filters and pagination","operationId":"get_api_v1_automation_templates","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"oneClickSetup","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["automation_template:list"]},{"cookieAuth":["automation_template:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new automation_template","description":"Create a new automation_template","operationId":"post_api_v1_automation_templates","tags":["automation_template"],"x-surface":"data","x-entity":"automation_template","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["automation_template:create"]},{"cookieAuth":["automation_template:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":5000,"nullable":true},"trigger":{"type":"object","additionalProperties":{}},"steps":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"oneClickSetup":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","category"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/workflows/{id}":{"get":{"summary":"View a workflow","description":"View a workflow","operationId":"get_api_v1_automation_workflows_id","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["workflow:read"]},{"cookieAuth":["workflow:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a workflow","description":"Update fields on a workflow","operationId":"patch_api_v1_automation_workflows_id","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["workflow:update"]},{"cookieAuth":["workflow:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"trigger":{"type":"object","additionalProperties":{}},"steps":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"errorHandling":{"type":"string","enum":["stop","skip","retry"]},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a workflow","description":"Soft-delete a workflow","operationId":"delete_api_v1_automation_workflows_id","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["workflow:delete"]},{"cookieAuth":["workflow:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/workflows/{id}/test":{"post":{"summary":"Dry-run workflow","description":"Dry-run workflow","operationId":"post_api_v1_automation_workflows_id_test","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"test","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["workflow:test"]},{"cookieAuth":["workflow:test"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/workflows/meta":{"get":{"summary":"View a workflow","description":"View a workflow","operationId":"get_api_v1_automation_workflows_meta","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["workflow:read"]},{"cookieAuth":["workflow:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/automation/workflows":{"get":{"summary":"List workflows with filters and pagination","description":"List workflows with filters and pagination","operationId":"get_api_v1_automation_workflows","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"enabled","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["workflow:list"]},{"cookieAuth":["workflow:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new workflow","description":"Create a new workflow","operationId":"post_api_v1_automation_workflows","tags":["workflow"],"x-surface":"data","x-entity":"workflow","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["workflow:create"]},{"cookieAuth":["workflow:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"trigger":{"type":"object","additionalProperties":{}},"steps":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"errorHandling":{"type":"string","enum":["stop","skip","retry"]},"enabled":{"type":"boolean"}},"required":["name","trigger","steps"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/price-books/{id}":{"get":{"summary":"GET /api/v1/catalog/price-books/{id}","operationId":"get_api_v1_catalog_price_books_id","tags":["price_book"],"x-surface":"data","x-entity":"price_book","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["price_book:read"]},{"cookieAuth":["price_book:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/catalog/price-books/{id}","operationId":"patch_api_v1_catalog_price_books_id","tags":["price_book"],"x-surface":"admin","x-entity":"price_book","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["price_book:update"]},{"cookieAuth":["price_book:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string"},"name":{"type":"string","maxLength":200},"minQuantity":{"type":"number","minimum":1},"maxQuantity":{"type":"number","minimum":1,"nullable":true},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"flatFee":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","maxLength":3}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/catalog/price-books/{id}","operationId":"delete_api_v1_catalog_price_books_id","tags":["price_book"],"x-surface":"admin","x-entity":"price_book","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["price_book:delete"]},{"cookieAuth":["price_book:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/price-books/meta":{"get":{"summary":"GET /api/v1/catalog/price-books/meta","operationId":"get_api_v1_catalog_price_books_meta","tags":["price_book"],"x-surface":"data","x-entity":"price_book","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["price_book:read"]},{"cookieAuth":["price_book:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/price-books":{"get":{"summary":"GET /api/v1/catalog/price-books","operationId":"get_api_v1_catalog_price_books","tags":["price_book"],"x-surface":"data","x-entity":"price_book","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["price_book:list"]},{"cookieAuth":["price_book:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/catalog/price-books","operationId":"post_api_v1_catalog_price_books","tags":["price_book"],"x-surface":"admin","x-entity":"price_book","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["price_book:create"]},{"cookieAuth":["price_book:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1},"name":{"type":"string","maxLength":200,"minLength":1},"minQuantity":{"type":"number","minimum":1},"maxQuantity":{"type":"number","minimum":1,"nullable":true},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"flatFee":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","maxLength":3}},"required":["productId","name","unitPrice"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/products/{id}/components":{"get":{"summary":"View a product","description":"View a product","operationId":"get_api_v1_catalog_products_id_components","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["product:read"]},{"cookieAuth":["product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a product","description":"Update fields on a product","operationId":"put_api_v1_catalog_products_id_components","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["product:update"]},{"cookieAuth":["product:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"components":{"type":"array","items":{"type":"object","properties":{"componentProductId":{"type":"string","minLength":1},"quantityPerUnit":{"type":"number","exclusiveMinimum":true,"minimum":0},"notes":{"type":"string","maxLength":2000,"nullable":true},"sortOrder":{"type":"integer","minimum":0,"nullable":true}},"required":["componentProductId","quantityPerUnit"],"additionalProperties":false},"maxItems":200}},"required":["components"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/products/{id}":{"get":{"summary":"View a product","description":"View a product","operationId":"get_api_v1_catalog_products_id","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["product:read"]},{"cookieAuth":["product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a product","description":"Update fields on a product","operationId":"patch_api_v1_catalog_products_id","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["product:update"]},{"cookieAuth":["product:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"sku":{"type":"string","maxLength":120,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"productType":{"type":"string","enum":["one_time","recurring","usage_based","tiered"]},"kind":{"type":"string","enum":["product","service","subscription"],"nullable":true},"pricingModel":{"type":"string","enum":["one_time","variable","subscription","time_materials","hybrid"],"nullable":true},"unitPrice":{"type":"number","minimum":0,"nullable":true},"costPrice":{"type":"number","minimum":0,"nullable":true},"unitLabel":{"type":"string","maxLength":40,"nullable":true},"role":{"type":"string","maxLength":120,"nullable":true},"taxRatePercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"billingInterval":{"type":"string","enum":["monthly","quarterly","annual"],"nullable":true},"subscriptionTermMonths":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"paymentSchedule":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"percent":{"type":"number","minimum":0,"maximum":100},"trigger":{"type":"string","maxLength":60,"nullable":true},"due_days_after":{"type":"integer","minimum":0,"maximum":3650},"dueDays":{"type":"integer"}},"additionalProperties":true},"nullable":true},"fulfillmentOnWon":{"type":"array","items":{"type":"string","enum":["create_project","create_invoice","create_subscription","create_work_order","create_manufacturing_job","create_support_ticket","create_contract"]},"nullable":true},"wonActionTarget":{"type":"string","enum":["none","project","support_ticket","manufacturing_job","work_order","subscription"],"nullable":true},"prices":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3},"unit_price":{"type":"number","minimum":0},"unitPrice":{"type":"number","minimum":0}},"required":["currency"],"additionalProperties":true},"nullable":true},"autoFx":{"type":"boolean"},"trackInventory":{"type":"boolean"},"quantityOnHand":{"type":"number","nullable":true},"lowStockThreshold":{"type":"number","nullable":true},"skuUnit":{"type":"string","maxLength":40,"nullable":true},"imageUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"validFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"validTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"ownerId":{"type":"string","maxLength":64,"nullable":true},"active":{"type":"boolean"},"metadata":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a product","description":"Soft-delete a product","operationId":"delete_api_v1_catalog_products_id","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["product:delete"]},{"cookieAuth":["product:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/products/{id}/top-clients":{"get":{"summary":"View a product","description":"View a product","operationId":"get_api_v1_catalog_products_id_top_clients","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["product:read"]},{"cookieAuth":["product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/products/meta":{"get":{"summary":"View a product","description":"View a product","operationId":"get_api_v1_catalog_products_meta","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["product:read"]},{"cookieAuth":["product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/products":{"get":{"summary":"List products with filters and pagination","description":"List products with filters and pagination","operationId":"get_api_v1_catalog_products","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"productType","in":"query","required":false,"schema":{"type":"string","enum":["one_time","recurring","usage_based","tiered"]}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["product","service","subscription"]}},{"name":"pricingModel","in":"query","required":false,"schema":{"type":"string","enum":["one_time","variable","subscription","time_materials","hybrid"]}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["product:list"]},{"cookieAuth":["product:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new product","description":"Create a new product","operationId":"post_api_v1_catalog_products","tags":["product"],"x-surface":"data","x-entity":"product","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["product:create"]},{"cookieAuth":["product:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"sku":{"type":"string","maxLength":120,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"productType":{"type":"string","enum":["one_time","recurring","usage_based","tiered"]},"kind":{"type":"string","enum":["product","service","subscription"],"nullable":true},"pricingModel":{"type":"string","enum":["one_time","variable","subscription","time_materials","hybrid"],"nullable":true},"unitPrice":{"type":"number","minimum":0,"nullable":true},"costPrice":{"type":"number","minimum":0,"nullable":true},"unitLabel":{"type":"string","maxLength":40,"nullable":true},"role":{"type":"string","maxLength":120,"nullable":true},"taxRatePercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"billingInterval":{"type":"string","enum":["monthly","quarterly","annual"],"nullable":true},"subscriptionTermMonths":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"paymentSchedule":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"percent":{"type":"number","minimum":0,"maximum":100},"trigger":{"type":"string","maxLength":60,"nullable":true},"due_days_after":{"type":"integer","minimum":0,"maximum":3650},"dueDays":{"type":"integer"}},"additionalProperties":true},"nullable":true},"fulfillmentOnWon":{"type":"array","items":{"type":"string","enum":["create_project","create_invoice","create_subscription","create_work_order","create_manufacturing_job","create_support_ticket","create_contract"]},"nullable":true},"wonActionTarget":{"type":"string","enum":["none","project","support_ticket","manufacturing_job","work_order","subscription"],"nullable":true},"prices":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","minLength":3,"maxLength":3},"unit_price":{"type":"number","minimum":0},"unitPrice":{"type":"number","minimum":0}},"required":["currency"],"additionalProperties":true},"nullable":true},"autoFx":{"type":"boolean"},"trackInventory":{"type":"boolean"},"quantityOnHand":{"type":"number","nullable":true},"lowStockThreshold":{"type":"number","nullable":true},"skuUnit":{"type":"string","maxLength":40,"nullable":true},"imageUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"validFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"validTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"ownerId":{"type":"string","maxLength":64,"nullable":true},"active":{"type":"boolean"},"metadata":{"type":"object","additionalProperties":{}}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/sow-templates/meta":{"get":{"summary":"GET /api/v1/catalog/sow-templates/meta","operationId":"get_api_v1_catalog_sow_templates_meta","tags":["sow_template"],"x-surface":"data","x-entity":"sow_template","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["sow_template:read"]},{"cookieAuth":["sow_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/subscriptions/{id}/cancel":{"post":{"summary":"Cancel subscription","description":"Cancel subscription","operationId":"post_api_v1_catalog_subscriptions_id_cancel","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["subscription:cancel"]},{"cookieAuth":["subscription:cancel"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":2000},"cancelAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/subscriptions/{id}":{"get":{"summary":"View a subscription","description":"View a subscription","operationId":"get_api_v1_catalog_subscriptions_id","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["subscription:read"]},{"cookieAuth":["subscription:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a subscription","description":"Update fields on a subscription","operationId":"patch_api_v1_catalog_subscriptions_id","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["subscription:update"]},{"cookieAuth":["subscription:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"productId":{"type":"string","minLength":1,"maxLength":64},"quoteId":{"type":"string","maxLength":64,"nullable":true},"contractId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["trialing","active","paused","cancelled","expired"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"introPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"introMonths":{"type":"integer","minimum":0,"maximum":600,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"billingInterval":{"type":"string","enum":["monthly","quarterly","semi_annual","annual","biennial"]},"currentPeriodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"currentPeriodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"nextBillingDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"autoRenew":{"type":"boolean"},"cancelAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"cancelReason":{"type":"string","maxLength":2000,"nullable":true},"pauseStartsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"pauseEndsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"trialEndsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"mrr":{"type":"number","minimum":0,"maximum":9999999999.99},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a subscription","description":"Soft-delete a subscription","operationId":"delete_api_v1_catalog_subscriptions_id","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["subscription:delete"]},{"cookieAuth":["subscription:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/subscriptions/meta":{"get":{"summary":"View a subscription","description":"View a subscription","operationId":"get_api_v1_catalog_subscriptions_meta","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["subscription:read"]},{"cookieAuth":["subscription:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/catalog/subscriptions":{"get":{"summary":"List subscriptions with filters and pagination","description":"List subscriptions with filters and pagination","operationId":"get_api_v1_catalog_subscriptions","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["trialing","active","paused","cancelled","expired"]}},{"name":"billingInterval","in":"query","required":false,"schema":{"type":"string","enum":["monthly","quarterly","semi_annual","annual","biennial"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}}],"security":[{"bearerAuth":["subscription:list"]},{"cookieAuth":["subscription:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new subscription","description":"Create a new subscription","operationId":"post_api_v1_catalog_subscriptions","tags":["subscription"],"x-surface":"data","x-entity":"subscription","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["subscription:create"]},{"cookieAuth":["subscription:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"productId":{"type":"string","minLength":1,"maxLength":64},"quoteId":{"type":"string","maxLength":64,"nullable":true},"contractId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["trialing","active","paused","cancelled","expired"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"introPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"introMonths":{"type":"integer","minimum":0,"maximum":600,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"billingInterval":{"type":"string","enum":["monthly","quarterly","semi_annual","annual","biennial"]},"currentPeriodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"currentPeriodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"nextBillingDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"autoRenew":{"type":"boolean"},"cancelAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"cancelReason":{"type":"string","maxLength":2000,"nullable":true},"pauseStartsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"pauseEndsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"trialEndsAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"mrr":{"type":"number","minimum":0,"maximum":9999999999.99},"customFields":{"type":"object","additionalProperties":{}}},"required":["accountId","productId","unitPrice","billingInterval"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/cost-centers/{id}":{"get":{"summary":"GET /api/v1/company/cost-centers/{id}","operationId":"get_api_v1_company_cost_centers_id","tags":["cost_center"],"x-surface":"data","x-entity":"cost_center","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["cost_center:read"]},{"cookieAuth":["cost_center:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"PUT /api/v1/company/cost-centers/{id}","operationId":"put_api_v1_company_cost_centers_id","tags":["cost_center"],"x-surface":"admin","x-entity":"cost_center","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["cost_center:update"]},{"cookieAuth":["cost_center:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"code":{"type":"string","maxLength":60},"departmentId":{"type":"string","maxLength":64,"nullable":true},"budget":{"type":"number","minimum":0},"managerUserId":{"type":"string","minLength":1}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/company/cost-centers/{id}","operationId":"patch_api_v1_company_cost_centers_id","tags":["cost_center"],"x-surface":"admin","x-entity":"cost_center","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["cost_center:update"]},{"cookieAuth":["cost_center:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"code":{"type":"string","maxLength":60},"departmentId":{"type":"string","maxLength":64,"nullable":true},"budget":{"type":"number","minimum":0},"managerUserId":{"type":"string","minLength":1}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/company/cost-centers/{id}","operationId":"delete_api_v1_company_cost_centers_id","tags":["cost_center"],"x-surface":"admin","x-entity":"cost_center","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["cost_center:delete"]},{"cookieAuth":["cost_center:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/cost-centers/meta":{"get":{"summary":"GET /api/v1/company/cost-centers/meta","operationId":"get_api_v1_company_cost_centers_meta","tags":["cost_center"],"x-surface":"data","x-entity":"cost_center","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["cost_center:read"]},{"cookieAuth":["cost_center:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/cost-centers":{"get":{"summary":"GET /api/v1/company/cost-centers","operationId":"get_api_v1_company_cost_centers","tags":["cost_center"],"x-surface":"data","x-entity":"cost_center","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"departmentId","in":"query","required":false,"schema":{"type":"string","maxLength":64,"nullable":true}}],"security":[{"bearerAuth":["cost_center:list"]},{"cookieAuth":["cost_center:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/company/cost-centers","operationId":"post_api_v1_company_cost_centers","tags":["cost_center"],"x-surface":"admin","x-entity":"cost_center","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["cost_center:create"]},{"cookieAuth":["cost_center:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"code":{"type":"string","maxLength":60},"departmentId":{"type":"string","maxLength":64,"nullable":true},"budget":{"type":"number","minimum":0},"managerUserId":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-compensation/{id}":{"patch":{"summary":"Update fields on a employee-compensation","description":"Update fields on a employee-compensation","operationId":"patch_api_v1_company_employee_compensation_id","tags":["employee-compensation"],"x-surface":"data","x-entity":"employee-compensation","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-compensation:update"]},{"cookieAuth":["employee-compensation:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payType":{"type":"string","enum":["salary","hourly","daily","contract"]},"amount":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"payFrequency":{"type":"string","enum":["hourly","weekly","biweekly","semimonthly","monthly","annual","one_time"]},"effectiveFrom":{"type":"string","format":"date"},"effectiveTo":{"type":"string","format":"date","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a employee-compensation","description":"Soft-delete a employee-compensation","operationId":"delete_api_v1_company_employee_compensation_id","tags":["employee-compensation"],"x-surface":"data","x-entity":"employee-compensation","x-action":"delete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-compensation:delete"]},{"cookieAuth":["employee-compensation:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-compensation/meta":{"get":{"summary":"View a employee-compensation","description":"View a employee-compensation","operationId":"get_api_v1_company_employee_compensation_meta","tags":["employee-compensation"],"x-surface":"data","x-entity":"employee-compensation","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["employee-compensation:read"]},{"cookieAuth":["employee-compensation:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-compensation":{"get":{"summary":"List employee-compensations with filters and pagination","description":"List employee-compensations with filters and pagination","operationId":"get_api_v1_company_employee_compensation","tags":["employee-compensation"],"x-surface":"data","x-entity":"employee-compensation","x-action":"list","x-idempotent":false,"parameters":[{"name":"employeeId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["employee-compensation:list"]},{"cookieAuth":["employee-compensation:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new employee-compensation","description":"Create a new employee-compensation","operationId":"post_api_v1_company_employee_compensation","tags":["employee-compensation"],"x-surface":"data","x-entity":"employee-compensation","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["employee-compensation:create"]},{"cookieAuth":["employee-compensation:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"employeeId":{"type":"string","minLength":1},"payType":{"type":"string","enum":["salary","hourly","daily","contract"]},"amount":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3,"default":"USD"},"payFrequency":{"type":"string","enum":["hourly","weekly","biweekly","semimonthly","monthly","annual","one_time"]},"effectiveFrom":{"type":"string","format":"date"},"effectiveTo":{"type":"string","format":"date","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["employeeId","payType","amount","payFrequency","effectiveFrom"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-documents/{id}":{"get":{"summary":"View a employee-document","description":"View a employee-document","operationId":"get_api_v1_company_employee_documents_id","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:read"]},{"cookieAuth":["employee-document:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a employee-document","description":"Update fields on a employee-document","operationId":"patch_api_v1_company_employee_documents_id","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:update"]},{"cookieAuth":["employee-document:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["identification","passport","license","certification","other"]},"documentName":{"type":"string","minLength":1,"maxLength":200},"documentNumber":{"type":"string","maxLength":120},"certificateNumber":{"type":"string","maxLength":120},"issuerName":{"type":"string","maxLength":200},"issuerWebsite":{"type":"string","format":"uri","maxLength":500},"otherDetails":{"type":"string","maxLength":4000},"country":{"type":"string","maxLength":60},"language":{"type":"string","maxLength":20},"issueDate":{"type":"string"},"expiryDate":{"type":"string"},"fileKey":{"type":"string"},"notes":{"type":"string","maxLength":4000},"verifiedByAdmin":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a employee-document","description":"Soft-delete a employee-document","operationId":"delete_api_v1_company_employee_documents_id","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:delete"]},{"cookieAuth":["employee-document:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-documents/meta":{"get":{"summary":"View a employee-document","description":"View a employee-document","operationId":"get_api_v1_company_employee_documents_meta","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["employee-document:read"]},{"cookieAuth":["employee-document:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee-documents":{"get":{"summary":"List employee-documents with filters and pagination","description":"List employee-documents with filters and pagination","operationId":"get_api_v1_company_employee_documents","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"list","x-idempotent":false,"parameters":[{"name":"employeeId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"documentType","in":"query","required":false,"schema":{"type":"string","enum":["identification","passport","license","certification","other"]}}],"security":[{"bearerAuth":["employee-document:list"]},{"cookieAuth":["employee-document:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new employee-document","description":"Create a new employee-document","operationId":"post_api_v1_company_employee_documents","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:create"]},{"cookieAuth":["employee-document:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/{id}/links/{linkId}":{"delete":{"summary":"Update fields on a employee","description":"Update fields on a employee","operationId":"delete_api_v1_company_employees_id_links_linkId","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/{id}/links":{"get":{"summary":"View a employee","description":"View a employee","operationId":"get_api_v1_company_employees_id_links","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a employee","description":"Update fields on a employee","operationId":"post_api_v1_company_employees_id_links","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toType":{"type":"string"},"toId":{"type":"string"},"linkType":{"type":"string","minLength":1,"maxLength":64},"note":{"type":"string","maxLength":2000}},"required":["toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/{id}/photo":{"put":{"summary":"Update fields on a employee","description":"Update fields on a employee","operationId":"put_api_v1_company_employees_id_photo","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/{id}":{"get":{"summary":"View a employee","description":"View a employee","operationId":"get_api_v1_company_employees_id","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a employee","description":"Update fields on a employee","operationId":"patch_api_v1_company_employees_id","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"title":{"type":"string","maxLength":160,"nullable":true},"managerId":{"type":"string","nullable":true},"departmentId":{"type":"string","nullable":true},"costCenterId":{"type":"string","nullable":true},"regionId":{"type":"string","nullable":true},"locale":{"type":"string","maxLength":20,"nullable":true},"country":{"type":"string","maxLength":2,"nullable":true},"timezone":{"type":"string","maxLength":80,"nullable":true},"email":{"type":"string","format":"email","nullable":true},"personalEmail":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","maxLength":50,"nullable":true},"employmentType":{"type":"string","enum":["full_time","part_time","contractor","temporary","intern","other"]},"status":{"type":"string","enum":["active","on_leave","inactive","terminated"]},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/mention-candidates":{"get":{"summary":"List active tenant teammates for an explicit @mention or draft-recipient picker","description":"List active tenant teammates for an explicit @mention or draft-recipient picker","operationId":"get_api_v1_company_employees_mention_candidates","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"mention","x-idempotent":false,"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["employee:mention"]},{"cookieAuth":["employee:mention"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees/meta":{"get":{"summary":"View a employee","description":"View a employee","operationId":"get_api_v1_company_employees_meta","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employees":{"get":{"summary":"List employees with filters and pagination","description":"List employees with filters and pagination","operationId":"get_api_v1_company_employees","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"departmentId","in":"query","required":false,"schema":{"type":"string"}},{"name":"regionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"accessStatus","in":"query","required":false,"schema":{"type":"string","enum":["none","pending","active","suspended"]}},{"name":"assignable","in":"query","required":false,"schema":{"type":"string","enum":["1"]}}],"security":[{"bearerAuth":["employee:list"]},{"cookieAuth":["employee:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new employee","description":"Create a new employee","operationId":"post_api_v1_company_employees","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["employee:create"]},{"cookieAuth":["employee:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"title":{"type":"string","maxLength":160,"nullable":true},"managerId":{"type":"string","nullable":true},"departmentId":{"type":"string","nullable":true},"costCenterId":{"type":"string","nullable":true},"regionId":{"type":"string","nullable":true},"locale":{"type":"string","maxLength":20,"nullable":true},"country":{"type":"string","maxLength":2,"nullable":true},"timezone":{"type":"string","maxLength":80,"nullable":true},"email":{"type":"string","format":"email","nullable":true},"personalEmail":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","maxLength":50,"nullable":true},"employmentType":{"type":"string","enum":["full_time","part_time","contractor","temporary","intern","other"]},"status":{"type":"string","enum":["active","on_leave","inactive","terminated"]},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["firstName","lastName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/battlecard":{"get":{"summary":"Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","description":"Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","operationId":"get_api_v1_competitors_competitors_id_battlecard","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"battlecard","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:battlecard"]},{"cookieAuth":["competitor:battlecard"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","description":"Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","operationId":"post_api_v1_competitors_competitors_id_battlecard","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"battlecard","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:battlecard"]},{"cookieAuth":["competitor:battlecard"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/enrich":{"post":{"summary":"Re-run the AI/company enrichment for a competitor (profile, size, market share, strengths/weaknesses, socials, people)","description":"Re-run the AI/company enrichment for a competitor (profile, size, market share, strengths/weaknesses, socials, people)","operationId":"post_api_v1_competitors_competitors_id_enrich","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"enrich","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:enrich"]},{"cookieAuth":["competitor:enrich"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/insights":{"get":{"summary":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_insights","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/refresh":{"post":{"summary":"Re-run the full competitor gather (enrich + tech stack + news + snapshot + socials) for a competitor","description":"Re-run the full competitor gather (enrich + tech stack + news + snapshot + socials) for a competitor","operationId":"post_api_v1_competitors_competitors_id_refresh","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"refresh","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:refresh"]},{"cookieAuth":["competitor:refresh"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}":{"get":{"summary":"View a competitor","description":"View a competitor","operationId":"get_api_v1_competitors_competitors_id","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:read"]},{"cookieAuth":["competitor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a competitor","description":"Update fields on a competitor","operationId":"put_api_v1_competitors_competitors_id","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:update"]},{"cookieAuth":["competitor:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"url":{"type":"string","maxLength":1000},"label":{"type":"string","maxLength":200,"nullable":true},"status":{"type":"string","enum":["active","archived"]},"logoUrl":{"type":"string","maxLength":1000,"nullable":true},"enriched":{"type":"object","additionalProperties":{},"nullable":true},"overrides":{"type":"object","additionalProperties":{},"nullable":true},"profile":{"type":"object","additionalProperties":{},"nullable":true},"socials":{"type":"object","additionalProperties":{},"nullable":true},"people":{"type":"object","additionalProperties":{},"nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a competitor","description":"Soft-delete a competitor","operationId":"delete_api_v1_competitors_competitors_id","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:delete"]},{"cookieAuth":["competitor:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/snapshots":{"get":{"summary":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_snapshots","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":400}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/{id}/updates":{"get":{"summary":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_updates","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors/meta":{"get":{"summary":"View a competitor","description":"View a competitor","operationId":"get_api_v1_competitors_competitors_meta","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["competitor:read"]},{"cookieAuth":["competitor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/competitors/competitors":{"get":{"summary":"List competitors with filters and pagination","description":"List competitors with filters and pagination","operationId":"get_api_v1_competitors_competitors","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","archived"]}}],"security":[{"bearerAuth":["competitor:list"]},{"cookieAuth":["competitor:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new competitor","description":"Create a new competitor","operationId":"post_api_v1_competitors_competitors","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:create"]},{"cookieAuth":["competitor:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","maxLength":1000,"minLength":1},"label":{"type":"string","maxLength":200,"nullable":true},"status":{"type":"string","enum":["active","archived"]},"logoUrl":{"type":"string","maxLength":1000,"nullable":true},"enriched":{"type":"object","additionalProperties":{},"nullable":true},"overrides":{"type":"object","additionalProperties":{},"nullable":true},"profile":{"type":"object","additionalProperties":{},"nullable":true},"socials":{"type":"object","additionalProperties":{},"nullable":true},"people":{"type":"object","additionalProperties":{},"nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ai-systems/{id}":{"get":{"summary":"View a ai_system","description":"View a ai_system","operationId":"get_api_v1_compliance_ai_systems_id","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ai_system:read"]},{"cookieAuth":["ai_system:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ai_system","description":"Update fields on a ai_system","operationId":"patch_api_v1_compliance_ai_systems_id","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ai_system:update"]},{"cookieAuth":["ai_system:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"systemName":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":4000,"nullable":true},"purpose":{"type":"string","maxLength":4000,"nullable":true},"provider":{"type":"string","maxLength":200,"nullable":true},"riskLevel":{"type":"string","enum":["minimal","limited","high","unacceptable"]},"annexIiiCategory":{"type":"string","maxLength":200,"nullable":true},"conformityAssessmentStatus":{"type":"string","enum":["not_started","in_progress","completed","expired"]},"humanOversightMeasures":{"type":"string","maxLength":8000,"nullable":true},"transparencyObligations":{"type":"array","items":{}},"postMarketMonitoring":{"type":"boolean"},"deploymentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"lastReviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["active","development","retired"]},"linkedIctServiceId":{"type":"string","maxLength":80,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ai_system","description":"Soft-delete a ai_system","operationId":"delete_api_v1_compliance_ai_systems_id","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ai_system:delete"]},{"cookieAuth":["ai_system:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ai-systems/meta":{"get":{"summary":"View a ai_system","description":"View a ai_system","operationId":"get_api_v1_compliance_ai_systems_meta","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ai_system:read"]},{"cookieAuth":["ai_system:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ai-systems":{"get":{"summary":"List ai_systems with filters and pagination","description":"List ai_systems with filters and pagination","operationId":"get_api_v1_compliance_ai_systems","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string","enum":["minimal","limited","high","unacceptable"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","development","retired"]}}],"security":[{"bearerAuth":["ai_system:list"]},{"cookieAuth":["ai_system:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ai_system","description":"Create a new ai_system","operationId":"post_api_v1_compliance_ai_systems","tags":["ai_system"],"x-surface":"data","x-entity":"ai_system","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ai_system:create"]},{"cookieAuth":["ai_system:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"systemName":{"type":"string","maxLength":200,"minLength":1},"description":{"type":"string","maxLength":4000,"nullable":true},"purpose":{"type":"string","maxLength":4000,"nullable":true},"provider":{"type":"string","maxLength":200,"nullable":true},"riskLevel":{"type":"string","enum":["minimal","limited","high","unacceptable"]},"annexIiiCategory":{"type":"string","maxLength":200,"nullable":true},"conformityAssessmentStatus":{"type":"string","enum":["not_started","in_progress","completed","expired"]},"humanOversightMeasures":{"type":"string","maxLength":8000,"nullable":true},"transparencyObligations":{"type":"array","items":{}},"postMarketMonitoring":{"type":"boolean"},"deploymentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"lastReviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["active","development","retired"]},"linkedIctServiceId":{"type":"string","maxLength":80,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["systemName","riskLevel","conformityAssessmentStatus","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/audits/{id}":{"get":{"summary":"View a audit_run","description":"View a audit_run","operationId":"get_api_v1_compliance_audits_id","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_run:read"]},{"cookieAuth":["audit_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a audit_run","description":"Update fields on a audit_run","operationId":"patch_api_v1_compliance_audits_id","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_run:update"]},{"cookieAuth":["audit_run:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"auditType":{"type":"string","enum":["internal","external","regulatory"]},"scopeFrameworkIds":{"type":"array","items":{"type":"string"},"maxItems":50},"auditorName":{"type":"string","minLength":1,"maxLength":200},"auditorOrganization":{"type":"string","maxLength":200,"nullable":true},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["planned","in_progress","review","completed","cancelled"]},"opinion":{"type":"string","enum":["unqualified","qualified","adverse","disclaimer"],"nullable":true},"executiveSummary":{"type":"string","maxLength":50000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a audit_run","description":"Soft-delete a audit_run","operationId":"delete_api_v1_compliance_audits_id","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_run:delete"]},{"cookieAuth":["audit_run:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/audits/meta":{"get":{"summary":"View a audit_run","description":"View a audit_run","operationId":"get_api_v1_compliance_audits_meta","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["audit_run:read"]},{"cookieAuth":["audit_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/audits":{"get":{"summary":"List audit_runs with filters and pagination","description":"List audit_runs with filters and pagination","operationId":"get_api_v1_compliance_audits","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"auditType","in":"query","required":false,"schema":{"type":"string","enum":["internal","external","regulatory"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["planned","in_progress","review","completed","cancelled"]}},{"name":"opinion","in":"query","required":false,"schema":{"type":"string","enum":["unqualified","qualified","adverse","disclaimer"]}}],"security":[{"bearerAuth":["audit_run:list"]},{"cookieAuth":["audit_run:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new audit_run","description":"Create a new audit_run","operationId":"post_api_v1_compliance_audits","tags":["audit_run"],"x-surface":"data","x-entity":"audit_run","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_run:create"]},{"cookieAuth":["audit_run:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"auditType":{"type":"string","enum":["internal","external","regulatory"]},"scopeFrameworkIds":{"type":"array","items":{"type":"string"},"maxItems":50},"auditorName":{"type":"string","minLength":1,"maxLength":200},"auditorOrganization":{"type":"string","maxLength":200,"nullable":true},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["planned","in_progress","review","completed","cancelled"]},"opinion":{"type":"string","enum":["unqualified","qualified","adverse","disclaimer"],"nullable":true},"executiveSummary":{"type":"string","maxLength":50000,"nullable":true}},"required":["title","auditType","auditorName","startDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/consents/{id}":{"get":{"summary":"View a consent","description":"View a consent","operationId":"get_api_v1_compliance_consents_id","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["consent:read"]},{"cookieAuth":["consent:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a consent","description":"Update fields on a consent","operationId":"patch_api_v1_compliance_consents_id","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["consent:update"]},{"cookieAuth":["consent:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dataSubjectEmail":{"type":"string","maxLength":320,"nullable":true},"dataSubjectName":{"type":"string","maxLength":300,"nullable":true},"linkedContactId":{"type":"string","maxLength":80,"nullable":true},"purpose":{"type":"string","maxLength":500},"channel":{"type":"string","enum":["email","sms","phone","postal","web","in_app","other"]},"status":{"type":"string","enum":["granted","withdrawn","pending","expired"]},"legalBasis":{"type":"string","enum":["consent","contract","legal_obligation","vital_interest","public_task","legitimate_interest"]},"collectedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"source":{"type":"string","maxLength":500,"nullable":true},"proofReference":{"type":"string","maxLength":500,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a consent","description":"Soft-delete a consent","operationId":"delete_api_v1_compliance_consents_id","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["consent:delete"]},{"cookieAuth":["consent:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/consents/meta":{"get":{"summary":"View a consent","description":"View a consent","operationId":"get_api_v1_compliance_consents_meta","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["consent:read"]},{"cookieAuth":["consent:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/consents":{"get":{"summary":"List consents with filters and pagination","description":"List consents with filters and pagination","operationId":"get_api_v1_compliance_consents","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"purpose","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["granted","withdrawn","pending","expired"]}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["email","sms","phone","postal","web","in_app","other"]}}],"security":[{"bearerAuth":["consent:list"]},{"cookieAuth":["consent:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new consent","description":"Create a new consent","operationId":"post_api_v1_compliance_consents","tags":["consent"],"x-surface":"data","x-entity":"consent","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["consent:create"]},{"cookieAuth":["consent:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dataSubjectEmail":{"type":"string","maxLength":320,"nullable":true},"dataSubjectName":{"type":"string","maxLength":300,"nullable":true},"linkedContactId":{"type":"string","maxLength":80,"nullable":true},"purpose":{"type":"string","maxLength":500,"minLength":1},"channel":{"type":"string","enum":["email","sms","phone","postal","web","in_app","other"]},"status":{"type":"string","enum":["granted","withdrawn","pending","expired"]},"legalBasis":{"type":"string","enum":["consent","contract","legal_obligation","vital_interest","public_task","legitimate_interest"]},"collectedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"source":{"type":"string","maxLength":500,"nullable":true},"proofReference":{"type":"string","maxLength":500,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["purpose","channel","status","legalBasis"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-mappings/{id}":{"get":{"summary":"View a control_mapping","description":"View a control_mapping","operationId":"get_api_v1_compliance_control_mappings_id","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control_mapping:read"]},{"cookieAuth":["control_mapping:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a control_mapping","description":"Update fields on a control_mapping","operationId":"patch_api_v1_compliance_control_mappings_id","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control_mapping:update"]},{"cookieAuth":["control_mapping:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlId":{"type":"string"},"requirementId":{"type":"string"},"coverageLevel":{"type":"string","enum":["full","partial","related"]},"relationshipType":{"type":"string","enum":["equal_to","subset_of","superset_of","intersects_with","supports"]},"automated":{"type":"boolean"},"notes":{"type":"string","maxLength":8000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a control_mapping","description":"Soft-delete a control_mapping","operationId":"delete_api_v1_compliance_control_mappings_id","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control_mapping:delete"]},{"cookieAuth":["control_mapping:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-mappings/meta":{"get":{"summary":"View a control_mapping","description":"View a control_mapping","operationId":"get_api_v1_compliance_control_mappings_meta","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["control_mapping:read"]},{"cookieAuth":["control_mapping:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-mappings":{"get":{"summary":"List control_mappings with filters and pagination","description":"List control_mappings with filters and pagination","operationId":"get_api_v1_compliance_control_mappings","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"controlId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"requirementId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"coverageLevel","in":"query","required":false,"schema":{"type":"string","enum":["full","partial","related"]}},{"name":"relationshipType","in":"query","required":false,"schema":{"type":"string","enum":["equal_to","subset_of","superset_of","intersects_with","supports"]}}],"security":[{"bearerAuth":["control_mapping:list"]},{"cookieAuth":["control_mapping:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new control_mapping","description":"Create a new control_mapping","operationId":"post_api_v1_compliance_control_mappings","tags":["control_mapping"],"x-surface":"data","x-entity":"control_mapping","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control_mapping:create"]},{"cookieAuth":["control_mapping:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlId":{"type":"string","minLength":1},"requirementId":{"type":"string","minLength":1},"coverageLevel":{"type":"string","enum":["full","partial","related"]},"relationshipType":{"type":"string","enum":["equal_to","subset_of","superset_of","intersects_with","supports"]},"automated":{"type":"boolean"},"notes":{"type":"string","maxLength":8000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["controlId","requirementId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-tests/{id}":{"get":{"summary":"View a control_test","description":"View a control_test","operationId":"get_api_v1_compliance_control_tests_id","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control_test:read"]},{"cookieAuth":["control_test:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a control_test","description":"Update fields on a control_test","operationId":"patch_api_v1_compliance_control_tests_id","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control_test:update"]},{"cookieAuth":["control_test:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlId":{"type":"string","minLength":1,"maxLength":64},"testDate":{"type":"string","format":"date-time"},"testerUserId":{"type":"string","minLength":1,"maxLength":64},"procedure":{"type":"string","minLength":1,"maxLength":10000},"result":{"type":"string","enum":["pass","fail","exception","not_tested"]},"findings":{"type":"string","maxLength":10000,"nullable":true},"evidenceIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"nextTestDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a control_test","description":"Soft-delete a control_test","operationId":"delete_api_v1_compliance_control_tests_id","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control_test:delete"]},{"cookieAuth":["control_test:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-tests/meta":{"get":{"summary":"View a control_test","description":"View a control_test","operationId":"get_api_v1_compliance_control_tests_meta","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["control_test:read"]},{"cookieAuth":["control_test:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/control-tests":{"get":{"summary":"List control_tests with filters and pagination","description":"List control_tests with filters and pagination","operationId":"get_api_v1_compliance_control_tests","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"controlId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"result","in":"query","required":false,"schema":{"type":"string","enum":["pass","fail","exception","not_tested"]}},{"name":"testerUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"testFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"testTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["control_test:list"]},{"cookieAuth":["control_test:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new control_test","description":"Create a new control_test","operationId":"post_api_v1_compliance_control_tests","tags":["control_test"],"x-surface":"data","x-entity":"control_test","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control_test:create"]},{"cookieAuth":["control_test:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlId":{"type":"string","minLength":1,"maxLength":64},"testDate":{"type":"string","format":"date-time"},"testerUserId":{"type":"string","minLength":1,"maxLength":64},"procedure":{"type":"string","minLength":1,"maxLength":10000},"result":{"type":"string","enum":["pass","fail","exception","not_tested"]},"findings":{"type":"string","maxLength":10000,"nullable":true},"evidenceIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"nextTestDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["controlId","testDate","testerUserId","procedure","result"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/controls/{id}":{"get":{"summary":"View a control","description":"View a control","operationId":"get_api_v1_compliance_controls_id","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control:read"]},{"cookieAuth":["control:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a control","description":"Update fields on a control","operationId":"patch_api_v1_compliance_controls_id","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control:update"]},{"cookieAuth":["control:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlNumber":{"type":"string","minLength":1,"maxLength":60},"name":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":10000,"nullable":true},"type":{"type":"string","enum":["preventive","detective","corrective"]},"category":{"type":"string","enum":["technical","administrative","physical"]},"ownerUserId":{"type":"string","minLength":1},"testingFrequency":{"type":"string","enum":["continuous","daily","weekly","monthly","quarterly","annual"]},"effectivenessScore":{"type":"integer","minimum":0,"maximum":100},"status":{"type":"string","enum":["active","draft","retired"]},"implementationStatus":{"type":"string","enum":["not_started","in_progress","implemented","verified"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a control","description":"Soft-delete a control","operationId":"delete_api_v1_compliance_controls_id","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["control:delete"]},{"cookieAuth":["control:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/controls/meta":{"get":{"summary":"View a control","description":"View a control","operationId":"get_api_v1_compliance_controls_meta","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["control:read"]},{"cookieAuth":["control:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/controls":{"get":{"summary":"List controls with filters and pagination","description":"List controls with filters and pagination","operationId":"get_api_v1_compliance_controls","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["preventive","detective","corrective"]}},{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["technical","administrative","physical"]}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","draft","retired"]}},{"name":"implementationStatus","in":"query","required":false,"schema":{"type":"string","enum":["not_started","in_progress","implemented","verified"]}},{"name":"minEffectiveness","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100}}],"security":[{"bearerAuth":["control:list"]},{"cookieAuth":["control:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new control","description":"Create a new control","operationId":"post_api_v1_compliance_controls","tags":["control"],"x-surface":"data","x-entity":"control","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["control:create"]},{"cookieAuth":["control:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlNumber":{"type":"string","minLength":1,"maxLength":60},"name":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":10000,"nullable":true},"type":{"type":"string","enum":["preventive","detective","corrective"]},"category":{"type":"string","enum":["technical","administrative","physical"]},"ownerUserId":{"type":"string","minLength":1},"testingFrequency":{"type":"string","enum":["continuous","daily","weekly","monthly","quarterly","annual"]},"effectivenessScore":{"type":"integer","minimum":0,"maximum":100},"status":{"type":"string","enum":["active","draft","retired"]},"implementationStatus":{"type":"string","enum":["not_started","in_progress","implemented","verified"]}},"required":["controlNumber","name","type","category","ownerUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/data-processing-activities/{id}":{"get":{"summary":"View a data_processing_activity","description":"View a data_processing_activity","operationId":"get_api_v1_compliance_data_processing_activities_id","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["data_processing_activity:read"]},{"cookieAuth":["data_processing_activity:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a data_processing_activity","description":"Update fields on a data_processing_activity","operationId":"patch_api_v1_compliance_data_processing_activities_id","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["data_processing_activity:update"]},{"cookieAuth":["data_processing_activity:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"purpose":{"type":"string","minLength":1,"maxLength":10000},"legalBasis":{"type":"string","enum":["consent","contract","legal_obligation","vital_interest","public_task","legitimate_interest"]},"dataCategories":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"dataSubjectCategories":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"recipients":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":200},"transferCountries":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"retentionPeriod":{"type":"string","maxLength":200,"nullable":true},"dpiaRequired":{"type":"boolean"},"technicalMeasures":{"type":"string","maxLength":20000,"nullable":true},"organizationalMeasures":{"type":"string","maxLength":20000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a data_processing_activity","description":"Soft-delete a data_processing_activity","operationId":"delete_api_v1_compliance_data_processing_activities_id","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["data_processing_activity:delete"]},{"cookieAuth":["data_processing_activity:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/data-processing-activities/meta":{"get":{"summary":"View a data_processing_activity","description":"View a data_processing_activity","operationId":"get_api_v1_compliance_data_processing_activities_meta","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["data_processing_activity:read"]},{"cookieAuth":["data_processing_activity:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/data-processing-activities":{"get":{"summary":"List data_processing_activitys with filters and pagination","description":"List data_processing_activitys with filters and pagination","operationId":"get_api_v1_compliance_data_processing_activities","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"legalBasis","in":"query","required":false,"schema":{"type":"string","enum":["consent","contract","legal_obligation","vital_interest","public_task","legitimate_interest"]}},{"name":"dpiaRequired","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["data_processing_activity:list"]},{"cookieAuth":["data_processing_activity:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new data_processing_activity","description":"Create a new data_processing_activity","operationId":"post_api_v1_compliance_data_processing_activities","tags":["data_processing_activity"],"x-surface":"data","x-entity":"data_processing_activity","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["data_processing_activity:create"]},{"cookieAuth":["data_processing_activity:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"purpose":{"type":"string","minLength":1,"maxLength":10000},"legalBasis":{"type":"string","enum":["consent","contract","legal_obligation","vital_interest","public_task","legitimate_interest"]},"dataCategories":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"dataSubjectCategories":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"recipients":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":200},"transferCountries":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"retentionPeriod":{"type":"string","maxLength":200,"nullable":true},"dpiaRequired":{"type":"boolean"},"technicalMeasures":{"type":"string","maxLength":20000,"nullable":true},"organizationalMeasures":{"type":"string","maxLength":20000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["title","purpose","legalBasis"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dpias/{id}":{"get":{"summary":"View a dpia","description":"View a dpia","operationId":"get_api_v1_compliance_dpias_id","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["dpia:read"]},{"cookieAuth":["dpia:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a dpia","description":"Update fields on a dpia","operationId":"patch_api_v1_compliance_dpias_id","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["dpia:update"]},{"cookieAuth":["dpia:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"processingActivityId":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"necessityAssessment":{"type":"string","maxLength":20000,"nullable":true},"riskAssessment":{"type":"string","maxLength":20000,"nullable":true},"riskLevel":{"type":"string","enum":["low","medium","high"]},"mitigationMeasures":{"type":"string","maxLength":20000,"nullable":true},"dpoOpinion":{"type":"string","maxLength":20000,"nullable":true},"dpoOpinionDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["draft","review","approved","requires_consultation"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a dpia","description":"Soft-delete a dpia","operationId":"delete_api_v1_compliance_dpias_id","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["dpia:delete"]},{"cookieAuth":["dpia:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dpias/meta":{"get":{"summary":"View a dpia","description":"View a dpia","operationId":"get_api_v1_compliance_dpias_meta","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["dpia:read"]},{"cookieAuth":["dpia:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dpias":{"get":{"summary":"List dpias with filters and pagination","description":"List dpias with filters and pagination","operationId":"get_api_v1_compliance_dpias","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"processingActivityId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string","enum":["low","medium","high"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","review","approved","requires_consultation"]}}],"security":[{"bearerAuth":["dpia:list"]},{"cookieAuth":["dpia:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new dpia","description":"Create a new dpia","operationId":"post_api_v1_compliance_dpias","tags":["dpia"],"x-surface":"data","x-entity":"dpia","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["dpia:create"]},{"cookieAuth":["dpia:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"processingActivityId":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"necessityAssessment":{"type":"string","maxLength":20000,"nullable":true},"riskAssessment":{"type":"string","maxLength":20000,"nullable":true},"riskLevel":{"type":"string","enum":["low","medium","high"]},"mitigationMeasures":{"type":"string","maxLength":20000,"nullable":true},"dpoOpinion":{"type":"string","maxLength":20000,"nullable":true},"dpoOpinionDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["draft","review","approved","requires_consultation"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["processingActivityId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dsrs/{id}/approve":{"post":{"summary":"Approve DSR request","description":"Approve DSR request","operationId":"post_api_v1_compliance_dsrs_id_approve","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["dsr:approve"]},{"cookieAuth":["dsr:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dsrs/{id}":{"get":{"summary":"View a dsr","description":"View a dsr","operationId":"get_api_v1_compliance_dsrs_id","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["dsr:read"]},{"cookieAuth":["dsr:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a dsr","description":"Update fields on a dsr","operationId":"patch_api_v1_compliance_dsrs_id","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["dsr:update"]},{"cookieAuth":["dsr:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reference":{"type":"string","maxLength":120},"requestType":{"type":"string","enum":["access","erasure","rectification","portability","restriction","objection","automated_decision"]},"dataSubjectName":{"type":"string","maxLength":300},"dataSubjectEmail":{"type":"string","maxLength":320,"nullable":true},"dataSubjectType":{"type":"string","enum":["customer","employee","prospect","vendor","other"]},"linkedContactId":{"type":"string","maxLength":80,"nullable":true},"channel":{"type":"string","enum":["web_form","email","phone","postal","in_person","api"]},"identityVerified":{"type":"boolean"},"identityVerifiedAt":{"type":"string","format":"date-time","nullable":true},"receivedAt":{"type":"string","format":"date-time","nullable":true},"dueAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"fulfilledAt":{"type":"string","format":"date-time","nullable":true},"assignedUserId":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["received","verifying","in_progress","review","fulfilled","refused","overdue"]},"resolution":{"type":"string","enum":["fulfilled","partially_fulfilled","refused","withdrawn"],"nullable":true},"resolutionNotes":{"type":"string","maxLength":8000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a dsr","description":"Soft-delete a dsr","operationId":"delete_api_v1_compliance_dsrs_id","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["dsr:delete"]},{"cookieAuth":["dsr:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dsrs/meta":{"get":{"summary":"View a dsr","description":"View a dsr","operationId":"get_api_v1_compliance_dsrs_meta","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["dsr:read"]},{"cookieAuth":["dsr:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/dsrs":{"get":{"summary":"List dsrs with filters and pagination","description":"List dsrs with filters and pagination","operationId":"get_api_v1_compliance_dsrs","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"requestType","in":"query","required":false,"schema":{"type":"string","enum":["access","erasure","rectification","portability","restriction","objection","automated_decision"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["received","verifying","in_progress","review","fulfilled","refused","overdue"]}},{"name":"dataSubjectType","in":"query","required":false,"schema":{"type":"string","enum":["customer","employee","prospect","vendor","other"]}},{"name":"assignedUserId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["dsr:list"]},{"cookieAuth":["dsr:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new dsr","description":"Create a new dsr","operationId":"post_api_v1_compliance_dsrs","tags":["dsr"],"x-surface":"data","x-entity":"dsr","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["dsr:create"]},{"cookieAuth":["dsr:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reference":{"type":"string","maxLength":120,"minLength":1},"requestType":{"type":"string","enum":["access","erasure","rectification","portability","restriction","objection","automated_decision"]},"dataSubjectName":{"type":"string","maxLength":300,"minLength":1},"dataSubjectEmail":{"type":"string","maxLength":320,"nullable":true},"dataSubjectType":{"type":"string","enum":["customer","employee","prospect","vendor","other"]},"linkedContactId":{"type":"string","maxLength":80,"nullable":true},"channel":{"type":"string","enum":["web_form","email","phone","postal","in_person","api"]},"identityVerified":{"type":"boolean"},"identityVerifiedAt":{"type":"string","format":"date-time","nullable":true},"receivedAt":{"type":"string","format":"date-time","nullable":true},"dueAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"fulfilledAt":{"type":"string","format":"date-time","nullable":true},"assignedUserId":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["received","verifying","in_progress","review","fulfilled","refused","overdue"]},"resolution":{"type":"string","enum":["fulfilled","partially_fulfilled","refused","withdrawn"],"nullable":true},"resolutionNotes":{"type":"string","maxLength":8000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["reference","requestType","dataSubjectName","dataSubjectType","channel","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence-mappings/{id}":{"get":{"summary":"View a evidence_mapping","description":"View a evidence_mapping","operationId":"get_api_v1_compliance_evidence_mappings_id","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence_mapping:read"]},{"cookieAuth":["evidence_mapping:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a evidence_mapping","description":"Update fields on a evidence_mapping","operationId":"patch_api_v1_compliance_evidence_mappings_id","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence_mapping:update"]},{"cookieAuth":["evidence_mapping:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"evidenceId":{"type":"string"},"controlId":{"type":"string"},"mappingType":{"type":"string","enum":["proves_design","proves_operation","supports"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a evidence_mapping","description":"Soft-delete a evidence_mapping","operationId":"delete_api_v1_compliance_evidence_mappings_id","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence_mapping:delete"]},{"cookieAuth":["evidence_mapping:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence-mappings/meta":{"get":{"summary":"View a evidence_mapping","description":"View a evidence_mapping","operationId":"get_api_v1_compliance_evidence_mappings_meta","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["evidence_mapping:read"]},{"cookieAuth":["evidence_mapping:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence-mappings":{"get":{"summary":"List evidence_mappings with filters and pagination","description":"List evidence_mappings with filters and pagination","operationId":"get_api_v1_compliance_evidence_mappings","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"evidenceId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"controlId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"mappingType","in":"query","required":false,"schema":{"type":"string","enum":["proves_design","proves_operation","supports"]}}],"security":[{"bearerAuth":["evidence_mapping:list"]},{"cookieAuth":["evidence_mapping:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new evidence_mapping","description":"Create a new evidence_mapping","operationId":"post_api_v1_compliance_evidence_mappings","tags":["evidence_mapping"],"x-surface":"data","x-entity":"evidence_mapping","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence_mapping:create"]},{"cookieAuth":["evidence_mapping:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"evidenceId":{"type":"string","minLength":1},"controlId":{"type":"string","minLength":1},"mappingType":{"type":"string","enum":["proves_design","proves_operation","supports"]}},"required":["evidenceId","controlId","mappingType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence/{id}":{"get":{"summary":"View a evidence","description":"View a evidence","operationId":"get_api_v1_compliance_evidence_id","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence:read"]},{"cookieAuth":["evidence:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a evidence","description":"Update fields on a evidence","operationId":"patch_api_v1_compliance_evidence_id","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence:update"]},{"cookieAuth":["evidence:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":10000,"nullable":true},"evidenceType":{"type":"string","enum":["document","log","screenshot","report","config","certificate","policy","test_result"]},"fileUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"fileHash":{"type":"string","maxLength":128,"nullable":true},"fileSizeBytes":{"type":"integer","minimum":0,"maximum":9999999999999,"nullable":true},"collectedAt":{"type":"string","format":"date-time"},"collectorUserId":{"type":"string","minLength":1,"maxLength":64},"expiresAt":{"type":"string","format":"date-time","nullable":true},"autoCollected":{"type":"boolean"},"sourceSystem":{"type":"string","maxLength":120,"nullable":true},"status":{"type":"string","enum":["valid","expired","superseded","under_review"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a evidence","description":"Soft-delete a evidence","operationId":"delete_api_v1_compliance_evidence_id","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence:delete"]},{"cookieAuth":["evidence:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence/meta":{"get":{"summary":"View a evidence","description":"View a evidence","operationId":"get_api_v1_compliance_evidence_meta","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["evidence:read"]},{"cookieAuth":["evidence:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/evidence":{"get":{"summary":"List evidences with filters and pagination","description":"List evidences with filters and pagination","operationId":"get_api_v1_compliance_evidence","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"evidenceType","in":"query","required":false,"schema":{"type":"string","enum":["document","log","screenshot","report","config","certificate","policy","test_result"]}},{"name":"collectorUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["valid","expired","superseded","under_review"]}},{"name":"autoCollected","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"expiringFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"expiringTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["evidence:list"]},{"cookieAuth":["evidence:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new evidence","description":"Create a new evidence","operationId":"post_api_v1_compliance_evidence","tags":["evidence"],"x-surface":"data","x-entity":"evidence","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["evidence:create"]},{"cookieAuth":["evidence:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":10000,"nullable":true},"evidenceType":{"type":"string","enum":["document","log","screenshot","report","config","certificate","policy","test_result"]},"fileUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"fileHash":{"type":"string","maxLength":128,"nullable":true},"fileSizeBytes":{"type":"integer","minimum":0,"maximum":9999999999999,"nullable":true},"collectedAt":{"type":"string","format":"date-time"},"collectorUserId":{"type":"string","minLength":1,"maxLength":64},"expiresAt":{"type":"string","format":"date-time","nullable":true},"autoCollected":{"type":"boolean"},"sourceSystem":{"type":"string","maxLength":120,"nullable":true},"status":{"type":"string","enum":["valid","expired","superseded","under_review"]}},"required":["title","evidenceType","collectorUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/findings/{id}":{"get":{"summary":"View a audit_finding","description":"View a audit_finding","operationId":"get_api_v1_compliance_findings_id","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_finding:read"]},{"cookieAuth":["audit_finding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a audit_finding","description":"Update fields on a audit_finding","operationId":"patch_api_v1_compliance_findings_id","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_finding:update"]},{"cookieAuth":["audit_finding:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"auditId":{"type":"string","minLength":1,"maxLength":64},"findingNumber":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","minLength":1,"maxLength":20000},"severity":{"type":"string","enum":["critical","major","minor","observation"]},"requirementId":{"type":"string","maxLength":64,"nullable":true},"controlId":{"type":"string","maxLength":64,"nullable":true},"remediationStatus":{"type":"string","enum":["open","in_progress","remediated","verified","accepted_risk"]},"remediationDeadline":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"remediationOwnerUserId":{"type":"string","maxLength":64,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a audit_finding","description":"Soft-delete a audit_finding","operationId":"delete_api_v1_compliance_findings_id","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_finding:delete"]},{"cookieAuth":["audit_finding:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/findings/meta":{"get":{"summary":"View a audit_finding","description":"View a audit_finding","operationId":"get_api_v1_compliance_findings_meta","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["audit_finding:read"]},{"cookieAuth":["audit_finding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/findings":{"get":{"summary":"List audit_findings with filters and pagination","description":"List audit_findings with filters and pagination","operationId":"get_api_v1_compliance_findings","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"auditId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","enum":["critical","major","minor","observation"]}},{"name":"remediationStatus","in":"query","required":false,"schema":{"type":"string","enum":["open","in_progress","remediated","verified","accepted_risk"]}},{"name":"controlId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"remediationOwnerUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["audit_finding:list"]},{"cookieAuth":["audit_finding:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new audit_finding","description":"Create a new audit_finding","operationId":"post_api_v1_compliance_findings","tags":["audit_finding"],"x-surface":"data","x-entity":"audit_finding","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["audit_finding:create"]},{"cookieAuth":["audit_finding:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"auditId":{"type":"string","minLength":1,"maxLength":64},"findingNumber":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","minLength":1,"maxLength":20000},"severity":{"type":"string","enum":["critical","major","minor","observation"]},"requirementId":{"type":"string","maxLength":64,"nullable":true},"controlId":{"type":"string","maxLength":64,"nullable":true},"remediationStatus":{"type":"string","enum":["open","in_progress","remediated","verified","accepted_risk"]},"remediationDeadline":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"remediationOwnerUserId":{"type":"string","maxLength":64,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["auditId","findingNumber","title","description","severity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/{id}/audit-pack":{"post":{"summary":"Build and download the audit pack","description":"Build and download the audit pack","operationId":"post_api_v1_compliance_frameworks_id_audit_pack","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"export","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:export"]},{"cookieAuth":["framework:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/{id}/clone":{"post":{"summary":"POST /api/v1/compliance/frameworks/{id}/clone","operationId":"post_api_v1_compliance_frameworks_id_clone","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"create","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:create"]},{"cookieAuth":["framework:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/{id}/provision-project":{"post":{"summary":"POST /api/v1/compliance/frameworks/{id}/provision-project","operationId":"post_api_v1_compliance_frameworks_id_provision_project","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:update"]},{"cookieAuth":["framework:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/{id}":{"get":{"summary":"GET /api/v1/compliance/frameworks/{id}","operationId":"get_api_v1_compliance_frameworks_id","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:read"]},{"cookieAuth":["framework:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/compliance/frameworks/{id}","operationId":"patch_api_v1_compliance_frameworks_id","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:update"]},{"cookieAuth":["framework:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_.-]{1,23}$"},"version":{"type":"string","minLength":1,"maxLength":40},"status":{"type":"string","enum":["draft","active","archived"]},"maturityLevel":{"type":"string","enum":["initial","managed","defined","measured","optimizing"]},"description":{"type":"string","maxLength":10000,"nullable":true},"authority":{"type":"string","maxLength":200,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"nextReviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"lifecyclePhase":{"type":"string","enum":["not_started","in_progress","in_review","audit","certified","on_hold","cancelled"]},"certifiedUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/compliance/frameworks/{id}","operationId":"delete_api_v1_compliance_frameworks_id","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:delete"]},{"cookieAuth":["framework:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/{id}/suggest-next":{"post":{"summary":"View a framework_requirement","description":"View a framework_requirement","operationId":"post_api_v1_compliance_frameworks_id_suggest_next","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"read","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:read"]},{"cookieAuth":["framework_requirement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/library":{"get":{"summary":"GET /api/v1/compliance/frameworks/library","operationId":"get_api_v1_compliance_frameworks_library","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["framework:list"]},{"cookieAuth":["framework:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks/meta":{"get":{"summary":"GET /api/v1/compliance/frameworks/meta","operationId":"get_api_v1_compliance_frameworks_meta","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["framework:read"]},{"cookieAuth":["framework:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/frameworks":{"get":{"summary":"GET /api/v1/compliance/frameworks","operationId":"get_api_v1_compliance_frameworks","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"code","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_.-]{1,23}$"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","archived"]}},{"name":"maturityLevel","in":"query","required":false,"schema":{"type":"string","enum":["initial","managed","defined","measured","optimizing"]}},{"name":"lifecyclePhase","in":"query","required":false,"schema":{"type":"string","enum":["not_started","in_progress","in_review","audit","certified","on_hold","cancelled"]}}],"security":[{"bearerAuth":["framework:list"]},{"cookieAuth":["framework:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/compliance/frameworks","operationId":"post_api_v1_compliance_frameworks","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:create"]},{"cookieAuth":["framework:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","enum":["DORA","GDPR","ISO27001","NIS2","EUAIA","SOC2","HIPAA"]},"version":{"type":"string","minLength":1,"maxLength":40},"name":{"type":"string","minLength":1,"maxLength":200}},"required":["code"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_.-]{1,23}$"},"version":{"type":"string","minLength":1,"maxLength":40},"status":{"type":"string","enum":["draft","active","archived"]},"maturityLevel":{"type":"string","enum":["initial","managed","defined","measured","optimizing"]},"description":{"type":"string","maxLength":10000,"nullable":true},"authority":{"type":"string","maxLength":200,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"nextReviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"lifecyclePhase":{"type":"string","enum":["not_started","in_progress","in_review","audit","certified","on_hold","cancelled"]},"certifiedUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","code","version"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-certifications/{id}":{"get":{"summary":"View a ict_certification","description":"View a ict_certification","operationId":"get_api_v1_compliance_ict_certifications_id","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_certification:read"]},{"cookieAuth":["ict_certification:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_certification","description":"Update fields on a ict_certification","operationId":"patch_api_v1_compliance_ict_certifications_id","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_certification:update"]},{"cookieAuth":["ict_certification:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80},"name":{"type":"string","maxLength":300},"certType":{"type":"string","enum":["soc2","iso27001","hipaa_baa","gdpr_dpa","pci_dss","cyber_insurance","penetration_test","other"]},"issuer":{"type":"string","maxLength":200,"nullable":true},"reference":{"type":"string","maxLength":200,"nullable":true},"issuedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["valid","pending","expired","superseded"]},"notes":{"type":"string","maxLength":20000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_certification","description":"Soft-delete a ict_certification","operationId":"delete_api_v1_compliance_ict_certifications_id","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_certification:delete"]},{"cookieAuth":["ict_certification:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-certifications/meta":{"get":{"summary":"View a ict_certification","description":"View a ict_certification","operationId":"get_api_v1_compliance_ict_certifications_meta","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_certification:read"]},{"cookieAuth":["ict_certification:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-certifications":{"get":{"summary":"List ict_certifications with filters and pagination","description":"List ict_certifications with filters and pagination","operationId":"get_api_v1_compliance_ict_certifications","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"certType","in":"query","required":false,"schema":{"type":"string","enum":["soc2","iso27001","hipaa_baa","gdpr_dpa","pci_dss","cyber_insurance","penetration_test","other"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["valid","pending","expired","superseded"]}}],"security":[{"bearerAuth":["ict_certification:list"]},{"cookieAuth":["ict_certification:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_certification","description":"Create a new ict_certification","operationId":"post_api_v1_compliance_ict_certifications","tags":["ict_certification"],"x-surface":"data","x-entity":"ict_certification","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_certification:create"]},{"cookieAuth":["ict_certification:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80,"minLength":1},"name":{"type":"string","maxLength":300,"minLength":1},"certType":{"type":"string","enum":["soc2","iso27001","hipaa_baa","gdpr_dpa","pci_dss","cyber_insurance","penetration_test","other"]},"issuer":{"type":"string","maxLength":200,"nullable":true},"reference":{"type":"string","maxLength":200,"nullable":true},"issuedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expiresAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["valid","pending","expired","superseded"]},"notes":{"type":"string","maxLength":20000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["providerId","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-contracts/{id}":{"get":{"summary":"View a ict_contract","description":"View a ict_contract","operationId":"get_api_v1_compliance_ict_contracts_id","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_contract:read"]},{"cookieAuth":["ict_contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_contract","description":"Update fields on a ict_contract","operationId":"patch_api_v1_compliance_ict_contracts_id","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_contract:update"]},{"cookieAuth":["ict_contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80},"contractReference":{"type":"string","maxLength":200},"title":{"type":"string","maxLength":300},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"autoRenew":{"type":"boolean"},"value":{"type":"number","nullable":true},"currency":{"type":"string","maxLength":10,"nullable":true},"slaResponseHours":{"type":"number","nullable":true},"slaResolutionHours":{"type":"number","nullable":true},"doraArticle30Provisions":{"type":"object","additionalProperties":{}},"noticePeriodDays":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","expired","terminated","draft"]},"accountId":{"type":"string","maxLength":80,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_contract","description":"Soft-delete a ict_contract","operationId":"delete_api_v1_compliance_ict_contracts_id","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_contract:delete"]},{"cookieAuth":["ict_contract:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-contracts/meta":{"get":{"summary":"View a ict_contract","description":"View a ict_contract","operationId":"get_api_v1_compliance_ict_contracts_meta","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_contract:read"]},{"cookieAuth":["ict_contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-contracts":{"get":{"summary":"List ict_contracts with filters and pagination","description":"List ict_contracts with filters and pagination","operationId":"get_api_v1_compliance_ict_contracts","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","expired","terminated","draft"]}}],"security":[{"bearerAuth":["ict_contract:list"]},{"cookieAuth":["ict_contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_contract","description":"Create a new ict_contract","operationId":"post_api_v1_compliance_ict_contracts","tags":["ict_contract"],"x-surface":"data","x-entity":"ict_contract","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_contract:create"]},{"cookieAuth":["ict_contract:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80,"minLength":1},"contractReference":{"type":"string","maxLength":200,"minLength":1},"title":{"type":"string","maxLength":300,"minLength":1},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"autoRenew":{"type":"boolean"},"value":{"type":"number","nullable":true},"currency":{"type":"string","maxLength":10,"nullable":true},"slaResponseHours":{"type":"number","nullable":true},"slaResolutionHours":{"type":"number","nullable":true},"doraArticle30Provisions":{"type":"object","additionalProperties":{}},"noticePeriodDays":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","expired","terminated","draft"]},"accountId":{"type":"string","maxLength":80,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["providerId","contractReference","title","startDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-exit-strategies/{id}":{"get":{"summary":"View a ict_exit_strategy","description":"View a ict_exit_strategy","operationId":"get_api_v1_compliance_ict_exit_strategies_id","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_exit_strategy:read"]},{"cookieAuth":["ict_exit_strategy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_exit_strategy","description":"Update fields on a ict_exit_strategy","operationId":"patch_api_v1_compliance_ict_exit_strategies_id","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_exit_strategy:update"]},{"cookieAuth":["ict_exit_strategy:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80},"strategyDescription":{"type":"string","maxLength":8000},"transitionPlan":{"type":"string","maxLength":8000,"nullable":true},"transitionTimelineDays":{"type":"number","nullable":true},"alternativeProviders":{"type":"array","items":{}},"lastReviewedAt":{"type":"string","format":"date-time","nullable":true},"status":{"type":"string","enum":["draft","approved","tested"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_exit_strategy","description":"Soft-delete a ict_exit_strategy","operationId":"delete_api_v1_compliance_ict_exit_strategies_id","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_exit_strategy:delete"]},{"cookieAuth":["ict_exit_strategy:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-exit-strategies/meta":{"get":{"summary":"View a ict_exit_strategy","description":"View a ict_exit_strategy","operationId":"get_api_v1_compliance_ict_exit_strategies_meta","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_exit_strategy:read"]},{"cookieAuth":["ict_exit_strategy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-exit-strategies":{"get":{"summary":"List ict_exit_strategys with filters and pagination","description":"List ict_exit_strategys with filters and pagination","operationId":"get_api_v1_compliance_ict_exit_strategies","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","approved","tested"]}}],"security":[{"bearerAuth":["ict_exit_strategy:list"]},{"cookieAuth":["ict_exit_strategy:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_exit_strategy","description":"Create a new ict_exit_strategy","operationId":"post_api_v1_compliance_ict_exit_strategies","tags":["ict_exit_strategy"],"x-surface":"data","x-entity":"ict_exit_strategy","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_exit_strategy:create"]},{"cookieAuth":["ict_exit_strategy:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80,"minLength":1},"strategyDescription":{"type":"string","maxLength":8000,"minLength":1},"transitionPlan":{"type":"string","maxLength":8000,"nullable":true},"transitionTimelineDays":{"type":"number","nullable":true},"alternativeProviders":{"type":"array","items":{}},"lastReviewedAt":{"type":"string","format":"date-time","nullable":true},"status":{"type":"string","enum":["draft","approved","tested"]}},"required":["providerId","strategyDescription"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-providers/{id}":{"get":{"summary":"View a ict_provider","description":"View a ict_provider","operationId":"get_api_v1_compliance_ict_providers_id","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_provider:read"]},{"cookieAuth":["ict_provider:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_provider","description":"Update fields on a ict_provider","operationId":"patch_api_v1_compliance_ict_providers_id","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_provider:update"]},{"cookieAuth":["ict_provider:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":300},"esaEntityCode":{"type":"string","maxLength":100,"nullable":true},"providerType":{"type":"string","enum":["cloud","infrastructure","software","managed_service","outsourcing"]},"criticality":{"type":"string","enum":["critical","important","supporting"]},"jurisdiction":{"type":"string","maxLength":200,"nullable":true},"certifications":{"type":"array","items":{}},"dataLocations":{"type":"array","items":{}},"concentrationRiskScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"riskAssessmentScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"lastAssessmentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"accountId":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["active","under_review","terminated","onboarding"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_provider","description":"Soft-delete a ict_provider","operationId":"delete_api_v1_compliance_ict_providers_id","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_provider:delete"]},{"cookieAuth":["ict_provider:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-providers/meta":{"get":{"summary":"View a ict_provider","description":"View a ict_provider","operationId":"get_api_v1_compliance_ict_providers_meta","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_provider:read"]},{"cookieAuth":["ict_provider:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-providers":{"get":{"summary":"List ict_providers with filters and pagination","description":"List ict_providers with filters and pagination","operationId":"get_api_v1_compliance_ict_providers","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerType","in":"query","required":false,"schema":{"type":"string","enum":["cloud","infrastructure","software","managed_service","outsourcing"]}},{"name":"criticality","in":"query","required":false,"schema":{"type":"string","enum":["critical","important","supporting"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","under_review","terminated","onboarding"]}}],"security":[{"bearerAuth":["ict_provider:list"]},{"cookieAuth":["ict_provider:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_provider","description":"Create a new ict_provider","operationId":"post_api_v1_compliance_ict_providers","tags":["ict_provider"],"x-surface":"data","x-entity":"ict_provider","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_provider:create"]},{"cookieAuth":["ict_provider:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":300,"minLength":1},"esaEntityCode":{"type":"string","maxLength":100,"nullable":true},"providerType":{"type":"string","enum":["cloud","infrastructure","software","managed_service","outsourcing"]},"criticality":{"type":"string","enum":["critical","important","supporting"]},"jurisdiction":{"type":"string","maxLength":200,"nullable":true},"certifications":{"type":"array","items":{}},"dataLocations":{"type":"array","items":{}},"concentrationRiskScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"riskAssessmentScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"lastAssessmentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"accountId":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["active","under_review","terminated","onboarding"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","providerType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-services/{id}":{"get":{"summary":"View a ict_service","description":"View a ict_service","operationId":"get_api_v1_compliance_ict_services_id","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_service:read"]},{"cookieAuth":["ict_service:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_service","description":"Update fields on a ict_service","operationId":"patch_api_v1_compliance_ict_services_id","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_service:update"]},{"cookieAuth":["ict_service:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string","maxLength":80},"providerId":{"type":"string","maxLength":80},"serviceName":{"type":"string","maxLength":300},"serviceDescription":{"type":"string","maxLength":8000,"nullable":true},"serviceType":{"type":"string","maxLength":200,"nullable":true},"supportsCriticalFunction":{"type":"boolean"},"businessFunction":{"type":"string","maxLength":300,"nullable":true},"dataProcessed":{"type":"array","items":{}},"substitutability":{"type":"string","enum":["easy","difficult","impossible"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_service","description":"Soft-delete a ict_service","operationId":"delete_api_v1_compliance_ict_services_id","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_service:delete"]},{"cookieAuth":["ict_service:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-services/meta":{"get":{"summary":"View a ict_service","description":"View a ict_service","operationId":"get_api_v1_compliance_ict_services_meta","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_service:read"]},{"cookieAuth":["ict_service:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-services":{"get":{"summary":"List ict_services with filters and pagination","description":"List ict_services with filters and pagination","operationId":"get_api_v1_compliance_ict_services","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"supportsCriticalFunction","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"substitutability","in":"query","required":false,"schema":{"type":"string","enum":["easy","difficult","impossible"]}}],"security":[{"bearerAuth":["ict_service:list"]},{"cookieAuth":["ict_service:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_service","description":"Create a new ict_service","operationId":"post_api_v1_compliance_ict_services","tags":["ict_service"],"x-surface":"data","x-entity":"ict_service","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_service:create"]},{"cookieAuth":["ict_service:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string","maxLength":80,"minLength":1},"providerId":{"type":"string","maxLength":80,"minLength":1},"serviceName":{"type":"string","maxLength":300,"minLength":1},"serviceDescription":{"type":"string","maxLength":8000,"nullable":true},"serviceType":{"type":"string","maxLength":200,"nullable":true},"supportsCriticalFunction":{"type":"boolean"},"businessFunction":{"type":"string","maxLength":300,"nullable":true},"dataProcessed":{"type":"array","items":{}},"substitutability":{"type":"string","enum":["easy","difficult","impossible"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["contractId","providerId","serviceName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-subcontractors/{id}":{"get":{"summary":"View a ict_subcontractor","description":"View a ict_subcontractor","operationId":"get_api_v1_compliance_ict_subcontractors_id","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_subcontractor:read"]},{"cookieAuth":["ict_subcontractor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ict_subcontractor","description":"Update fields on a ict_subcontractor","operationId":"patch_api_v1_compliance_ict_subcontractors_id","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_subcontractor:update"]},{"cookieAuth":["ict_subcontractor:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80},"subContractorName":{"type":"string","maxLength":300},"serviceProvided":{"type":"string","maxLength":500},"jurisdiction":{"type":"string","maxLength":200,"nullable":true},"certified":{"type":"boolean"},"riskLevel":{"type":"string","enum":["low","medium","high"]},"approved":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ict_subcontractor","description":"Soft-delete a ict_subcontractor","operationId":"delete_api_v1_compliance_ict_subcontractors_id","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_subcontractor:delete"]},{"cookieAuth":["ict_subcontractor:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-subcontractors/meta":{"get":{"summary":"View a ict_subcontractor","description":"View a ict_subcontractor","operationId":"get_api_v1_compliance_ict_subcontractors_meta","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ict_subcontractor:read"]},{"cookieAuth":["ict_subcontractor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/ict-subcontractors":{"get":{"summary":"List ict_subcontractors with filters and pagination","description":"List ict_subcontractors with filters and pagination","operationId":"get_api_v1_compliance_ict_subcontractors","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"providerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string","enum":["low","medium","high"]}},{"name":"approved","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["ict_subcontractor:list"]},{"cookieAuth":["ict_subcontractor:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ict_subcontractor","description":"Create a new ict_subcontractor","operationId":"post_api_v1_compliance_ict_subcontractors","tags":["ict_subcontractor"],"x-surface":"data","x-entity":"ict_subcontractor","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ict_subcontractor:create"]},{"cookieAuth":["ict_subcontractor:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"providerId":{"type":"string","maxLength":80,"minLength":1},"subContractorName":{"type":"string","maxLength":300,"minLength":1},"serviceProvided":{"type":"string","maxLength":500,"minLength":1},"jurisdiction":{"type":"string","maxLength":200,"nullable":true},"certified":{"type":"boolean"},"riskLevel":{"type":"string","enum":["low","medium","high"]},"approved":{"type":"boolean"}},"required":["providerId","subContractorName","serviceProvided"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/incidents/{id}":{"get":{"summary":"View a incident","description":"View a incident","operationId":"get_api_v1_compliance_incidents_id","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["incident:read"]},{"cookieAuth":["incident:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a incident","description":"Update fields on a incident","operationId":"patch_api_v1_compliance_incidents_id","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["incident:update"]},{"cookieAuth":["incident:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"incidentType":{"type":"string","enum":["security_breach","ict_outage","data_breach","service_disruption","cyber_attack","third_party_failure"]},"severity":{"type":"string","enum":["critical","high","medium","low"]},"isMajor":{"type":"boolean"},"detectionTime":{"type":"string","format":"date-time","nullable":true},"reportTime":{"type":"string","format":"date-time","nullable":true},"resolutionTime":{"type":"string","format":"date-time","nullable":true},"affectedServices":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"affectedUsersCount":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"dataRecordsAffected":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"geographicalSpread":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"economicImpact":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"reputationalImpact":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a incident","description":"Soft-delete a incident","operationId":"delete_api_v1_compliance_incidents_id","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["incident:delete"]},{"cookieAuth":["incident:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/incidents/meta":{"get":{"summary":"View a incident","description":"View a incident","operationId":"get_api_v1_compliance_incidents_meta","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["incident:read"]},{"cookieAuth":["incident:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/incidents":{"get":{"summary":"List incidents with filters and pagination","description":"List incidents with filters and pagination","operationId":"get_api_v1_compliance_incidents","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"incidentType","in":"query","required":false,"schema":{"type":"string","enum":["security_breach","ict_outage","data_breach","service_disruption","cyber_attack","third_party_failure"]}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"isMajor","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"detectionFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"detectionTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["incident:list"]},{"cookieAuth":["incident:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new incident","description":"Create a new incident","operationId":"post_api_v1_compliance_incidents","tags":["incident"],"x-surface":"data","x-entity":"incident","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["incident:create"]},{"cookieAuth":["incident:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"incidentType":{"type":"string","enum":["security_breach","ict_outage","data_breach","service_disruption","cyber_attack","third_party_failure"]},"severity":{"type":"string","enum":["critical","high","medium","low"]},"isMajor":{"type":"boolean"},"detectionTime":{"type":"string","format":"date-time","nullable":true},"reportTime":{"type":"string","format":"date-time","nullable":true},"resolutionTime":{"type":"string","format":"date-time","nullable":true},"affectedServices":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":100},"affectedUsersCount":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"dataRecordsAffected":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"geographicalSpread":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"economicImpact":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"reputationalImpact":{"type":"string","maxLength":2000,"nullable":true}},"required":["title","incidentType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/policies/{id}":{"get":{"summary":"GET /api/v1/compliance/policies/{id}","operationId":"get_api_v1_compliance_policies_id","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["policy:read"]},{"cookieAuth":["policy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/compliance/policies/{id}","operationId":"patch_api_v1_compliance_policies_id","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["policy:update"]},{"cookieAuth":["policy:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":8000,"nullable":true},"policyType":{"type":"string","enum":["security","privacy","acceptable_use","incident_response","business_continuity","vendor_management","data_retention","access_control"]},"version":{"type":"number","minimum":1},"status":{"type":"string","enum":["draft","review","approved","published","retired"]},"ownerUserId":{"type":"string"},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"approvedAt":{"type":"string","format":"date-time","nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"reviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/compliance/policies/{id}","operationId":"delete_api_v1_compliance_policies_id","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["policy:delete"]},{"cookieAuth":["policy:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/policies/meta":{"get":{"summary":"GET /api/v1/compliance/policies/meta","operationId":"get_api_v1_compliance_policies_meta","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["policy:read"]},{"cookieAuth":["policy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/policies":{"get":{"summary":"GET /api/v1/compliance/policies","operationId":"get_api_v1_compliance_policies","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"policyType","in":"query","required":false,"schema":{"type":"string","enum":["security","privacy","acceptable_use","incident_response","business_continuity","vendor_management","data_retention","access_control"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","review","approved","published","retired"]}}],"security":[{"bearerAuth":["policy:list"]},{"cookieAuth":["policy:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/compliance/policies","operationId":"post_api_v1_compliance_policies","tags":["policy"],"x-surface":"data","x-entity":"policy","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["policy:create"]},{"cookieAuth":["policy:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":300,"minLength":1},"description":{"type":"string","maxLength":8000,"nullable":true},"policyType":{"type":"string","enum":["security","privacy","acceptable_use","incident_response","business_continuity","vendor_management","data_retention","access_control"]},"version":{"type":"number","minimum":1},"status":{"type":"string","enum":["draft","review","approved","published","retired"]},"ownerUserId":{"type":"string","minLength":1},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"approvedAt":{"type":"string","format":"date-time","nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"reviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["title","policyType","status","ownerUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/readiness":{"get":{"summary":"GET /api/v1/compliance/readiness","operationId":"get_api_v1_compliance_readiness","tags":["framework"],"x-surface":"data","x-entity":"framework","x-action":"list","x-idempotent":false,"parameters":[{"name":"frameworkId","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["framework:list"]},{"cookieAuth":["framework:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/compliance/readiness","operationId":"post_api_v1_compliance_readiness","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:update"]},{"cookieAuth":["framework:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/remediation-plans/{id}":{"get":{"summary":"View a remediation_plan","description":"View a remediation_plan","operationId":"get_api_v1_compliance_remediation_plans_id","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["remediation_plan:read"]},{"cookieAuth":["remediation_plan:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a remediation_plan","description":"Update fields on a remediation_plan","operationId":"patch_api_v1_compliance_remediation_plans_id","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["remediation_plan:update"]},{"cookieAuth":["remediation_plan:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"findingId":{"type":"string","minLength":1,"maxLength":64},"actionDescription":{"type":"string","minLength":1,"maxLength":10000},"ownerUserId":{"type":"string","minLength":1,"maxLength":64},"deadline":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["open","in_progress","completed","overdue"]},"completionEvidenceId":{"type":"string","maxLength":64,"nullable":true},"completionNotes":{"type":"string","maxLength":5000,"nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a remediation_plan","description":"Soft-delete a remediation_plan","operationId":"delete_api_v1_compliance_remediation_plans_id","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["remediation_plan:delete"]},{"cookieAuth":["remediation_plan:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/remediation-plans/meta":{"get":{"summary":"View a remediation_plan","description":"View a remediation_plan","operationId":"get_api_v1_compliance_remediation_plans_meta","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["remediation_plan:read"]},{"cookieAuth":["remediation_plan:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/remediation-plans":{"get":{"summary":"List remediation_plans with filters and pagination","description":"List remediation_plans with filters and pagination","operationId":"get_api_v1_compliance_remediation_plans","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"findingId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","in_progress","completed","overdue"]}},{"name":"deadlineFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"deadlineTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["remediation_plan:list"]},{"cookieAuth":["remediation_plan:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new remediation_plan","description":"Create a new remediation_plan","operationId":"post_api_v1_compliance_remediation_plans","tags":["remediation_plan"],"x-surface":"data","x-entity":"remediation_plan","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["remediation_plan:create"]},{"cookieAuth":["remediation_plan:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"findingId":{"type":"string","minLength":1,"maxLength":64},"actionDescription":{"type":"string","minLength":1,"maxLength":10000},"ownerUserId":{"type":"string","minLength":1,"maxLength":64},"deadline":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["open","in_progress","completed","overdue"]},"completionEvidenceId":{"type":"string","maxLength":64,"nullable":true},"completionNotes":{"type":"string","maxLength":5000,"nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["findingId","actionDescription","ownerUserId","deadline"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirement-comments/{id}":{"get":{"summary":"View a requirement_comment","description":"View a requirement_comment","operationId":"get_api_v1_compliance_requirement_comments_id","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["requirement_comment:read"]},{"cookieAuth":["requirement_comment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a requirement_comment","description":"Update fields on a requirement_comment","operationId":"patch_api_v1_compliance_requirement_comments_id","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["requirement_comment:update"]},{"cookieAuth":["requirement_comment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requirementId":{"type":"string"},"body":{"type":"string","maxLength":8000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a requirement_comment","description":"Soft-delete a requirement_comment","operationId":"delete_api_v1_compliance_requirement_comments_id","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["requirement_comment:delete"]},{"cookieAuth":["requirement_comment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirement-comments/meta":{"get":{"summary":"View a requirement_comment","description":"View a requirement_comment","operationId":"get_api_v1_compliance_requirement_comments_meta","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["requirement_comment:read"]},{"cookieAuth":["requirement_comment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirement-comments":{"get":{"summary":"List requirement_comments with filters and pagination","description":"List requirement_comments with filters and pagination","operationId":"get_api_v1_compliance_requirement_comments","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"requirementId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["requirement_comment:list"]},{"cookieAuth":["requirement_comment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new requirement_comment","description":"Create a new requirement_comment","operationId":"post_api_v1_compliance_requirement_comments","tags":["requirement_comment"],"x-surface":"data","x-entity":"requirement_comment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["requirement_comment:create"]},{"cookieAuth":["requirement_comment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requirementId":{"type":"string","minLength":1},"body":{"type":"string","maxLength":8000,"minLength":1}},"required":["requirementId","body"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/complete":{"post":{"summary":"Submit a requirement for review (with proof)","description":"Submit a requirement for review (with proof)","operationId":"post_api_v1_compliance_requirements_id_complete","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"complete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:complete"]},{"cookieAuth":["framework_requirement:complete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/draft-na-rationale":{"post":{"summary":"Update fields on a framework_requirement","description":"Update fields on a framework_requirement","operationId":"post_api_v1_compliance_requirements_id_draft_na_rationale","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:update"]},{"cookieAuth":["framework_requirement:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/explain":{"post":{"summary":"View a framework_requirement","description":"View a framework_requirement","operationId":"post_api_v1_compliance_requirements_id_explain","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"read","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:read"]},{"cookieAuth":["framework_requirement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/proofs/{proofId}":{"delete":{"summary":"Update fields on a framework_requirement","description":"Update fields on a framework_requirement","operationId":"delete_api_v1_compliance_requirements_id_proofs_proofId","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"proofId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:update"]},{"cookieAuth":["framework_requirement:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/proofs":{"get":{"summary":"View a framework_requirement","description":"View a framework_requirement","operationId":"get_api_v1_compliance_requirements_id_proofs","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:read"]},{"cookieAuth":["framework_requirement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a framework_requirement","description":"Update fields on a framework_requirement","operationId":"post_api_v1_compliance_requirements_id_proofs","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:update"]},{"cookieAuth":["framework_requirement:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string","minLength":1,"maxLength":20000},"storageKey":{"type":"string","maxLength":500},"filename":{"type":"string","maxLength":300},"mimeType":{"type":"string","maxLength":120},"fileSize":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}/review":{"post":{"summary":"Approve / reject a submitted requirement (four-eyes)","description":"Approve / reject a submitted requirement (four-eyes)","operationId":"post_api_v1_compliance_requirements_id_review","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:approve"]},{"cookieAuth":["framework_requirement:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["approve","request_changes","reopen"]},"note":{"type":"string","maxLength":2000}},"required":["decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/{id}":{"get":{"summary":"View a framework_requirement","description":"View a framework_requirement","operationId":"get_api_v1_compliance_requirements_id","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:read"]},{"cookieAuth":["framework_requirement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a framework_requirement","description":"Update fields on a framework_requirement","operationId":"patch_api_v1_compliance_requirements_id","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:update"]},{"cookieAuth":["framework_requirement:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frameworkId":{"type":"string","minLength":1,"maxLength":64},"parentRequirementId":{"type":"string","maxLength":64,"nullable":true},"code":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":300},"requirementText":{"type":"string","minLength":1,"maxLength":20000},"guidance":{"type":"string","maxLength":20000,"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"priority":{"type":"string","enum":["critical","high","medium","low"]},"status":{"type":"string","enum":["applicable","not_applicable","excluded"]},"notApplicableReason":{"type":"string","maxLength":2000,"nullable":true},"suggestedEvidence":{"type":"string","maxLength":20000,"nullable":true},"assignedTo":{"type":"string","maxLength":64,"nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}},"fulfillmentStatus":{"type":"string","enum":["open","in_progress"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a framework_requirement","description":"Soft-delete a framework_requirement","operationId":"delete_api_v1_compliance_requirements_id","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:delete"]},{"cookieAuth":["framework_requirement:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/bulk":{"post":{"summary":"Update fields on a framework_requirement","description":"Update fields on a framework_requirement","operationId":"post_api_v1_compliance_requirements_bulk","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:update"]},{"cookieAuth":["framework_requirement:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"frameworkId":{"type":"string","minLength":1,"maxLength":64},"category":{"type":"string","minLength":1,"maxLength":120},"status":{"type":"string","enum":["applicable","not_applicable","excluded"]},"reason":{"type":"string","maxLength":2000},"action":{"type":"string","enum":["scope"]}},"required":["frameworkId","category","status","action"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements/meta":{"get":{"summary":"View a framework_requirement","description":"View a framework_requirement","operationId":"get_api_v1_compliance_requirements_meta","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["framework_requirement:read"]},{"cookieAuth":["framework_requirement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/requirements":{"get":{"summary":"List framework_requirements with filters and pagination","description":"List framework_requirements with filters and pagination","operationId":"get_api_v1_compliance_requirements","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"frameworkId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"parentRequirementId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["applicable","not_applicable","excluded"]}},{"name":"assignedTo","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["framework_requirement:list"]},{"cookieAuth":["framework_requirement:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new framework_requirement","description":"Create a new framework_requirement","operationId":"post_api_v1_compliance_requirements","tags":["framework_requirement"],"x-surface":"data","x-entity":"framework_requirement","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework_requirement:create"]},{"cookieAuth":["framework_requirement:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frameworkId":{"type":"string","minLength":1,"maxLength":64},"parentRequirementId":{"type":"string","maxLength":64,"nullable":true},"code":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":300},"requirementText":{"type":"string","minLength":1,"maxLength":20000},"guidance":{"type":"string","maxLength":20000,"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"priority":{"type":"string","enum":["critical","high","medium","low"]},"status":{"type":"string","enum":["applicable","not_applicable","excluded"]},"notApplicableReason":{"type":"string","maxLength":2000,"nullable":true},"suggestedEvidence":{"type":"string","maxLength":20000,"nullable":true},"assignedTo":{"type":"string","maxLength":64,"nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["frameworkId","code","title","requirementText"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risk-assessments/{id}":{"get":{"summary":"View a risk_assessment","description":"View a risk_assessment","operationId":"get_api_v1_compliance_risk_assessments_id","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["risk_assessment:read"]},{"cookieAuth":["risk_assessment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a risk_assessment","description":"Update fields on a risk_assessment","operationId":"patch_api_v1_compliance_risk_assessments_id","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["risk_assessment:update"]},{"cookieAuth":["risk_assessment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"riskId":{"type":"string","minLength":1,"maxLength":64},"assessorUserId":{"type":"string","minLength":1,"maxLength":64},"likelihoodBefore":{"type":"integer","minimum":1,"maximum":5},"impactBefore":{"type":"integer","minimum":1,"maximum":5},"scoreBefore":{"type":"number","minimum":0,"maximum":100},"likelihoodAfter":{"type":"integer","minimum":1,"maximum":5},"impactAfter":{"type":"integer","minimum":1,"maximum":5},"scoreAfter":{"type":"number","minimum":0,"maximum":100},"assessmentNotes":{"type":"string","maxLength":20000,"nullable":true},"controlsEvaluated":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a risk_assessment","description":"Soft-delete a risk_assessment","operationId":"delete_api_v1_compliance_risk_assessments_id","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["risk_assessment:delete"]},{"cookieAuth":["risk_assessment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risk-assessments/meta":{"get":{"summary":"View a risk_assessment","description":"View a risk_assessment","operationId":"get_api_v1_compliance_risk_assessments_meta","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["risk_assessment:read"]},{"cookieAuth":["risk_assessment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risk-assessments":{"get":{"summary":"List risk_assessments with filters and pagination","description":"List risk_assessments with filters and pagination","operationId":"get_api_v1_compliance_risk_assessments","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"riskId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"assessorUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["risk_assessment:list"]},{"cookieAuth":["risk_assessment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new risk_assessment","description":"Create a new risk_assessment","operationId":"post_api_v1_compliance_risk_assessments","tags":["risk_assessment"],"x-surface":"data","x-entity":"risk_assessment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["risk_assessment:create"]},{"cookieAuth":["risk_assessment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"riskId":{"type":"string","minLength":1,"maxLength":64},"assessorUserId":{"type":"string","minLength":1,"maxLength":64},"likelihoodBefore":{"type":"integer","minimum":1,"maximum":5},"impactBefore":{"type":"integer","minimum":1,"maximum":5},"scoreBefore":{"type":"number","minimum":0,"maximum":100},"likelihoodAfter":{"type":"integer","minimum":1,"maximum":5},"impactAfter":{"type":"integer","minimum":1,"maximum":5},"scoreAfter":{"type":"number","minimum":0,"maximum":100},"assessmentNotes":{"type":"string","maxLength":20000,"nullable":true},"controlsEvaluated":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100}},"required":["riskId","assessorUserId","likelihoodBefore","impactBefore","scoreBefore","likelihoodAfter","impactAfter","scoreAfter"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risks/{id}":{"get":{"summary":"View a risk","description":"View a risk","operationId":"get_api_v1_compliance_risks_id","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["risk:read"]},{"cookieAuth":["risk:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a risk","description":"Update fields on a risk","operationId":"patch_api_v1_compliance_risks_id","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["risk:update"]},{"cookieAuth":["risk:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"category":{"type":"string","enum":["operational","compliance","reputational","financial","strategic"]},"likelihood":{"type":"integer","minimum":1,"maximum":5},"impact":{"type":"integer","minimum":1,"maximum":5},"inherentScore":{"type":"number","minimum":0,"maximum":100},"residualScore":{"type":"number","minimum":0,"maximum":100},"treatment":{"type":"string","enum":["accept","mitigate","transfer","avoid"]},"riskOwnerUserId":{"type":"string","minLength":1,"maxLength":64},"controlIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"status":{"type":"string","enum":["open","mitigated","accepted","closed"]},"nextAssessmentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a risk","description":"Soft-delete a risk","operationId":"delete_api_v1_compliance_risks_id","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["risk:delete"]},{"cookieAuth":["risk:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risks/meta":{"get":{"summary":"View a risk","description":"View a risk","operationId":"get_api_v1_compliance_risks_meta","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["risk:read"]},{"cookieAuth":["risk:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/compliance/risks":{"get":{"summary":"List risks with filters and pagination","description":"List risks with filters and pagination","operationId":"get_api_v1_compliance_risks","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["operational","compliance","reputational","financial","strategic"]}},{"name":"treatment","in":"query","required":false,"schema":{"type":"string","enum":["accept","mitigate","transfer","avoid"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","mitigated","accepted","closed"]}},{"name":"riskOwnerUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"minResidual","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":100}}],"security":[{"bearerAuth":["risk:list"]},{"cookieAuth":["risk:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new risk","description":"Create a new risk","operationId":"post_api_v1_compliance_risks","tags":["risk"],"x-surface":"data","x-entity":"risk","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["risk:create"]},{"cookieAuth":["risk:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":20000,"nullable":true},"category":{"type":"string","enum":["operational","compliance","reputational","financial","strategic"]},"likelihood":{"type":"integer","minimum":1,"maximum":5},"impact":{"type":"integer","minimum":1,"maximum":5},"inherentScore":{"type":"number","minimum":0,"maximum":100},"residualScore":{"type":"number","minimum":0,"maximum":100},"treatment":{"type":"string","enum":["accept","mitigate","transfer","avoid"]},"riskOwnerUserId":{"type":"string","minLength":1,"maxLength":64},"controlIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"status":{"type":"string","enum":["open","mitigated","accepted","closed"]},"nextAssessmentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["title","category","likelihood","impact","riskOwnerUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/amendments/{id}":{"get":{"summary":"View a amendment","description":"View a amendment","operationId":"get_api_v1_contracts_amendments_id","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["amendment:read"]},{"cookieAuth":["amendment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a amendment","description":"Update fields on a amendment","operationId":"patch_api_v1_contracts_amendments_id","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["amendment:update"]},{"cookieAuth":["amendment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string","minLength":1,"maxLength":64},"reason":{"type":"string","minLength":1,"maxLength":2000},"changes":{"type":"object","additionalProperties":{}},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"approvalStatus":{"type":"string","enum":["draft","pending","approved","rejected"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a amendment","description":"Soft-delete a amendment","operationId":"delete_api_v1_contracts_amendments_id","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["amendment:delete"]},{"cookieAuth":["amendment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/amendments/meta":{"get":{"summary":"View a amendment","description":"View a amendment","operationId":"get_api_v1_contracts_amendments_meta","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["amendment:read"]},{"cookieAuth":["amendment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/amendments":{"get":{"summary":"List amendments with filters and pagination","description":"List amendments with filters and pagination","operationId":"get_api_v1_contracts_amendments","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string","enum":["draft","pending","approved","rejected"]}},{"name":"effectiveFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"effectiveTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["amendment:list"]},{"cookieAuth":["amendment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new amendment","description":"Create a new amendment","operationId":"post_api_v1_contracts_amendments","tags":["amendment"],"x-surface":"data","x-entity":"amendment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["amendment:create"]},{"cookieAuth":["amendment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string","minLength":1,"maxLength":64},"reason":{"type":"string","minLength":1,"maxLength":2000},"changes":{"type":"object","additionalProperties":{}},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"approvalStatus":{"type":"string","enum":["draft","pending","approved","rejected"]}},"required":["contractId","reason","effectiveDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/available-equipment":{"get":{"summary":"List contracts with filters and pagination","description":"List contracts with filters and pagination","operationId":"get_api_v1_contracts_available_equipment","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/clauses/{id}":{"get":{"summary":"GET /api/v1/contracts/clauses/{id}","operationId":"get_api_v1_contracts_clauses_id","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["clause:read"]},{"cookieAuth":["clause:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/contracts/clauses/{id}","operationId":"patch_api_v1_contracts_clauses_id","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["clause:update"]},{"cookieAuth":["clause:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":50000},"alternatives":{"type":"array","items":{"type":"string","maxLength":50000},"maxItems":20},"riskLevel":{"type":"string","enum":["low","medium","high"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/contracts/clauses/{id}","operationId":"delete_api_v1_contracts_clauses_id","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["clause:delete"]},{"cookieAuth":["clause:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/clauses/meta":{"get":{"summary":"GET /api/v1/contracts/clauses/meta","operationId":"get_api_v1_contracts_clauses_meta","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["clause:read"]},{"cookieAuth":["clause:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/clauses":{"get":{"summary":"GET /api/v1/contracts/clauses","operationId":"get_api_v1_contracts_clauses","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"riskLevel","in":"query","required":false,"schema":{"type":"string","enum":["low","medium","high"]}}],"security":[{"bearerAuth":["clause:list"]},{"cookieAuth":["clause:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/contracts/clauses","operationId":"post_api_v1_contracts_clauses","tags":["clause"],"x-surface":"data","x-entity":"clause","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["clause:create"]},{"cookieAuth":["clause:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":80},"text":{"type":"string","minLength":1,"maxLength":50000},"alternatives":{"type":"array","items":{"type":"string","maxLength":50000},"maxItems":20},"riskLevel":{"type":"string","enum":["low","medium","high"]}},"required":["name","category","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/documents/{id}/reprocess":{"post":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"post_api_v1_contracts_commercial_terms_documents_id_reprocess","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/documents/{id}/versions/{versionId}/extract":{"post":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"post_api_v1_contracts_commercial_terms_documents_id_versions_versionId_extract","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/documents/{id}/versions/{versionId}/reject":{"post":{"summary":"Mark as signed","description":"Mark as signed","operationId":"post_api_v1_contracts_commercial_terms_documents_id_versions_versionId_reject","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:approve"]},{"cookieAuth":["contract:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/documents/{id}/versions/{versionId}/review":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_commercial_terms_documents_id_versions_versionId_review","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Mark as signed","description":"Mark as signed","operationId":"post_api_v1_contracts_commercial_terms_documents_id_versions_versionId_review","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:approve"]},{"cookieAuth":["contract:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentVersionId":{"type":"string","minLength":1},"fields":{"type":"array","items":{"type":"object","properties":{"fieldKey":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,99}$"},"value":{},"valueType":{"type":"string","enum":["string","number","boolean","date","money","percentage","address","contact","json"]},"confidence":{"type":"number","minimum":0,"maximum":1},"citation":{"type":"object","additionalProperties":{}},"effectiveFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"effectiveUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["fieldKey","valueType"],"additionalProperties":false},"maxItems":100}},"required":["documentVersionId","fields"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/documents":{"get":{"summary":"List contracts with filters and pagination","description":"List contracts with filters and pagination","operationId":"get_api_v1_contracts_commercial_terms_documents","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":false,"parameters":[{"name":"scopeType","in":"query","required":true,"schema":{"type":"string","enum":["account","deal","quote","contract"]}},{"name":"scopeId","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"post_api_v1_contracts_commercial_terms_documents","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"scopeType":{"type":"string","enum":["account","deal","quote","contract"]},"scopeId":{"type":"string","minLength":1},"documentType":{"type":"string","enum":["msa","sow","signed_quote","signed_estimate","purchase_order"]},"storageKey":{"type":"string","minLength":1,"maxLength":1000},"filename":{"type":"string","minLength":1,"maxLength":200},"mimeType":{"type":"string","enum":["application/pdf","image/png","image/jpeg","image/webp"]},"sourceUrl":{"type":"string","format":"uri","maxLength":2000},"signedAt":{"type":"string","format":"date-time"},"executedAt":{"type":"string","format":"date-time"},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["accountId","scopeType","scopeId","documentType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/effective":{"get":{"summary":"List contracts with filters and pagination","description":"List contracts with filters and pagination","operationId":"get_api_v1_contracts_commercial_terms_effective","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":true,"parameters":[{"name":"scopeType","in":"query","required":true,"schema":{"type":"string","enum":["tenant","account","deal","quote","contract","project","work_order","ticket","invoice"]}},{"name":"scopeId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"asOf","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/overrides/{id}":{"delete":{"summary":"Soft-delete a contract","description":"Soft-delete a contract","operationId":"delete_api_v1_contracts_commercial_terms_overrides_id","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"delete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:delete"]},{"cookieAuth":["contract:delete"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/overrides":{"post":{"summary":"Mark as signed","description":"Mark as signed","operationId":"post_api_v1_contracts_commercial_terms_overrides","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"approve","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:approve"]},{"cookieAuth":["contract:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"scopeType":{"type":"string","enum":["tenant","account","deal","quote","contract","project","work_order","ticket","invoice"]},"scopeId":{"type":"string","minLength":1},"fieldKey":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,99}$"},"value":{},"valueType":{"type":"string","enum":["string","number","boolean","date","money","percentage","address","contact","json"]},"reason":{"type":"string","minLength":1,"maxLength":2000},"effectiveFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"effectiveUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["scopeType","scopeId","fieldKey","valueType","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/snapshots/{id}":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_commercial_terms_snapshots_id","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/commercial-terms/snapshots":{"post":{"summary":"View a contract","description":"View a contract","operationId":"post_api_v1_contracts_commercial_terms_snapshots","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scopeType":{"type":"string","enum":["tenant","account","deal","quote","contract","project","work_order","ticket","invoice"]},"scopeId":{"type":"string","minLength":1},"accountId":{"type":"string","minLength":1},"asOf":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"bindingEvent":{"type":"string","minLength":1,"maxLength":100},"idempotencyKey":{"type":"string","minLength":8,"maxLength":200}},"required":["scopeType","scopeId","bindingEvent","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/approve":{"post":{"summary":"Mark as signed","description":"Mark as signed","operationId":"post_api_v1_contracts_contracts_id_approve","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:approve"]},{"cookieAuth":["contract:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/cancel":{"post":{"summary":"Cancel contract","description":"Cancel contract","operationId":"post_api_v1_contracts_contracts_id_cancel","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"cancel","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:cancel"]},{"cookieAuth":["contract:cancel"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000},"invoiceMode":{"type":"string","enum":["none","full_period","prorated","fixed"]},"fixedAmount":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":999999999}},"required":["reason","invoiceMode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/document":{"get":{"summary":"Download a generated or signed contract document","description":"Download a generated or signed contract document","operationId":"get_api_v1_contracts_contracts_id_document","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"download","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract:download"]},{"cookieAuth":["contract:download"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/equipment":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_contracts_id_equipment","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"put_api_v1_contracts_contracts_id_equipment","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assetIds":{"type":"array","items":{"type":"string","minLength":1},"maxItems":50}},"required":["assetIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/renew":{"post":{"summary":"Renew contract","description":"Renew contract","operationId":"post_api_v1_contracts_contracts_id_renew","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"renew","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:renew"]},{"cookieAuth":["contract:renew"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"newValue":{"type":"number","minimum":0}},"required":["endDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_contracts_id","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"patch_api_v1_contracts_contracts_id","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"type":{"type":"string","enum":["MSA","SOW","NDA","SLA","Subscription","Rental"]},"status":{"type":"string","minLength":1,"maxLength":64},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"autoRenew":{"type":"boolean"},"billingInterval":{"type":"string","enum":["monthly","quarterly","semi_annual","annual"]},"firstPaymentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"paymentMethod":{"type":"string","maxLength":80,"nullable":true},"chargeDayOfMonth":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"autoRenewAdjustmentType":{"type":"string","enum":["amount","percentage"],"nullable":true},"autoRenewAdjustmentValue":{"type":"number","minimum":0,"nullable":true},"autoRenewTermMonths":{"type":"integer","minimum":1,"maximum":600,"nullable":true},"commissionSchedule":{"type":"array","items":{"type":"object","properties":{"months":{"type":"integer","minimum":1,"maximum":600},"rate":{"type":"number","minimum":0,"maximum":100},"trigger":{"type":"string","enum":["charge_generated","invoice_paid"]},"payees":{"type":"array","items":{"type":"object","properties":{"payeeType":{"type":"string","enum":["user","contact","account"]},"payeeId":{"type":"string","minLength":1},"sharePercent":{"type":"number","minimum":0,"maximum":100}},"required":["payeeType","payeeId","sharePercent"],"additionalProperties":false},"maxItems":20,"default":[]}},"required":["months","rate","trigger"],"additionalProperties":false},"maxItems":24},"referralRequired":{"type":"boolean"},"referralQualified":{"type":"boolean","nullable":true},"referralNotes":{"type":"string","maxLength":50000,"nullable":true},"value":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"terms":{"type":"string","maxLength":50000,"nullable":true},"linkedProjectIds":{"type":"array","items":{"type":"string"},"maxItems":100},"recordTypeId":{"type":"string","minLength":1,"nullable":true},"pipelineId":{"type":"string","minLength":1,"nullable":true},"sourceDealId":{"type":"string","minLength":1},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"sourceQuoteId":{"type":"string","minLength":1,"nullable":true},"documentId":{"type":"string","minLength":1,"nullable":true},"workOrderId":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"string","minLength":1,"nullable":true},"templateVersion":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a contract","description":"Soft-delete a contract","operationId":"delete_api_v1_contracts_contracts_id","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:delete"]},{"cookieAuth":["contract:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/send":{"post":{"summary":"Send for signature","description":"Send for signature","operationId":"post_api_v1_contracts_contracts_id_send","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"send","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:send"]},{"cookieAuth":["contract:send"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/versions/{versionId}/publish":{"post":{"summary":"Mark as signed","description":"Mark as signed","operationId":"post_api_v1_contracts_contracts_id_versions_versionId_publish","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:approve"]},{"cookieAuth":["contract:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"type":"object","properties":{"approvedBy":{"type":"string","maxLength":128}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/versions/{versionId}":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_contracts_id_versions_versionId","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"patch_api_v1_contracts_contracts_id_versions_versionId","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":2000},"redlineUrl":{"type":"string","maxLength":2000,"nullable":true},"snapshot":{"type":"object","properties":{"contract":{"type":"object","additionalProperties":{}},"rateAmendments":{"type":"array","items":{"type":"object","additionalProperties":{}},"default":[]},"commissionSchedule":{"type":"array","items":{"type":"object","additionalProperties":{}},"default":[]},"sows":{"type":"array","items":{"type":"object","additionalProperties":{}},"default":[]},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"type":"number"},"storageKey":{"type":"string","nullable":true},"externalUrl":{"type":"string","nullable":true},"uploadedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true}},"required":["id","filename","contentType","sizeBytes","storageKey","externalUrl","uploadedBy","createdAt"],"additionalProperties":true},"default":[]},"capturedAt":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"delete_api_v1_contracts_contracts_id_versions_versionId","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/{id}/versions":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_contracts_id_versions","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a contract","description":"Update fields on a contract","operationId":"post_api_v1_contracts_contracts_id_versions","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:update"]},{"cookieAuth":["contract:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":2000},"redlineUrl":{"type":"string","maxLength":2000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/extractions":{"post":{"summary":"Create a new contract","description":"Create a new contract","operationId":"post_api_v1_contracts_contracts_extractions","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:create"]},{"cookieAuth":["contract:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base64":{"type":"string","minLength":1,"maxLength":20000000},"mimeType":{"type":"string","enum":["application/pdf","image/png","image/jpeg","image/webp"]}},"required":["base64","mimeType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts/meta":{"get":{"summary":"View a contract","description":"View a contract","operationId":"get_api_v1_contracts_contracts_meta","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"read","x-idempotent":false,"parameters":[{"name":"recordType","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["contract:read"]},{"cookieAuth":["contract:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/contracts":{"get":{"summary":"List contracts with filters and pagination","description":"List contracts with filters and pagination","operationId":"get_api_v1_contracts_contracts","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["MSA","SOW","NDA","SLA","Subscription","Rental"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"workOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"endBefore","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"endAfter","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new contract","description":"Create a new contract","operationId":"post_api_v1_contracts_contracts","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:create"]},{"cookieAuth":["contract:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"type":{"type":"string","enum":["MSA","SOW","NDA","SLA","Subscription","Rental"]},"status":{"type":"string","minLength":1,"maxLength":64},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"autoRenew":{"type":"boolean"},"billingInterval":{"type":"string","enum":["monthly","quarterly","semi_annual","annual"]},"firstPaymentDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"paymentMethod":{"type":"string","maxLength":80,"nullable":true},"chargeDayOfMonth":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"autoRenewAdjustmentType":{"type":"string","enum":["amount","percentage"],"nullable":true},"autoRenewAdjustmentValue":{"type":"number","minimum":0,"nullable":true},"autoRenewTermMonths":{"type":"integer","minimum":1,"maximum":600,"nullable":true},"commissionSchedule":{"type":"array","items":{"type":"object","properties":{"months":{"type":"integer","minimum":1,"maximum":600},"rate":{"type":"number","minimum":0,"maximum":100},"trigger":{"type":"string","enum":["charge_generated","invoice_paid"]},"payees":{"type":"array","items":{"type":"object","properties":{"payeeType":{"type":"string","enum":["user","contact","account"]},"payeeId":{"type":"string","minLength":1},"sharePercent":{"type":"number","minimum":0,"maximum":100}},"required":["payeeType","payeeId","sharePercent"],"additionalProperties":false},"maxItems":20,"default":[]}},"required":["months","rate","trigger"],"additionalProperties":false},"maxItems":24},"referralRequired":{"type":"boolean"},"referralQualified":{"type":"boolean","nullable":true},"referralNotes":{"type":"string","maxLength":50000,"nullable":true},"value":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"terms":{"type":"string","maxLength":50000,"nullable":true},"linkedProjectIds":{"type":"array","items":{"type":"string"},"maxItems":100},"recordTypeId":{"type":"string","minLength":1,"nullable":true},"pipelineId":{"type":"string","minLength":1,"nullable":true},"sourceDealId":{"type":"string","minLength":1},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"sourceQuoteId":{"type":"string","minLength":1,"nullable":true},"documentId":{"type":"string","minLength":1,"nullable":true},"workOrderId":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"string","minLength":1,"nullable":true},"templateVersion":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true},"introPrice":{"type":"number","minimum":0,"nullable":true},"introEndDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["accountId","type","startDate","endDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/renewals/{id}":{"get":{"summary":"View a renewal","description":"View a renewal","operationId":"get_api_v1_contracts_renewals_id","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["renewal:read"]},{"cookieAuth":["renewal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a renewal","description":"Update fields on a renewal","operationId":"patch_api_v1_contracts_renewals_id","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["renewal:update"]},{"cookieAuth":["renewal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string"},"renewalDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"autoRenew":{"type":"boolean"},"renewalValue":{"type":"number","minimum":0,"maximum":9999999999.99},"riskScore":{"type":"number","minimum":0,"maximum":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a renewal","description":"Soft-delete a renewal","operationId":"delete_api_v1_contracts_renewals_id","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["renewal:delete"]},{"cookieAuth":["renewal:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/renewals/meta":{"get":{"summary":"View a renewal","description":"View a renewal","operationId":"get_api_v1_contracts_renewals_meta","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["renewal:read"]},{"cookieAuth":["renewal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/renewals":{"get":{"summary":"List renewals with filters and pagination","description":"List renewals with filters and pagination","operationId":"get_api_v1_contracts_renewals","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"autoRenew","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["renewal:list"]},{"cookieAuth":["renewal:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new renewal","description":"Create a new renewal","operationId":"post_api_v1_contracts_renewals","tags":["renewal"],"x-surface":"data","x-entity":"renewal","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["renewal:create"]},{"cookieAuth":["renewal:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contractId":{"type":"string","minLength":1},"renewalDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"autoRenew":{"type":"boolean"},"renewalValue":{"type":"number","minimum":0,"maximum":9999999999.99},"riskScore":{"type":"number","minimum":0,"maximum":100}},"required":["contractId","renewalDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/images/{token}":{"delete":{"summary":"DELETE /api/v1/contracts/templates/{id}/images/{token}","operationId":"delete_api_v1_contracts_templates_id_images_token","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":1200}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:update"]},{"cookieAuth":["contract_template:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/images/imports":{"post":{"summary":"POST /api/v1/contracts/templates/{id}/images/imports","operationId":"post_api_v1_contracts_templates_id_images_imports","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:update"]},{"cookieAuth":["contract_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":4096}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/images":{"post":{"summary":"POST /api/v1/contracts/templates/{id}/images","operationId":"post_api_v1_contracts_templates_id_images","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:update"]},{"cookieAuth":["contract_template:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/preview":{"get":{"summary":"GET /api/v1/contracts/templates/{id}/preview","operationId":"get_api_v1_contracts_templates_id_preview","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract_template:read"]},{"cookieAuth":["contract_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}":{"get":{"summary":"GET /api/v1/contracts/templates/{id}","operationId":"get_api_v1_contracts_templates_id","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:read"]},{"cookieAuth":["contract_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/contracts/templates/{id}","operationId":"patch_api_v1_contracts_templates_id","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:update"]},{"cookieAuth":["contract_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"type":{"type":"string","maxLength":80},"jurisdiction":{"type":"string","maxLength":8},"approvalWorkflow":{"type":"string","maxLength":200,"nullable":true},"document":{"type":"object","additionalProperties":{}},"logoMode":{"type":"string","enum":["company","custom","none"]},"customLogoStorageKey":{"type":"string","nullable":true},"signatureBlocks":{"type":"array","items":{}},"sharingMode":{"type":"string","enum":["everyone","restricted"]},"status":{"type":"string","enum":["draft","published","archived"]},"version":{"type":"number"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/contracts/templates/{id}","operationId":"delete_api_v1_contracts_templates_id","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:delete"]},{"cookieAuth":["contract_template:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/shares/{shareId}":{"delete":{"summary":"DELETE /api/v1/contracts/templates/{id}/shares/{shareId}","operationId":"delete_api_v1_contracts_templates_id_shares_shareId","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"manage_permissions","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"shareId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract_template:manage_permissions"]},{"cookieAuth":["contract_template:manage_permissions"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/{id}/shares":{"get":{"summary":"GET /api/v1/contracts/templates/{id}/shares","operationId":"get_api_v1_contracts_templates_id_shares","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"manage_permissions","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["contract_template:manage_permissions"]},{"cookieAuth":["contract_template:manage_permissions"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"PUT /api/v1/contracts/templates/{id}/shares","operationId":"put_api_v1_contracts_templates_id_shares","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"manage_permissions","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:manage_permissions"]},{"cookieAuth":["contract_template:manage_permissions"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string","minLength":1},"accessLevel":{"type":"string","enum":["use","edit"],"default":"use"}},"required":["groupId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates/meta":{"get":{"summary":"GET /api/v1/contracts/templates/meta","operationId":"get_api_v1_contracts_templates_meta","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["contract_template:read"]},{"cookieAuth":["contract_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/contracts/templates":{"get":{"summary":"GET /api/v1/contracts/templates","operationId":"get_api_v1_contracts_templates","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"type","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"jurisdiction","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["contract_template:list"]},{"cookieAuth":["contract_template:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/contracts/templates","operationId":"post_api_v1_contracts_templates","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:create"]},{"cookieAuth":["contract_template:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"type":{"type":"string","maxLength":80,"minLength":1},"jurisdiction":{"type":"string","maxLength":8,"minLength":1},"approvalWorkflow":{"type":"string","maxLength":200,"nullable":true},"document":{"type":"object","additionalProperties":{}},"logoMode":{"type":"string","enum":["company","custom","none"]},"customLogoStorageKey":{"type":"string","nullable":true},"signatureBlocks":{"type":"array","items":{}},"sharingMode":{"type":"string","enum":["everyone","restricted"]},"status":{"type":"string","enum":["draft","published","archived"]},"version":{"type":"number"}},"required":["name","type","jurisdiction","document","logoMode","signatureBlocks","sharingMode","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/{id}/logo":{"get":{"summary":"View a account","description":"View a account","operationId":"get_api_v1_crm_accounts_id_logo","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a account","description":"Update fields on a account","operationId":"post_api_v1_crm_accounts_id_logo","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a account","description":"Update fields on a account","operationId":"delete_api_v1_crm_accounts_id_logo","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/{id}/relationships/{relationshipId}":{"delete":{"summary":"Update fields on a account","description":"Update fields on a account","operationId":"delete_api_v1_crm_accounts_id_relationships_relationshipId","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"relationshipId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/{id}/relationships":{"get":{"summary":"View a account","description":"View a account","operationId":"get_api_v1_crm_accounts_id_relationships","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a account","description":"Update fields on a account","operationId":"post_api_v1_crm_accounts_id_relationships","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"relatedAccountId":{"type":"string","minLength":1,"maxLength":64},"relationshipType":{"type":"string","enum":["parent","subsidiary","peer","dotted_line","partner","reseller","customer_of","supplier"]},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["relatedAccountId","relationshipType"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/{id}/risk":{"post":{"summary":"Set/clear the at-risk flag on an account","description":"Set/clear the at-risk flag on an account","operationId":"post_api_v1_crm_accounts_id_risk","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"set_risk","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["account:set_risk"]},{"cookieAuth":["account:set_risk"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"atRisk":{"type":"boolean"},"at_risk":{"type":"boolean"},"reason":{"type":"string","maxLength":500},"note":{"type":"string","maxLength":2000}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/{id}":{"get":{"summary":"View a account","description":"View a account","operationId":"get_api_v1_crm_accounts_id","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a account","description":"Update fields on a account","operationId":"patch_api_v1_crm_accounts_id","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"legalName":{"type":"string","maxLength":200,"nullable":true},"domain":{"type":"string","maxLength":255,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"fax":{"type":"string","maxLength":40,"nullable":true},"accountNumber":{"type":"string","maxLength":60,"nullable":true},"logoUrl":{"type":"string","maxLength":2048,"nullable":true},"logoShape":{"type":"string","enum":["square","circular","rectangular"]},"logoZoom":{"type":"number","minimum":0.5,"maximum":3,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"accountType":{"type":"string","enum":["prospect","customer","partner","vendor","competitor","reseller"]},"industry":{"type":"string","maxLength":120,"nullable":true},"subIndustry":{"type":"string","maxLength":120,"nullable":true},"ownershipType":{"type":"string","maxLength":60,"nullable":true},"rating":{"type":"string","enum":["hot","warm","cold"],"nullable":true},"lifecycleStage":{"type":"string","enum":["lead","prospect","qualified","customer","evangelist","churned"]},"acquisitionChannel":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["active","inactive","do_not_contact","on_hold"]},"isActive":{"type":"boolean"},"isAtRisk":{"type":"boolean"},"isRetentionFocus":{"type":"boolean"},"tier":{"type":"string","enum":["strategic","enterprise","mid_market","smb","startup"]},"employeeCount":{"type":"integer","minimum":0,"nullable":true},"annualRevenue":{"type":"number","minimum":0,"nullable":true},"foundedYear":{"type":"integer","minimum":1700,"maximum":2200,"nullable":true},"ownerUserId":{"type":"string","format":"uuid"},"parentAccountId":{"type":"string","nullable":true},"region":{"type":"string","maxLength":120,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"linkedinUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"twitterUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"facebookUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"billingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"billingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"billingCity":{"type":"string","maxLength":120,"nullable":true},"billingState":{"type":"string","maxLength":120,"nullable":true},"billingPostalCode":{"type":"string","maxLength":40,"nullable":true},"billingCountry":{"type":"string","maxLength":120,"nullable":true},"shippingSameAsBilling":{"type":"boolean"},"shippingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"shippingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"shippingCity":{"type":"string","maxLength":120,"nullable":true},"shippingState":{"type":"string","maxLength":120,"nullable":true},"shippingPostalCode":{"type":"string","maxLength":40,"nullable":true},"shippingCountry":{"type":"string","maxLength":120,"nullable":true},"arr":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"nextRenewalAt":{"type":"string","maxLength":40,"nullable":true},"npsScore":{"type":"integer","minimum":-100,"maximum":100,"nullable":true},"customerSince":{"type":"string","maxLength":40,"nullable":true},"taxId":{"type":"string","maxLength":60,"nullable":true},"vatNumber":{"type":"string","maxLength":60,"nullable":true},"healthScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"tickerSymbol":{"type":"string","maxLength":20,"nullable":true},"sicCode":{"type":"string","maxLength":20,"nullable":true},"naicsCode":{"type":"string","maxLength":20,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a account","description":"Soft-delete a account","operationId":"delete_api_v1_crm_accounts_id","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:delete"]},{"cookieAuth":["account:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/duplicate-checks":{"post":{"summary":"View a account","description":"View a account","operationId":"post_api_v1_crm_accounts_duplicate_checks","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"nullable":true},"domain":{"type":"string","maxLength":200,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/export":{"get":{"summary":"Export accounts","description":"Export accounts","operationId":"get_api_v1_crm_accounts_export","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"export","x-idempotent":false,"security":[{"bearerAuth":["account:export"]},{"cookieAuth":["account:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/imports/{jobId}/commit":{"post":{"summary":"Import accounts","description":"Import accounts","operationId":"post_api_v1_crm_accounts_imports_jobId_commit","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["account:import"]},{"cookieAuth":["account:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/imports/{jobId}/review":{"post":{"summary":"Import accounts","description":"Import accounts","operationId":"post_api_v1_crm_accounts_imports_jobId_review","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["account:import"]},{"cookieAuth":["account:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["ignore"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["field"]},"field":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["udf"]},"field":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":80},"coerce":{"type":"string","enum":["select","multiselect"]}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["reference"]},"field":{"type":"string","minLength":1,"maxLength":120},"resolveBy":{"type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"}},"required":["kind","field","resolveBy"],"additionalProperties":false}]}},"matchOn":{"type":"string","minLength":1}},"required":["mapping","matchOn"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/imports":{"post":{"summary":"Import accounts","description":"Import accounts","operationId":"post_api_v1_crm_accounts_imports","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["account:import"]},{"cookieAuth":["account:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/list-columns":{"put":{"summary":"View a account","description":"View a account","operationId":"put_api_v1_crm_accounts_list_columns","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":100}},"required":["columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts/meta":{"get":{"summary":"View a account","description":"View a account","operationId":"get_api_v1_crm_accounts_meta","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/accounts":{"get":{"summary":"List accounts with filters and pagination","description":"List accounts with filters and pagination","operationId":"get_api_v1_crm_accounts","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["prospect","customer","partner","vendor","competitor","reseller"]}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","enum":["strategic","enterprise","mid_market","smb","startup"]}},{"name":"lifecycleStage","in":"query","required":false,"schema":{"type":"string","enum":["lead","prospect","qualified","customer","evangelist","churned"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive","do_not_contact","on_hold"]}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"isActive","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["account:list"]},{"cookieAuth":["account:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new account","description":"Create a new account","operationId":"post_api_v1_crm_accounts","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["account:create"]},{"cookieAuth":["account:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"legalName":{"type":"string","maxLength":200,"nullable":true},"domain":{"type":"string","maxLength":255,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"fax":{"type":"string","maxLength":40,"nullable":true},"accountNumber":{"type":"string","maxLength":60,"nullable":true},"logoUrl":{"type":"string","maxLength":2048,"nullable":true},"logoShape":{"type":"string","enum":["square","circular","rectangular"]},"logoZoom":{"type":"number","minimum":0.5,"maximum":3,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"accountType":{"type":"string","enum":["prospect","customer","partner","vendor","competitor","reseller"]},"industry":{"type":"string","maxLength":120,"nullable":true},"subIndustry":{"type":"string","maxLength":120,"nullable":true},"ownershipType":{"type":"string","maxLength":60,"nullable":true},"rating":{"type":"string","enum":["hot","warm","cold"],"nullable":true},"lifecycleStage":{"type":"string","enum":["lead","prospect","qualified","customer","evangelist","churned"]},"acquisitionChannel":{"type":"string","maxLength":80,"nullable":true},"status":{"type":"string","enum":["active","inactive","do_not_contact","on_hold"]},"isActive":{"type":"boolean"},"isAtRisk":{"type":"boolean"},"isRetentionFocus":{"type":"boolean"},"tier":{"type":"string","enum":["strategic","enterprise","mid_market","smb","startup"]},"employeeCount":{"type":"integer","minimum":0,"nullable":true},"annualRevenue":{"type":"number","minimum":0,"nullable":true},"foundedYear":{"type":"integer","minimum":1700,"maximum":2200,"nullable":true},"ownerUserId":{"type":"string","format":"uuid"},"parentAccountId":{"type":"string","nullable":true},"region":{"type":"string","maxLength":120,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"linkedinUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"twitterUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"facebookUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"billingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"billingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"billingCity":{"type":"string","maxLength":120,"nullable":true},"billingState":{"type":"string","maxLength":120,"nullable":true},"billingPostalCode":{"type":"string","maxLength":40,"nullable":true},"billingCountry":{"type":"string","maxLength":120,"nullable":true},"shippingSameAsBilling":{"type":"boolean"},"shippingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"shippingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"shippingCity":{"type":"string","maxLength":120,"nullable":true},"shippingState":{"type":"string","maxLength":120,"nullable":true},"shippingPostalCode":{"type":"string","maxLength":40,"nullable":true},"shippingCountry":{"type":"string","maxLength":120,"nullable":true},"arr":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"nextRenewalAt":{"type":"string","maxLength":40,"nullable":true},"npsScore":{"type":"integer","minimum":-100,"maximum":100,"nullable":true},"customerSince":{"type":"string","maxLength":40,"nullable":true},"taxId":{"type":"string","maxLength":60,"nullable":true},"vatNumber":{"type":"string","maxLength":60,"nullable":true},"healthScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"tickerSymbol":{"type":"string","maxLength":20,"nullable":true},"sicCode":{"type":"string","maxLength":20,"nullable":true},"naicsCode":{"type":"string","maxLength":20,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}}},"required":["name","tier","ownerUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/activities/{id}":{"get":{"summary":"View a activity","description":"View a activity","operationId":"get_api_v1_crm_activities_id","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["activity:read"]},{"cookieAuth":["activity:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a activity","description":"Update fields on a activity","operationId":"patch_api_v1_crm_activities_id","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["activity:update"]},{"cookieAuth":["activity:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["call","email","meeting","note","task"]},"contactId":{"type":"string","maxLength":64,"nullable":true},"leadId":{"type":"string","maxLength":64,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"dealId":{"type":"string","maxLength":64,"nullable":true},"date":{"type":"string","format":"date-time"},"summary":{"type":"string","minLength":1,"maxLength":20000},"subject":{"type":"string","maxLength":300,"nullable":true},"source":{"type":"string","maxLength":80,"nullable":true},"metadata":{"type":"object","additionalProperties":{}},"nextAction":{"type":"string","maxLength":2000,"nullable":true},"durationMinutes":{"type":"integer","minimum":0,"maximum":86400,"nullable":true},"outcome":{"type":"string","maxLength":2000,"nullable":true},"participants":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","maxLength":64},"email":{"type":"string","format":"email","maxLength":320},"name":{"type":"string","maxLength":200},"role":{"type":"string","maxLength":80}},"additionalProperties":true},"maxItems":200},"sentiment":{"type":"string","enum":["positive","neutral","negative"],"nullable":true},"aiSummary":{"type":"string","maxLength":5000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a activity","description":"Soft-delete a activity","operationId":"delete_api_v1_crm_activities_id","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["activity:delete"]},{"cookieAuth":["activity:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/activities/meta":{"get":{"summary":"View a activity","description":"View a activity","operationId":"get_api_v1_crm_activities_meta","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["activity:read"]},{"cookieAuth":["activity:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/activities":{"get":{"summary":"List activitys with filters and pagination","description":"List activitys with filters and pagination","operationId":"get_api_v1_crm_activities","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["call","email","meeting","note","task"]}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"leadId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"dealId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"sentiment","in":"query","required":false,"schema":{"type":"string","enum":["positive","neutral","negative"]}},{"name":"dateFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"dateTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"relatedToType","in":"query","required":false,"schema":{"type":"string","enum":["project","work_order","ict_provider"]}},{"name":"relatedToId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["activity:list"]},{"cookieAuth":["activity:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new activity","description":"Create a new activity","operationId":"post_api_v1_crm_activities","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["activity:create"]},{"cookieAuth":["activity:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["call","email","meeting","note","task"]},"contactId":{"type":"string","maxLength":64,"nullable":true},"leadId":{"type":"string","maxLength":64,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"dealId":{"type":"string","maxLength":64,"nullable":true},"date":{"type":"string","format":"date-time"},"summary":{"type":"string","minLength":1,"maxLength":20000},"subject":{"type":"string","maxLength":300,"nullable":true},"source":{"type":"string","maxLength":80,"nullable":true},"metadata":{"type":"object","additionalProperties":{}},"nextAction":{"type":"string","maxLength":2000,"nullable":true},"durationMinutes":{"type":"integer","minimum":0,"maximum":86400,"nullable":true},"outcome":{"type":"string","maxLength":2000,"nullable":true},"participants":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","maxLength":64},"email":{"type":"string","format":"email","maxLength":320},"name":{"type":"string","maxLength":200},"role":{"type":"string","maxLength":80}},"additionalProperties":true},"maxItems":200},"sentiment":{"type":"string","enum":["positive","neutral","negative"],"nullable":true},"aiSummary":{"type":"string","maxLength":5000,"nullable":true}},"required":["type","date","summary"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/business-cards/extractions":{"post":{"summary":"Extract fields from a business-card image (metered vision call)","description":"Extract fields from a business-card image (metered vision call)","operationId":"post_api_v1_crm_business_cards_extractions","tags":["business_card"],"x-surface":"data","x-entity":"business_card","x-action":"extract","x-idempotent":false,"security":[{"bearerAuth":["business_card:extract"]},{"cookieAuth":["business_card:extract"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"imageBase64":{"type":"string","minLength":4},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]},"filename":{"type":"string","maxLength":255},"entryPoint":{"type":"string","enum":["leads","customers","contacts"]}},"required":["imageBase64","mimeType","entryPoint"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/business-cards":{"post":{"summary":"Create lead / account + contact records from a staged business-card extraction","description":"Create lead / account + contact records from a staged business-card extraction","operationId":"post_api_v1_crm_business_cards","tags":["business_card"],"x-surface":"data","x-entity":"business_card","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["business_card:create"]},{"cookieAuth":["business_card:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"extractionId":{"type":"string","format":"uuid"},"destination":{"type":"string","enum":["lead","business_contact"]},"fields":{"type":"object","properties":{"firstName":{"type":"string","maxLength":500,"nullable":true},"lastName":{"type":"string","maxLength":500,"nullable":true},"jobTitle":{"type":"string","maxLength":500,"nullable":true},"company":{"type":"string","maxLength":500,"nullable":true},"email":{"type":"string","format":"email","maxLength":320,"nullable":true},"phone":{"type":"string","maxLength":500,"nullable":true},"mobile":{"type":"string","maxLength":500,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"addressLine1":{"type":"string","maxLength":500,"nullable":true},"addressLine2":{"type":"string","maxLength":500,"nullable":true},"city":{"type":"string","maxLength":500,"nullable":true},"state":{"type":"string","maxLength":500,"nullable":true},"postalCode":{"type":"string","maxLength":500,"nullable":true},"country":{"type":"string","maxLength":500,"nullable":true}},"required":["firstName","lastName","jobTitle","company","email","phone","mobile","addressLine1","addressLine2","city","state","postalCode","country"],"additionalProperties":false},"duplicateChoice":{"type":"object","properties":{"business":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false},"contact":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false},"lead":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false}},"additionalProperties":false},"logo":{"type":"object","properties":{"imageBase64":{"type":"string","minLength":4},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]}},"required":["imageBase64","mimeType"],"additionalProperties":false,"nullable":true},"confirm":{"type":"boolean","enum":[true]}},"required":["extractionId","destination","fields","confirm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/{id}/picture":{"post":{"summary":"Update fields on a contact","description":"Update fields on a contact","operationId":"post_api_v1_crm_contacts_id_picture","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:update"]},{"cookieAuth":["contact:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a contact","description":"Update fields on a contact","operationId":"delete_api_v1_crm_contacts_id_picture","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:update"]},{"cookieAuth":["contact:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/{id}/portal":{"post":{"summary":"Update fields on a contact","description":"Update fields on a contact","operationId":"post_api_v1_crm_contacts_id_portal","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:update"]},{"cookieAuth":["contact:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a contact","description":"Update fields on a contact","operationId":"delete_api_v1_crm_contacts_id_portal","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:update"]},{"cookieAuth":["contact:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/{id}":{"get":{"summary":"View a contact","description":"View a contact","operationId":"get_api_v1_crm_contacts_id","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:read"]},{"cookieAuth":["contact:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a contact","description":"Update fields on a contact","operationId":"patch_api_v1_crm_contacts_id","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:update"]},{"cookieAuth":["contact:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"ownerUserId":{"type":"string","format":"uuid","nullable":true},"salutation":{"type":"string","maxLength":20,"nullable":true},"firstName":{"type":"string","minLength":1,"maxLength":100},"middleName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","minLength":1,"maxLength":100},"suffix":{"type":"string","maxLength":20,"nullable":true},"preferredName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","format":"email","maxLength":254},"secondaryEmail":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"mobilePhone":{"type":"string","maxLength":40,"nullable":true},"homePhone":{"type":"string","maxLength":40,"nullable":true},"fax":{"type":"string","maxLength":40,"nullable":true},"title":{"type":"string","maxLength":120,"nullable":true},"department":{"type":"string","maxLength":80,"nullable":true},"reportsToId":{"type":"string","nullable":true},"role":{"type":"string","enum":["decision_maker","influencer","champion","economic_buyer","technical_buyer","end_user","gatekeeper"],"nullable":true},"preferredContactMethod":{"type":"string","enum":["email","phone","sms","linkedin"],"nullable":true},"preferredLanguage":{"type":"string","maxLength":10,"nullable":true},"timeZone":{"type":"string","maxLength":50,"nullable":true},"linkedinUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"twitterUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"pictureUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"pictureShape":{"type":"string","enum":["square","circular","rectangular"]},"pictureZoom":{"type":"number","minimum":0.5,"maximum":3,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"mailingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"mailingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"mailingCity":{"type":"string","maxLength":120,"nullable":true},"mailingState":{"type":"string","maxLength":120,"nullable":true},"mailingPostalCode":{"type":"string","maxLength":40,"nullable":true},"mailingCountry":{"type":"string","maxLength":120,"nullable":true},"birthday":{"type":"string","maxLength":20,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"leadSource":{"type":"string","maxLength":80,"nullable":true},"lifecycleStage":{"type":"string","maxLength":40,"nullable":true},"buyerPersona":{"type":"string","maxLength":80,"nullable":true},"isPrimary":{"type":"boolean"},"isChampion":{"type":"boolean"},"portalAccess":{"type":"boolean"},"emailOptOut":{"type":"boolean"},"doNotCall":{"type":"boolean"},"smsOptOut":{"type":"boolean"},"marketingOptIn":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"bio":{"type":"string","maxLength":2000,"nullable":true},"seniority":{"type":"string","maxLength":80,"nullable":true},"function":{"type":"string","maxLength":80,"nullable":true},"location":{"type":"string","maxLength":200,"nullable":true},"decisionMakerScore":{"type":"integer","minimum":0,"maximum":100,"nullable":true},"expertise":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a contact","description":"Soft-delete a contact","operationId":"delete_api_v1_crm_contacts_id","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:delete"]},{"cookieAuth":["contact:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/duplicate-checks":{"post":{"summary":"View a contact","description":"View a contact","operationId":"post_api_v1_crm_contacts_duplicate_checks","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["contact:read"]},{"cookieAuth":["contact:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/export":{"get":{"summary":"Export contacts","description":"Export contacts","operationId":"get_api_v1_crm_contacts_export","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"export","x-idempotent":false,"security":[{"bearerAuth":["contact:export"]},{"cookieAuth":["contact:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/imports/{jobId}/commit":{"post":{"summary":"Import contacts","description":"Import contacts","operationId":"post_api_v1_crm_contacts_imports_jobId_commit","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["contact:import"]},{"cookieAuth":["contact:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/imports/{jobId}/review":{"post":{"summary":"Import contacts","description":"Import contacts","operationId":"post_api_v1_crm_contacts_imports_jobId_review","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["contact:import"]},{"cookieAuth":["contact:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["ignore"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["field"]},"field":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["udf"]},"field":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":80},"coerce":{"type":"string","enum":["select","multiselect"]}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["reference"]},"field":{"type":"string","minLength":1,"maxLength":120},"resolveBy":{"type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"}},"required":["kind","field","resolveBy"],"additionalProperties":false}]}},"matchOn":{"type":"string","minLength":1}},"required":["mapping","matchOn"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/imports":{"post":{"summary":"Import contacts","description":"Import contacts","operationId":"post_api_v1_crm_contacts_imports","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["contact:import"]},{"cookieAuth":["contact:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/list-columns":{"put":{"summary":"View a contact","description":"View a contact","operationId":"put_api_v1_crm_contacts_list_columns","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:read"]},{"cookieAuth":["contact:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":100}},"required":["columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts/meta":{"get":{"summary":"View a contact","description":"View a contact","operationId":"get_api_v1_crm_contacts_meta","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["contact:read"]},{"cookieAuth":["contact:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/contacts":{"get":{"summary":"List contacts with filters and pagination","description":"List contacts with filters and pagination","operationId":"get_api_v1_crm_contacts","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"accountIds","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"role","in":"query","required":false,"schema":{"type":"string","enum":["decision_maker","influencer","champion","economic_buyer","technical_buyer","end_user","gatekeeper"]}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["contact:list"]},{"cookieAuth":["contact:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new contact","description":"Create a new contact","operationId":"post_api_v1_crm_contacts","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contact:create"]},{"cookieAuth":["contact:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"ownerUserId":{"type":"string","format":"uuid","nullable":true},"salutation":{"type":"string","maxLength":20,"nullable":true},"firstName":{"type":"string","minLength":1,"maxLength":100},"middleName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","minLength":1,"maxLength":100},"suffix":{"type":"string","maxLength":20,"nullable":true},"preferredName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","format":"email","maxLength":254},"secondaryEmail":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"mobilePhone":{"type":"string","maxLength":40,"nullable":true},"homePhone":{"type":"string","maxLength":40,"nullable":true},"fax":{"type":"string","maxLength":40,"nullable":true},"title":{"type":"string","maxLength":120,"nullable":true},"department":{"type":"string","maxLength":80,"nullable":true},"reportsToId":{"type":"string","nullable":true},"role":{"type":"string","enum":["decision_maker","influencer","champion","economic_buyer","technical_buyer","end_user","gatekeeper"],"nullable":true},"preferredContactMethod":{"type":"string","enum":["email","phone","sms","linkedin"],"nullable":true},"preferredLanguage":{"type":"string","maxLength":10,"nullable":true},"timeZone":{"type":"string","maxLength":50,"nullable":true},"linkedinUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"twitterUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"pictureUrl":{"type":"string","format":"uri","maxLength":2048,"nullable":true},"pictureShape":{"type":"string","enum":["square","circular","rectangular"]},"pictureZoom":{"type":"number","minimum":0.5,"maximum":3,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"mailingAddressLine1":{"type":"string","maxLength":200,"nullable":true},"mailingAddressLine2":{"type":"string","maxLength":200,"nullable":true},"mailingCity":{"type":"string","maxLength":120,"nullable":true},"mailingState":{"type":"string","maxLength":120,"nullable":true},"mailingPostalCode":{"type":"string","maxLength":40,"nullable":true},"mailingCountry":{"type":"string","maxLength":120,"nullable":true},"birthday":{"type":"string","maxLength":20,"nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"leadSource":{"type":"string","maxLength":80,"nullable":true},"lifecycleStage":{"type":"string","maxLength":40,"nullable":true},"buyerPersona":{"type":"string","maxLength":80,"nullable":true},"isPrimary":{"type":"boolean"},"isChampion":{"type":"boolean"},"portalAccess":{"type":"boolean"},"emailOptOut":{"type":"boolean"},"doNotCall":{"type":"boolean"},"smsOptOut":{"type":"boolean"},"marketingOptIn":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"bio":{"type":"string","maxLength":2000,"nullable":true},"seniority":{"type":"string","maxLength":80,"nullable":true},"function":{"type":"string","maxLength":80,"nullable":true},"location":{"type":"string","maxLength":200,"nullable":true},"decisionMakerScore":{"type":"integer","minimum":0,"maximum":100,"nullable":true},"expertise":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50,"nullable":true}},"required":["accountId","firstName","lastName","email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/ai-analysis":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_ai_analysis","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Run AI deal analysis for a deal (metered LLM call)","description":"Run AI deal analysis for a deal (metered LLM call)","operationId":"post_api_v1_crm_deals_id_ai_analysis","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"analyze","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:analyze"]},{"cookieAuth":["deal:analyze"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["linked_evidence"]},"includeConnected":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/fulfill":{"post":{"summary":"Close as won","description":"Close as won","operationId":"post_api_v1_crm_deals_id_fulfill","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"fulfill","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:fulfill"]},{"cookieAuth":["deal:fulfill"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"closeReason":{"type":"string","maxLength":2000},"generateInvoice":{"type":"boolean"},"createProject":{"type":"boolean"},"action":{"type":"string","maxLength":60}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/inventory-check":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_inventory_check","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/line-items/{lineId}":{"delete":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"delete_api_v1_crm_deals_id_line_items_lineId","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/line-items":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_line_items","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"post_api_v1_crm_deals_id_line_items","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","maxLength":64,"nullable":true},"name":{"type":"string","minLength":1,"maxLength":300},"sku":{"type":"string","maxLength":80,"nullable":true},"kind":{"type":"string","enum":["product","service","subscription"],"nullable":true},"description":{"type":"string","maxLength":4000,"nullable":true},"quantity":{"type":"number","minimum":0,"maximum":1000000},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"unitLabel":{"type":"string","maxLength":40,"nullable":true},"currency":{"type":"string","maxLength":3},"discountPercent":{"type":"number","minimum":0,"maximum":100},"taxRatePercent":{"type":"number","minimum":0,"maximum":100},"billingMode":{"type":"string","enum":["one_time","subscription","hybrid"]},"subscriptionBillingFrequency":{"type":"string","enum":["monthly","quarterly","semi_annual","annual","biennial"],"nullable":true},"subscriptionTermMonths":{"type":"integer","minimum":0,"maximum":120,"nullable":true},"paymentSchedule":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"percent":{"type":"number","minimum":0,"maximum":100},"trigger":{"type":"string","maxLength":60},"due_days_after":{"type":"integer","minimum":0,"maximum":3650}},"required":["label","percent"],"additionalProperties":true},"maxItems":50},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["name","unitPrice"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/participants/{participantId}":{"delete":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"delete_api_v1_crm_deals_id_participants_participantId","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"participantId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/participants":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_participants","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"post_api_v1_crm_deals_id_participants","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","minLength":1,"maxLength":64},"role":{"type":"string","maxLength":80,"nullable":true}},"required":["contactId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/presentation":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_presentation","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"View a deal","description":"View a deal","operationId":"post_api_v1_crm_deals_id_presentation","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"include":{"type":"array","items":{"type":"string","enum":["scope","quote"]},"minItems":1},"introductionHtml":{"type":"string","maxLength":200000}},"required":["include"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/quotes/{quoteId}":{"put":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"put_api_v1_crm_deals_id_quotes_quoteId","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"quoteId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"delete_api_v1_crm_deals_id_quotes_quoteId","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"quoteId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/quotes/primary":{"put":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"put_api_v1_crm_deals_id_quotes_primary","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quoteId":{"type":"string","minLength":1,"maxLength":64}},"required":["quoteId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/quotes":{"get":{"summary":"List quotes with filters and pagination","description":"List quotes with filters and pagination","operationId":"get_api_v1_crm_deals_id_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"list","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:list"]},{"cookieAuth":["quote:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new quote","description":"Create a new quote","operationId":"post_api_v1_crm_deals_id_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"create","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:create"]},{"cookieAuth":["quote:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"type":"object","properties":{"billToAccountId":{"type":"string","format":"uuid"}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/related-accounts/{accountAssocId}":{"delete":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"delete_api_v1_crm_deals_id_related_accounts_accountAssocId","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"accountAssocId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/related-accounts":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_related_accounts","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"post_api_v1_crm_deals_id_related_accounts","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"relationship":{"type":"string","maxLength":80,"nullable":true}},"required":["accountId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"patch_api_v1_crm_deals_id","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"accountIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":50},"participantContactIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":100},"primaryContactId":{"type":"string","nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000,"nullable":true},"dealType":{"type":"string","enum":["new_business","existing_business","renewal","upgrade","downgrade","expansion"]},"leadSource":{"type":"string","maxLength":80,"nullable":true},"stage":{"type":"string","minLength":1,"maxLength":60},"probability":{"type":"number","minimum":0,"maximum":100},"forecastCategory":{"type":"string","enum":["omitted","pipeline","best_case","commit","closed"]},"closeDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"nextStep":{"type":"string","maxLength":500,"nullable":true},"amount":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"priority":{"type":"string","enum":["low","normal","high","urgent"],"nullable":true},"estimatedHours":{"type":"number","minimum":0,"maximum":9999999999.99},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"ownerUserId":{"type":"string","format":"uuid","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"campaignId":{"type":"string","maxLength":64,"nullable":true},"campaignName":{"type":"string","maxLength":200,"nullable":true},"partnerId":{"type":"string","maxLength":64,"nullable":true},"partnerName":{"type":"string","maxLength":200,"nullable":true},"region":{"type":"string","maxLength":120,"nullable":true},"discountPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"taxPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"contractLengthMonths":{"type":"integer","minimum":0,"maximum":600,"nullable":true},"billingFrequency":{"type":"string","maxLength":40,"nullable":true},"revenueModel":{"type":"string","enum":["one_time","recurring"],"nullable":true},"contractStartDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"contractEndDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"isRenewal":{"type":"boolean"},"budgetConfirmed":{"type":"boolean"},"authorityIdentified":{"type":"boolean"},"needIdentified":{"type":"boolean"},"timelineConfirmed":{"type":"boolean"},"decisionCriteria":{"type":"string","maxLength":2000,"nullable":true},"decisionProcess":{"type":"string","maxLength":2000,"nullable":true},"championContactId":{"type":"string","nullable":true},"economicBuyerContactId":{"type":"string","nullable":true},"vendorIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"ownerIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":20},"commissionRateOverride":{"type":"number","minimum":0,"maximum":100,"nullable":true},"commissionFixedAmount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"competitors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"threat":{"type":"string","maxLength":20},"threat_level":{"type":"string","maxLength":20}},"required":["name"],"additionalProperties":true},"maxItems":50},"commissionSplits":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","maxLength":64},"role":{"type":"string","maxLength":40},"percentage":{"type":"number","minimum":0,"maximum":100},"fixedAmount":{"type":"number"},"note":{"type":"string","maxLength":500}},"required":["userId"],"additionalProperties":true},"maxItems":50},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"referenceNo":{"type":"string","minLength":1,"maxLength":120}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a deal","description":"Soft-delete a deal","operationId":"delete_api_v1_crm_deals_id","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:delete"]},{"cookieAuth":["deal:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/scope-terms":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_id_scope_terms","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"put_api_v1_crm_deals_id_scope_terms","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sections":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":160},"html":{"type":"string","maxLength":200000,"default":""},"enabled":{"type":"boolean","default":true}},"required":["key","title"],"additionalProperties":false},"maxItems":40}},"required":["sections"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/sow":{"post":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"post_api_v1_crm_deals_id_sow","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"templateId":{"type":"string","maxLength":64},"title":{"type":"string","maxLength":300},"validUntilDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/stage-history/meta":{"get":{"summary":"Read field schema for stage transition history (/meta)","description":"Read field schema for stage transition history (/meta)","operationId":"get_api_v1_crm_deals_id_stage_history_meta","tags":["deal_stage_history"],"x-surface":"data","x-entity":"deal_stage_history","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["deal_stage_history:read"]},{"cookieAuth":["deal_stage_history:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/stage-history":{"get":{"summary":"List stage transition history for a deal","description":"List stage transition history for a deal","operationId":"get_api_v1_crm_deals_id_stage_history","tags":["deal_stage_history"],"x-surface":"data","x-entity":"deal_stage_history","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["deal_stage_history:list"]},{"cookieAuth":["deal_stage_history:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/{id}/transition":{"post":{"summary":"Move deal through pipeline stages","description":"Move deal through pipeline stages","operationId":"post_api_v1_crm_deals_id_transition","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"transition","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:transition"]},{"cookieAuth":["deal:transition"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stage":{"type":"string","minLength":1,"maxLength":120},"reason":{"type":"string","maxLength":500},"winLossDetail":{"type":"string","maxLength":2000},"previousStage":{"type":"string","maxLength":120},"winLossReason":{"type":"string"}},"required":["stage"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/bulk":{"post":{"summary":"Bulk update deals","description":"Bulk update deals","operationId":"post_api_v1_crm_deals_bulk","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"bulk_update","x-idempotent":false,"security":[{"bearerAuth":["deal:bulk_update"]},{"cookieAuth":["deal:bulk_update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["stage","assign","forecast","delete"]},"ids":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":200},"value":{"type":"string","maxLength":200,"default":""}},"required":["action","ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/imports/{jobId}/commit":{"post":{"summary":"Import deals","description":"Import deals","operationId":"post_api_v1_crm_deals_imports_jobId_commit","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["deal:import"]},{"cookieAuth":["deal:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/imports/{jobId}/review":{"post":{"summary":"Import deals","description":"Import deals","operationId":"post_api_v1_crm_deals_imports_jobId_review","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["deal:import"]},{"cookieAuth":["deal:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["ignore"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["field"]},"field":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["udf"]},"field":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":80},"coerce":{"type":"string","enum":["select","multiselect"]}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["reference"]},"field":{"type":"string","minLength":1,"maxLength":120},"resolveBy":{"type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"}},"required":["kind","field","resolveBy"],"additionalProperties":false}]}},"matchOn":{"type":"string","minLength":1}},"required":["mapping","matchOn"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/imports":{"post":{"summary":"Import deals","description":"Import deals","operationId":"post_api_v1_crm_deals_imports","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["deal:import"]},{"cookieAuth":["deal:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/list-columns":{"put":{"summary":"View a deal","description":"View a deal","operationId":"put_api_v1_crm_deals_list_columns","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":100}},"required":["columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/meta":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_meta","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":false,"parameters":[{"name":"recordType","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals":{"get":{"summary":"List deals with filters and pagination","description":"List deals with filters and pagination","operationId":"get_api_v1_crm_deals","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string"}},{"name":"excludeContactId","in":"query","required":false,"schema":{"type":"string"}},{"name":"leadId","in":"query","required":false,"schema":{"type":"string"}},{"name":"stage","in":"query","required":false,"schema":{"type":"string"}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"forecastCategory","in":"query","required":false,"schema":{"type":"string","enum":["omitted","pipeline","best_case","commit","closed"]}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"campaignId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"partnerId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"minAmount","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"maxAmount","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"closeAfter","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"closeBefore","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["deal:list"]},{"cookieAuth":["deal:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new deal","description":"Create a new deal","operationId":"post_api_v1_crm_deals","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:create"]},{"cookieAuth":["deal:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"accountIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":50},"participantContactIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":100},"primaryContactId":{"type":"string","nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000,"nullable":true},"dealType":{"type":"string","enum":["new_business","existing_business","renewal","upgrade","downgrade","expansion"]},"leadSource":{"type":"string","maxLength":80,"nullable":true},"stage":{"type":"string","minLength":1,"maxLength":60},"probability":{"type":"number","minimum":0,"maximum":100},"forecastCategory":{"type":"string","enum":["omitted","pipeline","best_case","commit","closed"]},"closeDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"nextStep":{"type":"string","maxLength":500,"nullable":true},"amount":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"priority":{"type":"string","enum":["low","normal","high","urgent"],"nullable":true},"estimatedHours":{"type":"number","minimum":0,"maximum":9999999999.99},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"ownerUserId":{"type":"string","format":"uuid","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"campaignId":{"type":"string","maxLength":64,"nullable":true},"campaignName":{"type":"string","maxLength":200,"nullable":true},"partnerId":{"type":"string","maxLength":64,"nullable":true},"partnerName":{"type":"string","maxLength":200,"nullable":true},"region":{"type":"string","maxLength":120,"nullable":true},"discountPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"taxPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"contractLengthMonths":{"type":"integer","minimum":0,"maximum":600,"nullable":true},"billingFrequency":{"type":"string","maxLength":40,"nullable":true},"revenueModel":{"type":"string","enum":["one_time","recurring"],"nullable":true},"contractStartDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"contractEndDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"isRenewal":{"type":"boolean"},"budgetConfirmed":{"type":"boolean"},"authorityIdentified":{"type":"boolean"},"needIdentified":{"type":"boolean"},"timelineConfirmed":{"type":"boolean"},"decisionCriteria":{"type":"string","maxLength":2000,"nullable":true},"decisionProcess":{"type":"string","maxLength":2000,"nullable":true},"championContactId":{"type":"string","nullable":true},"economicBuyerContactId":{"type":"string","nullable":true},"vendorIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"ownerIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":20},"commissionRateOverride":{"type":"number","minimum":0,"maximum":100,"nullable":true},"commissionFixedAmount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"competitors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"threat":{"type":"string","maxLength":20},"threat_level":{"type":"string","maxLength":20}},"required":["name"],"additionalProperties":true},"maxItems":50},"commissionSplits":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","maxLength":64},"role":{"type":"string","maxLength":40},"percentage":{"type":"number","minimum":0,"maximum":100},"fixedAmount":{"type":"number"},"note":{"type":"string","maxLength":500}},"required":["userId"],"additionalProperties":true},"maxItems":50},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"referenceNo":{"type":"string","minLength":1,"maxLength":120}},"required":["accountId","name","stage","closeDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/deals/scope-terms-defaults":{"get":{"summary":"View a deal","description":"View a deal","operationId":"get_api_v1_crm_deals_scope_terms_defaults","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:read"]},{"cookieAuth":["deal:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a deal","description":"Update fields on a deal","operationId":"put_api_v1_crm_deals_scope_terms_defaults","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["deal:update"]},{"cookieAuth":["deal:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":160},"html":{"type":"string","maxLength":200000,"default":""},"enabled":{"type":"boolean","default":true}},"required":["key","title"],"additionalProperties":false},"maxItems":40},"perPipeline":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":160},"html":{"type":"string","maxLength":200000,"default":""},"enabled":{"type":"boolean","default":true}},"required":["key","title"],"additionalProperties":false},"maxItems":40}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/forecasts/{id}":{"get":{"summary":"View a forecast","description":"View a forecast","operationId":"get_api_v1_crm_forecasts_id","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["forecast:read"]},{"cookieAuth":["forecast:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a forecast","description":"Update fields on a forecast","operationId":"patch_api_v1_crm_forecasts_id","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["forecast:update"]},{"cookieAuth":["forecast:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string","maxLength":40},"ownerId":{"type":"string","maxLength":80},"bestCase":{"type":"number","minimum":0},"commit":{"type":"number","minimum":0},"pipeline":{"type":"number","minimum":0},"closed":{"type":"number","minimum":0},"aiPredicted":{"type":"number","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a forecast","description":"Soft-delete a forecast","operationId":"delete_api_v1_crm_forecasts_id","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["forecast:delete"]},{"cookieAuth":["forecast:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/forecasts/meta":{"get":{"summary":"View a forecast","description":"View a forecast","operationId":"get_api_v1_crm_forecasts_meta","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["forecast:read"]},{"cookieAuth":["forecast:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/forecasts":{"get":{"summary":"List forecasts with filters and pagination","description":"List forecasts with filters and pagination","operationId":"get_api_v1_crm_forecasts","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"ownerId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"period","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["forecast:list"]},{"cookieAuth":["forecast:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new forecast","description":"Create a new forecast","operationId":"post_api_v1_crm_forecasts","tags":["forecast"],"x-surface":"data","x-entity":"forecast","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["forecast:create"]},{"cookieAuth":["forecast:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string","maxLength":40,"minLength":1},"ownerId":{"type":"string","maxLength":80,"minLength":1},"bestCase":{"type":"number","minimum":0},"commit":{"type":"number","minimum":0},"pipeline":{"type":"number","minimum":0},"closed":{"type":"number","minimum":0},"aiPredicted":{"type":"number","nullable":true}},"required":["period","ownerId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/inbound-calls/{id}/accept":{"post":{"summary":"Accept a pending inbound call and create the BOT activity + tasks","description":"Accept a pending inbound call and create the BOT activity + tasks","operationId":"post_api_v1_crm_inbound_calls_id_accept","tags":["inbound_call"],"x-surface":"data","x-entity":"inbound_call","x-action":"accept","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inbound_call:accept"]},{"cookieAuth":["inbound_call:accept"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attachToType":{"type":"string","enum":["account","contact","deal","project","work_order"]},"attachToId":{"type":"string","format":"uuid"},"acceptedActionItems":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","minLength":1,"maxLength":500},"details":{"type":"string","maxLength":2000},"assignedTo":{"type":"string","maxLength":200},"assigneeContactId":{"type":"string","format":"uuid"},"dueDate":{"type":"string","format":"date-time"},"priority":{"type":"string","enum":["low","normal","high","urgent"]}},"required":["action"],"additionalProperties":false},"maxItems":100,"default":[]},"hubIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"addToPersonalHub":{"type":"boolean","default":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/inbound-calls/{id}/reject":{"post":{"summary":"Reject a pending inbound call","description":"Reject a pending inbound call","operationId":"post_api_v1_crm_inbound_calls_id_reject","tags":["inbound_call"],"x-surface":"data","x-entity":"inbound_call","x-action":"reject","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inbound_call:reject"]},{"cookieAuth":["inbound_call:reject"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/inbound-calls/{id}":{"get":{"summary":"View a inbound_call","description":"View a inbound_call","operationId":"get_api_v1_crm_inbound_calls_id","tags":["inbound_call"],"x-surface":"data","x-entity":"inbound_call","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["inbound_call:read"]},{"cookieAuth":["inbound_call:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/inbound-calls":{"get":{"summary":"List inbound_calls with filters and pagination","description":"List inbound_calls with filters and pagination","operationId":"get_api_v1_crm_inbound_calls","tags":["inbound_call"],"x-surface":"data","x-entity":"inbound_call","x-action":"list","x-idempotent":false,"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","accepted","rejected"]}},{"name":"source","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"occurredFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"occurredTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["inbound_call:list"]},{"cookieAuth":["inbound_call:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new inbound_call","description":"Create a new inbound_call","operationId":"post_api_v1_crm_inbound_calls","tags":["inbound_call"],"x-surface":"data","x-entity":"inbound_call","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inbound_call:create"]},{"cookieAuth":["inbound_call:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"occurredAt":{"type":"string","format":"date-time"},"attendees":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":320}},"additionalProperties":false},"maxItems":100},"transcriptMarkdown":{"type":"string","maxLength":500000},"summaryMarkdown":{"type":"string","maxLength":50000},"decisions":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1000},"maxItems":100},"actionItems":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","minLength":1,"maxLength":500},"details":{"type":"string","maxLength":2000},"owner":{"type":"string","maxLength":200},"dueDate":{"type":"string","format":"date-time"}},"required":["action"],"additionalProperties":false},"maxItems":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/{runId}/complete":{"post":{"summary":"Mark a reviewed run as completed","description":"Mark a reviewed run as completed","operationId":"post_api_v1_crm_lead_find_runs_runId_complete","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"complete","x-idempotent":true,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["lead_find_run:complete"]},{"cookieAuth":["lead_find_run:complete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/{runId}/contacts/{contactId}/accept":{"post":{"summary":"Create a new lead","description":"Create a new lead","operationId":"post_api_v1_crm_lead_find_runs_runId_contacts_contactId_accept","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"create","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead:create"]},{"cookieAuth":["lead:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decidedLogoUrl":{"type":"string","format":"uri","nullable":true},"decidedPictureUrl":{"type":"string","format":"uri","nullable":true},"overrides":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":200},"email":{"type":"string","format":"email"},"phone":{"type":"string","maxLength":40},"linkedinUrl":{"type":"string","format":"uri","nullable":true}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/{runId}/contacts/{contactId}/discard":{"post":{"summary":"View a lead-find run with its candidates","description":"View a lead-find run with its candidates","operationId":"post_api_v1_crm_lead_find_runs_runId_contacts_contactId_discard","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/{runId}/retry":{"post":{"summary":"Re-queue a failed lead-find run","description":"Re-queue a failed lead-find run","operationId":"post_api_v1_crm_lead_find_runs_runId_retry","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"retry","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:retry"]},{"cookieAuth":["lead_find_run:retry"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/{runId}":{"get":{"summary":"View a lead-find run with its candidates","description":"View a lead-find run with its candidates","operationId":"get_api_v1_crm_lead_find_runs_runId","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a lead-find run (does not delete accepted leads)","description":"Delete a lead-find run (does not delete accepted leads)","operationId":"delete_api_v1_crm_lead_find_runs_runId","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"delete","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:delete"]},{"cookieAuth":["lead_find_run:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs/meta":{"get":{"summary":"View a lead-find run with its candidates","description":"View a lead-find run with its candidates","operationId":"get_api_v1_crm_lead_find_runs_meta","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/lead-find-runs":{"get":{"summary":"List lead-find runs","description":"List lead-find runs","operationId":"get_api_v1_crm_lead_find_runs","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"list","x-idempotent":false,"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","fetching","review","completed","failed"]}},{"name":"createdBy","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["lead_find_run:list"]},{"cookieAuth":["lead_find_run:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Start a new lead-find run","description":"Start a new lead-find run","operationId":"post_api_v1_crm_lead_find_runs","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["lead_find_run:create"]},{"cookieAuth":["lead_find_run:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"criteria":{"type":"object","properties":{"query":{"type":"string","minLength":15,"maxLength":2000},"industry":{"type":"string","maxLength":120},"region":{"type":"string","maxLength":120},"minEmployees":{"type":"integer","minimum":0,"maximum":1000000},"maxEmployees":{"type":"integer","minimum":0,"maximum":1000000},"locale":{"type":"string","maxLength":10}},"required":["query"],"additionalProperties":false},"requestedCount":{"type":"integer","minimum":1,"maximum":20},"autoInsert":{"type":"boolean","default":false}},"required":["criteria","requestedCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/{id}/convert":{"post":{"summary":"Convert lead to account+contact+deal","description":"Convert lead to account+contact+deal","operationId":"post_api_v1_crm_leads_id_convert","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"convert","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["lead:convert"]},{"cookieAuth":["lead:convert"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"createAccount":{"type":"boolean"},"createDeal":{"type":"boolean"},"dealName":{"type":"string","maxLength":300},"dealAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"targetAccountId":{"type":"string","maxLength":64},"acknowledgeNoConsent":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/{id}":{"get":{"summary":"View a lead","description":"View a lead","operationId":"get_api_v1_crm_leads_id","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["lead:read"]},{"cookieAuth":["lead:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a lead","description":"Update fields on a lead","operationId":"patch_api_v1_crm_leads_id","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["lead:update"]},{"cookieAuth":["lead:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"pattern":"^[+0-9 .()\\-x]*$","nullable":true},"company":{"type":"string","maxLength":200,"nullable":true},"source":{"type":"string","enum":["website","referral","campaign","event","outbound","partner","CaptivaHQ","other"],"nullable":true},"status":{"type":"string","enum":["new","contacted","qualifying","qualified","mql","sql","converted","disqualified"],"nullable":true},"score":{"type":"integer","minimum":0,"maximum":100,"nullable":true},"assignedTo":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"consentEmail":{"type":"boolean"},"consentSms":{"type":"boolean"},"consentCall":{"type":"boolean"},"consentSource":{"type":"string","maxLength":120,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"salutation":{"type":"string","maxLength":40,"nullable":true},"mobile":{"type":"string","maxLength":40,"pattern":"^[+0-9 .()\\-x]*$","nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"rating":{"type":"string","enum":["hot","warm","cold"],"nullable":true},"title":{"type":"string","maxLength":150,"nullable":true},"website":{"type":"string","maxLength":300,"nullable":true},"industry":{"type":"string","maxLength":120,"nullable":true},"annualRevenue":{"type":"number","minimum":0,"maximum":9999999999999,"nullable":true},"employeeCount":{"type":"integer","minimum":0,"maximum":10000000,"nullable":true},"addressLine1":{"type":"string","maxLength":200,"nullable":true},"addressLine2":{"type":"string","maxLength":200,"nullable":true},"city":{"type":"string","maxLength":120,"nullable":true},"state":{"type":"string","maxLength":120,"nullable":true},"postalCode":{"type":"string","maxLength":40,"nullable":true},"country":{"type":"string","maxLength":120,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"campaignId":{"type":"string","maxLength":64,"nullable":true},"estimatedValue":{"type":"number","minimum":0,"maximum":9999999999999,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"expectedCloseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a lead","description":"Soft-delete a lead","operationId":"delete_api_v1_crm_leads_id","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["lead:delete"]},{"cookieAuth":["lead:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/duplicate-checks":{"post":{"summary":"View a lead","description":"View a lead","operationId":"post_api_v1_crm_leads_duplicate_checks","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["lead:read"]},{"cookieAuth":["lead:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"company":{"type":"string","maxLength":200,"nullable":true},"email":{"type":"string","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/export":{"get":{"summary":"Export leads","description":"Export leads","operationId":"get_api_v1_crm_leads_export","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"export","x-idempotent":false,"security":[{"bearerAuth":["lead:export"]},{"cookieAuth":["lead:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/imports/{jobId}/commit":{"post":{"summary":"Import leads","description":"Import leads","operationId":"post_api_v1_crm_leads_imports_jobId_commit","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/imports/{jobId}/review":{"post":{"summary":"Import leads","description":"Import leads","operationId":"post_api_v1_crm_leads_imports_jobId_review","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","pattern":"^imp_[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["ignore"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["field"]},"field":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["udf"]},"field":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":80},"coerce":{"type":"string","enum":["select","multiselect"]}},"required":["kind","field"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["reference"]},"field":{"type":"string","minLength":1,"maxLength":120},"resolveBy":{"type":"string","pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"}},"required":["kind","field","resolveBy"],"additionalProperties":false}]}},"matchOn":{"type":"string","minLength":1}},"required":["mapping","matchOn"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/imports":{"post":{"summary":"Import leads","description":"Import leads","operationId":"post_api_v1_crm_leads_imports","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/list-columns":{"put":{"summary":"View a lead","description":"View a lead","operationId":"put_api_v1_crm_leads_list_columns","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["lead:read"]},{"cookieAuth":["lead:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":100}},"required":["columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads/meta":{"get":{"summary":"View a lead","description":"View a lead","operationId":"get_api_v1_crm_leads_meta","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["lead:read"]},{"cookieAuth":["lead:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/leads":{"get":{"summary":"List leads with filters and pagination","description":"List leads with filters and pagination","operationId":"get_api_v1_crm_leads","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["new","contacted","qualifying","qualified","mql","sql","converted","disqualified"]}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["website","referral","campaign","event","outbound","partner","CaptivaHQ","other"]}},{"name":"assignedTo","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"minScore","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100}},{"name":"maxScore","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100}}],"security":[{"bearerAuth":["lead:list"]},{"cookieAuth":["lead:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new lead","description":"Create a new lead","operationId":"post_api_v1_crm_leads","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["lead:create"]},{"cookieAuth":["lead:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","format":"email","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"pattern":"^[+0-9 .()\\-x]*$","nullable":true},"company":{"type":"string","maxLength":200,"nullable":true},"source":{"type":"string","enum":["website","referral","campaign","event","outbound","partner","CaptivaHQ","other"],"nullable":true},"status":{"type":"string","enum":["new","contacted","qualifying","qualified","mql","sql","converted","disqualified"],"nullable":true},"score":{"type":"integer","minimum":0,"maximum":100,"nullable":true},"assignedTo":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"consentEmail":{"type":"boolean"},"consentSms":{"type":"boolean"},"consentCall":{"type":"boolean"},"consentSource":{"type":"string","maxLength":120,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}},"salutation":{"type":"string","maxLength":40,"nullable":true},"mobile":{"type":"string","maxLength":40,"pattern":"^[+0-9 .()\\-x]*$","nullable":true},"description":{"type":"string","maxLength":5000,"nullable":true},"rating":{"type":"string","enum":["hot","warm","cold"],"nullable":true},"title":{"type":"string","maxLength":150,"nullable":true},"website":{"type":"string","maxLength":300,"nullable":true},"industry":{"type":"string","maxLength":120,"nullable":true},"annualRevenue":{"type":"number","minimum":0,"maximum":9999999999999,"nullable":true},"employeeCount":{"type":"integer","minimum":0,"maximum":10000000,"nullable":true},"addressLine1":{"type":"string","maxLength":200,"nullable":true},"addressLine2":{"type":"string","maxLength":200,"nullable":true},"city":{"type":"string","maxLength":120,"nullable":true},"state":{"type":"string","maxLength":120,"nullable":true},"postalCode":{"type":"string","maxLength":40,"nullable":true},"country":{"type":"string","maxLength":120,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50},"campaignId":{"type":"string","maxLength":64,"nullable":true},"estimatedValue":{"type":"number","minimum":0,"maximum":9999999999999,"nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3},"expectedCloseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/locations/{id}":{"get":{"summary":"View a location","description":"View a location","operationId":"get_api_v1_crm_locations_id","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["location:read"]},{"cookieAuth":["location:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a location","description":"Update fields on a location","operationId":"patch_api_v1_crm_locations_id","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["location:update"]},{"cookieAuth":["location:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":200},"locationType":{"type":"string","maxLength":60,"nullable":true},"isPrimary":{"type":"boolean"},"primaryContactId":{"type":"string","nullable":true},"addressLine1":{"type":"string","maxLength":200,"nullable":true},"addressLine2":{"type":"string","maxLength":200,"nullable":true},"city":{"type":"string","maxLength":120,"nullable":true},"state":{"type":"string","maxLength":120,"nullable":true},"postalCode":{"type":"string","maxLength":40,"nullable":true},"country":{"type":"string","maxLength":120,"nullable":true},"lat":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"lng":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a location","description":"Soft-delete a location","operationId":"delete_api_v1_crm_locations_id","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["location:delete"]},{"cookieAuth":["location:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/locations/export":{"get":{"summary":"Export locations","description":"Export locations","operationId":"get_api_v1_crm_locations_export","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"export","x-idempotent":false,"security":[{"bearerAuth":["location:export"]},{"cookieAuth":["location:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/locations/meta":{"get":{"summary":"View a location","description":"View a location","operationId":"get_api_v1_crm_locations_meta","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["location:read"]},{"cookieAuth":["location:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/locations":{"get":{"summary":"List locations with filters and pagination","description":"List locations with filters and pagination","operationId":"get_api_v1_crm_locations","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"accountIds","in":"query","required":false,"schema":{"type":"string","maxLength":8000}}],"security":[{"bearerAuth":["location:list"]},{"cookieAuth":["location:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new location","description":"Create a new location","operationId":"post_api_v1_crm_locations","tags":["location"],"x-surface":"data","x-entity":"location","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["location:create"]},{"cookieAuth":["location:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":200},"locationType":{"type":"string","maxLength":60,"nullable":true},"isPrimary":{"type":"boolean"},"primaryContactId":{"type":"string","nullable":true},"addressLine1":{"type":"string","maxLength":200,"nullable":true},"addressLine2":{"type":"string","maxLength":200,"nullable":true},"city":{"type":"string","maxLength":120,"nullable":true},"state":{"type":"string","maxLength":120,"nullable":true},"postalCode":{"type":"string","maxLength":40,"nullable":true},"country":{"type":"string","maxLength":120,"nullable":true},"lat":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"lng":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},{"type":"array","items":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"enum":["null"],"nullable":true}]},"maxItems":500}]}}},"required":["accountId","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/migrations/hubspot/previews":{"post":{"summary":"Import leads","description":"Import leads","operationId":"post_api_v1_crm_migrations_hubspot_previews","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"objects":{"type":"array","items":{"type":"string","enum":["contacts","companies","deals"]},"minItems":1,"maxItems":3},"maxRecordsPerObject":{"type":"integer","minimum":1,"maximum":500,"default":100}},"required":["objects"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pipelines":{"get":{"summary":"List sales pipelines","description":"List sales pipelines","operationId":"get_api_v1_crm_pipelines","tags":["pipeline"],"x-surface":"admin","x-entity":"pipeline","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["pipeline:list"]},{"cookieAuth":["pipeline:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse/{id}/reactions/{emoji}":{"delete":{"summary":"Remove your emoji reaction from a pulse message","description":"Remove your emoji reaction from a pulse message","operationId":"delete_api_v1_crm_pulse_id_reactions_emoji","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"unreact","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"emoji","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":8}}],"security":[{"bearerAuth":["pulse_message:unreact"]},{"cookieAuth":["pulse_message:unreact"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse/{id}/reactions":{"get":{"summary":"List reactions on a pulse message","description":"List reactions on a pulse message","operationId":"get_api_v1_crm_pulse_id_reactions","tags":["pulse_reaction"],"x-surface":"data","x-entity":"pulse_reaction","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_reaction:list"]},{"cookieAuth":["pulse_reaction:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"React with an emoji to a pulse message","description":"React with an emoji to a pulse message","operationId":"post_api_v1_crm_pulse_id_reactions","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"react","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_message:react"]},{"cookieAuth":["pulse_message:react"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emoji":{"type":"string","minLength":1,"maxLength":8}},"required":["emoji"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse/{id}":{"get":{"summary":"View a pulse_message","description":"View a pulse_message","operationId":"get_api_v1_crm_pulse_id","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_message:read"]},{"cookieAuth":["pulse_message:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a pulse_message","description":"Update fields on a pulse_message","operationId":"patch_api_v1_crm_pulse_id","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_message:update"]},{"cookieAuth":["pulse_message:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000},"mentionedContactIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a pulse_message","description":"Soft-delete a pulse_message","operationId":"delete_api_v1_crm_pulse_id","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_message:delete"]},{"cookieAuth":["pulse_message:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse/mention-candidates":{"get":{"summary":"List pulse_messages with filters and pagination","description":"List pulse_messages with filters and pagination","operationId":"get_api_v1_crm_pulse_mention_candidates","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["user","contact"]}}],"security":[{"bearerAuth":["pulse_message:list"]},{"cookieAuth":["pulse_message:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse/meta":{"get":{"summary":"View a pulse_message","description":"View a pulse_message","operationId":"get_api_v1_crm_pulse_meta","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["pulse_message:read"]},{"cookieAuth":["pulse_message:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/pulse":{"post":{"summary":"Create a new pulse_message","description":"Create a new pulse_message","operationId":"post_api_v1_crm_pulse","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pulse_message:create"]},{"cookieAuth":["pulse_message:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parentEntityType":{"type":"string","enum":["lead","account","deal","project","ticket","work_order","employee","contract","calendar_event","ict_provider"]},"parentEntityId":{"type":"string","minLength":1,"maxLength":64},"parentMessageId":{"type":"string","maxLength":80,"nullable":true},"body":{"type":"string","minLength":1,"maxLength":5000},"authorType":{"type":"string","enum":["user","agent","system"]},"authorLabel":{"type":"string","maxLength":80,"nullable":true},"mentionedContactIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100}},"required":["parentEntityType","parentEntityId","body"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/regions/{id}":{"get":{"summary":"GET /api/v1/crm/regions/{id}","operationId":"get_api_v1_crm_regions_id","tags":["region"],"x-surface":"data","x-entity":"region","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["region:read"]},{"cookieAuth":["region:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/crm/regions/{id}","operationId":"patch_api_v1_crm_regions_id","tags":["region"],"x-surface":"admin","x-entity":"region","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["region:update"]},{"cookieAuth":["region:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"rules":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"ownerUserId":{"type":"string","minLength":1},"quotas":{"type":"object","additionalProperties":{}},"pipelineValue":{"type":"number","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/crm/regions/{id}","operationId":"delete_api_v1_crm_regions_id","tags":["region"],"x-surface":"admin","x-entity":"region","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["region:delete"]},{"cookieAuth":["region:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/regions/meta":{"get":{"summary":"GET /api/v1/crm/regions/meta","operationId":"get_api_v1_crm_regions_meta","tags":["region"],"x-surface":"data","x-entity":"region","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["region:read"]},{"cookieAuth":["region:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/regions":{"get":{"summary":"GET /api/v1/crm/regions","operationId":"get_api_v1_crm_regions","tags":["region"],"x-surface":"data","x-entity":"region","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["region:list"]},{"cookieAuth":["region:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/crm/regions","operationId":"post_api_v1_crm_regions","tags":["region"],"x-surface":"admin","x-entity":"region","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["region:create"]},{"cookieAuth":["region:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"rules":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":500},"ownerUserId":{"type":"string","minLength":1},"quotas":{"type":"object","additionalProperties":{}},"pipelineValue":{"type":"number","minimum":0}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/relationship-graph/{centerType}/{centerId}":{"get":{"summary":"Relationship graph centred on any account, contact, deal, project, work order or ticket.","description":"Relationship graph centred on any account, contact, deal, project, work order or ticket.","operationId":"get_api_v1_crm_relationship_graph_centerType_centerId","tags":["data"],"x-surface":"data","x-idempotent":false,"parameters":[{"name":"centerType","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","deal","project","work_order","ticket"]}},{"name":"centerId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/targets/{id}":{"get":{"summary":"View a target","description":"View a target","operationId":"get_api_v1_crm_targets_id","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["target:read"]},{"cookieAuth":["target:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a target","description":"Update fields on a target","operationId":"patch_api_v1_crm_targets_id","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["target:update"]},{"cookieAuth":["target:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"ownerType":{"type":"string","enum":["user","group","region"]},"ownerUserId":{"type":"string","minLength":1,"nullable":true},"ownerGroupId":{"type":"string","minLength":1,"nullable":true},"ownerRegionId":{"type":"string","minLength":1,"nullable":true},"metric":{"type":"string","enum":["revenue","deals_closed","opps_created","custom"]},"customMetricKey":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3,"nullable":true},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"recurring":{"type":"string","enum":["monthly","quarterly","annual"],"nullable":true},"status":{"type":"string","enum":["active","achieved","missed","archived"]},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a target","description":"Soft-delete a target","operationId":"delete_api_v1_crm_targets_id","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["target:delete"]},{"cookieAuth":["target:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/targets/meta":{"get":{"summary":"View a target","description":"View a target","operationId":"get_api_v1_crm_targets_meta","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["target:read"]},{"cookieAuth":["target:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/targets":{"get":{"summary":"List targets with filters and pagination","description":"List targets with filters and pagination","operationId":"get_api_v1_crm_targets","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ownerUserId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerGroupId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerRegionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerType","in":"query","required":false,"schema":{"type":"string","enum":["user","group","region"]}},{"name":"metric","in":"query","required":false,"schema":{"type":"string","enum":["revenue","deals_closed","opps_created","custom"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","achieved","missed","archived"]}}],"security":[{"bearerAuth":["target:list"]},{"cookieAuth":["target:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new target","description":"Create a new target","operationId":"post_api_v1_crm_targets","tags":["target"],"x-surface":"data","x-entity":"target","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["target:create"]},{"cookieAuth":["target:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"ownerType":{"type":"string","enum":["user","group","region"]},"ownerUserId":{"type":"string","minLength":1,"nullable":true},"ownerGroupId":{"type":"string","minLength":1,"nullable":true},"ownerRegionId":{"type":"string","minLength":1,"nullable":true},"metric":{"type":"string","enum":["revenue","deals_closed","opps_created","custom"]},"customMetricKey":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3,"nullable":true},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"recurring":{"type":"string","enum":["monthly","quarterly","annual"],"nullable":true},"status":{"type":"string","enum":["active","achieved","missed","archived"]},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["name","ownerType","metric","amount","periodStart","periodEnd"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/task-boards/{boardId}/items/{taskId}":{"delete":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"delete_api_v1_crm_task_boards_boardId_items_taskId","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"taskId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"version","in":"query","required":true,"schema":{"type":"integer","minimum":0}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/task-boards/{boardId}/items":{"get":{"summary":"List tasks with filters and pagination","description":"List tasks with filters and pagination","operationId":"get_api_v1_crm_task_boards_boardId_items","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"secondaryCursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"selection","in":"query","required":false,"schema":{"type":"string","enum":["all","created","assigned","created_or_assigned"],"default":"created_or_assigned"}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"put_api_v1_crm_task_boards_boardId_items","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string","minLength":1,"maxLength":100},"groupId":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"columnId":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"beforeTaskId":{"type":"string","minLength":1,"maxLength":100,"nullable":true,"default":null},"version":{"type":"integer","minimum":0}},"required":["taskId","groupId","columnId","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/task-boards/{boardId}":{"get":{"summary":"View a task","description":"View a task","operationId":"get_api_v1_crm_task_boards_boardId","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"patch_api_v1_crm_task_boards_boardId","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"sharing":{"type":"object","properties":{"mode":{"type":"string","enum":["private","everyone","custom"],"default":"everyone"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]}},"additionalProperties":false,"default":{"mode":"everyone","users":[],"groups":[]}},"taskVisibility":{"type":"string","enum":["all","assigned","created_or_assigned"],"default":"created_or_assigned"},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":50,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["id","label"],"additionalProperties":false},"minItems":1,"maxItems":40},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100},"status":{"type":"string","enum":["open","in_progress","blocked","done","cancelled"]}},"required":["id","label","status"],"additionalProperties":false},"minItems":1,"maxItems":30}},"required":["name","groups","columns"],"additionalProperties":false},"version":{"type":"integer","minimum":0}},"required":["config","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a task","description":"Soft-delete a task","operationId":"delete_api_v1_crm_task_boards_boardId","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"delete","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"version","in":"query","required":true,"schema":{"type":"integer","minimum":0}}],"security":[{"bearerAuth":["task:delete"]},{"cookieAuth":["task:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/task-boards":{"get":{"summary":"List tasks with filters and pagination","description":"List tasks with filters and pagination","operationId":"get_api_v1_crm_task_boards","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"secondaryCursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"selection","in":"query","required":false,"schema":{"type":"string","enum":["all","created","assigned","created_or_assigned"],"default":"created_or_assigned"}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new task","description":"Create a new task","operationId":"post_api_v1_crm_task_boards","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:create"]},{"cookieAuth":["task:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"sharing":{"type":"object","properties":{"mode":{"type":"string","enum":["private","everyone","custom"],"default":"everyone"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]}},"additionalProperties":false,"default":{"mode":"everyone","users":[],"groups":[]}},"taskVisibility":{"type":"string","enum":["all","assigned","created_or_assigned"],"default":"created_or_assigned"},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":50,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["id","label"],"additionalProperties":false},"minItems":1,"maxItems":40},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100},"status":{"type":"string","enum":["open","in_progress","blocked","done","cancelled"]}},"required":["id","label","status"],"additionalProperties":false},"minItems":1,"maxItems":30}},"required":["name","groups","columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/tasks/{id}":{"get":{"summary":"View a task","description":"View a task","operationId":"get_api_v1_crm_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"patch_api_v1_crm_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["open","in_progress","done","cancelled","blocked"]},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T.*)?$","nullable":true},"assignedTo":{"type":"string","nullable":true},"assigneeContactId":{"type":"string","nullable":true},"relatedToType":{"type":"string","enum":["account","contact","deal","lead","ticket","task","project","work_order","ict_provider"],"nullable":true},"relatedToId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a task","description":"Soft-delete a task","operationId":"delete_api_v1_crm_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:delete"]},{"cookieAuth":["task:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/tasks/meta":{"get":{"summary":"View a task","description":"View a task","operationId":"get_api_v1_crm_tasks_meta","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/tasks":{"get":{"summary":"List tasks with filters and pagination","description":"List tasks with filters and pagination","operationId":"get_api_v1_crm_tasks","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","in_progress","done","cancelled","blocked"]}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["low","normal","high","urgent"]}},{"name":"assignedTo","in":"query","required":false,"schema":{"type":"string"}},{"name":"relatedToType","in":"query","required":false,"schema":{"type":"string"}},{"name":"relatedToId","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueAfter","in":"query","required":false,"schema":{"type":"string"}},{"name":"dueBefore","in":"query","required":false,"schema":{"type":"string"}},{"name":"mine","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"mineCreated","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"lifecycle","in":"query","required":false,"schema":{"type":"string","enum":["open","closed"]}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new task","description":"Create a new task","operationId":"post_api_v1_crm_tasks","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:create"]},{"cookieAuth":["task:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["open","in_progress","done","cancelled","blocked"]},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T.*)?$","nullable":true},"assignedTo":{"type":"string","nullable":true},"assigneeContactId":{"type":"string","nullable":true},"relatedToType":{"type":"string","enum":["account","contact","deal","lead","ticket","task","project","work_order","ict_provider"],"nullable":true},"relatedToId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["subject"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/unified-tasks/{id}/comments/{commentId}":{"delete":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"delete_api_v1_crm_unified_tasks_id_comments_commentId","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/unified-tasks/{id}/comments":{"get":{"summary":"View a task","description":"View a task","operationId":"get_api_v1_crm_unified_tasks_id_comments","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"post_api_v1_crm_unified_tasks_id_comments","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":10000}},"required":["body"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/unified-tasks/{id}":{"get":{"summary":"View a task","description":"View a task","operationId":"get_api_v1_crm_unified_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a task","description":"Update fields on a task","operationId":"patch_api_v1_crm_unified_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["open","in_progress","blocked","done","cancelled"]},"priority":{"type":"string","enum":["low","normal","high","urgent"]},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T.*)?$","nullable":true},"assignedTo":{"type":"string","nullable":true},"assignees":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a task","description":"Soft-delete a task","operationId":"delete_api_v1_crm_unified_tasks_id","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:delete"]},{"cookieAuth":["task:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/unified-tasks":{"get":{"summary":"List tasks with filters and pagination","description":"List tasks with filters and pagination","operationId":"get_api_v1_crm_unified_tasks","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"mine","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"mineCreated","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"createdForOthers","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"watching","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"involvingMe","in":"query","required":false,"schema":{"type":"string","enum":["1"]}},{"name":"lifecycle","in":"query","required":false,"schema":{"type":"string","enum":["open","closed"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new task","description":"Create a new task","operationId":"post_api_v1_crm_unified_tasks","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:create"]},{"cookieAuth":["task:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["open","in_progress","done","cancelled","blocked"]},"priority":{"type":"string","enum":["low","normal","medium","high","urgent"]},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T.*)?$","nullable":true},"assignedTo":{"type":"string","nullable":true},"assignees":{"type":"array","items":{"type":"string","minLength":1},"maxItems":50,"nullable":true},"relatedToType":{"type":"string","enum":["account","contact","deal","lead","ticket","task","project","work_order","ict_provider"],"nullable":true},"relatedToId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["subject"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/watchers/{entityType}/{entityId}":{"get":{"summary":"Check / enumerate my watch state for a record","description":"Check / enumerate my watch state for a record","operationId":"get_api_v1_crm_watchers_entityType_entityId","tags":["watcher"],"x-surface":"data","x-entity":"watcher","x-action":"list","x-idempotent":false,"parameters":[{"name":"entityType","in":"path","required":true,"schema":{"type":"string","enum":["account","deal","project","contact","task","ict_provider"]}},{"name":"entityId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["watcher:list"]},{"cookieAuth":["watcher:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Unsubscribe from a record's changes","description":"Unsubscribe from a record's changes","operationId":"delete_api_v1_crm_watchers_entityType_entityId","tags":["watcher"],"x-surface":"data","x-entity":"watcher","x-action":"unfollow","x-idempotent":false,"parameters":[{"name":"entityType","in":"path","required":true,"schema":{"type":"string","enum":["account","deal","project","contact","task","ict_provider"]}},{"name":"entityId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["watcher:unfollow"]},{"cookieAuth":["watcher:unfollow"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/crm/watchers":{"post":{"summary":"Subscribe to a record's changes","description":"Subscribe to a record's changes","operationId":"post_api_v1_crm_watchers","tags":["watcher"],"x-surface":"data","x-entity":"watcher","x-action":"follow","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["watcher:follow"]},{"cookieAuth":["watcher:follow"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["account","deal","project","contact","task","ict_provider"]},"entityId":{"type":"string","minLength":1,"maxLength":64}},"required":["entityType","entityId"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/feedback/{id}":{"get":{"summary":"GET /api/v1/csat/feedback/{id}","operationId":"get_api_v1_csat_feedback_id","tags":["feedback"],"x-surface":"data","x-entity":"feedback","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["feedback:read"]},{"cookieAuth":["feedback:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/csat/feedback/{id}","operationId":"delete_api_v1_csat_feedback_id","tags":["feedback"],"x-surface":"data","x-entity":"feedback","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["feedback:delete"]},{"cookieAuth":["feedback:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/feedback/export":{"get":{"summary":"GET /api/v1/csat/feedback/export","operationId":"get_api_v1_csat_feedback_export","tags":["feedback"],"x-surface":"data","x-entity":"feedback","x-action":"list","x-idempotent":false,"parameters":[{"name":"surveyId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"dealId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"ticketId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["feedback:list"]},{"cookieAuth":["feedback:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/feedback/meta":{"get":{"summary":"GET /api/v1/csat/feedback/meta","operationId":"get_api_v1_csat_feedback_meta","tags":["feedback"],"x-surface":"data","x-entity":"feedback","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["feedback:read"]},{"cookieAuth":["feedback:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/feedback":{"get":{"summary":"GET /api/v1/csat/feedback","operationId":"get_api_v1_csat_feedback","tags":["feedback"],"x-surface":"data","x-entity":"feedback","x-action":"list","x-idempotent":false,"parameters":[{"name":"surveyId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"dealId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"ticketId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["feedback:list"]},{"cookieAuth":["feedback:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}/analysis":{"post":{"summary":"Generate AI analysis of responses","description":"Generate AI analysis of responses","operationId":"post_api_v1_csat_surveys_id_analysis","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"analyze","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["survey:analyze"]},{"cookieAuth":["survey:analyze"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}/response-form/logo":{"get":{"summary":"Complete an internal form","description":"Complete an internal form","operationId":"get_api_v1_csat_surveys_id_response_form_logo","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}/response-form":{"get":{"summary":"Complete an internal form","description":"Complete an internal form","operationId":"get_api_v1_csat_surveys_id_response_form","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"invite","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}/responses":{"post":{"summary":"Complete an internal form","description":"Complete an internal form","operationId":"post_api_v1_csat_surveys_id_responses","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"invite","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"answers":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":4000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":500},"maxItems":50}]}},"comment":{"type":"string","maxLength":4000},"respondentName":{"type":"string","maxLength":200}},"required":["answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}":{"get":{"summary":"View a survey","description":"View a survey","operationId":"get_api_v1_csat_surveys_id","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:read"]},{"cookieAuth":["survey:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a survey","description":"Update fields on a survey","operationId":"patch_api_v1_csat_surveys_id","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:update"]},{"cookieAuth":["survey:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"surveyType":{"type":"string","enum":["csat","nps","ces","custom"]},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","minLength":1,"maxLength":500},"helpText":{"type":"string","maxLength":500},"type":{"type":"string","enum":["nps","rating","scale","single_choice","multi_choice","text","textarea","yes_no","emoji"]},"required":{"type":"boolean","default":true},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","minLength":1,"maxLength":200}},"required":["value","label"],"additionalProperties":false},"maxItems":50},"min":{"type":"integer"},"max":{"type":"integer"},"minLabel":{"type":"string","maxLength":120},"maxLabel":{"type":"string","maxLength":120},"allowComment":{"type":"boolean"}},"required":["id","label","type"],"additionalProperties":false},"minItems":1,"maxItems":50},"thankYouMessage":{"type":"string","maxLength":2000,"nullable":true},"settings":{"type":"object","properties":{"anonymous":{"type":"boolean"},"access":{"type":"string","enum":["public","internal"]},"showProgress":{"type":"boolean"},"showLogo":{"type":"boolean"},"accentColor":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"logoUrl":{"type":"string","format":"uri","maxLength":2000},"redirectUrl":{"type":"string","format":"uri","maxLength":2000}},"additionalProperties":false},"triggerOn":{"type":"string","maxLength":60,"nullable":true},"isActive":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}},"accountId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a survey","description":"Soft-delete a survey","operationId":"delete_api_v1_csat_surveys_id","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:delete"]},{"cookieAuth":["survey:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/{id}/send":{"post":{"summary":"Send survey","description":"Send survey","operationId":"post_api_v1_csat_surveys_id_send","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"send","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:send"]},{"cookieAuth":["survey:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":254},"name":{"type":"string","maxLength":200},"accountId":{"type":"string","maxLength":64},"contactId":{"type":"string","maxLength":64}},"required":["email"],"additionalProperties":false},"minItems":1,"maxItems":200},"expiresInDays":{"type":"integer","minimum":1,"maximum":365,"default":30},"subject":{"type":"string","maxLength":200},"message":{"type":"string","maxLength":2000},"dealId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true},"ticketId":{"type":"string","maxLength":64,"nullable":true},"sourceEntityType":{"type":"string","enum":["account","contact","deal","project","ticket","employee"]},"sourceEntityId":{"type":"string","minLength":1,"maxLength":64}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/invites":{"get":{"summary":"List surveys with filters and pagination","description":"List surveys with filters and pagination","operationId":"get_api_v1_csat_surveys_invites","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"list","x-idempotent":false,"parameters":[{"name":"sourceEntityType","in":"query","required":true,"schema":{"type":"string","enum":["account","contact","deal","project","ticket","employee"]}},{"name":"sourceEntityId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_at","-created_at"]}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["survey:list"]},{"cookieAuth":["survey:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys/meta":{"get":{"summary":"View a survey","description":"View a survey","operationId":"get_api_v1_csat_surveys_meta","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["survey:read"]},{"cookieAuth":["survey:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/csat/surveys":{"get":{"summary":"List surveys with filters and pagination","description":"List surveys with filters and pagination","operationId":"get_api_v1_csat_surveys","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"surveyType","in":"query","required":false,"schema":{"type":"string","enum":["csat","nps","ces","custom"]}},{"name":"isActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["survey:list"]},{"cookieAuth":["survey:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new survey","description":"Create a new survey","operationId":"post_api_v1_csat_surveys","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:create"]},{"cookieAuth":["survey:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"surveyType":{"type":"string","enum":["csat","nps","ces","custom"],"default":"csat"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"label":{"type":"string","minLength":1,"maxLength":500},"helpText":{"type":"string","maxLength":500},"type":{"type":"string","enum":["nps","rating","scale","single_choice","multi_choice","text","textarea","yes_no","emoji"]},"required":{"type":"boolean","default":true},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","minLength":1,"maxLength":200}},"required":["value","label"],"additionalProperties":false},"maxItems":50},"min":{"type":"integer"},"max":{"type":"integer"},"minLabel":{"type":"string","maxLength":120},"maxLabel":{"type":"string","maxLength":120},"allowComment":{"type":"boolean"}},"required":["id","label","type"],"additionalProperties":false},"minItems":1,"maxItems":50},"thankYouMessage":{"type":"string","maxLength":2000,"nullable":true},"settings":{"type":"object","properties":{"anonymous":{"type":"boolean"},"access":{"type":"string","enum":["public","internal"]},"showProgress":{"type":"boolean"},"showLogo":{"type":"boolean"},"accentColor":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"logoUrl":{"type":"string","format":"uri","maxLength":2000},"redirectUrl":{"type":"string","format":"uri","maxLength":2000}},"additionalProperties":false},"triggerOn":{"type":"string","maxLength":60,"nullable":true},"isActive":{"type":"boolean","default":true},"customFields":{"type":"object","additionalProperties":{}},"accountId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true}},"required":["name","questions"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/custom-objects/{objectId}/meta":{"get":{"summary":"View a custom_object_record","description":"View a custom_object_record","operationId":"get_api_v1_custom_objects_objectId_meta","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"read","x-idempotent":false,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}}],"security":[{"bearerAuth":["custom_object_record:read"]},{"cookieAuth":["custom_object_record:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/custom-objects/{objectId}/records/{recordId}":{"get":{"summary":"View a custom_object_record","description":"View a custom_object_record","operationId":"get_api_v1_custom_objects_objectId_records_recordId","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"read","x-idempotent":false,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"recordId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}}],"security":[{"bearerAuth":["custom_object_record:read"]},{"cookieAuth":["custom_object_record:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a custom_object_record","description":"Update fields on a custom_object_record","operationId":"patch_api_v1_custom_objects_objectId_records_recordId","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"update","x-idempotent":true,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"recordId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_object_record:update"]},{"cookieAuth":["custom_object_record:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"status":{"type":"string","minLength":1,"maxLength":60},"ownerId":{"type":"string","minLength":1,"maxLength":120,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a custom_object_record","description":"Soft-delete a custom_object_record","operationId":"delete_api_v1_custom_objects_objectId_records_recordId","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"delete","x-idempotent":false,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"recordId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}}],"security":[{"bearerAuth":["custom_object_record:delete"]},{"cookieAuth":["custom_object_record:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/custom-objects/{objectId}/records":{"get":{"summary":"List custom_object_records with filters and pagination","description":"List custom_object_records with filters and pagination","operationId":"get_api_v1_custom_objects_objectId_records","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"list","x-idempotent":false,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":60}},{"name":"parentField","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-z0-9_]+$"}},{"name":"parentId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4000}}],"security":[{"bearerAuth":["custom_object_record:list"]},{"cookieAuth":["custom_object_record:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new custom_object_record","description":"Create a new custom_object_record","operationId":"post_api_v1_custom_objects_objectId_records","tags":["custom_object_record"],"x-surface":"data","x-entity":"custom_object_record","x-action":"create","x-idempotent":true,"parameters":[{"name":"objectId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["custom_object_record:create"]},{"cookieAuth":["custom_object_record:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"status":{"type":"string","minLength":1,"maxLength":60},"ownerId":{"type":"string","minLength":1,"maxLength":120,"nullable":true}},"required":["data"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/demand/demand-campaigns/{id}":{"get":{"summary":"View a demand_campaign","description":"View a demand_campaign","operationId":"get_api_v1_demand_demand_campaigns_id","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["demand_campaign:read"]},{"cookieAuth":["demand_campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a demand_campaign","description":"Update fields on a demand_campaign","operationId":"patch_api_v1_demand_demand_campaigns_id","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["demand_campaign:update"]},{"cookieAuth":["demand_campaign:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"channel":{"type":"string","minLength":1,"maxLength":80},"status":{"type":"string","enum":["draft","active","paused","completed","cancelled"]},"budget":{"type":"number","minimum":0,"nullable":true},"spent":{"type":"number","minimum":0},"leadsGenerated":{"type":"integer","minimum":0},"conversions":{"type":"integer","minimum":0},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a demand_campaign","description":"Soft-delete a demand_campaign","operationId":"delete_api_v1_demand_demand_campaigns_id","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["demand_campaign:delete"]},{"cookieAuth":["demand_campaign:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/demand/demand-campaigns/meta":{"get":{"summary":"View a demand_campaign","description":"View a demand_campaign","operationId":"get_api_v1_demand_demand_campaigns_meta","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["demand_campaign:read"]},{"cookieAuth":["demand_campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/demand/demand-campaigns":{"get":{"summary":"List demand_campaigns with filters and pagination","description":"List demand_campaigns with filters and pagination","operationId":"get_api_v1_demand_demand_campaigns","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"channel","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","paused","completed","cancelled"]}}],"security":[{"bearerAuth":["demand_campaign:list"]},{"cookieAuth":["demand_campaign:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new demand_campaign","description":"Create a new demand_campaign","operationId":"post_api_v1_demand_demand_campaigns","tags":["demand_campaign"],"x-surface":"data","x-entity":"demand_campaign","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["demand_campaign:create"]},{"cookieAuth":["demand_campaign:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"channel":{"type":"string","minLength":1,"maxLength":80},"status":{"type":"string","enum":["draft","active","paused","completed","cancelled"]},"budget":{"type":"number","minimum":0,"nullable":true},"spent":{"type":"number","minimum":0},"leadsGenerated":{"type":"integer","minimum":0},"conversions":{"type":"integer","minimum":0},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["name","channel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/attendees/{id}":{"get":{"summary":"View a attendee","description":"View a attendee","operationId":"get_api_v1_events_attendees_id","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attendee:read"]},{"cookieAuth":["attendee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a attendee","description":"Update fields on a attendee","operationId":"patch_api_v1_events_attendees_id","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["attendee:update"]},{"cookieAuth":["attendee:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string"},"contactId":{"type":"string","nullable":true},"userId":{"type":"string","nullable":true},"email":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":200},"role":{"type":"string","enum":["organizer","speaker","attendee","panelist","moderator","sponsor"]},"status":{"type":"string","enum":["invited","accepted","declined","tentative","attended","no_show"]},"respondedAt":{"type":"string","format":"date-time","nullable":true},"checkedInAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a attendee","description":"Soft-delete a attendee","operationId":"delete_api_v1_events_attendees_id","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attendee:delete"]},{"cookieAuth":["attendee:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/attendees/meta":{"get":{"summary":"View a attendee","description":"View a attendee","operationId":"get_api_v1_events_attendees_meta","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["attendee:read"]},{"cookieAuth":["attendee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/attendees":{"get":{"summary":"List attendees with filters and pagination","description":"List attendees with filters and pagination","operationId":"get_api_v1_events_attendees","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"eventId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"role","in":"query","required":false,"schema":{"type":"string","enum":["organizer","speaker","attendee","panelist","moderator","sponsor"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["invited","accepted","declined","tentative","attended","no_show"]}}],"security":[{"bearerAuth":["attendee:list"]},{"cookieAuth":["attendee:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new attendee","description":"Create a new attendee","operationId":"post_api_v1_events_attendees","tags":["attendee"],"x-surface":"data","x-entity":"attendee","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["attendee:create"]},{"cookieAuth":["attendee:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1},"contactId":{"type":"string","nullable":true},"userId":{"type":"string","nullable":true},"email":{"type":"string","maxLength":200,"minLength":1},"name":{"type":"string","maxLength":200,"minLength":1},"role":{"type":"string","enum":["organizer","speaker","attendee","panelist","moderator","sponsor"]},"status":{"type":"string","enum":["invited","accepted","declined","tentative","attended","no_show"]},"respondedAt":{"type":"string","format":"date-time","nullable":true},"checkedInAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["eventId","email","name","role","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/registrations/{id}":{"get":{"summary":"View a registration","description":"View a registration","operationId":"get_api_v1_events_registrations_id","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["registration:read"]},{"cookieAuth":["registration:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a registration","description":"Update fields on a registration","operationId":"patch_api_v1_events_registrations_id","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["registration:update"]},{"cookieAuth":["registration:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string"},"contactId":{"type":"string","nullable":true},"email":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":200},"status":{"type":"string","enum":["registered","waitlisted","cancelled","checked_in"]},"registeredAt":{"type":"string","format":"date-time"},"cancelledAt":{"type":"string","format":"date-time","nullable":true},"ticketCode":{"type":"string","maxLength":80},"formData":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a registration","description":"Soft-delete a registration","operationId":"delete_api_v1_events_registrations_id","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["registration:delete"]},{"cookieAuth":["registration:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/registrations/meta":{"get":{"summary":"View a registration","description":"View a registration","operationId":"get_api_v1_events_registrations_meta","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["registration:read"]},{"cookieAuth":["registration:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/registrations":{"get":{"summary":"List registrations with filters and pagination","description":"List registrations with filters and pagination","operationId":"get_api_v1_events_registrations","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"eventId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["registered","waitlisted","cancelled","checked_in"]}}],"security":[{"bearerAuth":["registration:list"]},{"cookieAuth":["registration:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new registration","description":"Create a new registration","operationId":"post_api_v1_events_registrations","tags":["registration"],"x-surface":"data","x-entity":"registration","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["registration:create"]},{"cookieAuth":["registration:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1},"contactId":{"type":"string","nullable":true},"email":{"type":"string","maxLength":200,"minLength":1},"name":{"type":"string","maxLength":200,"minLength":1},"status":{"type":"string","enum":["registered","waitlisted","cancelled","checked_in"]},"registeredAt":{"type":"string","format":"date-time"},"cancelledAt":{"type":"string","format":"date-time","nullable":true},"ticketCode":{"type":"string","maxLength":80,"minLength":1},"formData":{"type":"object","additionalProperties":{}}},"required":["eventId","email","name","status","registeredAt","ticketCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/sessions/{id}":{"get":{"summary":"View a event_session","description":"View a event_session","operationId":"get_api_v1_events_sessions_id","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["event_session:read"]},{"cookieAuth":["event_session:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a event_session","description":"Update fields on a event_session","operationId":"patch_api_v1_events_sessions_id","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["event_session:update"]},{"cookieAuth":["event_session:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string"},"title":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":4000,"nullable":true},"startAt":{"type":"string","format":"date-time"},"endAt":{"type":"string","format":"date-time"},"track":{"type":"string","maxLength":120,"nullable":true},"room":{"type":"string","maxLength":120,"nullable":true},"speakerIds":{"type":"array","items":{}},"maxAttendees":{"type":"number","minimum":0,"nullable":true},"displayOrder":{"type":"number","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a event_session","description":"Soft-delete a event_session","operationId":"delete_api_v1_events_sessions_id","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["event_session:delete"]},{"cookieAuth":["event_session:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/sessions/meta":{"get":{"summary":"View a event_session","description":"View a event_session","operationId":"get_api_v1_events_sessions_meta","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["event_session:read"]},{"cookieAuth":["event_session:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/events/sessions":{"get":{"summary":"List event_sessions with filters and pagination","description":"List event_sessions with filters and pagination","operationId":"get_api_v1_events_sessions","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"eventId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"track","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["event_session:list"]},{"cookieAuth":["event_session:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new event_session","description":"Create a new event_session","operationId":"post_api_v1_events_sessions","tags":["event_session"],"x-surface":"data","x-entity":"event_session","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["event_session:create"]},{"cookieAuth":["event_session:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1},"title":{"type":"string","maxLength":300,"minLength":1},"description":{"type":"string","maxLength":4000,"nullable":true},"startAt":{"type":"string","format":"date-time"},"endAt":{"type":"string","format":"date-time"},"track":{"type":"string","maxLength":120,"nullable":true},"room":{"type":"string","maxLength":120,"nullable":true},"speakerIds":{"type":"array","items":{}},"maxAttendees":{"type":"number","minimum":0,"nullable":true},"displayOrder":{"type":"number","minimum":0}},"required":["eventId","title","startAt","endAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges/{id}/apply":{"post":{"summary":"Update fields on a charge","description":"Update fields on a charge","operationId":"post_api_v1_finance_charges_id_apply","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:update"]},{"cookieAuth":["charge:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges/{id}/cancel":{"post":{"summary":"Cancel charge","description":"Cancel charge","operationId":"post_api_v1_finance_charges_id_cancel","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"cancel","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:cancel"]},{"cookieAuth":["charge:cancel"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"type":"object","properties":{"reason":{"type":"string","maxLength":500}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges/{id}/mark-paid":{"post":{"summary":"Mark charge as paid","description":"Mark charge as paid","operationId":"post_api_v1_finance_charges_id_mark_paid","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:approve"]},{"cookieAuth":["charge:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges/{id}":{"get":{"summary":"View a charge","description":"View a charge","operationId":"get_api_v1_finance_charges_id","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:read"]},{"cookieAuth":["charge:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a charge","description":"Update fields on a charge","operationId":"patch_api_v1_finance_charges_id","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:update"]},{"cookieAuth":["charge:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","minLength":1},"contractId":{"type":"string","nullable":true},"invoiceId":{"type":"string","nullable":true},"paymentId":{"type":"string","nullable":true},"chargeType":{"type":"string","enum":["debit","credit"],"default":"debit"},"description":{"type":"string","minLength":1,"maxLength":500},"referenceCode":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0,"nullable":true},"taxRate":{"type":"number","minimum":0,"maximum":1,"nullable":true},"status":{"type":"string","enum":["draft","applied","paid","rolled_in","cancelled"]},"statusReason":{"type":"string","maxLength":500,"nullable":true},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a charge","description":"Soft-delete a charge","operationId":"delete_api_v1_finance_charges_id","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:delete"]},{"cookieAuth":["charge:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges/meta":{"get":{"summary":"View a charge","description":"View a charge","operationId":"get_api_v1_finance_charges_meta","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["charge:read"]},{"cookieAuth":["charge:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/charges":{"get":{"summary":"List charges with filters and pagination","description":"List charges with filters and pagination","operationId":"get_api_v1_finance_charges","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","applied","paid","rolled_in","cancelled"]}},{"name":"invoiceId","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:list"]},{"cookieAuth":["charge:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new charge","description":"Create a new charge","operationId":"post_api_v1_finance_charges","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["charge:create"]},{"cookieAuth":["charge:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","minLength":1},"contractId":{"type":"string","nullable":true},"invoiceId":{"type":"string","nullable":true},"paymentId":{"type":"string","nullable":true},"chargeType":{"type":"string","enum":["debit","credit"],"default":"debit"},"description":{"type":"string","minLength":1,"maxLength":500},"referenceCode":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0,"nullable":true},"taxRate":{"type":"number","minimum":0,"maximum":1,"nullable":true},"status":{"type":"string","enum":["draft","applied","paid","rolled_in","cancelled"]},"statusReason":{"type":"string","maxLength":500,"nullable":true},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["customerId","description","amount","currency"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/credits":{"post":{"summary":"Issue a credit (charge_type=credit) against an account/contract","description":"Issue a credit (charge_type=credit) against an account/contract","operationId":"post_api_v1_finance_credits","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"credit","x-idempotent":false,"security":[{"bearerAuth":["charge:credit"]},{"cookieAuth":["charge:credit"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","minLength":1},"contractId":{"type":"string","nullable":true},"invoiceId":{"type":"string","nullable":true},"paymentId":{"type":"string","nullable":true},"chargeType":{"type":"string","enum":["debit","credit"],"default":"debit"},"description":{"type":"string","minLength":1,"maxLength":500},"referenceCode":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0,"nullable":true},"taxRate":{"type":"number","minimum":0,"maximum":1,"nullable":true},"status":{"type":"string","enum":["draft","applied","paid","rolled_in","cancelled"]},"statusReason":{"type":"string","maxLength":500,"nullable":true},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["customerId","description","amount","currency"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-receipts/{id}/apply":{"post":{"summary":"Create expense line(s) from a receipt's extracted fields","description":"Create expense line(s) from a receipt's extracted fields","operationId":"post_api_v1_finance_expense_receipts_id_apply","tags":["expense_receipt"],"x-surface":"data","x-entity":"expense_receipt","x-action":"apply","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_receipt:apply"]},{"cookieAuth":["expense_receipt:apply"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lines":{"type":"array","items":{"type":"object","properties":{"expenseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"vendor":{"type":"string","maxLength":200,"nullable":true},"category":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":1000,"nullable":true},"amount":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0},"projectId":{"type":"string","nullable":true},"workOrderId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"billable":{"type":"boolean"},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-receipts/{id}/extract":{"post":{"summary":"Run AI extraction on an uploaded receipt","description":"Run AI extraction on an uploaded receipt","operationId":"post_api_v1_finance_expense_receipts_id_extract","tags":["expense_receipt"],"x-surface":"data","x-entity":"expense_receipt","x-action":"extract","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_receipt:extract"]},{"cookieAuth":["expense_receipt:extract"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-receipts/{id}":{"get":{"summary":"View a expense_receipt","description":"View a expense_receipt","operationId":"get_api_v1_finance_expense_receipts_id","tags":["expense_receipt"],"x-surface":"data","x-entity":"expense_receipt","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_receipt:read"]},{"cookieAuth":["expense_receipt:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a expense_receipt","description":"Soft-delete a expense_receipt","operationId":"delete_api_v1_finance_expense_receipts_id","tags":["expense_receipt"],"x-surface":"data","x-entity":"expense_receipt","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_receipt:delete"]},{"cookieAuth":["expense_receipt:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-receipts":{"post":{"summary":"Create a new expense_receipt","description":"Create a new expense_receipt","operationId":"post_api_v1_finance_expense_receipts","tags":["expense_receipt"],"x-surface":"data","x-entity":"expense_receipt","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["expense_receipt:create"]},{"cookieAuth":["expense_receipt:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/{id}/anomaly":{"get":{"summary":"View a expense_report","description":"View a expense_report","operationId":"get_api_v1_finance_expense_reports_id_anomaly","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:read"]},{"cookieAuth":["expense_report:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"View a expense_report","description":"View a expense_report","operationId":"post_api_v1_finance_expense_reports_id_anomaly","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:read"]},{"cookieAuth":["expense_report:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/{id}/lines/{lineId}":{"get":{"summary":"View a expense_line","description":"View a expense_line","operationId":"get_api_v1_finance_expense_reports_id_lines_lineId","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:read"]},{"cookieAuth":["expense_line:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a expense_line","description":"Update fields on a expense_line","operationId":"patch_api_v1_finance_expense_reports_id_lines_lineId","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lineId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:update"]},{"cookieAuth":["expense_line:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reportId":{"type":"string","minLength":1},"expenseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"vendor":{"type":"string","maxLength":200,"nullable":true},"category":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":1000,"nullable":true},"amount":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0},"projectId":{"type":"string","nullable":true},"workOrderId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"billable":{"type":"boolean"},"receiptId":{"type":"string","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a expense_line","description":"Soft-delete a expense_line","operationId":"delete_api_v1_finance_expense_reports_id_lines_lineId","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lineId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:delete"]},{"cookieAuth":["expense_line:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/{id}/lines/meta":{"get":{"summary":"View a expense_line","description":"View a expense_line","operationId":"get_api_v1_finance_expense_reports_id_lines_meta","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:read"]},{"cookieAuth":["expense_line:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/{id}/lines":{"get":{"summary":"List expense_lines with filters and pagination","description":"List expense_lines with filters and pagination","operationId":"get_api_v1_finance_expense_reports_id_lines","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:list"]},{"cookieAuth":["expense_line:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new expense_line","description":"Create a new expense_line","operationId":"post_api_v1_finance_expense_reports_id_lines","tags":["expense_line"],"x-surface":"data","x-entity":"expense_line","x-action":"create","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_line:create"]},{"cookieAuth":["expense_line:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reportId":{"type":"string","minLength":1},"expenseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"vendor":{"type":"string","maxLength":200,"nullable":true},"category":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":1000,"nullable":true},"amount":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0},"projectId":{"type":"string","nullable":true},"workOrderId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"billable":{"type":"boolean"},"receiptId":{"type":"string","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["reportId","expenseDate","category","amount","currency"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/{id}":{"get":{"summary":"View a expense_report","description":"View a expense_report","operationId":"get_api_v1_finance_expense_reports_id","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:read"]},{"cookieAuth":["expense_report:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a expense_report","description":"Update fields on a expense_report","operationId":"patch_api_v1_finance_expense_reports_id","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:update"]},{"cookieAuth":["expense_report:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submitterUserId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"costCenterId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["draft","submitted","pending_l2_approval","pending_l3_approval","approved","rejected","pending_payment","paid","reimbursed"]},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"approverUserId":{"type":"string","nullable":true},"approver2UserId":{"type":"string","nullable":true},"approver3UserId":{"type":"string","nullable":true},"totalAmount":{"type":"number","minimum":0},"totalCurrency":{"type":"string","minLength":3,"maxLength":3},"projectId":{"type":"string","nullable":true},"workOrderId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"contractId":{"type":"string","nullable":true},"billable":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a expense_report","description":"Soft-delete a expense_report","operationId":"delete_api_v1_finance_expense_reports_id","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:delete"]},{"cookieAuth":["expense_report:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports/meta":{"get":{"summary":"View a expense_report","description":"View a expense_report","operationId":"get_api_v1_finance_expense_reports_meta","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["expense_report:read"]},{"cookieAuth":["expense_report:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/finance/expense-reports":{"get":{"summary":"List expense_reports with filters and pagination","description":"List expense_reports with filters and pagination","operationId":"get_api_v1_finance_expense_reports","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"submitterUserId","in":"query","required":false,"schema":{"type":"string"}},{"name":"approverUserId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","submitted","pending_l2_approval","pending_l3_approval","approved","rejected","pending_payment","paid","reimbursed"]}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string"}},{"name":"includeLinkedWorkOrders","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["true"]},{"type":"string","enum":["false"]},{"type":"boolean"}]}}],"security":[{"bearerAuth":["expense_report:list"]},{"cookieAuth":["expense_report:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new expense_report","description":"Create a new expense_report","operationId":"post_api_v1_finance_expense_reports","tags":["expense_report"],"x-surface":"data","x-entity":"expense_report","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["expense_report:create"]},{"cookieAuth":["expense_report:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"submitterUserId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"costCenterId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["draft","submitted","pending_l2_approval","pending_l3_approval","approved","rejected","pending_payment","paid","reimbursed"]},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"approverUserId":{"type":"string","nullable":true},"approver2UserId":{"type":"string","nullable":true},"approver3UserId":{"type":"string","nullable":true},"totalAmount":{"type":"number","minimum":0},"totalCurrency":{"type":"string","minLength":3,"maxLength":3},"projectId":{"type":"string","nullable":true},"workOrderId":{"type":"string","nullable":true},"customerId":{"type":"string","nullable":true},"contractId":{"type":"string","nullable":true},"billable":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["submitterUserId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/graph/links/{linkId}":{"delete":{"summary":"Remove a link from the record graph, scoped to the record you are on.","description":"Remove a link from the record graph, scoped to the record you are on.","operationId":"delete_api_v1_graph_links_linkId","tags":["data"],"x-surface":"data","x-idempotent":false,"parameters":[{"name":"linkId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"entityType","in":"query","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/graph/links":{"get":{"summary":"List every record linked to a given record, in either direction.","description":"List every record linked to a given record, in either direction.","operationId":"get_api_v1_graph_links","tags":["data"],"x-surface":"data","x-idempotent":false,"parameters":[{"name":"entityType","in":"query","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Link two records. Idempotent on (from, to, linkType).","description":"Link two records. Idempotent on (from, to, linkType).","operationId":"post_api_v1_graph_links","tags":["data"],"x-surface":"data","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fromType":{"type":"string"},"fromId":{"type":"string","minLength":1},"toType":{"type":"string"},"toId":{"type":"string","minLength":1},"linkType":{"type":"string","minLength":1,"maxLength":64},"note":{"type":"string","maxLength":2000}},"required":["fromType","fromId","toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/home/atlas-day":{"get":{"summary":"GET /api/v1/home/atlas-day","operationId":"get_api_v1_home_atlas_day","tags":["data"],"x-surface":"data","x-idempotent":false,"parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/home/value-missions":{"get":{"summary":"GET /api/v1/home/value-missions","operationId":"get_api_v1_home_value_missions","tags":["data"],"x-surface":"data","x-idempotent":false,"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/home/value-missions","operationId":"post_api_v1_home_value_missions","tags":["data"],"x-surface":"data","x-idempotent":false,"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"missionId":{"type":"string","minLength":1,"maxLength":80},"action":{"type":"string","enum":["defer","dismiss","resume"]},"deferUntil":{"type":"string","format":"date-time"}},"required":["missionId","action"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/accounts":{"get":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"get_api_v1_inbox_accounts","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/ai-drafts":{"post":{"summary":"Send or reply to email from the signed-in user's connected mailbox","description":"Send or reply to email from the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_ai_drafts","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"send","x-idempotent":false,"security":[{"bearerAuth":["mailbox:send"]},{"cookieAuth":["mailbox:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"messageId":{"type":"string"},"mode":{"type":"string","enum":["reply","forward"]},"tone":{"type":"string","maxLength":40},"length":{"type":"string","enum":["short","medium","long"]},"stance":{"type":"string","enum":["agreeing","disagreeing","skeptical","neutral"]},"instructions":{"type":"string","maxLength":2000},"useWritingStyle":{"type":"boolean"},"toneOverride":{"type":"string","enum":["formal","casual"]},"recipients":{"type":"array","items":{"type":"string"},"maxItems":100}},"required":["account","messageId","mode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/awaiting-reply/ignores":{"post":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"post_api_v1_inbox_awaiting_reply_ignores","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"threadId":{"type":"string","minLength":1,"maxLength":2048},"outboundMessageId":{"type":"string","minLength":1,"maxLength":2048},"lastOutboundAt":{"type":"string","format":"date-time"}},"required":["account","threadId","outboundMessageId","lastOutboundAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/awaiting-reply":{"get":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"get_api_v1_inbox_awaiting_reply","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"[DEPRECATED alias] Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/awaiting-reply/ignores` instead. Reason: ignoring one instance = creating an ignore in the sub-collection (GET stays). Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"post_api_v1_inbox_awaiting_reply_ignores__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"threadId":{"type":"string","minLength":1,"maxLength":2048},"outboundMessageId":{"type":"string","minLength":1,"maxLength":2048},"lastOutboundAt":{"type":"string","format":"date-time"}},"required":["account","threadId","outboundMessageId","lastOutboundAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/awaiting-reply/ignores"}}},"/api/v1/inbox/cache":{"post":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"post_api_v1_inbox_cache","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/classifications":{"post":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"post_api_v1_inbox_classifications","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"from":{"type":"string","maxLength":512,"default":""},"subject":{"type":"string","maxLength":2000,"default":""},"snippet":{"type":"string","maxLength":2000,"default":""}},"required":["id"],"additionalProperties":false},"maxItems":500}},"required":["account","items"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/drafts/{id}":{"patch":{"summary":"Create an email draft in the user's mailbox Drafts folder (never sends)","description":"Create an email draft in the user's mailbox Drafts folder (never sends)","operationId":"patch_api_v1_inbox_drafts_id","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"create_draft","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:create_draft"]},{"cookieAuth":["mailbox:create_draft"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"to":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"cc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"bcc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"subject":{"type":"string","maxLength":998},"bodyHtml":{"type":"string","maxLength":500000},"importance":{"type":"string","enum":["low","normal","high"]},"inReplyTo":{"type":"string","minLength":1,"maxLength":16384},"threadId":{"type":"string","minLength":1,"maxLength":16384}},"required":["account","to","subject","bodyHtml"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/drafts/{id}/send":{"post":{"summary":"Send or reply to email from the signed-in user's connected mailbox","description":"Send or reply to email from the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_drafts_id_send","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"send","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:send"]},{"cookieAuth":["mailbox:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"to":{"type":"array","items":{"type":"string","format":"email"},"minItems":1,"maxItems":100},"cc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"bcc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"subject":{"type":"string","maxLength":998},"bodyHtml":{"type":"string","maxLength":500000},"importance":{"type":"string","enum":["low","normal","high"]},"inReplyTo":{"type":"string","minLength":1,"maxLength":16384},"threadId":{"type":"string","minLength":1,"maxLength":16384},"activityContext":{"type":"object","properties":{"dealId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","minLength":1,"maxLength":64}},"required":["dealId"],"additionalProperties":false}},"required":["account","to","subject","bodyHtml"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/drafts":{"post":{"summary":"Create an email draft in the user's mailbox Drafts folder (never sends)","description":"Create an email draft in the user's mailbox Drafts folder (never sends)","operationId":"post_api_v1_inbox_drafts","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"create_draft","x-idempotent":false,"security":[{"bearerAuth":["mailbox:create_draft"]},{"cookieAuth":["mailbox:create_draft"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"to":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"cc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"bcc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"subject":{"type":"string","maxLength":998},"bodyHtml":{"type":"string","maxLength":500000},"importance":{"type":"string","enum":["low","normal","high"]},"inReplyTo":{"type":"string","minLength":1,"maxLength":16384},"threadId":{"type":"string","minLength":1,"maxLength":16384}},"required":["account","to","subject","bodyHtml"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/folders":{"get":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"get_api_v1_inbox_folders","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}/analysis":{"get":{"summary":"Read the signed-in user's connected mailbox (live, not stored)","description":"Read the signed-in user's connected mailbox (live, not stored)","operationId":"get_api_v1_inbox_messages_id_analysis","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:read"]},{"cookieAuth":["mailbox:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}/log-activity":{"post":{"summary":"Create a new activity","description":"Create a new activity","operationId":"post_api_v1_inbox_messages_id_log_activity","tags":["activity"],"x-surface":"data","x-entity":"activity","x-action":"create","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["activity:create"]},{"cookieAuth":["activity:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["contact","lead","account","deal","project","work_order","ticket","expense_report"]},"id":{"type":"string","minLength":1,"maxLength":64}},"required":["type","id"],"additionalProperties":false},"minItems":1,"maxItems":20},"subject":{"type":"string","minLength":1,"maxLength":300},"date":{"type":"string","format":"date-time"}},"required":["links"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}/move":{"post":{"summary":"Change read state or file a message in the signed-in user's connected mailbox","description":"Change read state or file a message in the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_messages_id_move","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:update"]},{"cookieAuth":["mailbox:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"destinationFolder":{"type":"string","minLength":1,"maxLength":4096}},"required":["account","destinationFolder"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}/read":{"post":{"summary":"Change read state or file a message in the signed-in user's connected mailbox","description":"Change read state or file a message in the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_messages_id_read","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:update"]},{"cookieAuth":["mailbox:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"read":{"type":"boolean","default":true}},"additionalProperties":false,"default":{"read":true}}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}":{"get":{"summary":"Read the signed-in user's connected mailbox (live, not stored)","description":"Read the signed-in user's connected mailbox (live, not stored)","operationId":"get_api_v1_inbox_messages_id","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:read"]},{"cookieAuth":["mailbox:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a message from the signed-in user's connected mailbox (moves to Trash/Deleted Items at the provider)","description":"Delete a message from the signed-in user's connected mailbox (moves to Trash/Deleted Items at the provider)","operationId":"delete_api_v1_inbox_messages_id","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:delete"]},{"cookieAuth":["mailbox:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages/{id}/save-to-kb":{"post":{"summary":"Add an item to a writable knowledge hub","description":"Add an item to a writable knowledge hub","operationId":"post_api_v1_inbox_messages_id_save_to_kb","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"create","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:create"]},{"cookieAuth":["kb_hub_item:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hubId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":20}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/messages":{"get":{"summary":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"get_api_v1_inbox_messages","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Send or reply to email from the signed-in user's connected mailbox","description":"Send or reply to email from the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_messages","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"send","x-idempotent":false,"security":[{"bearerAuth":["mailbox:send"]},{"cookieAuth":["mailbox:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"to":{"type":"array","items":{"type":"string","format":"email"},"minItems":1,"maxItems":100},"cc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"bcc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"subject":{"type":"string","maxLength":998},"bodyHtml":{"type":"string","maxLength":500000},"importance":{"type":"string","enum":["low","normal","high"]},"inReplyTo":{"type":"string","minLength":1,"maxLength":16384},"threadId":{"type":"string","minLength":1,"maxLength":16384},"activityContext":{"type":"object","properties":{"dealId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","minLength":1,"maxLength":64}},"required":["dealId"],"additionalProperties":false}},"required":["account","to","subject","bodyHtml"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/search":{"get":{"summary":"Search the signed-in user's connected mailbox (live, not stored)","description":"Search the signed-in user's connected mailbox (live, not stored)","operationId":"get_api_v1_inbox_search","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"search","x-idempotent":false,"security":[{"bearerAuth":["mailbox:search"]},{"cookieAuth":["mailbox:search"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/settings":{"get":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"get_api_v1_inbox_settings","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"put_api_v1_inbox_settings","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"cachedMessageCount":{"type":"integer","minimum":10,"maximum":500}},"required":["account","cachedMessageCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"[DEPRECATED alias] Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/inbox/settings` instead. Reason: singleton takes PUT, not POST. Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"put_api_v1_inbox_settings__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"cachedMessageCount":{"type":"integer","minimum":10,"maximum":500}},"required":["account","cachedMessageCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/inbox/settings"}}},"/api/v1/inbox/settings/signatures":{"get":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"get_api_v1_inbox_settings_signatures","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"put_api_v1_inbox_settings_signatures","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"account":{"type":"string","enum":["google","microsoft","imap"]},"name":{"type":"string","minLength":1,"maxLength":80},"html":{"type":"string","minLength":1,"maxLength":100000},"isDefault":{"type":"boolean","default":false}},"required":["account","name","html"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Configure the signed-in user's mailbox connection (e.g. cached message count)","description":"Configure the signed-in user's mailbox connection (e.g. cached message count)","operationId":"delete_api_v1_inbox_settings_signatures","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"configure","x-idempotent":false,"security":[{"bearerAuth":["mailbox:configure"]},{"cookieAuth":["mailbox:configure"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inbox/writing-profile":{"get":{"summary":"List the signed-in user's email writing-profile summaries (internal/external register)","description":"List the signed-in user's email writing-profile summaries (internal/external register)","operationId":"get_api_v1_inbox_writing_profile","tags":["writing_profile"],"x-surface":"data","x-entity":"writing_profile","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["writing_profile:list"]},{"cookieAuth":["writing_profile:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Rebuild the signed-in user's email writing profile from sent mail (metered LLM + embeddings)","description":"Rebuild the signed-in user's email writing profile from sent mail (metered LLM + embeddings)","operationId":"post_api_v1_inbox_writing_profile","tags":["writing_profile"],"x-surface":"data","x-entity":"writing_profile","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["writing_profile:update"]},{"cookieAuth":["writing_profile:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Clear (delete) the signed-in user's email writing profile + exemplars","description":"Clear (delete) the signed-in user's email writing profile + exemplars","operationId":"delete_api_v1_inbox_writing_profile","tags":["writing_profile"],"x-surface":"data","x-entity":"writing_profile","x-action":"delete","x-idempotent":false,"security":[{"bearerAuth":["writing_profile:delete"]},{"cookieAuth":["writing_profile:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/carriers/{id}":{"get":{"summary":"GET /api/v1/insurance/carriers/{id}","operationId":"get_api_v1_insurance_carriers_id","tags":["carrier"],"x-surface":"data","x-entity":"carrier","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["carrier:read"]},{"cookieAuth":["carrier:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/insurance/carriers/{id}","operationId":"patch_api_v1_insurance_carriers_id","tags":["carrier"],"x-surface":"admin","x-entity":"carrier","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["carrier:update"]},{"cookieAuth":["carrier:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"code":{"type":"string","maxLength":40},"carrierType":{"type":"string","enum":["standard","specialty","surplus"]},"amBestRating":{"type":"string","maxLength":16,"nullable":true},"contactEmail":{"type":"string","maxLength":200,"nullable":true},"contactPhone":{"type":"string","maxLength":40,"nullable":true},"portalUrl":{"type":"string","maxLength":500,"nullable":true},"commissionDefaultPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"status":{"type":"string","enum":["active","inactive"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/insurance/carriers/{id}","operationId":"delete_api_v1_insurance_carriers_id","tags":["carrier"],"x-surface":"admin","x-entity":"carrier","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["carrier:delete"]},{"cookieAuth":["carrier:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/carriers/meta":{"get":{"summary":"GET /api/v1/insurance/carriers/meta","operationId":"get_api_v1_insurance_carriers_meta","tags":["carrier"],"x-surface":"data","x-entity":"carrier","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["carrier:read"]},{"cookieAuth":["carrier:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/carriers":{"get":{"summary":"GET /api/v1/insurance/carriers","operationId":"get_api_v1_insurance_carriers","tags":["carrier"],"x-surface":"data","x-entity":"carrier","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"carrierType","in":"query","required":false,"schema":{"type":"string","enum":["standard","specialty","surplus"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive"]}}],"security":[{"bearerAuth":["carrier:list"]},{"cookieAuth":["carrier:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/insurance/carriers","operationId":"post_api_v1_insurance_carriers","tags":["carrier"],"x-surface":"admin","x-entity":"carrier","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["carrier:create"]},{"cookieAuth":["carrier:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"code":{"type":"string","maxLength":40,"minLength":1},"carrierType":{"type":"string","enum":["standard","specialty","surplus"]},"amBestRating":{"type":"string","maxLength":16,"nullable":true},"contactEmail":{"type":"string","maxLength":200,"nullable":true},"contactPhone":{"type":"string","maxLength":40,"nullable":true},"portalUrl":{"type":"string","maxLength":500,"nullable":true},"commissionDefaultPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"status":{"type":"string","enum":["active","inactive"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","code","carrierType","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/certificates/{id}":{"get":{"summary":"View a certificate","description":"View a certificate","operationId":"get_api_v1_insurance_certificates_id","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["certificate:read"]},{"cookieAuth":["certificate:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a certificate","description":"Update fields on a certificate","operationId":"patch_api_v1_insurance_certificates_id","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["certificate:update"]},{"cookieAuth":["certificate:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64},"holderName":{"type":"string","minLength":1,"maxLength":300},"holderAddress":{"type":"string","maxLength":500,"nullable":true},"certificateNumber":{"type":"string","minLength":1,"maxLength":60},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"descriptionOfOperations":{"type":"string","maxLength":10000,"nullable":true},"status":{"type":"string","enum":["active","expired","cancelled","pending_renewal"]},"autoRenew":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a certificate","description":"Soft-delete a certificate","operationId":"delete_api_v1_insurance_certificates_id","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["certificate:delete"]},{"cookieAuth":["certificate:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/certificates/meta":{"get":{"summary":"View a certificate","description":"View a certificate","operationId":"get_api_v1_insurance_certificates_meta","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["certificate:read"]},{"cookieAuth":["certificate:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/certificates":{"get":{"summary":"List certificates with filters and pagination","description":"List certificates with filters and pagination","operationId":"get_api_v1_insurance_certificates","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"policyId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","expired","cancelled","pending_renewal"]}},{"name":"autoRenew","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"expiringFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"expiringTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["certificate:list"]},{"cookieAuth":["certificate:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new certificate","description":"Create a new certificate","operationId":"post_api_v1_insurance_certificates","tags":["certificate"],"x-surface":"data","x-entity":"certificate","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["certificate:create"]},{"cookieAuth":["certificate:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64},"holderName":{"type":"string","minLength":1,"maxLength":300},"holderAddress":{"type":"string","maxLength":500,"nullable":true},"certificateNumber":{"type":"string","minLength":1,"maxLength":60},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"descriptionOfOperations":{"type":"string","maxLength":10000,"nullable":true},"status":{"type":"string","enum":["active","expired","cancelled","pending_renewal"]},"autoRenew":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"required":["policyId","accountId","holderName","certificateNumber","issueDate","expirationDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/claims/{id}/approve":{"post":{"summary":"Approve claim payment","description":"Approve claim payment","operationId":"post_api_v1_insurance_claims_id_approve","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:approve"]},{"cookieAuth":["claim:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/claims/{id}/cancel":{"post":{"summary":"Close claim without payment","description":"Close claim without payment","operationId":"post_api_v1_insurance_claims_id_cancel","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:cancel"]},{"cookieAuth":["claim:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/claims/{id}":{"get":{"summary":"View a claim","description":"View a claim","operationId":"get_api_v1_insurance_claims_id","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:read"]},{"cookieAuth":["claim:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a claim","description":"Update fields on a claim","operationId":"patch_api_v1_insurance_claims_id","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:update"]},{"cookieAuth":["claim:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"claimNumber":{"type":"string","minLength":1,"maxLength":60},"policyId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64},"status":{"type":"string","enum":["fnol","open","investigating","adjusting","settled","closed","denied","reopened"]},"claimType":{"type":"string","enum":["property_damage","bodily_injury","liability","theft","fire","water","wind","auto_collision","medical","workers_comp","other"]},"dateOfLoss":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateReported":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":{"type":"string","maxLength":20000,"nullable":true},"lossLocation":{"type":"string","maxLength":500,"nullable":true},"reserveAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"paidAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"deductibleAmount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"adjusterName":{"type":"string","maxLength":200,"nullable":true},"adjusterPhone":{"type":"string","maxLength":40,"nullable":true},"adjusterEmail":{"type":"string","format":"email","maxLength":320,"nullable":true},"claimantName":{"type":"string","maxLength":300,"nullable":true},"claimantContact":{"type":"string","maxLength":300,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a claim","description":"Soft-delete a claim","operationId":"delete_api_v1_insurance_claims_id","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:delete"]},{"cookieAuth":["claim:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/claims/meta":{"get":{"summary":"View a claim","description":"View a claim","operationId":"get_api_v1_insurance_claims_meta","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["claim:read"]},{"cookieAuth":["claim:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/claims":{"get":{"summary":"List claims with filters and pagination","description":"List claims with filters and pagination","operationId":"get_api_v1_insurance_claims","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"policyId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["fnol","open","investigating","adjusting","settled","closed","denied","reopened"]}},{"name":"claimType","in":"query","required":false,"schema":{"type":"string","enum":["property_damage","bodily_injury","liability","theft","fire","water","wind","auto_collision","medical","workers_comp","other"]}},{"name":"lossFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"lossTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["claim:list"]},{"cookieAuth":["claim:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new claim","description":"Create a new claim","operationId":"post_api_v1_insurance_claims","tags":["claim"],"x-surface":"data","x-entity":"claim","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["claim:create"]},{"cookieAuth":["claim:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"claimNumber":{"type":"string","minLength":1,"maxLength":60},"policyId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64},"status":{"type":"string","enum":["fnol","open","investigating","adjusting","settled","closed","denied","reopened"]},"claimType":{"type":"string","enum":["property_damage","bodily_injury","liability","theft","fire","water","wind","auto_collision","medical","workers_comp","other"]},"dateOfLoss":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dateReported":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":{"type":"string","maxLength":20000,"nullable":true},"lossLocation":{"type":"string","maxLength":500,"nullable":true},"reserveAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"paidAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"deductibleAmount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"adjusterName":{"type":"string","maxLength":200,"nullable":true},"adjusterPhone":{"type":"string","maxLength":40,"nullable":true},"adjusterEmail":{"type":"string","format":"email","maxLength":320,"nullable":true},"claimantName":{"type":"string","maxLength":300,"nullable":true},"claimantContact":{"type":"string","maxLength":300,"nullable":true}},"required":["claimNumber","policyId","accountId","claimType","dateOfLoss","dateReported"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/endorsements/{id}":{"get":{"summary":"View a endorsement","description":"View a endorsement","operationId":"get_api_v1_insurance_endorsements_id","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["endorsement:read"]},{"cookieAuth":["endorsement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a endorsement","description":"Update fields on a endorsement","operationId":"patch_api_v1_insurance_endorsements_id","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["endorsement:update"]},{"cookieAuth":["endorsement:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyId":{"type":"string"},"endorsementNumber":{"type":"string","maxLength":80},"endorsementType":{"type":"string","enum":["addition","deletion","modification"]},"description":{"type":"string","maxLength":4000,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"premiumChange":{"type":"number"},"status":{"type":"string","enum":["draft","pending","approved","applied","rejected"]},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"appliedAt":{"type":"string","format":"date-time","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a endorsement","description":"Soft-delete a endorsement","operationId":"delete_api_v1_insurance_endorsements_id","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["endorsement:delete"]},{"cookieAuth":["endorsement:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/endorsements/meta":{"get":{"summary":"View a endorsement","description":"View a endorsement","operationId":"get_api_v1_insurance_endorsements_meta","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["endorsement:read"]},{"cookieAuth":["endorsement:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/endorsements":{"get":{"summary":"List endorsements with filters and pagination","description":"List endorsements with filters and pagination","operationId":"get_api_v1_insurance_endorsements","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"policyId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"endorsementType","in":"query","required":false,"schema":{"type":"string","enum":["addition","deletion","modification"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","pending","approved","applied","rejected"]}}],"security":[{"bearerAuth":["endorsement:list"]},{"cookieAuth":["endorsement:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new endorsement","description":"Create a new endorsement","operationId":"post_api_v1_insurance_endorsements","tags":["endorsement"],"x-surface":"data","x-entity":"endorsement","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["endorsement:create"]},{"cookieAuth":["endorsement:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyId":{"type":"string","minLength":1},"endorsementNumber":{"type":"string","maxLength":80,"minLength":1},"endorsementType":{"type":"string","enum":["addition","deletion","modification"]},"description":{"type":"string","maxLength":4000,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"premiumChange":{"type":"number"},"status":{"type":"string","enum":["draft","pending","approved","applied","rejected"]},"approvedBy":{"type":"string","maxLength":64,"nullable":true},"appliedAt":{"type":"string","format":"date-time","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["policyId","endorsementNumber","endorsementType","effectiveDate","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/loss-runs/{id}":{"get":{"summary":"GET /api/v1/insurance/loss-runs/{id}","operationId":"get_api_v1_insurance_loss_runs_id","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["loss_run:read"]},{"cookieAuth":["loss_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/insurance/loss-runs/{id}","operationId":"patch_api_v1_insurance_loss_runs_id","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["loss_run:update"]},{"cookieAuth":["loss_run:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string"},"carrierId":{"type":"string","nullable":true},"runDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"totalClaims":{"type":"number","minimum":0},"totalIncurred":{"type":"number","minimum":0,"maximum":9999999999.99},"totalPaid":{"type":"number","minimum":0,"maximum":9999999999.99},"totalReserves":{"type":"number","minimum":0,"maximum":9999999999.99},"lossRatio":{"type":"number","nullable":true},"documentUrl":{"type":"string","maxLength":500,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/insurance/loss-runs/{id}","operationId":"delete_api_v1_insurance_loss_runs_id","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["loss_run:delete"]},{"cookieAuth":["loss_run:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/loss-runs/meta":{"get":{"summary":"GET /api/v1/insurance/loss-runs/meta","operationId":"get_api_v1_insurance_loss_runs_meta","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["loss_run:read"]},{"cookieAuth":["loss_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/loss-runs":{"get":{"summary":"GET /api/v1/insurance/loss-runs","operationId":"get_api_v1_insurance_loss_runs","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"carrierId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["loss_run:list"]},{"cookieAuth":["loss_run:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/insurance/loss-runs","operationId":"post_api_v1_insurance_loss_runs","tags":["loss_run"],"x-surface":"data","x-entity":"loss_run","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["loss_run:create"]},{"cookieAuth":["loss_run:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"carrierId":{"type":"string","nullable":true},"runDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"totalClaims":{"type":"number","minimum":0},"totalIncurred":{"type":"number","minimum":0,"maximum":9999999999.99},"totalPaid":{"type":"number","minimum":0,"maximum":9999999999.99},"totalReserves":{"type":"number","minimum":0,"maximum":9999999999.99},"lossRatio":{"type":"number","nullable":true},"documentUrl":{"type":"string","maxLength":500,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["accountId","runDate","periodStart","periodEnd"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/policies/{id}":{"get":{"summary":"View a policy_record","description":"View a policy_record","operationId":"get_api_v1_insurance_policies_id","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["policy_record:read"]},{"cookieAuth":["policy_record:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a policy_record","description":"Update fields on a policy_record","operationId":"patch_api_v1_insurance_policies_id","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["policy_record:update"]},{"cookieAuth":["policy_record:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyNumber":{"type":"string","minLength":1,"maxLength":60},"accountId":{"type":"string","minLength":1,"maxLength":64},"carrierId":{"type":"string","minLength":1,"maxLength":64},"productId":{"type":"string","maxLength":64,"nullable":true},"lineOfBusiness":{"type":"string","minLength":1,"maxLength":120},"policyType":{"type":"string","enum":["new_business","renewal","rewrite"]},"status":{"type":"string","enum":["quote","bound","issued","active","cancelled","expired","non_renewed","pending_cancel"]},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"cancelDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"premium":{"type":"number","minimum":0,"maximum":9999999999.99},"agencyCommission":{"type":"number","minimum":0,"maximum":9999999999.99},"commissionPct":{"type":"number","minimum":0,"maximum":100},"billingType":{"type":"string","enum":["agency_bill","direct_bill"]},"paymentPlan":{"type":"string","maxLength":80,"nullable":true},"deductible":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"coverageSummary":{"type":"object","additionalProperties":{}},"endorsements":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":200},"renewalOfPolicyId":{"type":"string","maxLength":64,"nullable":true},"replacedByPolicyId":{"type":"string","maxLength":64,"nullable":true},"assignedAgentId":{"type":"string","maxLength":64,"nullable":true},"underwriter":{"type":"string","maxLength":200,"nullable":true},"notes":{"type":"string","maxLength":10000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a policy_record","description":"Soft-delete a policy_record","operationId":"delete_api_v1_insurance_policies_id","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["policy_record:delete"]},{"cookieAuth":["policy_record:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/policies/meta":{"get":{"summary":"View a policy_record","description":"View a policy_record","operationId":"get_api_v1_insurance_policies_meta","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["policy_record:read"]},{"cookieAuth":["policy_record:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/policies":{"get":{"summary":"List policy_records with filters and pagination","description":"List policy_records with filters and pagination","operationId":"get_api_v1_insurance_policies","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"carrierId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["quote","bound","issued","active","cancelled","expired","non_renewed","pending_cancel"]}},{"name":"policyType","in":"query","required":false,"schema":{"type":"string","enum":["new_business","renewal","rewrite"]}},{"name":"lineOfBusiness","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"expiringFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"expiringTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["policy_record:list"]},{"cookieAuth":["policy_record:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new policy_record","description":"Create a new policy_record","operationId":"post_api_v1_insurance_policies","tags":["policy_record"],"x-surface":"data","x-entity":"policy_record","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["policy_record:create"]},{"cookieAuth":["policy_record:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"policyNumber":{"type":"string","minLength":1,"maxLength":60},"accountId":{"type":"string","minLength":1,"maxLength":64},"carrierId":{"type":"string","minLength":1,"maxLength":64},"productId":{"type":"string","maxLength":64,"nullable":true},"lineOfBusiness":{"type":"string","minLength":1,"maxLength":120},"policyType":{"type":"string","enum":["new_business","renewal","rewrite"]},"status":{"type":"string","enum":["quote","bound","issued","active","cancelled","expired","non_renewed","pending_cancel"]},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"cancelDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"premium":{"type":"number","minimum":0,"maximum":9999999999.99},"agencyCommission":{"type":"number","minimum":0,"maximum":9999999999.99},"commissionPct":{"type":"number","minimum":0,"maximum":100},"billingType":{"type":"string","enum":["agency_bill","direct_bill"]},"paymentPlan":{"type":"string","maxLength":80,"nullable":true},"deductible":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"coverageSummary":{"type":"object","additionalProperties":{}},"endorsements":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":200},"renewalOfPolicyId":{"type":"string","maxLength":64,"nullable":true},"replacedByPolicyId":{"type":"string","maxLength":64,"nullable":true},"assignedAgentId":{"type":"string","maxLength":64,"nullable":true},"underwriter":{"type":"string","maxLength":200,"nullable":true},"notes":{"type":"string","maxLength":10000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["policyNumber","accountId","carrierId","lineOfBusiness","policyType","effectiveDate","expirationDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/products/{id}":{"get":{"summary":"GET /api/v1/insurance/products/{id}","operationId":"get_api_v1_insurance_products_id","tags":["insurance_product"],"x-surface":"data","x-entity":"insurance_product","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_product:read"]},{"cookieAuth":["insurance_product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/insurance/products/{id}","operationId":"patch_api_v1_insurance_products_id","tags":["insurance_product"],"x-surface":"admin","x-entity":"insurance_product","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_product:update"]},{"cookieAuth":["insurance_product:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"carrierId":{"type":"string"},"name":{"type":"string","maxLength":200},"lineOfBusiness":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]},"productType":{"type":"string","enum":["p_and_c","benefits","life"]},"description":{"type":"string","maxLength":4000,"nullable":true},"defaultCommissionPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"ratingAlgorithm":{"type":"string","maxLength":4000,"nullable":true},"underwritingGuidelines":{"type":"string","maxLength":8000,"nullable":true},"status":{"type":"string","enum":["active","inactive"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/insurance/products/{id}","operationId":"delete_api_v1_insurance_products_id","tags":["insurance_product"],"x-surface":"admin","x-entity":"insurance_product","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_product:delete"]},{"cookieAuth":["insurance_product:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/products/meta":{"get":{"summary":"GET /api/v1/insurance/products/meta","operationId":"get_api_v1_insurance_products_meta","tags":["insurance_product"],"x-surface":"data","x-entity":"insurance_product","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["insurance_product:read"]},{"cookieAuth":["insurance_product:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/products":{"get":{"summary":"GET /api/v1/insurance/products","operationId":"get_api_v1_insurance_products","tags":["insurance_product"],"x-surface":"data","x-entity":"insurance_product","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"carrierId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"lineOfBusiness","in":"query","required":false,"schema":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]}},{"name":"productType","in":"query","required":false,"schema":{"type":"string","enum":["p_and_c","benefits","life"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive"]}}],"security":[{"bearerAuth":["insurance_product:list"]},{"cookieAuth":["insurance_product:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/insurance/products","operationId":"post_api_v1_insurance_products","tags":["insurance_product"],"x-surface":"admin","x-entity":"insurance_product","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_product:create"]},{"cookieAuth":["insurance_product:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"carrierId":{"type":"string","minLength":1},"name":{"type":"string","maxLength":200,"minLength":1},"lineOfBusiness":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]},"productType":{"type":"string","enum":["p_and_c","benefits","life"]},"description":{"type":"string","maxLength":4000,"nullable":true},"defaultCommissionPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"ratingAlgorithm":{"type":"string","maxLength":4000,"nullable":true},"underwritingGuidelines":{"type":"string","maxLength":8000,"nullable":true},"status":{"type":"string","enum":["active","inactive"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["carrierId","name","lineOfBusiness","productType","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/quotes/{id}":{"get":{"summary":"View a insurance_quote","description":"View a insurance_quote","operationId":"get_api_v1_insurance_quotes_id","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_quote:read"]},{"cookieAuth":["insurance_quote:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a insurance_quote","description":"Update fields on a insurance_quote","operationId":"patch_api_v1_insurance_quotes_id","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_quote:update"]},{"cookieAuth":["insurance_quote:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quoteNumber":{"type":"string","maxLength":120},"accountId":{"type":"string","maxLength":80},"status":{"type":"string","enum":["draft","submitted","received","accepted","declined","expired"]},"lineOfBusiness":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]},"carrierId":{"type":"string","maxLength":80,"nullable":true},"productId":{"type":"string","maxLength":80,"nullable":true},"assignedAgentId":{"type":"string","maxLength":80,"nullable":true},"quotedPremium":{"type":"number","minimum":0,"nullable":true},"commissionPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"submittedAt":{"type":"string","format":"date-time","nullable":true},"receivedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","nullable":true},"coverages":{"type":"array","items":{},"nullable":true},"ratingData":{"type":"object","additionalProperties":{},"nullable":true},"comparativeQuotes":{"type":"array","items":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a insurance_quote","description":"Soft-delete a insurance_quote","operationId":"delete_api_v1_insurance_quotes_id","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_quote:delete"]},{"cookieAuth":["insurance_quote:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/quotes/meta":{"get":{"summary":"View a insurance_quote","description":"View a insurance_quote","operationId":"get_api_v1_insurance_quotes_meta","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["insurance_quote:read"]},{"cookieAuth":["insurance_quote:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/insurance/quotes":{"get":{"summary":"List insurance_quotes with filters and pagination","description":"List insurance_quotes with filters and pagination","operationId":"get_api_v1_insurance_quotes","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","submitted","received","accepted","declined","expired"]}},{"name":"lineOfBusiness","in":"query","required":false,"schema":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]}},{"name":"assignedAgentId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["insurance_quote:list"]},{"cookieAuth":["insurance_quote:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new insurance_quote","description":"Create a new insurance_quote","operationId":"post_api_v1_insurance_quotes","tags":["insurance_quote"],"x-surface":"data","x-entity":"insurance_quote","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["insurance_quote:create"]},{"cookieAuth":["insurance_quote:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quoteNumber":{"type":"string","maxLength":120,"minLength":1},"accountId":{"type":"string","maxLength":80,"minLength":1},"status":{"type":"string","enum":["draft","submitted","received","accepted","declined","expired"]},"lineOfBusiness":{"type":"string","enum":["personal_auto","homeowners","commercial_property","general_liability","workers_comp","professional_liability","cyber","umbrella","life","health","disability","dental","vision"]},"carrierId":{"type":"string","maxLength":80,"nullable":true},"productId":{"type":"string","maxLength":80,"nullable":true},"assignedAgentId":{"type":"string","maxLength":80,"nullable":true},"quotedPremium":{"type":"number","minimum":0,"nullable":true},"commissionPct":{"type":"number","minimum":0,"maximum":100,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"expirationDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"submittedAt":{"type":"string","format":"date-time","nullable":true},"receivedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","nullable":true},"coverages":{"type":"array","items":{},"nullable":true},"ratingData":{"type":"object","additionalProperties":{},"nullable":true},"comparativeQuotes":{"type":"array","items":{},"nullable":true}},"required":["quoteNumber","accountId","status","lineOfBusiness"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/alerts/{id}":{"get":{"summary":"View a inventory_alert","description":"View a inventory_alert","operationId":"get_api_v1_inventory_alerts_id","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_alert:read"]},{"cookieAuth":["inventory_alert:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a inventory_alert","description":"Update fields on a inventory_alert","operationId":"patch_api_v1_inventory_alerts_id","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_alert:update"]},{"cookieAuth":["inventory_alert:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","maxLength":64,"nullable":true},"alertType":{"type":"string","enum":["low_stock","overstock","expiring","no_movement"]},"severity":{"type":"string","enum":["critical","high","medium","low"]},"message":{"type":"string","minLength":1,"maxLength":2000},"acknowledged":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a inventory_alert","description":"Soft-delete a inventory_alert","operationId":"delete_api_v1_inventory_alerts_id","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_alert:delete"]},{"cookieAuth":["inventory_alert:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/alerts/meta":{"get":{"summary":"View a inventory_alert","description":"View a inventory_alert","operationId":"get_api_v1_inventory_alerts_meta","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["inventory_alert:read"]},{"cookieAuth":["inventory_alert:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/alerts":{"get":{"summary":"List inventory_alerts with filters and pagination","description":"List inventory_alerts with filters and pagination","operationId":"get_api_v1_inventory_alerts","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"alertType","in":"query","required":false,"schema":{"type":"string","enum":["low_stock","overstock","expiring","no_movement"]}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"acknowledged","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["inventory_alert:list"]},{"cookieAuth":["inventory_alert:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new inventory_alert","description":"Create a new inventory_alert","operationId":"post_api_v1_inventory_alerts","tags":["inventory_alert"],"x-surface":"data","x-entity":"inventory_alert","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_alert:create"]},{"cookieAuth":["inventory_alert:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","maxLength":64,"nullable":true},"alertType":{"type":"string","enum":["low_stock","overstock","expiring","no_movement"]},"severity":{"type":"string","enum":["critical","high","medium","low"]},"message":{"type":"string","minLength":1,"maxLength":2000},"acknowledged":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"required":["productId","alertType","severity","message"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/bins/{id}":{"get":{"summary":"View a warehouse_bin","description":"View a warehouse_bin","operationId":"get_api_v1_inventory_bins_id","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_bin:read"]},{"cookieAuth":["warehouse_bin:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a warehouse_bin","description":"Update fields on a warehouse_bin","operationId":"patch_api_v1_inventory_bins_id","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_bin:update"]},{"cookieAuth":["warehouse_bin:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zoneId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","minLength":1,"maxLength":64},"binCode":{"type":"string","minLength":1,"maxLength":40},"binType":{"type":"string","enum":["shelf","rack","floor","refrigerated"]},"maxQuantity":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"currentQuantity":{"type":"integer","minimum":0,"maximum":2147483647},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a warehouse_bin","description":"Soft-delete a warehouse_bin","operationId":"delete_api_v1_inventory_bins_id","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_bin:delete"]},{"cookieAuth":["warehouse_bin:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/bins/meta":{"get":{"summary":"View a warehouse_bin","description":"View a warehouse_bin","operationId":"get_api_v1_inventory_bins_meta","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["warehouse_bin:read"]},{"cookieAuth":["warehouse_bin:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/bins":{"get":{"summary":"List warehouse_bins with filters and pagination","description":"List warehouse_bins with filters and pagination","operationId":"get_api_v1_inventory_bins","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"zoneId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"binType","in":"query","required":false,"schema":{"type":"string","enum":["shelf","rack","floor","refrigerated"]}}],"security":[{"bearerAuth":["warehouse_bin:list"]},{"cookieAuth":["warehouse_bin:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new warehouse_bin","description":"Create a new warehouse_bin","operationId":"post_api_v1_inventory_bins","tags":["warehouse_bin"],"x-surface":"data","x-entity":"warehouse_bin","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_bin:create"]},{"cookieAuth":["warehouse_bin:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zoneId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","minLength":1,"maxLength":64},"binCode":{"type":"string","minLength":1,"maxLength":40},"binType":{"type":"string","enum":["shelf","rack","floor","refrigerated"]},"maxQuantity":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"currentQuantity":{"type":"integer","minimum":0,"maximum":2147483647},"customFields":{"type":"object","additionalProperties":{}}},"required":["zoneId","warehouseId","binCode","binType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/cycle-counts/{id}":{"get":{"summary":"View a cycle_count","description":"View a cycle_count","operationId":"get_api_v1_inventory_cycle_counts_id","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["cycle_count:read"]},{"cookieAuth":["cycle_count:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a cycle_count","description":"Update fields on a cycle_count","operationId":"patch_api_v1_inventory_cycle_counts_id","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["cycle_count:update"]},{"cookieAuth":["cycle_count:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"warehouseId":{"type":"string","minLength":1,"maxLength":64},"countType":{"type":"string","enum":["full","abc_a","zone","random"]},"status":{"type":"string","enum":["planned","in_progress","completed"]},"plannedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"countedBy":{"type":"string","maxLength":64,"nullable":true},"discrepanciesFound":{"type":"integer","minimum":0,"maximum":100000},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a cycle_count","description":"Soft-delete a cycle_count","operationId":"delete_api_v1_inventory_cycle_counts_id","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["cycle_count:delete"]},{"cookieAuth":["cycle_count:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/cycle-counts/meta":{"get":{"summary":"View a cycle_count","description":"View a cycle_count","operationId":"get_api_v1_inventory_cycle_counts_meta","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["cycle_count:read"]},{"cookieAuth":["cycle_count:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/cycle-counts":{"get":{"summary":"List cycle_counts with filters and pagination","description":"List cycle_counts with filters and pagination","operationId":"get_api_v1_inventory_cycle_counts","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"countType","in":"query","required":false,"schema":{"type":"string","enum":["full","abc_a","zone","random"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["planned","in_progress","completed"]}},{"name":"plannedFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"plannedTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["cycle_count:list"]},{"cookieAuth":["cycle_count:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new cycle_count","description":"Create a new cycle_count","operationId":"post_api_v1_inventory_cycle_counts","tags":["cycle_count"],"x-surface":"data","x-entity":"cycle_count","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["cycle_count:create"]},{"cookieAuth":["cycle_count:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"warehouseId":{"type":"string","minLength":1,"maxLength":64},"countType":{"type":"string","enum":["full","abc_a","zone","random"]},"status":{"type":"string","enum":["planned","in_progress","completed"]},"plannedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"countedBy":{"type":"string","maxLength":64,"nullable":true},"discrepanciesFound":{"type":"integer","minimum":0,"maximum":100000},"customFields":{"type":"object","additionalProperties":{}}},"required":["warehouseId","countType","status","plannedDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/items/{id}":{"get":{"summary":"View a inventory_item","description":"View a inventory_item","operationId":"get_api_v1_inventory_items_id","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_item:read"]},{"cookieAuth":["inventory_item:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a inventory_item","description":"Update fields on a inventory_item","operationId":"patch_api_v1_inventory_items_id","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_item:update"]},{"cookieAuth":["inventory_item:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","minLength":1,"maxLength":64},"binId":{"type":"string","maxLength":64,"nullable":true},"quantityOnHand":{"type":"number","minimum":0,"maximum":9999999999.9999},"quantityReserved":{"type":"number","minimum":0,"maximum":9999999999.9999},"unitCost":{"type":"number","minimum":0,"maximum":9999999999.9999},"totalValue":{"type":"number","minimum":0,"maximum":9999999999.99},"reorderPoint":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"reorderQuantity":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"safetyStock":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"abcClass":{"type":"string","enum":["A","B","C"],"nullable":true},"lastCountedAt":{"type":"string","format":"date-time","nullable":true},"lotNumber":{"type":"string","maxLength":80,"nullable":true},"serialNumber":{"type":"string","maxLength":120,"nullable":true},"expiryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a inventory_item","description":"Soft-delete a inventory_item","operationId":"delete_api_v1_inventory_items_id","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_item:delete"]},{"cookieAuth":["inventory_item:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/items/meta":{"get":{"summary":"View a inventory_item","description":"View a inventory_item","operationId":"get_api_v1_inventory_items_meta","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["inventory_item:read"]},{"cookieAuth":["inventory_item:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/items":{"get":{"summary":"List inventory_items with filters and pagination","description":"List inventory_items with filters and pagination","operationId":"get_api_v1_inventory_items","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"binId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"abcClass","in":"query","required":false,"schema":{"type":"string","enum":["A","B","C"]}},{"name":"expiringFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"expiringTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"belowReorder","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["inventory_item:list"]},{"cookieAuth":["inventory_item:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new inventory_item","description":"Create a new inventory_item","operationId":"post_api_v1_inventory_items","tags":["inventory_item"],"x-surface":"data","x-entity":"inventory_item","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_item:create"]},{"cookieAuth":["inventory_item:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1,"maxLength":64},"warehouseId":{"type":"string","minLength":1,"maxLength":64},"binId":{"type":"string","maxLength":64,"nullable":true},"quantityOnHand":{"type":"number","minimum":0,"maximum":9999999999.9999},"quantityReserved":{"type":"number","minimum":0,"maximum":9999999999.9999},"unitCost":{"type":"number","minimum":0,"maximum":9999999999.9999},"totalValue":{"type":"number","minimum":0,"maximum":9999999999.99},"reorderPoint":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"reorderQuantity":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"safetyStock":{"type":"number","minimum":0,"maximum":9999999999.9999,"nullable":true},"abcClass":{"type":"string","enum":["A","B","C"],"nullable":true},"lastCountedAt":{"type":"string","format":"date-time","nullable":true},"lotNumber":{"type":"string","maxLength":80,"nullable":true},"serialNumber":{"type":"string","maxLength":120,"nullable":true},"expiryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["productId","warehouseId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transactions/{id}":{"get":{"summary":"View a inventory_transaction","description":"View a inventory_transaction","operationId":"get_api_v1_inventory_transactions_id","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_transaction:read"]},{"cookieAuth":["inventory_transaction:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a inventory_transaction","description":"Update fields on a inventory_transaction","operationId":"patch_api_v1_inventory_transactions_id","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_transaction:update"]},{"cookieAuth":["inventory_transaction:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"transactionType":{"type":"string","enum":["receive","issue","transfer","adjust","count","return","scrap"]},"quantity":{"type":"number"},"fromWarehouseId":{"type":"string","nullable":true},"toWarehouseId":{"type":"string","nullable":true},"referenceType":{"type":"string","enum":["po","so","transfer","work_order"],"nullable":true},"referenceId":{"type":"string","maxLength":80,"nullable":true},"unitCost":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"performedBy":{"type":"string","maxLength":200},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a inventory_transaction","description":"Soft-delete a inventory_transaction","operationId":"delete_api_v1_inventory_transactions_id","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_transaction:delete"]},{"cookieAuth":["inventory_transaction:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transactions/meta":{"get":{"summary":"View a inventory_transaction","description":"View a inventory_transaction","operationId":"get_api_v1_inventory_transactions_meta","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["inventory_transaction:read"]},{"cookieAuth":["inventory_transaction:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transactions":{"get":{"summary":"List inventory_transactions with filters and pagination","description":"List inventory_transactions with filters and pagination","operationId":"get_api_v1_inventory_transactions","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"itemId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"transactionType","in":"query","required":false,"schema":{"type":"string","enum":["receive","issue","transfer","adjust","count","return","scrap"]}},{"name":"referenceType","in":"query","required":false,"schema":{"type":"string","enum":["po","so","transfer","work_order"]}}],"security":[{"bearerAuth":["inventory_transaction:list"]},{"cookieAuth":["inventory_transaction:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new inventory_transaction","description":"Create a new inventory_transaction","operationId":"post_api_v1_inventory_transactions","tags":["inventory_transaction"],"x-surface":"data","x-entity":"inventory_transaction","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["inventory_transaction:create"]},{"cookieAuth":["inventory_transaction:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string","minLength":1},"transactionType":{"type":"string","enum":["receive","issue","transfer","adjust","count","return","scrap"]},"quantity":{"type":"number"},"fromWarehouseId":{"type":"string","nullable":true},"toWarehouseId":{"type":"string","nullable":true},"referenceType":{"type":"string","enum":["po","so","transfer","work_order"],"nullable":true},"referenceId":{"type":"string","maxLength":80,"nullable":true},"unitCost":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"performedBy":{"type":"string","maxLength":200,"minLength":1},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["itemId","transactionType","quantity","performedBy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transfers/{id}":{"get":{"summary":"View a stock_transfer","description":"View a stock_transfer","operationId":"get_api_v1_inventory_transfers_id","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["stock_transfer:read"]},{"cookieAuth":["stock_transfer:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a stock_transfer","description":"Update fields on a stock_transfer","operationId":"patch_api_v1_inventory_transfers_id","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["stock_transfer:update"]},{"cookieAuth":["stock_transfer:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fromWarehouseId":{"type":"string"},"toWarehouseId":{"type":"string"},"status":{"type":"string","enum":["draft","in_transit","received","cancelled"]},"transferLines":{"type":"array","items":{}},"requestedBy":{"type":"string","maxLength":200},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a stock_transfer","description":"Soft-delete a stock_transfer","operationId":"delete_api_v1_inventory_transfers_id","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["stock_transfer:delete"]},{"cookieAuth":["stock_transfer:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transfers/meta":{"get":{"summary":"View a stock_transfer","description":"View a stock_transfer","operationId":"get_api_v1_inventory_transfers_meta","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["stock_transfer:read"]},{"cookieAuth":["stock_transfer:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/transfers":{"get":{"summary":"List stock_transfers with filters and pagination","description":"List stock_transfers with filters and pagination","operationId":"get_api_v1_inventory_transfers","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"fromWarehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"toWarehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","in_transit","received","cancelled"]}}],"security":[{"bearerAuth":["stock_transfer:list"]},{"cookieAuth":["stock_transfer:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new stock_transfer","description":"Create a new stock_transfer","operationId":"post_api_v1_inventory_transfers","tags":["stock_transfer"],"x-surface":"data","x-entity":"stock_transfer","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["stock_transfer:create"]},{"cookieAuth":["stock_transfer:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fromWarehouseId":{"type":"string","minLength":1},"toWarehouseId":{"type":"string","minLength":1},"status":{"type":"string","enum":["draft","in_transit","received","cancelled"]},"transferLines":{"type":"array","items":{}},"requestedBy":{"type":"string","maxLength":200,"minLength":1},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["fromWarehouseId","toWarehouseId","status","requestedBy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/warehouses/{id}":{"get":{"summary":"GET /api/v1/inventory/warehouses/{id}","operationId":"get_api_v1_inventory_warehouses_id","tags":["warehouse"],"x-surface":"data","x-entity":"warehouse","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse:read"]},{"cookieAuth":["warehouse:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/inventory/warehouses/{id}","operationId":"patch_api_v1_inventory_warehouses_id","tags":["warehouse"],"x-surface":"admin","x-entity":"warehouse","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse:update"]},{"cookieAuth":["warehouse:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":40},"address":{"type":"string","maxLength":500,"nullable":true},"warehouseType":{"type":"string","enum":["warehouse","store","vehicle","virtual"]},"active":{"type":"boolean"},"managerUserId":{"type":"string","maxLength":64,"nullable":true},"capacityUnits":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/inventory/warehouses/{id}","operationId":"delete_api_v1_inventory_warehouses_id","tags":["warehouse"],"x-surface":"admin","x-entity":"warehouse","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse:delete"]},{"cookieAuth":["warehouse:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/warehouses/meta":{"get":{"summary":"GET /api/v1/inventory/warehouses/meta","operationId":"get_api_v1_inventory_warehouses_meta","tags":["warehouse"],"x-surface":"data","x-entity":"warehouse","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["warehouse:read"]},{"cookieAuth":["warehouse:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/warehouses":{"get":{"summary":"GET /api/v1/inventory/warehouses","operationId":"get_api_v1_inventory_warehouses","tags":["warehouse"],"x-surface":"data","x-entity":"warehouse","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["warehouse","store","vehicle","virtual"]}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"managerUserId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["warehouse:list"]},{"cookieAuth":["warehouse:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/inventory/warehouses","operationId":"post_api_v1_inventory_warehouses","tags":["warehouse"],"x-surface":"admin","x-entity":"warehouse","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse:create"]},{"cookieAuth":["warehouse:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","minLength":1,"maxLength":40},"address":{"type":"string","maxLength":500,"nullable":true},"warehouseType":{"type":"string","enum":["warehouse","store","vehicle","virtual"]},"active":{"type":"boolean"},"managerUserId":{"type":"string","maxLength":64,"nullable":true},"capacityUnits":{"type":"integer","minimum":0,"maximum":2147483647,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","code","warehouseType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/zones/{id}":{"get":{"summary":"View a warehouse_zone","description":"View a warehouse_zone","operationId":"get_api_v1_inventory_zones_id","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_zone:read"]},{"cookieAuth":["warehouse_zone:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a warehouse_zone","description":"Update fields on a warehouse_zone","operationId":"patch_api_v1_inventory_zones_id","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_zone:update"]},{"cookieAuth":["warehouse_zone:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"warehouseId":{"type":"string"},"name":{"type":"string","maxLength":120},"zoneType":{"type":"string","enum":["receiving","storage","picking","packing","shipping","cold","hazmat"]},"capacity":{"type":"number","minimum":0,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a warehouse_zone","description":"Soft-delete a warehouse_zone","operationId":"delete_api_v1_inventory_zones_id","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_zone:delete"]},{"cookieAuth":["warehouse_zone:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/zones/meta":{"get":{"summary":"View a warehouse_zone","description":"View a warehouse_zone","operationId":"get_api_v1_inventory_zones_meta","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["warehouse_zone:read"]},{"cookieAuth":["warehouse_zone:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/inventory/zones":{"get":{"summary":"List warehouse_zones with filters and pagination","description":"List warehouse_zones with filters and pagination","operationId":"get_api_v1_inventory_zones","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"zoneType","in":"query","required":false,"schema":{"type":"string","enum":["receiving","storage","picking","packing","shipping","cold","hazmat"]}}],"security":[{"bearerAuth":["warehouse_zone:list"]},{"cookieAuth":["warehouse_zone:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new warehouse_zone","description":"Create a new warehouse_zone","operationId":"post_api_v1_inventory_zones","tags":["warehouse_zone"],"x-surface":"data","x-entity":"warehouse_zone","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["warehouse_zone:create"]},{"cookieAuth":["warehouse_zone:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"warehouseId":{"type":"string","minLength":1},"name":{"type":"string","maxLength":120,"minLength":1},"zoneType":{"type":"string","enum":["receiving","storage","picking","packing","shipping","cold","hazmat"]},"capacity":{"type":"number","minimum":0,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["warehouseId","name","zoneType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/credit-notes/{id}":{"get":{"summary":"View a credit_note","description":"View a credit_note","operationId":"get_api_v1_invoicing_credit_notes_id","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["credit_note:read"]},{"cookieAuth":["credit_note:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a credit_note","description":"Update fields on a credit_note","operationId":"patch_api_v1_invoicing_credit_notes_id","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["credit_note:update"]},{"cookieAuth":["credit_note:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoiceId":{"type":"string","minLength":1,"maxLength":64},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"reason":{"type":"string","minLength":1,"maxLength":2000},"status":{"type":"string","enum":["draft","issued","applied"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a credit_note","description":"Soft-delete a credit_note","operationId":"delete_api_v1_invoicing_credit_notes_id","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["credit_note:delete"]},{"cookieAuth":["credit_note:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/credit-notes/meta":{"get":{"summary":"View a credit_note","description":"View a credit_note","operationId":"get_api_v1_invoicing_credit_notes_meta","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["credit_note:read"]},{"cookieAuth":["credit_note:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/credit-notes":{"get":{"summary":"List credit_notes with filters and pagination","description":"List credit_notes with filters and pagination","operationId":"get_api_v1_invoicing_credit_notes","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"invoiceId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","issued","applied"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"minAmount","in":"query","required":false,"schema":{"type":"number","minimum":0}}],"security":[{"bearerAuth":["credit_note:list"]},{"cookieAuth":["credit_note:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new credit_note","description":"Create a new credit_note","operationId":"post_api_v1_invoicing_credit_notes","tags":["credit_note"],"x-surface":"data","x-entity":"credit_note","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["credit_note:create"]},{"cookieAuth":["credit_note:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoiceId":{"type":"string","minLength":1,"maxLength":64},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"reason":{"type":"string","minLength":1,"maxLength":2000},"status":{"type":"string","enum":["draft","issued","applied"]}},"required":["invoiceId","amount","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/invoices/{id}/mark-paid":{"post":{"summary":"Mark as paid","description":"Mark as paid","operationId":"post_api_v1_invoicing_invoices_id_mark_paid","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:approve"]},{"cookieAuth":["invoice:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/invoices/{id}":{"get":{"summary":"View a invoice","description":"View a invoice","operationId":"get_api_v1_invoicing_invoices_id","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:read"]},{"cookieAuth":["invoice:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a invoice","description":"Update fields on a invoice","operationId":"patch_api_v1_invoicing_invoices_id","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:update"]},{"cookieAuth":["invoice:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"projectId":{"type":"string","nullable":true},"contractId":{"type":"string","nullable":true},"sourceDealId":{"type":"string","maxLength":64,"nullable":true},"commercialTermsSnapshotId":{"type":"string","maxLength":64,"nullable":true},"purchaseOrderNumber":{"type":"string","maxLength":200,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":60},"lineItems":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64},"name":{"type":"string","maxLength":300},"description":{"type":"string","minLength":1,"maxLength":500},"quantity":{"type":"number","minimum":0},"unitPrice":{"type":"number"},"discountPercent":{"type":"number","minimum":0,"maximum":100},"taxRate":{"type":"number","minimum":0,"maximum":1}},"required":["description","quantity","unitPrice"],"additionalProperties":false},"maxItems":500},"subtotal":{"type":"number","minimum":0},"tax":{"type":"number","minimum":0},"total":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["draft","sent","viewed","paid","overdue","void","disputed"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a invoice","description":"Soft-delete a invoice","operationId":"delete_api_v1_invoicing_invoices_id","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:delete"]},{"cookieAuth":["invoice:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/invoices/{id}/send":{"post":{"summary":"Send invoice to customer","description":"Send invoice to customer","operationId":"post_api_v1_invoicing_invoices_id_send","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"send","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:send"]},{"cookieAuth":["invoice:send"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/invoices/meta":{"get":{"summary":"View a invoice","description":"View a invoice","operationId":"get_api_v1_invoicing_invoices_meta","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["invoice:read"]},{"cookieAuth":["invoice:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/invoices":{"get":{"summary":"List invoices with filters and pagination","description":"List invoices with filters and pagination","operationId":"get_api_v1_invoicing_invoices","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","sent","viewed","paid","overdue","void","disputed"]}},{"name":"dueBefore","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"dueAfter","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["invoice:list"]},{"cookieAuth":["invoice:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new invoice","description":"Create a new invoice","operationId":"post_api_v1_invoicing_invoices","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:create"]},{"cookieAuth":["invoice:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"projectId":{"type":"string","nullable":true},"contractId":{"type":"string","nullable":true},"sourceDealId":{"type":"string","maxLength":64,"nullable":true},"commercialTermsSnapshotId":{"type":"string","maxLength":64,"nullable":true},"purchaseOrderNumber":{"type":"string","maxLength":200,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":60},"lineItems":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64},"name":{"type":"string","maxLength":300},"description":{"type":"string","minLength":1,"maxLength":500},"quantity":{"type":"number","minimum":0},"unitPrice":{"type":"number"},"discountPercent":{"type":"number","minimum":0,"maximum":100},"taxRate":{"type":"number","minimum":0,"maximum":1}},"required":["description","quantity","unitPrice"],"additionalProperties":false},"maxItems":500},"subtotal":{"type":"number","minimum":0},"tax":{"type":"number","minimum":0},"total":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["draft","sent","viewed","paid","overdue","void","disputed"]},"includePendingCharges":{"type":"boolean"}},"required":["accountId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/payments/{id}":{"get":{"summary":"View a payment","description":"View a payment","operationId":"get_api_v1_invoicing_payments_id","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["payment:read"]},{"cookieAuth":["payment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a payment","description":"Update fields on a payment","operationId":"patch_api_v1_invoicing_payments_id","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["payment:update"]},{"cookieAuth":["payment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoiceId":{"type":"string","minLength":1},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"method":{"type":"string","enum":["sepa","wire","card"]},"transactionId":{"type":"string","minLength":1,"maxLength":200},"processedAt":{"type":"string","format":"date-time"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a payment","description":"Soft-delete a payment","operationId":"delete_api_v1_invoicing_payments_id","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["payment:delete"]},{"cookieAuth":["payment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/payments/meta":{"get":{"summary":"View a payment","description":"View a payment","operationId":"get_api_v1_invoicing_payments_meta","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["payment:read"]},{"cookieAuth":["payment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/payments":{"get":{"summary":"List payments with filters and pagination","description":"List payments with filters and pagination","operationId":"get_api_v1_invoicing_payments","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"list","x-idempotent":false,"parameters":[{"name":"invoiceId","in":"query","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","required":false,"schema":{"type":"string","enum":["sepa","wire","card"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["payment:list"]},{"cookieAuth":["payment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new payment","description":"Create a new payment","operationId":"post_api_v1_invoicing_payments","tags":["payment"],"x-surface":"data","x-entity":"payment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["payment:create"]},{"cookieAuth":["payment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoiceId":{"type":"string","minLength":1},"amount":{"type":"number","exclusiveMinimum":true,"minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"method":{"type":"string","enum":["sepa","wire","card"]},"transactionId":{"type":"string","minLength":1,"maxLength":200},"processedAt":{"type":"string","format":"date-time"}},"required":["invoiceId","amount","method","transactionId","processedAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes/{id}/approve":{"post":{"summary":"Mark quote accepted by customer","description":"Mark quote accepted by customer","operationId":"post_api_v1_invoicing_quotes_id_approve","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:approve"]},{"cookieAuth":["quote:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes/{id}/convert":{"post":{"summary":"Convert accepted quote into invoice + subscriptions","description":"Convert accepted quote into invoice + subscriptions","operationId":"post_api_v1_invoicing_quotes_id_convert","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"convert","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:convert"]},{"cookieAuth":["quote:convert"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes/{id}":{"get":{"summary":"View a quote","description":"View a quote","operationId":"get_api_v1_invoicing_quotes_id","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:read"]},{"cookieAuth":["quote:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a quote","description":"Update fields on a quote","operationId":"patch_api_v1_invoicing_quotes_id","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:update"]},{"cookieAuth":["quote:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","maxLength":64,"nullable":true},"dealId":{"type":"string","maxLength":64,"nullable":true},"workOrderId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true},"ownerId":{"type":"string","maxLength":64,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","maxLength":300,"nullable":true},"lineItems":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64},"name":{"type":"string","minLength":1,"maxLength":300},"sku":{"type":"string","maxLength":80},"kind":{"type":"string","maxLength":40},"section":{"type":"string","enum":["recurring","fixed","time_material"]},"description":{"type":"string","maxLength":5000},"quantity":{"type":"number","minimum":0,"maximum":999999.9999},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"discountPercent":{"type":"number","minimum":0,"maximum":100},"taxRatePercent":{"type":"number","minimum":0,"maximum":100},"billingMode":{"type":"string","maxLength":40},"role":{"type":"string","maxLength":120},"paymentSchedule":{"type":"string","maxLength":40},"subscriptionBillingFrequency":{"type":"string","maxLength":40},"subscriptionTermMonths":{"type":"integer","minimum":0,"maximum":1200},"notes":{"type":"string","maxLength":2000},"sortOrder":{"type":"integer","minimum":0}},"required":["name","quantity","unitPrice"],"additionalProperties":true},"maxItems":500},"termMonths":{"type":"integer","minimum":0,"maximum":1200,"nullable":true},"pricingModel":{"type":"string","enum":["one_time","time_materials","subscription"],"nullable":true},"billingFrequency":{"type":"string","enum":["monthly","quarterly","semi_annual","annual"],"nullable":true},"discountPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"taxRatePercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"paymentArrangement":{"type":"string","enum":["upfront_100","completion_100","split_50_50","monthly_subscription","custom"],"nullable":true},"paymentArrangementCustom":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"percent":{"type":"number","minimum":0,"maximum":100},"dueDays":{"type":"integer"},"trigger":{"type":"string","maxLength":60}},"additionalProperties":true},"nullable":true},"subtotal":{"type":"number","minimum":0,"maximum":9999999999.99},"discountTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"taxTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"total":{"type":"number","minimum":0,"maximum":9999999999.99},"recurringTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"fixedTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"tmTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"tmHours":{"type":"number","minimum":0,"maximum":9999999.99},"mrr":{"type":"number","minimum":0,"maximum":9999999999.99},"arr":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"status":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired","withdrawn","converted"]},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"notes":{"type":"string","maxLength":10000,"nullable":true},"terms":{"type":"string","maxLength":20000,"nullable":true},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"pdfUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"sentAt":{"type":"string","nullable":true},"acceptedAt":{"type":"string","nullable":true},"rejectedAt":{"type":"string","nullable":true},"convertedInvoiceId":{"type":"string","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a quote","description":"Soft-delete a quote","operationId":"delete_api_v1_invoicing_quotes_id","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:delete"]},{"cookieAuth":["quote:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes/{id}/send":{"post":{"summary":"Send quote to customer","description":"Send quote to customer","operationId":"post_api_v1_invoicing_quotes_id_send","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"send","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:send"]},{"cookieAuth":["quote:send"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes/meta":{"get":{"summary":"View a quote","description":"View a quote","operationId":"get_api_v1_invoicing_quotes_meta","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["quote:read"]},{"cookieAuth":["quote:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/invoicing/quotes":{"get":{"summary":"List quotes with filters and pagination","description":"List quotes with filters and pagination","operationId":"get_api_v1_invoicing_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"dealId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"workOrderId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired","withdrawn","converted"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"minTotal","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"expiringFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"expiringTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["quote:list"]},{"cookieAuth":["quote:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new quote","description":"Create a new quote","operationId":"post_api_v1_invoicing_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:create"]},{"cookieAuth":["quote:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","maxLength":64,"nullable":true},"dealId":{"type":"string","maxLength":64,"nullable":true},"workOrderId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true},"ownerId":{"type":"string","maxLength":64,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":60},"title":{"type":"string","maxLength":300,"nullable":true},"lineItems":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64},"name":{"type":"string","minLength":1,"maxLength":300},"sku":{"type":"string","maxLength":80},"kind":{"type":"string","maxLength":40},"section":{"type":"string","enum":["recurring","fixed","time_material"]},"description":{"type":"string","maxLength":5000},"quantity":{"type":"number","minimum":0,"maximum":999999.9999},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"discountPercent":{"type":"number","minimum":0,"maximum":100},"taxRatePercent":{"type":"number","minimum":0,"maximum":100},"billingMode":{"type":"string","maxLength":40},"role":{"type":"string","maxLength":120},"paymentSchedule":{"type":"string","maxLength":40},"subscriptionBillingFrequency":{"type":"string","maxLength":40},"subscriptionTermMonths":{"type":"integer","minimum":0,"maximum":1200},"notes":{"type":"string","maxLength":2000},"sortOrder":{"type":"integer","minimum":0}},"required":["name","quantity","unitPrice"],"additionalProperties":true},"maxItems":500},"termMonths":{"type":"integer","minimum":0,"maximum":1200,"nullable":true},"pricingModel":{"type":"string","enum":["one_time","time_materials","subscription"],"nullable":true},"billingFrequency":{"type":"string","enum":["monthly","quarterly","semi_annual","annual"],"nullable":true},"discountPercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"taxRatePercent":{"type":"number","minimum":0,"maximum":100,"nullable":true},"paymentArrangement":{"type":"string","enum":["upfront_100","completion_100","split_50_50","monthly_subscription","custom"],"nullable":true},"paymentArrangementCustom":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","maxLength":120},"percent":{"type":"number","minimum":0,"maximum":100},"dueDays":{"type":"integer"},"trigger":{"type":"string","maxLength":60}},"additionalProperties":true},"nullable":true},"subtotal":{"type":"number","minimum":0,"maximum":9999999999.99},"discountTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"taxTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"total":{"type":"number","minimum":0,"maximum":9999999999.99},"recurringTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"fixedTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"tmTotal":{"type":"number","minimum":0,"maximum":9999999999.99},"tmHours":{"type":"number","minimum":0,"maximum":9999999.99},"mrr":{"type":"number","minimum":0,"maximum":9999999999.99},"arr":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"status":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired","withdrawn","converted"]},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"notes":{"type":"string","maxLength":10000,"nullable":true},"terms":{"type":"string","maxLength":20000,"nullable":true},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"pdfUrl":{"type":"string","format":"uri","maxLength":500,"nullable":true},"sentAt":{"type":"string","nullable":true},"acceptedAt":{"type":"string","nullable":true},"rejectedAt":{"type":"string","nullable":true},"convertedInvoiceId":{"type":"string","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["accountId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hub-items/{id}/reprocess":{"post":{"summary":"Update a knowledge hub item","description":"Update a knowledge hub item","operationId":"post_api_v1_kb_hub_items_id_reprocess","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:update"]},{"cookieAuth":["kb_hub_item:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hub-items/{id}":{"get":{"summary":"Read a knowledge hub item","description":"Read a knowledge hub item","operationId":"get_api_v1_kb_hub_items_id","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:read"]},{"cookieAuth":["kb_hub_item:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update a knowledge hub item","description":"Update a knowledge hub item","operationId":"patch_api_v1_kb_hub_items_id","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:update"]},{"cookieAuth":["kb_hub_item:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","minLength":1,"maxLength":2000000},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":20},"sourceRef":{"type":"string","maxLength":500,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a knowledge hub item","description":"Delete a knowledge hub item","operationId":"delete_api_v1_kb_hub_items_id","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:delete"]},{"cookieAuth":["kb_hub_item:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hub-items/meta":{"get":{"summary":"Read a knowledge hub item","description":"Read a knowledge hub item","operationId":"get_api_v1_kb_hub_items_meta","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["kb_hub_item:read"]},{"cookieAuth":["kb_hub_item:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hub-items":{"get":{"summary":"List items in an accessible knowledge hub","description":"List items in an accessible knowledge hub","operationId":"get_api_v1_kb_hub_items","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"list","x-idempotent":false,"parameters":[{"name":"hubId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"sourceType","in":"query","required":false,"schema":{"type":"string","enum":["manual","upload","transcript","system"]}}],"security":[{"bearerAuth":["kb_hub_item:list"]},{"cookieAuth":["kb_hub_item:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Add an item to a writable knowledge hub","description":"Add an item to a writable knowledge hub","operationId":"post_api_v1_kb_hub_items","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub_item:create"]},{"cookieAuth":["kb_hub_item:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hubId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","minLength":1,"maxLength":2000000},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":20,"default":[]},"sourceType":{"type":"string","enum":["manual","upload","transcript"],"default":"manual"},"sourceRef":{"type":"string","maxLength":500},"objectKey":{"type":"string","maxLength":500},"mimeType":{"type":"string","maxLength":120},"byteSize":{"type":"integer","minimum":0},"originalFilename":{"type":"string","maxLength":300},"status":{"type":"string","enum":["processing","ready","failed"]}},"required":["hubId","title","content"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/{id}/members/{memberId}":{"patch":{"summary":"Manage who can access a shared knowledge hub","description":"Manage who can access a shared knowledge hub","operationId":"patch_api_v1_kb_hubs_id_members_memberId","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"manage_members","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:manage_members"]},{"cookieAuth":["kb_hub:manage_members"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accessLevel":{"type":"string","enum":["read","write","admin"]}},"required":["accessLevel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Manage who can access a shared knowledge hub","description":"Manage who can access a shared knowledge hub","operationId":"delete_api_v1_kb_hubs_id_members_memberId","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"manage_members","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:manage_members"]},{"cookieAuth":["kb_hub:manage_members"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/{id}/members":{"get":{"summary":"Manage who can access a shared knowledge hub","description":"Manage who can access a shared knowledge hub","operationId":"get_api_v1_kb_hubs_id_members","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"manage_members","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:manage_members"]},{"cookieAuth":["kb_hub:manage_members"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Manage who can access a shared knowledge hub","description":"Manage who can access a shared knowledge hub","operationId":"post_api_v1_kb_hubs_id_members","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"manage_members","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:manage_members"]},{"cookieAuth":["kb_hub:manage_members"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"groupId":{"type":"string","minLength":1},"everyone":{"type":"boolean"},"accessLevel":{"type":"string","enum":["read","write","admin"],"default":"read"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/{id}/refresh":{"post":{"summary":"Run a bounded AI refresh that proposes reviewable knowledge updates","description":"Run a bounded AI refresh that proposes reviewable knowledge updates","operationId":"post_api_v1_kb_hubs_id_refresh","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"refresh","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:refresh"]},{"cookieAuth":["kb_page:refresh"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/{id}/review-coverage":{"post":{"summary":"Run a bounded AI refresh that proposes reviewable knowledge updates","description":"Run a bounded AI refresh that proposes reviewable knowledge updates","operationId":"post_api_v1_kb_hubs_id_review_coverage","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"refresh","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:refresh"]},{"cookieAuth":["kb_page:refresh"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/{id}":{"get":{"summary":"Read a knowledge hub","description":"Read a knowledge hub","operationId":"get_api_v1_kb_hubs_id","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:read"]},{"cookieAuth":["kb_hub:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update a knowledge hub","description":"Update a knowledge hub","operationId":"patch_api_v1_kb_hubs_id","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:update"]},{"cookieAuth":["kb_hub:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"description":{"type":"string","maxLength":500,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a knowledge hub","description":"Delete a knowledge hub","operationId":"delete_api_v1_kb_hubs_id","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:delete"]},{"cookieAuth":["kb_hub:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs/meta":{"get":{"summary":"Read a knowledge hub","description":"Read a knowledge hub","operationId":"get_api_v1_kb_hubs_meta","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["kb_hub:read"]},{"cookieAuth":["kb_hub:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/hubs":{"get":{"summary":"List knowledge hubs visible to the user","description":"List knowledge hubs visible to the user","operationId":"get_api_v1_kb_hubs","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"hubType","in":"query","required":false,"schema":{"type":"string","enum":["personal","shared","system"]}},{"name":"workspace","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"writable","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"security":[{"bearerAuth":["kb_hub:list"]},{"cookieAuth":["kb_hub:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a shared knowledge hub","description":"Create a shared knowledge hub","operationId":"post_api_v1_kb_hubs","tags":["kb_hub"],"x-surface":"data","x-entity":"kb_hub","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_hub:create"]},{"cookieAuth":["kb_hub:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"description":{"type":"string","maxLength":500},"authoringProfile":{"type":"object","properties":{"department":{"type":"string","maxLength":120},"departmentId":{"type":"string","maxLength":64},"whatWeDo":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":20},"focusAreas":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"maxItems":20},"audience":{"type":"string","maxLength":200}},"additionalProperties":false},"workspaceVisible":{"type":"boolean"},"sourceCapable":{"type":"boolean"},"sourceHubId":{"type":"string","minLength":1}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/approve":{"post":{"summary":"Accept or dismiss AI-suggested page structures and article blocks","description":"Accept or dismiss AI-suggested page structures and article blocks","operationId":"post_api_v1_kb_pages_id_approve","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:approve"]},{"cookieAuth":["kb_page:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"includeSuggestedBlocks":{"type":"boolean","default":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/blocks/{blockId}/approve":{"post":{"summary":"Accept or dismiss AI-suggested page structures and article blocks","description":"Accept or dismiss AI-suggested page structures and article blocks","operationId":"post_api_v1_kb_pages_id_blocks_blockId_approve","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"blockId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:approve"]},{"cookieAuth":["kb_page:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/blocks/{blockId}":{"patch":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"patch_api_v1_kb_pages_id_blocks_blockId","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"op":{"type":"string","enum":["edit"]},"content":{"type":"object","additionalProperties":{}}},"required":["op","content"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Accept or dismiss AI-suggested page structures and article blocks","description":"Accept or dismiss AI-suggested page structures and article blocks","operationId":"delete_api_v1_kb_pages_id_blocks_blockId","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:approve"]},{"cookieAuth":["kb_page:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/images/{token}":{"delete":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"delete_api_v1_kb_pages_id_images_token","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":1200}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/images/imports":{"post":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_id_images_imports","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":4096}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/images":{"post":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_id_images","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/permissions/{permissionId}":{"patch":{"summary":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","description":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","operationId":"patch_api_v1_kb_pages_id_permissions_permissionId","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"manage_permissions","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"permissionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:manage_permissions"]},{"cookieAuth":["kb_page:manage_permissions"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accessLevel":{"type":"string","enum":["read","write","admin"]}},"required":["accessLevel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","description":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","operationId":"delete_api_v1_kb_pages_id_permissions_permissionId","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"manage_permissions","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"permissionId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:manage_permissions"]},{"cookieAuth":["kb_page:manage_permissions"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/permissions":{"get":{"summary":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","description":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","operationId":"get_api_v1_kb_pages_id_permissions","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"manage_permissions","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:manage_permissions"]},{"cookieAuth":["kb_page:manage_permissions"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","description":"Manage who can access a knowledge folder or article (cascades to descendants; article grants overrule the parent folder)","operationId":"post_api_v1_kb_pages_id_permissions","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"manage_permissions","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:manage_permissions"]},{"cookieAuth":["kb_page:manage_permissions"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"groupId":{"type":"string","minLength":1},"everyone":{"type":"boolean"},"accessLevel":{"type":"string","enum":["read","write","admin"],"default":"read"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}/refresh":{"post":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_id_refresh","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/{id}":{"get":{"summary":"Read an AI-authored living documentation page","description":"Read an AI-authored living documentation page","operationId":"get_api_v1_kb_pages_id","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["kb_page:read"]},{"cookieAuth":["kb_page:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"put_api_v1_kb_pages_id","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"blocks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"blockType":{"type":"string","enum":["heading","paragraph","list","table","callout","code"]},"content":{}},"required":["blockType","content"],"additionalProperties":false},"minItems":1,"maxItems":250}},"required":["blocks"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"patch_api_v1_kb_pages_id","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"parentPageId":{"type":"string","minLength":1,"nullable":true},"department":{"type":"string","maxLength":120,"nullable":true},"position":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Delete a living documentation page","description":"Delete a living documentation page","operationId":"delete_api_v1_kb_pages_id","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"delete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:delete"]},{"cookieAuth":["kb_page:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/ai-drafts":{"post":{"summary":"Edit page structure and article content without approving AI drafts","description":"Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_ai_drafts","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hubId":{"type":"string","minLength":1},"parentPageId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","maxLength":100000,"default":""}},"required":["hubId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages/meta":{"get":{"summary":"Read an AI-authored living documentation page","description":"Read an AI-authored living documentation page","operationId":"get_api_v1_kb_pages_meta","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["kb_page:read"]},{"cookieAuth":["kb_page:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/pages":{"get":{"summary":"List AI-authored living documentation pages","description":"List AI-authored living documentation pages","operationId":"get_api_v1_kb_pages","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"list","x-idempotent":false,"parameters":[{"name":"hubId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}}],"security":[{"bearerAuth":["kb_page:list"]},{"cookieAuth":["kb_page:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a living documentation page","description":"Create a living documentation page","operationId":"post_api_v1_kb_pages","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:create"]},{"cookieAuth":["kb_page:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"hubId":{"type":"string","minLength":1},"parentPageId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"mode":{"type":"string","enum":["append","replace"],"default":"append"},"nodeType":{"type":"string","enum":["article"]},"content":{"type":"string","maxLength":100000,"default":""}},"required":["hubId","title","nodeType"],"additionalProperties":false},{"type":"object","properties":{"nodeType":{"type":"string","enum":["folder"]},"hubId":{"type":"string","minLength":1},"parentPageId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200}},"required":["nodeType","hubId","title"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/kb/search":{"get":{"summary":"List items in an accessible knowledge hub","description":"List items in an accessible knowledge hub","operationId":"get_api_v1_kb_search","tags":["kb_hub_item"],"x-surface":"data","x-entity":"kb_hub_item","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"hubId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25}}],"security":[{"bearerAuth":["kb_hub_item:list"]},{"cookieAuth":["kb_hub_item:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/chat":{"post":{"summary":"Invoke an LLM via /api/v1/llm/*","description":"Invoke an LLM via /api/v1/llm/*","operationId":"post_api_v1_llm_chat","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["llm:chat"]},{"cookieAuth":["llm:chat"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["system","user","assistant"]},"content":{"type":"string","minLength":1,"maxLength":100000}},"required":["role","content"],"additionalProperties":false},"minItems":1,"maxItems":50},"model":{"type":"string","enum":["fast","smart","auto"],"default":"auto"},"purpose":{"type":"string","maxLength":60,"default":"chat"},"temperature":{"type":"number","minimum":0,"maximum":2},"maxTokens":{"type":"integer","minimum":1,"maximum":8000},"responseFormat":{"type":"string","enum":["text","json"],"default":"text"}},"required":["messages"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/enrich/account":{"post":{"summary":"LLM-enrich an account's firmographic fields (metered)","description":"LLM-enrich an account's firmographic fields (metered)","operationId":"post_api_v1_llm_enrich_account","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"enrich","x-idempotent":false,"security":[{"bearerAuth":["account:enrich"]},{"cookieAuth":["account:enrich"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":64},"fields":{"type":"array","items":{"type":"string"}},"forceRefresh":{"type":"boolean"}},"required":["accountId"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/enrich/contact":{"post":{"summary":"LLM-enrich a contact's fields (metered)","description":"LLM-enrich a contact's fields (metered)","operationId":"post_api_v1_llm_enrich_contact","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"enrich","x-idempotent":false,"security":[{"bearerAuth":["contact:enrich"]},{"cookieAuth":["contact:enrich"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","minLength":1,"maxLength":64},"fields":{"type":"array","items":{"type":"string"}},"forceRefresh":{"type":"boolean"}},"required":["contactId"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/enrich/lead":{"post":{"summary":"LLM-enrich a lead's person + company fields (metered)","description":"LLM-enrich a lead's person + company fields (metered)","operationId":"post_api_v1_llm_enrich_lead","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"enrich","x-idempotent":false,"security":[{"bearerAuth":["lead:enrich"]},{"cookieAuth":["lead:enrich"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"leadId":{"type":"string","minLength":1,"maxLength":64},"fields":{"type":"array","items":{"type":"string"}},"forceRefresh":{"type":"boolean"}},"required":["leadId"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/pending-enrichments/{type}/{id}":{"get":{"summary":"GET /api/v1/llm/pending-enrichments/{type}/{id}","operationId":"get_api_v1_llm_pending_enrichments_type_id","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"read","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:read"]},{"cookieAuth":["ai_call:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Invoke an LLM via /api/v1/llm/*","description":"Invoke an LLM via /api/v1/llm/*","operationId":"put_api_v1_llm_pending_enrichments_type_id","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:create"]},{"cookieAuth":["ai_call:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Invoke an LLM via /api/v1/llm/*","description":"Invoke an LLM via /api/v1/llm/*","operationId":"delete_api_v1_llm_pending_enrichments_type_id","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:create"]},{"cookieAuth":["ai_call:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/summarize":{"post":{"summary":"Invoke an LLM via /api/v1/llm/*","description":"Invoke an LLM via /api/v1/llm/*","operationId":"post_api_v1_llm_summarize","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["llm:summarize"]},{"cookieAuth":["llm:summarize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"maxLength":200000},"style":{"type":"string","enum":["brief","detailed","bullets"],"default":"brief"},"maxTokens":{"type":"integer","minimum":50,"maximum":2000}},"required":["input"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/translate":{"post":{"summary":"Invoke an LLM via /api/v1/llm/*","description":"Invoke an LLM via /api/v1/llm/*","operationId":"post_api_v1_llm_translate","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["llm:translate"]},{"cookieAuth":["llm:translate"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"maxLength":50000},"toLocale":{"type":"string","pattern":"^[a-z]{2}(-[A-Z]{2})?$"}},"required":["input","toLocale"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/llm/usage":{"get":{"summary":"GET /api/v1/llm/usage","operationId":"get_api_v1_llm_usage","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["ai_call:list"]},{"cookieAuth":["ai_call:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/bom-lines/{id}":{"get":{"summary":"View a bom_line","description":"View a bom_line","operationId":"get_api_v1_manufacturing_bom_lines_id","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["bom_line:read"]},{"cookieAuth":["bom_line:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a bom_line","description":"Update fields on a bom_line","operationId":"patch_api_v1_manufacturing_bom_lines_id","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["bom_line:update"]},{"cookieAuth":["bom_line:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bomId":{"type":"string","minLength":1,"maxLength":64},"componentProductId":{"type":"string","maxLength":64,"nullable":true},"componentName":{"type":"string","minLength":1,"maxLength":300},"quantity":{"type":"number","minimum":0,"maximum":9999999.9999},"unit":{"type":"string","maxLength":40},"sortOrder":{"type":"integer","minimum":0,"maximum":1000000},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a bom_line","description":"Soft-delete a bom_line","operationId":"delete_api_v1_manufacturing_bom_lines_id","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["bom_line:delete"]},{"cookieAuth":["bom_line:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/bom-lines/meta":{"get":{"summary":"View a bom_line","description":"View a bom_line","operationId":"get_api_v1_manufacturing_bom_lines_meta","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["bom_line:read"]},{"cookieAuth":["bom_line:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/bom-lines":{"get":{"summary":"List bom_lines with filters and pagination","description":"List bom_lines with filters and pagination","operationId":"get_api_v1_manufacturing_bom_lines","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"bomId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"componentProductId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["bom_line:list"]},{"cookieAuth":["bom_line:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new bom_line","description":"Create a new bom_line","operationId":"post_api_v1_manufacturing_bom_lines","tags":["bom_line"],"x-surface":"data","x-entity":"bom_line","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["bom_line:create"]},{"cookieAuth":["bom_line:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bomId":{"type":"string","minLength":1,"maxLength":64},"componentProductId":{"type":"string","maxLength":64,"nullable":true},"componentName":{"type":"string","minLength":1,"maxLength":300},"quantity":{"type":"number","minimum":0,"maximum":9999999.9999},"unit":{"type":"string","maxLength":40},"sortOrder":{"type":"integer","minimum":0,"maximum":1000000},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["bomId","componentName","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/boms/{id}":{"get":{"summary":"View a bom","description":"View a bom","operationId":"get_api_v1_manufacturing_boms_id","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["bom:read"]},{"cookieAuth":["bom:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a bom","description":"Update fields on a bom","operationId":"patch_api_v1_manufacturing_boms_id","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["bom:update"]},{"cookieAuth":["bom:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"productId":{"type":"string","maxLength":64,"nullable":true},"version":{"type":"integer","minimum":1,"maximum":1000000},"status":{"type":"string","enum":["draft","active","archived"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a bom","description":"Soft-delete a bom","operationId":"delete_api_v1_manufacturing_boms_id","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["bom:delete"]},{"cookieAuth":["bom:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/boms/meta":{"get":{"summary":"View a bom","description":"View a bom","operationId":"get_api_v1_manufacturing_boms_meta","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["bom:read"]},{"cookieAuth":["bom:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/manufacturing/boms":{"get":{"summary":"List boms with filters and pagination","description":"List boms with filters and pagination","operationId":"get_api_v1_manufacturing_boms","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","active","archived"]}}],"security":[{"bearerAuth":["bom:list"]},{"cookieAuth":["bom:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new bom","description":"Create a new bom","operationId":"post_api_v1_manufacturing_boms","tags":["bom"],"x-surface":"data","x-entity":"bom","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["bom:create"]},{"cookieAuth":["bom:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"productId":{"type":"string","maxLength":64,"nullable":true},"version":{"type":"integer","minimum":1,"maximum":1000000},"status":{"type":"string","enum":["draft","active","archived"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/cancel":{"post":{"summary":"Cancel scheduled send","description":"Cancel scheduled send","operationId":"post_api_v1_marketing_campaigns_id_cancel","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:cancel"]},{"cookieAuth":["campaign:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/checklist":{"get":{"summary":"View a campaign","description":"View a campaign","operationId":"get_api_v1_marketing_campaigns_id_checklist","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:read"]},{"cookieAuth":["campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/preview":{"get":{"summary":"View a campaign","description":"View a campaign","operationId":"get_api_v1_marketing_campaigns_id_preview","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","format":"email"}}],"security":[{"bearerAuth":["campaign:read"]},{"cookieAuth":["campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}":{"get":{"summary":"View a campaign","description":"View a campaign","operationId":"get_api_v1_marketing_campaigns_id","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:read"]},{"cookieAuth":["campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a campaign","description":"Update fields on a campaign","operationId":"patch_api_v1_marketing_campaigns_id","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:update"]},{"cookieAuth":["campaign:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"status":{"type":"string","enum":["draft","scheduled","sending","sent","paused","cancelled","failed"]},"description":{"type":"string","maxLength":2000,"nullable":true},"segmentId":{"type":"string","maxLength":80,"nullable":true},"recipientMode":{"type":"string","enum":["segment","adhoc","mixed","criteria"]},"recipientRefs":{"type":"array","items":{},"nullable":true},"audienceFilter":{"type":"object","additionalProperties":{},"nullable":true},"templateId":{"type":"string","maxLength":80,"nullable":true},"subject":{"type":"string","maxLength":300,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"fromName":{"type":"string","maxLength":100,"nullable":true},"fromEmail":{"type":"string","maxLength":200,"nullable":true},"replyTo":{"type":"string","maxLength":200,"nullable":true},"htmlBody":{"type":"string","nullable":true},"textBody":{"type":"string","nullable":true},"utm":{"type":"object","additionalProperties":{},"nullable":true},"ab":{"type":"object","additionalProperties":{},"nullable":true},"sentCount":{"type":"number","nullable":true},"deliveredCount":{"type":"number","nullable":true},"openedCount":{"type":"number","nullable":true},"clickedCount":{"type":"number","nullable":true},"unsubscribedCount":{"type":"number","nullable":true},"bouncedCount":{"type":"number","nullable":true},"complainedCount":{"type":"number","nullable":true},"failedCount":{"type":"number","nullable":true},"scheduledAt":{"type":"string","format":"date-time","nullable":true},"sendStartedAt":{"type":"string","format":"date-time","nullable":true},"sendCompletedAt":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a campaign","description":"Soft-delete a campaign","operationId":"delete_api_v1_marketing_campaigns_id","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:delete"]},{"cookieAuth":["campaign:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/schedule":{"post":{"summary":"Send campaign","description":"Send campaign","operationId":"post_api_v1_marketing_campaigns_id_schedule","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"send","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:send"]},{"cookieAuth":["campaign:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scheduledAt":{"type":"string","format":"date-time"}},"required":["scheduledAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Cancel scheduled send","description":"Cancel scheduled send","operationId":"delete_api_v1_marketing_campaigns_id_schedule","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"cancel","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:cancel"]},{"cookieAuth":["campaign:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/send":{"post":{"summary":"Send campaign","description":"Send campaign","operationId":"post_api_v1_marketing_campaigns_id_send","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"send","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:send"]},{"cookieAuth":["campaign:send"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/stats":{"get":{"summary":"View a campaign","description":"View a campaign","operationId":"get_api_v1_marketing_campaigns_id_stats","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"security":[{"bearerAuth":["campaign:read"]},{"cookieAuth":["campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/{id}/test-send":{"post":{"summary":"Send a test email of the campaign to specified addresses","description":"Send a test email of the campaign to specified addresses","operationId":"post_api_v1_marketing_campaigns_id_test_send","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"test_send","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:test_send"]},{"cookieAuth":["campaign:test_send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string","format":"email"},"maxItems":10}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns/meta":{"get":{"summary":"View a campaign","description":"View a campaign","operationId":"get_api_v1_marketing_campaigns_meta","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["campaign:read"]},{"cookieAuth":["campaign:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/campaigns":{"get":{"summary":"List campaigns with filters and pagination","description":"List campaigns with filters and pagination","operationId":"get_api_v1_marketing_campaigns","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","scheduled","sending","sent","paused","cancelled","failed"]}},{"name":"segmentId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"templateId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["campaign:list"]},{"cookieAuth":["campaign:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new campaign","description":"Create a new campaign","operationId":"post_api_v1_marketing_campaigns","tags":["campaign"],"x-surface":"data","x-entity":"campaign","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["campaign:create"]},{"cookieAuth":["campaign:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"status":{"type":"string","enum":["draft","scheduled","sending","sent","paused","cancelled","failed"]},"description":{"type":"string","maxLength":2000,"nullable":true},"segmentId":{"type":"string","maxLength":80,"nullable":true},"recipientMode":{"type":"string","enum":["segment","adhoc","mixed","criteria"]},"recipientRefs":{"type":"array","items":{},"nullable":true},"audienceFilter":{"type":"object","additionalProperties":{},"nullable":true},"templateId":{"type":"string","maxLength":80,"nullable":true},"subject":{"type":"string","maxLength":300,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"fromName":{"type":"string","maxLength":100,"nullable":true},"fromEmail":{"type":"string","maxLength":200,"nullable":true},"replyTo":{"type":"string","maxLength":200,"nullable":true},"htmlBody":{"type":"string","nullable":true},"textBody":{"type":"string","nullable":true},"utm":{"type":"object","additionalProperties":{},"nullable":true},"ab":{"type":"object","additionalProperties":{},"nullable":true},"sentCount":{"type":"number","nullable":true},"deliveredCount":{"type":"number","nullable":true},"openedCount":{"type":"number","nullable":true},"clickedCount":{"type":"number","nullable":true},"unsubscribedCount":{"type":"number","nullable":true},"bouncedCount":{"type":"number","nullable":true},"complainedCount":{"type":"number","nullable":true},"failedCount":{"type":"number","nullable":true},"scheduledAt":{"type":"string","format":"date-time","nullable":true},"sendStartedAt":{"type":"string","format":"date-time","nullable":true},"sendCompletedAt":{"type":"string","format":"date-time","nullable":true}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/{id}/build":{"post":{"summary":"Materialise/rebuild the segment's member snapshot","description":"Materialise/rebuild the segment's member snapshot","operationId":"post_api_v1_marketing_segments_id_build","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"build","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:build"]},{"cookieAuth":["segment:build"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/{id}/members/{memberId}":{"delete":{"summary":"Update fields on a segment","description":"Update fields on a segment","operationId":"delete_api_v1_marketing_segments_id_members_memberId","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string","maxLength":80}}],"security":[{"bearerAuth":["segment:update"]},{"cookieAuth":["segment:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/{id}/members/bulk":{"post":{"summary":"Update fields on a segment","description":"Update fields on a segment","operationId":"post_api_v1_marketing_segments_id_members_bulk","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:update"]},{"cookieAuth":["segment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"action":{"type":"string","enum":["remove"]},"memberIds":{"type":"array","items":{"type":"string","maxLength":80},"minItems":1,"maxItems":1000}},"required":["action","memberIds"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/{id}/members":{"get":{"summary":"View a segment","description":"View a segment","operationId":"get_api_v1_marketing_segments_id_members","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["segment:read"]},{"cookieAuth":["segment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a segment","description":"Update fields on a segment","operationId":"post_api_v1_marketing_segments_id_members","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:update"]},{"cookieAuth":["segment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string","maxLength":254},"maxItems":1000},"leadIds":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":1000},"contactIds":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":1000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/{id}":{"get":{"summary":"View a segment","description":"View a segment","operationId":"get_api_v1_marketing_segments_id","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:read"]},{"cookieAuth":["segment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a segment","description":"Update fields on a segment","operationId":"patch_api_v1_marketing_segments_id","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:update"]},{"cookieAuth":["segment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"description":{"type":"string","nullable":true},"filterKind":{"type":"string","enum":["manual","dynamic_leads","dynamic_contacts","dynamic_subscribers"]},"filterRules":{"type":"object","additionalProperties":{},"nullable":true},"memberCount":{"type":"number","nullable":true},"lastBuiltAt":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a segment","description":"Soft-delete a segment","operationId":"delete_api_v1_marketing_segments_id","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:delete"]},{"cookieAuth":["segment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments/meta":{"get":{"summary":"View a segment","description":"View a segment","operationId":"get_api_v1_marketing_segments_meta","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["segment:read"]},{"cookieAuth":["segment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/segments":{"get":{"summary":"List segments with filters and pagination","description":"List segments with filters and pagination","operationId":"get_api_v1_marketing_segments","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"filterKind","in":"query","required":false,"schema":{"type":"string","enum":["manual","dynamic_leads","dynamic_contacts","dynamic_subscribers"]}}],"security":[{"bearerAuth":["segment:list"]},{"cookieAuth":["segment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new segment","description":"Create a new segment","operationId":"post_api_v1_marketing_segments","tags":["segment"],"x-surface":"data","x-entity":"segment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["segment:create"]},{"cookieAuth":["segment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"description":{"type":"string","nullable":true},"filterKind":{"type":"string","enum":["manual","dynamic_leads","dynamic_contacts","dynamic_subscribers"]},"filterRules":{"type":"object","additionalProperties":{},"nullable":true},"memberCount":{"type":"number","nullable":true},"lastBuiltAt":{"type":"string","format":"date-time","nullable":true}},"required":["name","filterKind"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/settings/logo":{"post":{"summary":"POST /api/v1/marketing/settings/logo","operationId":"post_api_v1_marketing_settings_logo","tags":["marketing_settings"],"x-surface":"admin","x-entity":"marketing_settings","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["marketing_settings:update"]},{"cookieAuth":["marketing_settings:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/marketing/settings/logo","operationId":"delete_api_v1_marketing_settings_logo","tags":["marketing_settings"],"x-surface":"admin","x-entity":"marketing_settings","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["marketing_settings:update"]},{"cookieAuth":["marketing_settings:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/settings":{"get":{"summary":"GET /api/v1/marketing/settings","operationId":"get_api_v1_marketing_settings","tags":["marketing_settings"],"x-surface":"admin","x-entity":"marketing_settings","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["marketing_settings:read"]},{"cookieAuth":["marketing_settings:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"PUT /api/v1/marketing/settings","operationId":"put_api_v1_marketing_settings","tags":["marketing_settings"],"x-surface":"admin","x-entity":"marketing_settings","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["marketing_settings:update"]},{"cookieAuth":["marketing_settings:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fromName":{"type":"string","maxLength":120,"nullable":true},"fromEmail":{"type":"string","maxLength":254,"format":"email","nullable":true},"replyTo":{"type":"string","maxLength":254,"format":"email","nullable":true},"physicalAddress":{"type":"string","maxLength":500,"nullable":true},"whyReceiving":{"type":"string","maxLength":300,"nullable":true},"companyName":{"type":"string","maxLength":200,"nullable":true},"companyLegalName":{"type":"string","maxLength":200,"nullable":true},"logoKey":{"type":"string","maxLength":500,"nullable":true},"brandColor":{"type":"string","maxLength":7,"pattern":"^#[0-9a-fA-F]{6}$","nullable":true},"testRecipients":{"type":"array","items":{"type":"string","format":"email"},"maxItems":10}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/suppressions/{id}":{"get":{"summary":"GET /api/v1/marketing/suppressions/{id}","operationId":"get_api_v1_marketing_suppressions_id","tags":["suppression"],"x-surface":"data","x-entity":"suppression","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["suppression:read"]},{"cookieAuth":["suppression:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/marketing/suppressions/{id}","operationId":"delete_api_v1_marketing_suppressions_id","tags":["suppression"],"x-surface":"data","x-entity":"suppression","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["suppression:delete"]},{"cookieAuth":["suppression:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/suppressions/meta":{"get":{"summary":"GET /api/v1/marketing/suppressions/meta","operationId":"get_api_v1_marketing_suppressions_meta","tags":["suppression"],"x-surface":"data","x-entity":"suppression","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["suppression:read"]},{"cookieAuth":["suppression:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/suppressions":{"get":{"summary":"GET /api/v1/marketing/suppressions","operationId":"get_api_v1_marketing_suppressions","tags":["suppression"],"x-surface":"data","x-entity":"suppression","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","enum":["unsubscribed","bounced","complained","manual","imported"]}}],"security":[{"bearerAuth":["suppression:list"]},{"cookieAuth":["suppression:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/marketing/suppressions","operationId":"post_api_v1_marketing_suppressions","tags":["suppression"],"x-surface":"data","x-entity":"suppression","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["suppression:create"]},{"cookieAuth":["suppression:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"minLength":1},"reason":{"type":"string","enum":["unsubscribed","bounced","complained","manual","imported"]},"notes":{"type":"string","nullable":true}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/templates/{id}":{"get":{"summary":"GET /api/v1/marketing/templates/{id}","operationId":"get_api_v1_marketing_templates_id","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:read"]},{"cookieAuth":["email_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/marketing/templates/{id}","operationId":"patch_api_v1_marketing_templates_id","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:update"]},{"cookieAuth":["email_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"subject":{"type":"string","maxLength":300},"isActive":{"type":"boolean"},"category":{"type":"string","maxLength":80,"nullable":true},"fromName":{"type":"string","maxLength":100,"nullable":true},"fromEmail":{"type":"string","maxLength":200,"nullable":true},"replyTo":{"type":"string","maxLength":200,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"htmlBody":{"type":"string"},"textBody":{"type":"string","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/marketing/templates/{id}","operationId":"delete_api_v1_marketing_templates_id","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:delete"]},{"cookieAuth":["email_template:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/templates/meta":{"get":{"summary":"GET /api/v1/marketing/templates/meta","operationId":"get_api_v1_marketing_templates_meta","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["email_template:read"]},{"cookieAuth":["email_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/templates/previews":{"post":{"summary":"POST /api/v1/marketing/templates/previews","operationId":"post_api_v1_marketing_templates_previews","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:read"]},{"cookieAuth":["email_template:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","maxLength":300,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"html":{"type":"string","maxLength":500000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/marketing/templates":{"get":{"summary":"GET /api/v1/marketing/templates","operationId":"get_api_v1_marketing_templates","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"isActive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["email_template:list"]},{"cookieAuth":["email_template:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/marketing/templates","operationId":"post_api_v1_marketing_templates","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:create"]},{"cookieAuth":["email_template:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"subject":{"type":"string","maxLength":300,"minLength":1},"isActive":{"type":"boolean"},"category":{"type":"string","maxLength":80,"nullable":true},"fromName":{"type":"string","maxLength":100,"nullable":true},"fromEmail":{"type":"string","maxLength":200,"nullable":true},"replyTo":{"type":"string","maxLength":200,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"htmlBody":{"type":"string","minLength":1},"textBody":{"type":"string","nullable":true}},"required":["name","subject","htmlBody"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/mcp/manifest":{"get":{"summary":"GET /api/v1/mcp/manifest","operationId":"get_api_v1_mcp_manifest","tags":["data"],"x-surface":"data","x-idempotent":false,"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/agenda":{"get":{"summary":"List calendar_events with filters and pagination","description":"List calendar_events with filters and pagination","operationId":"get_api_v1_me_agenda","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"list","x-idempotent":false,"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"userId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["calendar_event:list"]},{"cookieAuth":["calendar_event:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/calendar-events/{id}":{"patch":{"summary":"Update fields on a calendar","description":"Update fields on a calendar","operationId":"patch_api_v1_me_calendar_events_id","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":600}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:update"]},{"cookieAuth":["calendar:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["startsAt","endsAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a calendar","description":"Soft-delete a calendar","operationId":"delete_api_v1_me_calendar_events_id","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"delete","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":600}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:delete"]},{"cookieAuth":["calendar:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/calendar-events":{"get":{"summary":"List calendars with filters and pagination","description":"List calendars with filters and pagination","operationId":"get_api_v1_me_calendar_events","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"list","x-idempotent":false,"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar:list"]},{"cookieAuth":["calendar:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/notifications/{id}/read":{"post":{"summary":"Mark-read / mark-all-read / dismiss a notification","description":"Mark-read / mark-all-read / dismiss a notification","operationId":"post_api_v1_me_notifications_id_read","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["notification:update"]},{"cookieAuth":["notification:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/notifications/{id}":{"patch":{"summary":"Mark-read / mark-all-read / dismiss a notification","description":"Mark-read / mark-all-read / dismiss a notification","operationId":"patch_api_v1_me_notifications_id","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["notification:update"]},{"cookieAuth":["notification:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dismissed":{"type":"boolean"},"read":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/notifications/bulk":{"post":{"summary":"Mark-read / mark-all-read / dismiss a notification","description":"Mark-read / mark-all-read / dismiss a notification","operationId":"post_api_v1_me_notifications_bulk","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["notification:update"]},{"cookieAuth":["notification:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["mark_read"]},"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":500}},"required":["action"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/notifications":{"get":{"summary":"List my notifications","description":"List my notifications","operationId":"get_api_v1_me_notifications","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["info","success","warning","error","ai_insight","task_assigned","task_due","mention","approval_needed"]}},{"name":"sourceModule","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"createdFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"createdTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"unreadOnly","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"security":[{"bearerAuth":["notification:list"]},{"cookieAuth":["notification:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me/notifications/unread-count":{"get":{"summary":"List my notifications","description":"List my notifications","operationId":"get_api_v1_me_notifications_unread_count","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["notification:list"]},{"cookieAuth":["notification:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/me":{"get":{"summary":"GET /api/v1/me","operationId":"get_api_v1_me","tags":["data"],"x-surface":"data","x-idempotent":false,"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/goods-receipts/{id}":{"get":{"summary":"View a goods_receipt","description":"View a goods_receipt","operationId":"get_api_v1_procurement_goods_receipts_id","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["goods_receipt:read"]},{"cookieAuth":["goods_receipt:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a goods_receipt","description":"Update fields on a goods_receipt","operationId":"patch_api_v1_procurement_goods_receipts_id","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["goods_receipt:update"]},{"cookieAuth":["goods_receipt:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"poId":{"type":"string"},"receiptNumber":{"type":"string","maxLength":80},"receivedBy":{"type":"string","maxLength":200},"receiptDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["pending_inspection","accepted","partially_accepted","rejected"]},"warehouseId":{"type":"string","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a goods_receipt","description":"Soft-delete a goods_receipt","operationId":"delete_api_v1_procurement_goods_receipts_id","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["goods_receipt:delete"]},{"cookieAuth":["goods_receipt:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/goods-receipts/meta":{"get":{"summary":"View a goods_receipt","description":"View a goods_receipt","operationId":"get_api_v1_procurement_goods_receipts_meta","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["goods_receipt:read"]},{"cookieAuth":["goods_receipt:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/goods-receipts":{"get":{"summary":"List goods_receipts with filters and pagination","description":"List goods_receipts with filters and pagination","operationId":"get_api_v1_procurement_goods_receipts","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"poId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending_inspection","accepted","partially_accepted","rejected"]}},{"name":"warehouseId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["goods_receipt:list"]},{"cookieAuth":["goods_receipt:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new goods_receipt","description":"Create a new goods_receipt","operationId":"post_api_v1_procurement_goods_receipts","tags":["goods_receipt"],"x-surface":"data","x-entity":"goods_receipt","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["goods_receipt:create"]},{"cookieAuth":["goods_receipt:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"poId":{"type":"string","minLength":1},"receiptNumber":{"type":"string","maxLength":80,"minLength":1},"receivedBy":{"type":"string","maxLength":200,"minLength":1},"receiptDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["pending_inspection","accepted","partially_accepted","rejected"]},"warehouseId":{"type":"string","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["poId","receiptNumber","receivedBy","receiptDate","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/invoice-matches/{id}":{"get":{"summary":"View a invoice_match","description":"View a invoice_match","operationId":"get_api_v1_procurement_invoice_matches_id","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice_match:read"]},{"cookieAuth":["invoice_match:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a invoice_match","description":"Update fields on a invoice_match","operationId":"patch_api_v1_procurement_invoice_matches_id","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice_match:update"]},{"cookieAuth":["invoice_match:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendorInvoiceId":{"type":"string","maxLength":120,"nullable":true},"poId":{"type":"string"},"receiptId":{"type":"string","nullable":true},"matchStatus":{"type":"string","enum":["matched","partial_match","mismatch","pending"]},"poAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"receiptAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"invoiceAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"variance":{"type":"number"},"variancePercentage":{"type":"number"},"autoMatched":{"type":"boolean"},"reviewedBy":{"type":"string","maxLength":64,"nullable":true},"reviewedAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a invoice_match","description":"Soft-delete a invoice_match","operationId":"delete_api_v1_procurement_invoice_matches_id","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice_match:delete"]},{"cookieAuth":["invoice_match:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/invoice-matches/meta":{"get":{"summary":"View a invoice_match","description":"View a invoice_match","operationId":"get_api_v1_procurement_invoice_matches_meta","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["invoice_match:read"]},{"cookieAuth":["invoice_match:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/invoice-matches":{"get":{"summary":"List invoice_matchs with filters and pagination","description":"List invoice_matchs with filters and pagination","operationId":"get_api_v1_procurement_invoice_matches","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"poId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"receiptId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"matchStatus","in":"query","required":false,"schema":{"type":"string","enum":["matched","partial_match","mismatch","pending"]}},{"name":"autoMatched","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["invoice_match:list"]},{"cookieAuth":["invoice_match:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new invoice_match","description":"Create a new invoice_match","operationId":"post_api_v1_procurement_invoice_matches","tags":["invoice_match"],"x-surface":"data","x-entity":"invoice_match","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice_match:create"]},{"cookieAuth":["invoice_match:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendorInvoiceId":{"type":"string","maxLength":120,"nullable":true},"poId":{"type":"string","minLength":1},"receiptId":{"type":"string","nullable":true},"matchStatus":{"type":"string","enum":["matched","partial_match","mismatch","pending"]},"poAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"receiptAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"invoiceAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"variance":{"type":"number"},"variancePercentage":{"type":"number"},"autoMatched":{"type":"boolean"},"reviewedBy":{"type":"string","maxLength":64,"nullable":true},"reviewedAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["poId","matchStatus"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders/{id}/approve":{"post":{"summary":"POST /api/v1/procurement/purchase-orders/{id}/approve","operationId":"post_api_v1_procurement_purchase_orders_id_approve","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:approve"]},{"cookieAuth":["purchase_order:approve"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders/{id}/cancel":{"post":{"summary":"POST /api/v1/procurement/purchase-orders/{id}/cancel","operationId":"post_api_v1_procurement_purchase_orders_id_cancel","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:cancel"]},{"cookieAuth":["purchase_order:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders/{id}":{"get":{"summary":"View a purchase_order","description":"View a purchase_order","operationId":"get_api_v1_procurement_purchase_orders_id","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:read"]},{"cookieAuth":["purchase_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a purchase_order","description":"Update fields on a purchase_order","operationId":"patch_api_v1_procurement_purchase_orders_id","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:update"]},{"cookieAuth":["purchase_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"poNumber":{"type":"string","minLength":1,"maxLength":60},"vendorId":{"type":"string","minLength":1,"maxLength":64},"requisitionId":{"type":"string","maxLength":64,"nullable":true},"costCenterId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["draft","sent","acknowledged","partially_received","received","cancelled"]},"totalAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"paymentTerms":{"type":"string","maxLength":40},"shippingAddress":{"type":"object","properties":{"line1":{"type":"string","maxLength":200},"line2":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":120},"state":{"type":"string","maxLength":120},"postalCode":{"type":"string","maxLength":40},"country":{"type":"string","maxLength":80}},"additionalProperties":true},"expectedDeliveryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}},"lines":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64,"nullable":true},"description":{"type":"string","minLength":1,"maxLength":500},"quantityOrdered":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":9999999},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"default":0},"deliveryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["description","quantityOrdered"],"additionalProperties":false},"maxItems":200}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a purchase_order","description":"Soft-delete a purchase_order","operationId":"delete_api_v1_procurement_purchase_orders_id","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:delete"]},{"cookieAuth":["purchase_order:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders/{id}/send":{"post":{"summary":"POST /api/v1/procurement/purchase-orders/{id}/send","operationId":"post_api_v1_procurement_purchase_orders_id_send","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"send","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:send"]},{"cookieAuth":["purchase_order:send"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders/meta":{"get":{"summary":"View a purchase_order","description":"View a purchase_order","operationId":"get_api_v1_procurement_purchase_orders_meta","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["purchase_order:read"]},{"cookieAuth":["purchase_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/purchase-orders":{"get":{"summary":"List purchase_orders with filters and pagination","description":"List purchase_orders with filters and pagination","operationId":"get_api_v1_procurement_purchase_orders","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","sent","acknowledged","partially_received","received","cancelled"]}},{"name":"vendorId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"minAmount","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"maxAmount","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"expectedFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"expectedTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["purchase_order:list"]},{"cookieAuth":["purchase_order:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new purchase_order","description":"Create a new purchase_order","operationId":"post_api_v1_procurement_purchase_orders","tags":["purchase_order"],"x-surface":"data","x-entity":"purchase_order","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["purchase_order:create"]},{"cookieAuth":["purchase_order:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"poNumber":{"type":"string","minLength":1,"maxLength":60},"vendorId":{"type":"string","minLength":1,"maxLength":64},"requisitionId":{"type":"string","maxLength":64,"nullable":true},"costCenterId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","enum":["draft","sent","acknowledged","partially_received","received","cancelled"]},"totalAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"paymentTerms":{"type":"string","maxLength":40},"shippingAddress":{"type":"object","properties":{"line1":{"type":"string","maxLength":200},"line2":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":120},"state":{"type":"string","maxLength":120},"postalCode":{"type":"string","maxLength":40},"country":{"type":"string","maxLength":80}},"additionalProperties":true},"expectedDeliveryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}},"lines":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","maxLength":64,"nullable":true},"description":{"type":"string","minLength":1,"maxLength":500},"quantityOrdered":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":9999999},"unitPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"default":0},"deliveryDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["description","quantityOrdered"],"additionalProperties":false},"maxItems":200}},"required":["vendorId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/requisitions/{id}/approve":{"post":{"summary":"Approve requisition","description":"Approve requisition","operationId":"post_api_v1_procurement_requisitions_id_approve","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["requisition:approve"]},{"cookieAuth":["requisition:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"approve":{"type":"boolean"},"reason":{"type":"string","maxLength":2000}},"required":["approve"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/requisitions/{id}":{"get":{"summary":"View a requisition","description":"View a requisition","operationId":"get_api_v1_procurement_requisitions_id","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["requisition:read"]},{"cookieAuth":["requisition:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a requisition","description":"Update fields on a requisition","operationId":"patch_api_v1_procurement_requisitions_id","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["requisition:update"]},{"cookieAuth":["requisition:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000,"nullable":true},"requestedBy":{"type":"string","minLength":1,"maxLength":64},"department":{"type":"string","maxLength":120,"nullable":true},"urgency":{"type":"string","enum":["low","medium","high","critical"]},"status":{"type":"string","enum":["draft","pending_approval","approved","rejected","ordered"]},"totalAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"budgetCode":{"type":"string","maxLength":60,"nullable":true},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a requisition","description":"Soft-delete a requisition","operationId":"delete_api_v1_procurement_requisitions_id","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["requisition:delete"]},{"cookieAuth":["requisition:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/requisitions/meta":{"get":{"summary":"View a requisition","description":"View a requisition","operationId":"get_api_v1_procurement_requisitions_meta","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["requisition:read"]},{"cookieAuth":["requisition:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/requisitions":{"get":{"summary":"List requisitions with filters and pagination","description":"List requisitions with filters and pagination","operationId":"get_api_v1_procurement_requisitions","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","pending_approval","approved","rejected","ordered"]}},{"name":"urgency","in":"query","required":false,"schema":{"type":"string","enum":["low","medium","high","critical"]}},{"name":"requestedBy","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"department","in":"query","required":false,"schema":{"type":"string","maxLength":120}}],"security":[{"bearerAuth":["requisition:list"]},{"cookieAuth":["requisition:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new requisition","description":"Create a new requisition","operationId":"post_api_v1_procurement_requisitions","tags":["requisition"],"x-surface":"data","x-entity":"requisition","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["requisition:create"]},{"cookieAuth":["requisition:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000,"nullable":true},"requestedBy":{"type":"string","minLength":1,"maxLength":64},"department":{"type":"string","maxLength":120,"nullable":true},"urgency":{"type":"string","enum":["low","medium","high","critical"]},"status":{"type":"string","enum":["draft","pending_approval","approved","rejected","ordered"]},"totalAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"budgetCode":{"type":"string","maxLength":60,"nullable":true},"rejectionReason":{"type":"string","maxLength":2000,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["title","requestedBy"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/spend-budgets/{id}":{"get":{"summary":"View a spend_budget","description":"View a spend_budget","operationId":"get_api_v1_procurement_spend_budgets_id","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["spend_budget:read"]},{"cookieAuth":["spend_budget:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a spend_budget","description":"Update fields on a spend_budget","operationId":"patch_api_v1_procurement_spend_budgets_id","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["spend_budget:update"]},{"cookieAuth":["spend_budget:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"department":{"type":"string"},"budgetCode":{"type":"string","maxLength":80},"period":{"type":"string","enum":["monthly","quarterly","annual"]},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"budgetAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"spentAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"remainingAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","maxLength":3},"notes":{"type":"string","maxLength":2000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a spend_budget","description":"Soft-delete a spend_budget","operationId":"delete_api_v1_procurement_spend_budgets_id","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["spend_budget:delete"]},{"cookieAuth":["spend_budget:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/spend-budgets/meta":{"get":{"summary":"View a spend_budget","description":"View a spend_budget","operationId":"get_api_v1_procurement_spend_budgets_meta","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["spend_budget:read"]},{"cookieAuth":["spend_budget:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/spend-budgets":{"get":{"summary":"List spend_budgets with filters and pagination","description":"List spend_budgets with filters and pagination","operationId":"get_api_v1_procurement_spend_budgets","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"department","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["monthly","quarterly","annual"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["spend_budget:list"]},{"cookieAuth":["spend_budget:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new spend_budget","description":"Create a new spend_budget","operationId":"post_api_v1_procurement_spend_budgets","tags":["spend_budget"],"x-surface":"data","x-entity":"spend_budget","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["spend_budget:create"]},{"cookieAuth":["spend_budget:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"department":{"type":"string"},"budgetCode":{"type":"string","maxLength":80,"minLength":1},"period":{"type":"string","enum":["monthly","quarterly","annual"]},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"budgetAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"spentAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"remainingAmount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","maxLength":3},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["department","budgetCode","period","periodStart","periodEnd","budgetAmount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/vendors/{id}":{"get":{"summary":"View a vendor","description":"View a vendor","operationId":"get_api_v1_procurement_vendors_id","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["vendor:read"]},{"cookieAuth":["vendor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a vendor","description":"Update fields on a vendor","operationId":"patch_api_v1_procurement_vendors_id","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["vendor:update"]},{"cookieAuth":["vendor:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"contactEmail":{"type":"string","format":"email","maxLength":320,"nullable":true},"contactPhone":{"type":"string","maxLength":40,"nullable":true},"address":{"type":"object","properties":{"line1":{"type":"string","maxLength":200},"line2":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":120},"state":{"type":"string","maxLength":120},"postalCode":{"type":"string","maxLength":40},"country":{"type":"string","maxLength":80}},"additionalProperties":true},"paymentTerms":{"type":"string","maxLength":40},"currency":{"type":"string","minLength":3,"maxLength":3},"taxId":{"type":"string","maxLength":64,"nullable":true},"rating":{"type":"number","minimum":1,"maximum":5,"nullable":true},"status":{"type":"string","enum":["active","pending","suspended","blacklisted"]},"certifications":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"accountId":{"type":"string","maxLength":64,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"bankDetails":{"type":"object","properties":{"bankName":{"type":"string","maxLength":200},"accountName":{"type":"string","maxLength":200},"accountNumber":{"type":"string","maxLength":80},"iban":{"type":"string","maxLength":40},"swift":{"type":"string","maxLength":20},"routingNumber":{"type":"string","maxLength":20}},"additionalProperties":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a vendor","description":"Soft-delete a vendor","operationId":"delete_api_v1_procurement_vendors_id","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["vendor:delete"]},{"cookieAuth":["vendor:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/vendors/meta":{"get":{"summary":"View a vendor","description":"View a vendor","operationId":"get_api_v1_procurement_vendors_meta","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["vendor:read"]},{"cookieAuth":["vendor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/procurement/vendors":{"get":{"summary":"List vendors with filters and pagination","description":"List vendors with filters and pagination","operationId":"get_api_v1_procurement_vendors","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","pending","suspended","blacklisted"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"minRating","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":5}}],"security":[{"bearerAuth":["vendor:list"]},{"cookieAuth":["vendor:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new vendor","description":"Create a new vendor","operationId":"post_api_v1_procurement_vendors","tags":["vendor"],"x-surface":"data","x-entity":"vendor","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["vendor:create"]},{"cookieAuth":["vendor:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"contactEmail":{"type":"string","format":"email","maxLength":320,"nullable":true},"contactPhone":{"type":"string","maxLength":40,"nullable":true},"address":{"type":"object","properties":{"line1":{"type":"string","maxLength":200},"line2":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":120},"state":{"type":"string","maxLength":120},"postalCode":{"type":"string","maxLength":40},"country":{"type":"string","maxLength":80}},"additionalProperties":true},"paymentTerms":{"type":"string","maxLength":40},"currency":{"type":"string","minLength":3,"maxLength":3},"taxId":{"type":"string","maxLength":64,"nullable":true},"rating":{"type":"number","minimum":1,"maximum":5,"nullable":true},"status":{"type":"string","enum":["active","pending","suspended","blacklisted"]},"certifications":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"accountId":{"type":"string","maxLength":64,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"bankDetails":{"type":"object","properties":{"bankName":{"type":"string","maxLength":200},"accountName":{"type":"string","maxLength":200},"accountNumber":{"type":"string","maxLength":80},"iban":{"type":"string","maxLength":40},"swift":{"type":"string","maxLength":20},"routingNumber":{"type":"string","maxLength":20}},"additionalProperties":true}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/assignments/{id}":{"get":{"summary":"View a assignment","description":"View a assignment","operationId":"get_api_v1_projects_assignments_id","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["assignment:read"]},{"cookieAuth":["assignment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a assignment","description":"Update fields on a assignment","operationId":"patch_api_v1_projects_assignments_id","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["assignment:update"]},{"cookieAuth":["assignment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"userId":{"type":"string","minLength":1,"maxLength":64},"role":{"type":"string","minLength":1,"maxLength":120},"allocationPercent":{"type":"number","minimum":0,"maximum":100},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a assignment","description":"Soft-delete a assignment","operationId":"delete_api_v1_projects_assignments_id","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["assignment:delete"]},{"cookieAuth":["assignment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/assignments/meta":{"get":{"summary":"View a assignment","description":"View a assignment","operationId":"get_api_v1_projects_assignments_meta","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["assignment:read"]},{"cookieAuth":["assignment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/assignments":{"get":{"summary":"List assignments with filters and pagination","description":"List assignments with filters and pagination","operationId":"get_api_v1_projects_assignments","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"userId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"role","in":"query","required":false,"schema":{"type":"string","maxLength":120}}],"security":[{"bearerAuth":["assignment:list"]},{"cookieAuth":["assignment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new assignment","description":"Create a new assignment","operationId":"post_api_v1_projects_assignments","tags":["assignment"],"x-surface":"data","x-entity":"assignment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["assignment:create"]},{"cookieAuth":["assignment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"userId":{"type":"string","minLength":1,"maxLength":64},"role":{"type":"string","minLength":1,"maxLength":120},"allocationPercent":{"type":"number","minimum":0,"maximum":100},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"required":["projectId","userId","role","billableRate","costRate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/change-orders/{id}":{"get":{"summary":"View a change_order","description":"View a change_order","operationId":"get_api_v1_projects_change_orders_id","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["change_order:read"]},{"cookieAuth":["change_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a change_order","description":"Update fields on a change_order","operationId":"patch_api_v1_projects_change_orders_id","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["change_order:update"]},{"cookieAuth":["change_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"contactIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"locationId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"ownerId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"assignedTo":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":50},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["draft","pending_approval","approved","rejected","implemented"]},"changeType":{"type":"string","enum":["scope","budget","timeline","hours","mixed"]},"budgetDelta":{"type":"number"},"hoursDelta":{"type":"number"},"daysDelta":{"type":"integer"},"requestedBy":{"type":"string","minLength":1,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a change_order","description":"Soft-delete a change_order","operationId":"delete_api_v1_projects_change_orders_id","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["change_order:delete"]},{"cookieAuth":["change_order:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/change-orders/meta":{"get":{"summary":"View a change_order","description":"View a change_order","operationId":"get_api_v1_projects_change_orders_meta","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["change_order:read"]},{"cookieAuth":["change_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/change-orders":{"get":{"summary":"List change_orders with filters and pagination","description":"List change_orders with filters and pagination","operationId":"get_api_v1_projects_change_orders","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","pending_approval","approved","rejected","implemented"]}},{"name":"changeType","in":"query","required":false,"schema":{"type":"string","enum":["scope","budget","timeline","hours","mixed"]}}],"security":[{"bearerAuth":["change_order:list"]},{"cookieAuth":["change_order:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new change_order","description":"Create a new change_order","operationId":"post_api_v1_projects_change_orders","tags":["change_order"],"x-surface":"data","x-entity":"change_order","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["change_order:create"]},{"cookieAuth":["change_order:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"accountId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"contactIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"locationId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"ownerId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"assignedTo":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"number":{"type":"string","minLength":1,"maxLength":50},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":5000,"nullable":true},"status":{"type":"string","enum":["draft","pending_approval","approved","rejected","implemented"]},"changeType":{"type":"string","enum":["scope","budget","timeline","hours","mixed"]},"budgetDelta":{"type":"number"},"hoursDelta":{"type":"number"},"daysDelta":{"type":"integer"},"requestedBy":{"type":"string","minLength":1,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["projectId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/milestones/{id}":{"get":{"summary":"View a milestone","description":"View a milestone","operationId":"get_api_v1_projects_milestones_id","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["milestone:read"]},{"cookieAuth":["milestone:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a milestone","description":"Update fields on a milestone","operationId":"patch_api_v1_projects_milestones_id","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["milestone:update"]},{"cookieAuth":["milestone:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"phaseId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deliverables":{"type":"array","items":{"type":"string","maxLength":500}},"billingTrigger":{"type":"boolean"},"billingAmount":{"type":"number","minimum":0,"nullable":true},"approvalRequired":{"type":"boolean"},"status":{"type":"string","enum":["pending","in_progress","completed","cancelled"]},"orderIndex":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a milestone","description":"Soft-delete a milestone","operationId":"delete_api_v1_projects_milestones_id","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["milestone:delete"]},{"cookieAuth":["milestone:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/milestones/meta":{"get":{"summary":"View a milestone","description":"View a milestone","operationId":"get_api_v1_projects_milestones_meta","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["milestone:read"]},{"cookieAuth":["milestone:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/milestones":{"get":{"summary":"List milestones with filters and pagination","description":"List milestones with filters and pagination","operationId":"get_api_v1_projects_milestones","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","in_progress","completed","cancelled"]}}],"security":[{"bearerAuth":["milestone:list"]},{"cookieAuth":["milestone:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new milestone","description":"Create a new milestone","operationId":"post_api_v1_projects_milestones","tags":["milestone"],"x-surface":"data","x-entity":"milestone","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["milestone:create"]},{"cookieAuth":["milestone:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"phaseId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deliverables":{"type":"array","items":{"type":"string","maxLength":500}},"billingTrigger":{"type":"boolean"},"billingAmount":{"type":"number","minimum":0,"nullable":true},"approvalRequired":{"type":"boolean"},"status":{"type":"string","enum":["pending","in_progress","completed","cancelled"]},"orderIndex":{"type":"integer","minimum":0}},"required":["projectId","name","dueDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/phases/{id}":{"get":{"summary":"View a project phase","description":"View a project phase","operationId":"get_api_v1_projects_phases_id","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:read"]},{"cookieAuth":["project_phase_instance:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a project phase","description":"Update fields on a project phase","operationId":"patch_api_v1_projects_phases_id","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:update"]},{"cookieAuth":["project_phase_instance:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"key":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":4,"maxLength":32},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["pending","active","done"]},"orderIndex":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a project phase","description":"Soft-delete a project phase","operationId":"delete_api_v1_projects_phases_id","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:delete"]},{"cookieAuth":["project_phase_instance:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/phases/meta":{"get":{"summary":"View a project phase","description":"View a project phase","operationId":"get_api_v1_projects_phases_meta","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["project_phase_instance:read"]},{"cookieAuth":["project_phase_instance:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/phases/order":{"put":{"summary":"Update fields on a project phase","description":"Update fields on a project phase","operationId":"put_api_v1_projects_phases_order","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:update"]},{"cookieAuth":["project_phase_instance:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":200}},"required":["projectId","ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/phases":{"get":{"summary":"List project phases with filters and pagination","description":"List project phases with filters and pagination","operationId":"get_api_v1_projects_phases","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","active","done"]}}],"security":[{"bearerAuth":["project_phase_instance:list"]},{"cookieAuth":["project_phase_instance:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new project phase","description":"Create a new project phase","operationId":"post_api_v1_projects_phases","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:create"]},{"cookieAuth":["project_phase_instance:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"key":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":4,"maxLength":32},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"status":{"type":"string","enum":["pending","active","done"]},"orderIndex":{"type":"integer","minimum":0}},"required":["projectId","name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/project-templates/{id}":{"get":{"summary":"View a project_template","description":"View a project_template","operationId":"get_api_v1_projects_project_templates_id","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_template:read"]},{"cookieAuth":["project_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a project_template","description":"Update fields on a project_template","operationId":"patch_api_v1_projects_project_templates_id","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_template:update"]},{"cookieAuth":["project_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"billingModel":{"type":"string","enum":["fixed_price","time_and_materials","milestone","retainer","subscription","cost_plus","value_based","hybrid_fixed_tm","capped_tm"]},"defaultPhase":{"type":"string","maxLength":100,"nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"phases":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":200},"key":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","maxLength":32},"order":{"type":"integer"},"offsetDays":{"type":"integer","minimum":0,"maximum":3650},"durationDays":{"type":"integer","minimum":1,"maximum":3650}},"required":["name"],"additionalProperties":false}]},"maxItems":100},"taskTemplates":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":10000},"priority":{"type":"string","enum":["critical","high","medium","low"]},"estimatedHours":{"type":"number","minimum":0},"dueInDays":{"type":"integer","minimum":0,"maximum":3650},"startOffsetDays":{"type":"integer","minimum":0,"maximum":3650},"status":{"type":"string","minLength":1,"maxLength":80},"phaseKey":{"type":"string","minLength":1,"maxLength":200},"milestoneRef":{"type":"string","minLength":1,"maxLength":200},"roleKey":{"type":"string","minLength":1,"maxLength":80},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":50},"isClientFacing":{"type":"boolean"}},"required":["title"],"additionalProperties":false},"maxItems":200},"defaultRoles":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":80},"count":{"type":"integer","minimum":1,"maximum":50}},"required":["roleKey"],"additionalProperties":false},"maxItems":50},"pipelineId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"isActive":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a project_template","description":"Soft-delete a project_template","operationId":"delete_api_v1_projects_project_templates_id","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_template:delete"]},{"cookieAuth":["project_template:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/project-templates/meta":{"get":{"summary":"View a project_template","description":"View a project_template","operationId":"get_api_v1_projects_project_templates_meta","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["project_template:read"]},{"cookieAuth":["project_template:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/project-templates":{"get":{"summary":"List project_templates with filters and pagination","description":"List project_templates with filters and pagination","operationId":"get_api_v1_projects_project_templates","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"isActive","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_template:list"]},{"cookieAuth":["project_template:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new project_template","description":"Create a new project_template","operationId":"post_api_v1_projects_project_templates","tags":["project_template"],"x-surface":"data","x-entity":"project_template","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_template:create"]},{"cookieAuth":["project_template:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"billingModel":{"type":"string","enum":["fixed_price","time_and_materials","milestone","retainer","subscription","cost_plus","value_based","hybrid_fixed_tm","capped_tm"]},"defaultPhase":{"type":"string","maxLength":100,"nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"phases":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":200},"key":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","maxLength":32},"order":{"type":"integer"},"offsetDays":{"type":"integer","minimum":0,"maximum":3650},"durationDays":{"type":"integer","minimum":1,"maximum":3650}},"required":["name"],"additionalProperties":false}]},"maxItems":100},"taskTemplates":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":10000},"priority":{"type":"string","enum":["critical","high","medium","low"]},"estimatedHours":{"type":"number","minimum":0},"dueInDays":{"type":"integer","minimum":0,"maximum":3650},"startOffsetDays":{"type":"integer","minimum":0,"maximum":3650},"status":{"type":"string","minLength":1,"maxLength":80},"phaseKey":{"type":"string","minLength":1,"maxLength":200},"milestoneRef":{"type":"string","minLength":1,"maxLength":200},"roleKey":{"type":"string","minLength":1,"maxLength":80},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":50},"isClientFacing":{"type":"boolean"}},"required":["title"],"additionalProperties":false},"maxItems":200},"defaultRoles":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":80},"count":{"type":"integer","minimum":1,"maximum":50}},"required":["roleKey"],"additionalProperties":false},"maxItems":50},"pipelineId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"isActive":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/accrue-charges":{"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_accrue_charges","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dryRun":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/burn":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_burn","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/gates":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_gates","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/generate-invoice":{"post":{"summary":"Create a new invoice","description":"Create a new invoice","operationId":"post_api_v1_projects_projects_id_generate_invoice","tags":["invoice"],"x-surface":"data","x-entity":"invoice","x-action":"create","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["invoice:create"]},{"cookieAuth":["invoice:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dueInDays":{"type":"integer","minimum":0,"maximum":365}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/insight":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_insight","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"View a project","description":"View a project","operationId":"post_api_v1_projects_projects_id_insight","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"type":"object","properties":{"trigger":{"type":"string","enum":["manual","auto"]}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/links/{linkId}":{"delete":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"delete_api_v1_projects_projects_id_links_linkId","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/links":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_links","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_links","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toType":{"type":"string"},"toId":{"type":"string"},"linkType":{"type":"string"},"note":{"type":"string"}},"required":["toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/materials/{materialId}":{"patch":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"patch_api_v1_projects_projects_id_materials_materialId","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"materialId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":9999999999},"notes":{"type":"string","maxLength":2000,"nullable":true},"sortOrder":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"delete_api_v1_projects_projects_id_materials_materialId","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"materialId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/materials":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_materials","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_materials","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","minLength":1,"maxLength":64},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":9999999999},"notes":{"type":"string","maxLength":2000,"nullable":true}},"required":["productId","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/portal-share/contacts/{contactId}":{"delete":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"delete_api_v1_projects_projects_id_portal_share_contacts_contactId","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/portal-share/contacts":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id_portal_share_contacts","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_portal_share_contacts","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","minLength":1}},"required":["contactId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/portal-share":{"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_portal_share","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visible":{"type":"boolean"}},"required":["visible"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_id","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"patch_api_v1_projects_projects_id","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"folderId":{"type":"string","minLength":1,"nullable":true},"accountId":{"type":"string","minLength":1,"nullable":true},"locationId":{"type":"string","minLength":1,"nullable":true},"contractId":{"type":"string","nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"ownerId":{"type":"string","minLength":1,"nullable":true},"assignedTo":{"type":"string","minLength":1,"nullable":true},"phase":{"type":"string","maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"templateId":{"type":"string","minLength":1,"nullable":true},"dealId":{"type":"string","minLength":1,"nullable":true},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"primaryContactId":{"type":"string","minLength":1,"nullable":true},"contactIds":{"type":"array","items":{"type":"string","minLength":1}},"quoteId":{"type":"string","minLength":1,"nullable":true},"status":{"type":"string","minLength":1,"maxLength":80},"pipelineId":{"type":"string","minLength":1},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"budget":{"type":"number","minimum":0},"estimatedHours":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"healthScore":{"type":"string","enum":["green","yellow","red"]},"timelineHealthOverride":{"type":"string","enum":["green","yellow","red"],"nullable":true},"budgetHealthOverride":{"type":"string","enum":["green","yellow","red"],"nullable":true},"billingModel":{"type":"string","enum":["fixed_price","time_and_materials","milestone","retainer","subscription","cost_plus","value_based","hybrid_fixed_tm","capped_tm"]},"billingConfig":{"type":"object","additionalProperties":{}},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a project","description":"Soft-delete a project","operationId":"delete_api_v1_projects_projects_id","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:delete"]},{"cookieAuth":["project:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/summary":{"get":{"summary":"Generate the Atlas AI project summary (progress, risks, predictions, next actions)","description":"Generate the Atlas AI project summary (progress, risks, predictions, next actions)","operationId":"get_api_v1_projects_projects_id_summary","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"summary","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:summary"]},{"cookieAuth":["project:summary"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Generate the Atlas AI project summary (progress, risks, predictions, next actions)","description":"Generate the Atlas AI project summary (progress, risks, predictions, next actions)","operationId":"post_api_v1_projects_projects_id_summary","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"summary","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:summary"]},{"cookieAuth":["project:summary"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refresh":{"type":"boolean"},"mode":{"type":"string","enum":["linked_evidence"]},"includeConnected":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/{id}/transition":{"post":{"summary":"Update fields on a project","description":"Update fields on a project","operationId":"post_api_v1_projects_projects_id_transition","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:update"]},{"cookieAuth":["project:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toStageKey":{"type":"string","minLength":1},"reason":{"type":"string","maxLength":500},"detail":{"type":"string","maxLength":2000},"pipelineId":{"type":"string","minLength":1},"force":{"type":"boolean"}},"required":["toStageKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects/meta":{"get":{"summary":"View a project","description":"View a project","operationId":"get_api_v1_projects_projects_meta","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"read","x-idempotent":false,"parameters":[{"name":"recordType","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["project:read"]},{"cookieAuth":["project:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/projects":{"get":{"summary":"List projects with filters and pagination","description":"List projects with filters and pagination","operationId":"get_api_v1_projects_projects","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"folderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ownerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assignedTo","in":"query","required":false,"schema":{"type":"string"}},{"name":"phase","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"healthScore","in":"query","required":false,"schema":{"type":"string","enum":["green","yellow","red"]}},{"name":"billingModel","in":"query","required":false,"schema":{"type":"string","enum":["fixed_price","time_and_materials","milestone","retainer","subscription","cost_plus","value_based","hybrid_fixed_tm","capped_tm"]}},{"name":"dealId","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project:list"]},{"cookieAuth":["project:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new project","description":"Create a new project","operationId":"post_api_v1_projects_projects","tags":["project"],"x-surface":"data","x-entity":"project","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project:create"]},{"cookieAuth":["project:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"folderId":{"type":"string","minLength":1,"nullable":true},"accountId":{"type":"string","minLength":1,"nullable":true},"locationId":{"type":"string","minLength":1,"nullable":true},"contractId":{"type":"string","nullable":true},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"ownerId":{"type":"string","minLength":1,"nullable":true},"assignedTo":{"type":"string","minLength":1,"nullable":true},"phase":{"type":"string","maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"templateId":{"type":"string","minLength":1,"nullable":true},"dealId":{"type":"string","minLength":1,"nullable":true},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"primaryContactId":{"type":"string","minLength":1,"nullable":true},"contactIds":{"type":"array","items":{"type":"string","minLength":1}},"quoteId":{"type":"string","minLength":1,"nullable":true},"status":{"type":"string","minLength":1,"maxLength":80},"pipelineId":{"type":"string","minLength":1},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"budget":{"type":"number","minimum":0},"estimatedHours":{"type":"number","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"healthScore":{"type":"string","enum":["green","yellow","red"]},"timelineHealthOverride":{"type":"string","enum":["green","yellow","red"],"nullable":true},"budgetHealthOverride":{"type":"string","enum":["green","yellow","red"],"nullable":true},"billingModel":{"type":"string","enum":["fixed_price","time_and_materials","milestone","retainer","subscription","cost_plus","value_based","hybrid_fixed_tm","capped_tm"]},"billingConfig":{"type":"object","additionalProperties":{}},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","startDate","endDate","billingModel"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/rate-cards/{id}":{"get":{"summary":"View a rate card","description":"View a rate card","operationId":"get_api_v1_projects_rate_cards_id","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["rate_card:read"]},{"cookieAuth":["rate_card:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a rate card","description":"Update fields on a rate card","operationId":"patch_api_v1_projects_rate_cards_id","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["rate_card:update"]},{"cookieAuth":["rate_card:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"roles":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":64},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"required":["roleKey","billableRate"],"additionalProperties":false},"maxItems":200},"currency":{"type":"string","minLength":3,"maxLength":3},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"accountOverrides":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":64},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"required":["roleKey","billableRate"],"additionalProperties":false},"maxItems":200}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a rate card","description":"Soft-delete a rate card","operationId":"delete_api_v1_projects_rate_cards_id","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["rate_card:delete"]},{"cookieAuth":["rate_card:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/rate-cards/meta":{"get":{"summary":"View a rate card","description":"View a rate card","operationId":"get_api_v1_projects_rate_cards_meta","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["rate_card:read"]},{"cookieAuth":["rate_card:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/rate-cards":{"get":{"summary":"List rate cards with filters and pagination","description":"List rate cards with filters and pagination","operationId":"get_api_v1_projects_rate_cards","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["rate_card:list"]},{"cookieAuth":["rate_card:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new rate card","description":"Create a new rate card","operationId":"post_api_v1_projects_rate_cards","tags":["rate_card"],"x-surface":"data","x-entity":"rate_card","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["rate_card:create"]},{"cookieAuth":["rate_card:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"roles":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":64},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"required":["roleKey","billableRate"],"additionalProperties":false},"maxItems":200},"currency":{"type":"string","minLength":3,"maxLength":3},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"accountOverrides":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"roleKey":{"type":"string","minLength":1,"maxLength":64},"billableRate":{"type":"number","minimum":0,"maximum":99999999.99},"costRate":{"type":"number","minimum":0,"maximum":99999999.99}},"required":["roleKey","billableRate"],"additionalProperties":false},"maxItems":200}}},"required":["name","effectiveDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/roles/{id}":{"patch":{"summary":"Update fields on a project team role","description":"Update fields on a project team role","operationId":"patch_api_v1_projects_roles_id","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_role:update"]},{"cookieAuth":["project_role:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"defaultBillableRate":{"type":"number","minimum":0,"maximum":99999999.99,"nullable":true},"defaultCostRate":{"type":"number","minimum":0,"maximum":99999999.99,"nullable":true},"color":{"type":"string","maxLength":32,"nullable":true},"orderIndex":{"type":"integer","minimum":0},"active":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a project team role","description":"Soft-delete a project team role","operationId":"delete_api_v1_projects_roles_id","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_role:delete"]},{"cookieAuth":["project_role:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/roles/capacity":{"get":{"summary":"View a project team role","description":"View a project team role","operationId":"get_api_v1_projects_roles_capacity","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"read","x-idempotent":false,"parameters":[{"name":"userIds","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":20000}}],"security":[{"bearerAuth":["project_role:read"]},{"cookieAuth":["project_role:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Update fields on a project team role","description":"Update fields on a project team role","operationId":"put_api_v1_projects_roles_capacity","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_role:update"]},{"cookieAuth":["project_role:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64},"weeklyCapacityHours":{"type":"number","minimum":0,"maximum":168}},"required":["userId","weeklyCapacityHours"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/roles/meta":{"get":{"summary":"View a project team role","description":"View a project team role","operationId":"get_api_v1_projects_roles_meta","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["project_role:read"]},{"cookieAuth":["project_role:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/roles":{"get":{"summary":"List project team roles with filters and pagination","description":"List project team roles with filters and pagination","operationId":"get_api_v1_projects_roles","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"active","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"security":[{"bearerAuth":["project_role:list"]},{"cookieAuth":["project_role:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new project team role","description":"Create a new project team role","operationId":"post_api_v1_projects_roles","tags":["project_role"],"x-surface":"data","x-entity":"project_role","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_role:create"]},{"cookieAuth":["project_role:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"label":{"type":"string","minLength":1,"maxLength":120},"defaultBillableRate":{"type":"number","minimum":0,"maximum":99999999.99,"nullable":true},"defaultCostRate":{"type":"number","minimum":0,"maximum":99999999.99,"nullable":true},"color":{"type":"string","maxLength":32,"nullable":true},"orderIndex":{"type":"integer","minimum":0},"active":{"type":"boolean"}},"required":["key","label"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/tasks/{id}":{"get":{"summary":"View a project_task","description":"View a project_task","operationId":"get_api_v1_projects_tasks_id","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_task:read"]},{"cookieAuth":["project_task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a project_task","description":"Update fields on a project_task","operationId":"patch_api_v1_projects_tasks_id","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_task:update"]},{"cookieAuth":["project_task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"milestoneId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"phaseId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"parentTaskId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":10000,"nullable":true},"assigneeIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"status":{"type":"string","minLength":1,"maxLength":80},"priority":{"type":"string","enum":["critical","high","medium","low"]},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"actualHours":{"type":"number","minimum":0,"nullable":true},"dependencyIds":{"type":"array","items":{"type":"string"}},"isClientFacing":{"type":"boolean"},"isInternal":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a project_task","description":"Soft-delete a project_task","operationId":"delete_api_v1_projects_tasks_id","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_task:delete"]},{"cookieAuth":["project_task:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/tasks/meta":{"get":{"summary":"View a project_task","description":"View a project_task","operationId":"get_api_v1_projects_tasks_meta","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["project_task:read"]},{"cookieAuth":["project_task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/tasks":{"get":{"summary":"List project_tasks with filters and pagination","description":"List project_tasks with filters and pagination","operationId":"get_api_v1_projects_tasks","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"list","x-idempotent":false,"parameters":[{"name":"overdue","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"milestoneId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"phaseId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"assigneeId","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["project_task:list"]},{"cookieAuth":["project_task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new project_task","description":"Create a new project_task","operationId":"post_api_v1_projects_tasks","tags":["project_task"],"x-surface":"data","x-entity":"project_task","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_task:create"]},{"cookieAuth":["project_task:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"milestoneId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"phaseId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"parentTaskId":{"type":"string","minLength":1,"maxLength":64,"nullable":true},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":10000,"nullable":true},"assigneeIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"status":{"type":"string","minLength":1,"maxLength":80},"priority":{"type":"string","enum":["critical","high","medium","low"]},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"estimatedHours":{"type":"number","minimum":0,"nullable":true},"actualHours":{"type":"number","minimum":0,"nullable":true},"dependencyIds":{"type":"array","items":{"type":"string"}},"isClientFacing":{"type":"boolean"},"isInternal":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string","maxLength":100}},"customFields":{"type":"object","additionalProperties":{}}},"required":["projectId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/time-entries/{id}":{"get":{"summary":"View a time_entry","description":"View a time_entry","operationId":"get_api_v1_projects_time_entries_id","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["time_entry:read"]},{"cookieAuth":["time_entry:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a time_entry","description":"Update fields on a time_entry","operationId":"patch_api_v1_projects_time_entries_id","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["time_entry:update"]},{"cookieAuth":["time_entry:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string","minLength":1,"maxLength":64},"taskId":{"type":"string","maxLength":64,"nullable":true},"userId":{"type":"string","minLength":1,"maxLength":64},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"hours":{"type":"number","minimum":0,"maximum":24,"multipleOf":0.01},"billable":{"type":"boolean"},"description":{"type":"string","maxLength":2000,"nullable":true},"approvalStatus":{"type":"string","enum":["pending","approved","rejected"]},"invoiceId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a time_entry","description":"Soft-delete a time_entry","operationId":"delete_api_v1_projects_time_entries_id","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["time_entry:delete"]},{"cookieAuth":["time_entry:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/time-entries/bulk":{"post":{"summary":"Update fields on a time_entry","description":"Update fields on a time_entry","operationId":"post_api_v1_projects_time_entries_bulk","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["time_entry:update"]},{"cookieAuth":["time_entry:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["approve","reject"]},"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":500}},"required":["action","ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/time-entries/meta":{"get":{"summary":"View a time_entry","description":"View a time_entry","operationId":"get_api_v1_projects_time_entries_meta","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["time_entry:read"]},{"cookieAuth":["time_entry:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/projects/time-entries":{"get":{"summary":"List time_entrys with filters and pagination","description":"List time_entrys with filters and pagination","operationId":"get_api_v1_projects_time_entries","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"assignmentId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"userId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"approvalStatus","in":"query","required":false,"schema":{"type":"string","enum":["pending","approved","rejected"]}},{"name":"billable","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"dateFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"dateTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["time_entry:list"]},{"cookieAuth":["time_entry:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new time_entry","description":"Create a new time_entry","operationId":"post_api_v1_projects_time_entries","tags":["time_entry"],"x-surface":"data","x-entity":"time_entry","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["time_entry:create"]},{"cookieAuth":["time_entry:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string","minLength":1,"maxLength":64},"taskId":{"type":"string","maxLength":64,"nullable":true},"userId":{"type":"string","minLength":1,"maxLength":64},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"hours":{"type":"number","minimum":0,"maximum":24,"multipleOf":0.01},"billable":{"type":"boolean"},"description":{"type":"string","maxLength":2000,"nullable":true},"approvalStatus":{"type":"string","enum":["pending","approved","rejected"]},"invoiceId":{"type":"string","maxLength":64,"nullable":true}},"required":["assignmentId","userId","date","hours"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/public/.well-known/oauth-authorization-server":{"get":{"summary":"GET /api/v1/public/.well-known/oauth-authorization-server","operationId":"get_api_v1_public_well_known_oauth_authorization_server","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/device/disconnect":{"post":{"summary":"POST /api/v1/public/auth/device/disconnect","operationId":"post_api_v1_public_auth_device_disconnect","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/device/start":{"post":{"summary":"POST /api/v1/public/auth/device/start","operationId":"post_api_v1_public_auth_device_start","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientId":{"type":"string","minLength":1,"maxLength":128},"scope":{"type":"string","maxLength":512}},"required":["clientId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/introspect":{"post":{"summary":"POST /api/v1/public/auth/introspect","operationId":"post_api_v1_public_auth_introspect","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"client_secret":{"type":"string","minLength":1}},"required":["token","client_id","client_secret"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/otp/send":{"post":{"summary":"POST /api/v1/public/auth/otp/send","operationId":"post_api_v1_public_auth_otp_send","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":254}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/otp/verify":{"post":{"summary":"POST /api/v1/public/auth/otp/verify","operationId":"post_api_v1_public_auth_otp_verify","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":254},"code":{"type":"string","pattern":"^\\d{6}$"},"returnTo":{"type":"string","maxLength":4096}},"required":["email","code"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/register":{"post":{"summary":"POST /api/v1/public/auth/register","operationId":"post_api_v1_public_auth_register","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"redirect_uris":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2000},"minItems":1,"maxItems":20},"client_name":{"type":"string","maxLength":400},"grant_types":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":10},"response_types":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":5},"token_endpoint_auth_method":{"type":"string","maxLength":64},"scope":{"type":"string","maxLength":1000}},"required":["redirect_uris"],"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/revoke":{"post":{"summary":"POST /api/v1/public/auth/revoke","operationId":"post_api_v1_public_auth_revoke","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1},"token_type_hint":{"type":"string","enum":["refresh_token","access_token"]},"client_id":{"type":"string","minLength":1},"client_secret":{"type":"string","minLength":1}},"required":["token","client_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/auth/token":{"post":{"summary":"POST /api/v1/public/auth/token","operationId":"post_api_v1_public_auth_token","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"]},"client_id":{"type":"string","minLength":1},"client_secret":{"type":"string","minLength":1},"scope":{"type":"string"},"resource":{"type":"string","maxLength":500}},"required":["grant_type"],"additionalProperties":false},{"type":"object","properties":{"grant_type":{"type":"string","enum":["refresh_token"]},"refresh_token":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"client_secret":{"type":"string","minLength":1},"scope":{"type":"string"},"resource":{"type":"string","maxLength":500}},"required":["grant_type","refresh_token"],"additionalProperties":false},{"type":"object","properties":{"grant_type":{"type":"string","enum":["device_code"]},"device_code":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"resource":{"type":"string","maxLength":500}},"required":["grant_type","device_code"],"additionalProperties":false},{"type":"object","properties":{"grant_type":{"type":"string","enum":["authorization_code"]},"code":{"type":"string","minLength":1},"code_verifier":{"type":"string","minLength":43,"maxLength":128},"redirect_uri":{"type":"string","minLength":1},"client_id":{"type":"string","minLength":1},"client_secret":{"type":"string","minLength":1},"scope":{"type":"string"},"resource":{"type":"string","maxLength":500}},"required":["grant_type","code","code_verifier","redirect_uri"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/brand/logo/{tenantId}":{"get":{"summary":"GET /api/v1/public/brand/logo/{tenantId}","operationId":"get_api_v1_public_brand_logo_tenantId","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/docs":{"get":{"summary":"OpenAPI 3.1 contract for the /api/v1 REST plane (machine-readable).","description":"OpenAPI 3.1 contract for the /api/v1 REST plane (machine-readable).","operationId":"get_api_v1_public_docs","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/forms/{token}/logo":{"get":{"summary":"GET /api/v1/public/forms/{token}/logo","operationId":"get_api_v1_public_forms_token_logo","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/forms/{token}":{"get":{"summary":"GET /api/v1/public/forms/{token}","operationId":"get_api_v1_public_forms_token","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}},"post":{"summary":"POST /api/v1/public/forms/{token}","operationId":"post_api_v1_public_forms_token","tags":["public"],"x-surface":"public","x-idempotent":true,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"answers":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":4000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":500},"maxItems":50}]}},"comment":{"type":"string","maxLength":4000},"respondentName":{"type":"string","maxLength":200}},"required":["answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/m/c/{token}/{linkId}":{"get":{"summary":"GET /api/v1/public/m/c/{token}/{linkId}","operationId":"get_api_v1_public_m_c_token_linkId","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/m/logo/{tenantId}":{"get":{"summary":"GET /api/v1/public/m/logo/{tenantId}","operationId":"get_api_v1_public_m_logo_tenantId","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/m/o/{token}":{"get":{"summary":"GET /api/v1/public/m/o/{token}","operationId":"get_api_v1_public_m_o_token","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/m/u/{token}":{"get":{"summary":"GET /api/v1/public/m/u/{token}","operationId":"get_api_v1_public_m_u_token","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}},"post":{"summary":"POST /api/v1/public/m/u/{token}","operationId":"post_api_v1_public_m_u_token","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/mcp/catalog":{"get":{"summary":"MCP data-plane tool catalog with JSON-Schema (machine-readable).","description":"MCP data-plane tool catalog with JSON-Schema (machine-readable).","operationId":"get_api_v1_public_mcp_catalog","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/mcp/manifest":{"get":{"summary":"GET /api/v1/public/mcp/manifest","operationId":"get_api_v1_public_mcp_manifest","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/surveys/{token}/pixel":{"get":{"summary":"GET /api/v1/public/surveys/{token}/pixel","operationId":"get_api_v1_public_surveys_token_pixel","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/surveys/{token}":{"get":{"summary":"GET /api/v1/public/surveys/{token}","operationId":"get_api_v1_public_surveys_token","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}},"post":{"summary":"POST /api/v1/public/surveys/{token}","operationId":"post_api_v1_public_surveys_token","tags":["public"],"x-surface":"public","x-idempotent":true,"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":300}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"answers":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":4000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":500},"maxItems":50}]}},"comment":{"type":"string","maxLength":4000},"respondentName":{"type":"string","maxLength":200}},"required":["answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/trust/{slug}":{"get":{"summary":"GET /api/v1/public/trust/{slug}","operationId":"get_api_v1_public_trust_slug","tags":["public"],"x-surface":"public","x-idempotent":false,"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/webhooks/internal/menu-cache-invalidate":{"post":{"summary":"POST /api/v1/public/webhooks/internal/menu-cache-invalidate","operationId":"post_api_v1_public_webhooks_internal_menu_cache_invalidate","tags":["public"],"x-surface":"public","x-idempotent":false,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientId":{"type":"string","minLength":1,"maxLength":160}},"required":["clientId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/public/webhooks/ses":{"post":{"summary":"POST /api/v1/public/webhooks/ses","operationId":"post_api_v1_public_webhooks_ses","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}}}},"/api/v1/scheduling/availability/analyses":{"post":{"summary":"Analyze staffing fit, availability, PTO blackouts, and recent overwork trends","description":"Analyze staffing fit, availability, PTO blackouts, and recent overwork trends","operationId":"post_api_v1_scheduling_availability_analyses","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"analyze_availability","x-idempotent":false,"security":[{"bearerAuth":["calendar:analyze_availability"]},{"cookieAuth":["calendar:analyze_availability"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"assignmentId":{"type":"string","minLength":1,"maxLength":64},"lookbackDays":{"type":"integer","minimum":28,"maximum":365,"default":90}},"required":["calendarId","from","to"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/availability/assignee-suggestions":{"get":{"summary":"Suggest the optimal allow-listed assignee for a time window","description":"Suggest the optimal allow-listed assignee for a time window","operationId":"get_api_v1_scheduling_availability_assignee_suggestions","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"suggest_assignee","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar:suggest_assignee"]},{"cookieAuth":["calendar:suggest_assignee"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/availability":{"get":{"summary":"Compute per-user availability (free windows) for a calendar over a date range","description":"Compute per-user availability (free windows) for a calendar over a date range","operationId":"get_api_v1_scheduling_availability","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"check_availability","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar:check_availability"]},{"cookieAuth":["calendar:check_availability"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendar-events/{id}/links/{linkId}":{"delete":{"summary":"Update fields on a calendar_event","description":"Update fields on a calendar_event","operationId":"delete_api_v1_scheduling_calendar_events_id_links_linkId","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:update"]},{"cookieAuth":["calendar_event:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendar-events/{id}/links":{"get":{"summary":"View a calendar_event","description":"View a calendar_event","operationId":"get_api_v1_scheduling_calendar_events_id_links","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:read"]},{"cookieAuth":["calendar_event:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a calendar_event","description":"Update fields on a calendar_event","operationId":"post_api_v1_scheduling_calendar_events_id_links","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:update"]},{"cookieAuth":["calendar_event:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toType":{"type":"string"},"toId":{"type":"string"},"linkType":{"type":"string"},"note":{"type":"string"}},"required":["toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendar-events/{id}":{"get":{"summary":"View a calendar_event","description":"View a calendar_event","operationId":"get_api_v1_scheduling_calendar_events_id","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:read"]},{"cookieAuth":["calendar_event:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a calendar_event","description":"Update fields on a calendar_event","operationId":"patch_api_v1_scheduling_calendar_events_id","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:update"]},{"cookieAuth":["calendar_event:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"allDay":{"type":"boolean"},"location":{"type":"string","maxLength":500,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"linkedEntityType":{"type":"string","maxLength":64,"nullable":true},"linkedEntityId":{"type":"string","maxLength":64,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"locationId":{"type":"string","maxLength":64,"nullable":true},"assigneeIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":1000},"customFields":{"type":"object","additionalProperties":{}},"status":{"type":"string","maxLength":64,"nullable":true},"inviteeEmails":{"type":"array","items":{"type":"string","format":"email"},"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a calendar_event","description":"Soft-delete a calendar_event","operationId":"delete_api_v1_scheduling_calendar_events_id","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:delete"]},{"cookieAuth":["calendar_event:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendar-events/meta":{"get":{"summary":"View a calendar_event","description":"View a calendar_event","operationId":"get_api_v1_scheduling_calendar_events_meta","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["calendar_event:read"]},{"cookieAuth":["calendar_event:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendar-events":{"get":{"summary":"List calendar_events with filters and pagination","description":"List calendar_events with filters and pagination","operationId":"get_api_v1_scheduling_calendar_events","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"list","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar_event:list"]},{"cookieAuth":["calendar_event:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new calendar_event","description":"Create a new calendar_event","operationId":"post_api_v1_scheduling_calendar_events","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar_event:create"]},{"cookieAuth":["calendar_event:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"allDay":{"type":"boolean"},"location":{"type":"string","maxLength":500,"nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"linkedEntityType":{"type":"string","maxLength":64,"nullable":true},"linkedEntityId":{"type":"string","maxLength":64,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"locationId":{"type":"string","maxLength":64,"nullable":true},"assigneeIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":1000},"customFields":{"type":"object","additionalProperties":{}},"status":{"type":"string","maxLength":64,"nullable":true},"inviteeEmails":{"type":"array","items":{"type":"string","format":"email"},"maxItems":50}},"required":["calendarId","title","startsAt","endsAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendars/{id}/allowed-users":{"get":{"summary":"View a calendar","description":"View a calendar","operationId":"get_api_v1_scheduling_calendars_id_allowed_users","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:read"]},{"cookieAuth":["calendar:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"put":{"summary":"Set the booking allow-list for a calendar","description":"Set the booking allow-list for a calendar","operationId":"put_api_v1_scheduling_calendars_id_allowed_users","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"manage_allowed_users","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:manage_allowed_users"]},{"cookieAuth":["calendar:manage_allowed_users"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":1000}},"required":["userIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendars/{id}":{"get":{"summary":"View a calendar","description":"View a calendar","operationId":"get_api_v1_scheduling_calendars_id","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:read"]},{"cookieAuth":["calendar:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a calendar","description":"Update fields on a calendar","operationId":"patch_api_v1_scheduling_calendars_id","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:update"]},{"cookieAuth":["calendar:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"color":{"type":"string","maxLength":40,"nullable":true},"description":{"type":"string","maxLength":2000,"nullable":true},"kind":{"type":"string","maxLength":40},"notifySettings":{"type":"object","properties":{"notifyAssigneesOnChange":{"type":"boolean"},"dailySummary":{"type":"boolean"},"defaultView":{"type":"string","enum":["calendar","resource_timeline"]},"manualResources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"color":{"type":"string","maxLength":40}},"required":["id","name"],"additionalProperties":false},"maxItems":100},"resourceTimelineOrder":{"type":"array","items":{"type":"string","minLength":1,"maxLength":72},"maxItems":1100}},"additionalProperties":false},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a calendar","description":"Soft-delete a calendar","operationId":"delete_api_v1_scheduling_calendars_id","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:delete"]},{"cookieAuth":["calendar:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendars/meta":{"get":{"summary":"View a calendar","description":"View a calendar","operationId":"get_api_v1_scheduling_calendars_meta","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["calendar:read"]},{"cookieAuth":["calendar:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/calendars":{"get":{"summary":"List calendars with filters and pagination","description":"List calendars with filters and pagination","operationId":"get_api_v1_scheduling_calendars","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","maxLength":40}}],"security":[{"bearerAuth":["calendar:list"]},{"cookieAuth":["calendar:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new calendar","description":"Create a new calendar","operationId":"post_api_v1_scheduling_calendars","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["calendar:create"]},{"cookieAuth":["calendar:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"color":{"type":"string","maxLength":40,"nullable":true},"description":{"type":"string","maxLength":2000,"nullable":true},"kind":{"type":"string","maxLength":40},"notifySettings":{"type":"object","properties":{"notifyAssigneesOnChange":{"type":"boolean"},"dailySummary":{"type":"boolean"},"defaultView":{"type":"string","enum":["calendar","resource_timeline"]},"manualResources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"color":{"type":"string","maxLength":40}},"required":["id","name"],"additionalProperties":false},"maxItems":100},"resourceTimelineOrder":{"type":"array","items":{"type":"string","minLength":1,"maxLength":72},"maxItems":1100}},"additionalProperties":false},"customFields":{"type":"object","additionalProperties":{}}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings/{id}/dismiss":{"post":{"summary":"Dismiss a meeting from the list","description":"Dismiss a meeting from the list","operationId":"post_api_v1_scheduling_meetings_id_dismiss","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"dismiss","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["meeting:dismiss"]},{"cookieAuth":["meeting:dismiss"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings/{id}/log":{"post":{"summary":"Log a meeting as an activity, tasks and a knowledge-hub item","description":"Log a meeting as an activity, tasks and a knowledge-hub item","operationId":"post_api_v1_scheduling_meetings_id_log","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"log","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["meeting:log"]},{"cookieAuth":["meeting:log"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["contact","deal","project","work_order","ticket"]},"id":{"type":"string","minLength":1}},"required":["type","id"],"additionalProperties":false},"minItems":1,"maxItems":20},"actionItems":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":300},"assigneeUserId":{"type":"string","nullable":true},"assigneeEmail":{"type":"string","format":"email","nullable":true},"dueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(T.*)?$","nullable":true}},"required":["text"],"additionalProperties":false},"maxItems":50,"default":[]},"hub":{"type":"object","properties":{"personal":{"type":"boolean","default":false},"sharedHubId":{"type":"string","minLength":1,"nullable":true,"default":null}},"additionalProperties":false,"default":{"personal":false,"sharedHubId":null}},"recordUpdates":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["deal","project","ticket","work_order"]},"id":{"type":"string","minLength":1},"field":{"type":"string","minLength":1,"maxLength":40},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["type","id","field","value"],"additionalProperties":false},"maxItems":20,"default":[]},"newContacts":{"type":"array","items":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":100},"lastName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","format":"email","nullable":true}},"required":["firstName"],"additionalProperties":false},"maxItems":10,"default":[]}},"required":["links"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings/{id}/retry":{"post":{"summary":"Upload a meeting recording for transcription (metered LLM call)","description":"Upload a meeting recording for transcription (metered LLM call)","operationId":"post_api_v1_scheduling_meetings_id_retry","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"upload","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["meeting:upload"]},{"cookieAuth":["meeting:upload"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings/{id}/review":{"post":{"summary":"AI review of a meeting → suggested links, record updates and contacts","description":"AI review of a meeting → suggested links, record updates and contacts","operationId":"post_api_v1_scheduling_meetings_id_review","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"review","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["meeting:review"]},{"cookieAuth":["meeting:review"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings/{id}":{"get":{"summary":"Read a meeting's summary, action items and transcript","description":"Read a meeting's summary, action items and transcript","operationId":"get_api_v1_scheduling_meetings_id","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"security":[{"bearerAuth":["meeting:read"]},{"cookieAuth":["meeting:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/meetings":{"get":{"summary":"List meetings from connected recording providers and uploads","description":"List meetings from connected recording providers and uploads","operationId":"get_api_v1_scheduling_meetings","tags":["meeting"],"x-surface":"data","x-entity":"meeting","x-action":"list","x-idempotent":false,"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearerAuth":["meeting:list"]},{"cookieAuth":["meeting:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/pto/{id}":{"get":{"summary":"View a pto_entry","description":"View a pto_entry","operationId":"get_api_v1_scheduling_pto_id","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pto_entry:read"]},{"cookieAuth":["pto_entry:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a pto_entry","description":"Update fields on a pto_entry","operationId":"patch_api_v1_scheduling_pto_id","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pto_entry:update"]},{"cookieAuth":["pto_entry:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64},"startsOn":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endsOn":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"reason":{"type":"string","maxLength":500,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a pto_entry","description":"Soft-delete a pto_entry","operationId":"delete_api_v1_scheduling_pto_id","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["pto_entry:delete"]},{"cookieAuth":["pto_entry:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/pto/conflicts":{"get":{"summary":"List calendar_events with filters and pagination","description":"List calendar_events with filters and pagination","operationId":"get_api_v1_scheduling_pto_conflicts","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"list","x-idempotent":false,"parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"startsOn","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"endsOn","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["calendar_event:list"]},{"cookieAuth":["calendar_event:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/pto/meta":{"get":{"summary":"View a pto_entry","description":"View a pto_entry","operationId":"get_api_v1_scheduling_pto_meta","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["pto_entry:read"]},{"cookieAuth":["pto_entry:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/scheduling/pto":{"get":{"summary":"List pto_entrys with filters and pagination","description":"List pto_entrys with filters and pagination","operationId":"get_api_v1_scheduling_pto","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"list","x-idempotent":false,"parameters":[{"name":"userId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["pto_entry:list"]},{"cookieAuth":["pto_entry:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new pto_entry","description":"Create a new pto_entry","operationId":"post_api_v1_scheduling_pto","tags":["pto_entry"],"x-surface":"data","x-entity":"pto_entry","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["pto_entry:create"]},{"cookieAuth":["pto_entry:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1,"maxLength":64},"startsOn":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endsOn":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"reason":{"type":"string","maxLength":500,"nullable":true}},"required":["userId","startsOn","endsOn"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/carriers/{id}":{"get":{"summary":"View a shipping_carrier","description":"View a shipping_carrier","operationId":"get_api_v1_shipping_carriers_id","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["shipping_carrier:read"]},{"cookieAuth":["shipping_carrier:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a shipping_carrier","description":"Update fields on a shipping_carrier","operationId":"patch_api_v1_shipping_carriers_id","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["shipping_carrier:update"]},{"cookieAuth":["shipping_carrier:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"code":{"type":"string","maxLength":40,"nullable":true},"trackingUrlTemplate":{"type":"string","maxLength":1000,"nullable":true},"isSystem":{"type":"boolean","nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a shipping_carrier","description":"Soft-delete a shipping_carrier","operationId":"delete_api_v1_shipping_carriers_id","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["shipping_carrier:delete"]},{"cookieAuth":["shipping_carrier:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/carriers/meta":{"get":{"summary":"View a shipping_carrier","description":"View a shipping_carrier","operationId":"get_api_v1_shipping_carriers_meta","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["shipping_carrier:read"]},{"cookieAuth":["shipping_carrier:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/carriers":{"get":{"summary":"List shipping_carriers with filters and pagination","description":"List shipping_carriers with filters and pagination","operationId":"get_api_v1_shipping_carriers","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"isSystem","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["shipping_carrier:list"]},{"cookieAuth":["shipping_carrier:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new shipping_carrier","description":"Create a new shipping_carrier","operationId":"post_api_v1_shipping_carriers","tags":["shipping_carrier"],"x-surface":"data","x-entity":"shipping_carrier","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["shipping_carrier:create"]},{"cookieAuth":["shipping_carrier:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"code":{"type":"string","maxLength":40,"nullable":true},"trackingUrlTemplate":{"type":"string","maxLength":1000,"nullable":true},"isSystem":{"type":"boolean","nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/shipments/{id}":{"get":{"summary":"View a shipment","description":"View a shipment","operationId":"get_api_v1_shipping_shipments_id","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["shipment:read"]},{"cookieAuth":["shipment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a shipment","description":"Update fields on a shipment","operationId":"patch_api_v1_shipping_shipments_id","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["shipment:update"]},{"cookieAuth":["shipment:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shipmentNumber":{"type":"string","maxLength":60,"nullable":true},"accountId":{"type":"string","maxLength":80},"workOrderId":{"type":"string","maxLength":80,"nullable":true},"carrierId":{"type":"string","maxLength":80,"nullable":true},"carrierService":{"type":"string","maxLength":120,"nullable":true},"trackingNumber":{"type":"string","maxLength":200,"nullable":true},"trackingUrl":{"type":"string","maxLength":1000,"nullable":true},"status":{"type":"string","maxLength":40,"nullable":true},"shipFromWarehouseId":{"type":"string","maxLength":80,"nullable":true},"locationId":{"type":"string","maxLength":80,"nullable":true},"shipToLine1":{"type":"string","maxLength":300,"nullable":true},"shipToLine2":{"type":"string","maxLength":300,"nullable":true},"shipToCity":{"type":"string","maxLength":200,"nullable":true},"shipToState":{"type":"string","maxLength":200,"nullable":true},"shipToPostalCode":{"type":"string","maxLength":40,"nullable":true},"shipToCountry":{"type":"string","maxLength":100,"nullable":true},"weightGrams":{"type":"number","minimum":0,"nullable":true},"lengthMm":{"type":"number","minimum":0,"nullable":true},"widthMm":{"type":"number","minimum":0,"nullable":true},"heightMm":{"type":"number","minimum":0,"nullable":true},"cost":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","maxLength":3,"nullable":true},"shippedAt":{"type":"string","format":"date-time","nullable":true},"deliveredAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","nullable":true},"portalVisible":{"type":"boolean","nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a shipment","description":"Soft-delete a shipment","operationId":"delete_api_v1_shipping_shipments_id","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["shipment:delete"]},{"cookieAuth":["shipment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/shipments/meta":{"get":{"summary":"View a shipment","description":"View a shipment","operationId":"get_api_v1_shipping_shipments_meta","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["shipment:read"]},{"cookieAuth":["shipment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/shipping/shipments":{"get":{"summary":"List shipments with filters and pagination","description":"List shipments with filters and pagination","operationId":"get_api_v1_shipping_shipments","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"workOrderId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"locationId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"carrierId","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"security":[{"bearerAuth":["shipment:list"]},{"cookieAuth":["shipment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new shipment","description":"Create a new shipment","operationId":"post_api_v1_shipping_shipments","tags":["shipment"],"x-surface":"data","x-entity":"shipment","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["shipment:create"]},{"cookieAuth":["shipment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shipmentNumber":{"type":"string","maxLength":60,"nullable":true},"accountId":{"type":"string","maxLength":80,"minLength":1},"workOrderId":{"type":"string","maxLength":80,"nullable":true},"carrierId":{"type":"string","maxLength":80,"nullable":true},"carrierService":{"type":"string","maxLength":120,"nullable":true},"trackingNumber":{"type":"string","maxLength":200,"nullable":true},"trackingUrl":{"type":"string","maxLength":1000,"nullable":true},"status":{"type":"string","maxLength":40,"nullable":true},"shipFromWarehouseId":{"type":"string","maxLength":80,"nullable":true},"locationId":{"type":"string","maxLength":80,"nullable":true},"shipToLine1":{"type":"string","maxLength":300,"nullable":true},"shipToLine2":{"type":"string","maxLength":300,"nullable":true},"shipToCity":{"type":"string","maxLength":200,"nullable":true},"shipToState":{"type":"string","maxLength":200,"nullable":true},"shipToPostalCode":{"type":"string","maxLength":40,"nullable":true},"shipToCountry":{"type":"string","maxLength":100,"nullable":true},"weightGrams":{"type":"number","minimum":0,"nullable":true},"lengthMm":{"type":"number","minimum":0,"nullable":true},"widthMm":{"type":"number","minimum":0,"nullable":true},"heightMm":{"type":"number","minimum":0,"nullable":true},"cost":{"type":"number","minimum":0,"nullable":true},"currency":{"type":"string","maxLength":3,"nullable":true},"shippedAt":{"type":"string","format":"date-time","nullable":true},"deliveredAt":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","nullable":true},"portalVisible":{"type":"boolean","nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"required":["accountId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/kb-articles/meta":{"get":{"summary":"View a kb_article","description":"View a kb_article","operationId":"get_api_v1_support_kb_articles_meta","tags":["kb_article"],"x-surface":"data","x-entity":"kb_article","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["kb_article:read"]},{"cookieAuth":["kb_article:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/macros/{id}":{"get":{"summary":"GET /api/v1/support/macros/{id}","operationId":"get_api_v1_support_macros_id","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["macro:read"]},{"cookieAuth":["macro:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/support/macros/{id}","operationId":"patch_api_v1_support_macros_id","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["macro:update"]},{"cookieAuth":["macro:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"content":{"type":"string","minLength":1,"maxLength":50000},"variables":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"suggestedByAi":{"type":"boolean"},"effectivenessScore":{"type":"number","minimum":0,"maximum":100,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/support/macros/{id}","operationId":"delete_api_v1_support_macros_id","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["macro:delete"]},{"cookieAuth":["macro:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/macros/meta":{"get":{"summary":"GET /api/v1/support/macros/meta","operationId":"get_api_v1_support_macros_meta","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["macro:read"]},{"cookieAuth":["macro:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/macros":{"get":{"summary":"GET /api/v1/support/macros","operationId":"get_api_v1_support_macros","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"suggestedByAi","in":"query","required":false,"schema":{"type":"boolean"}}],"security":[{"bearerAuth":["macro:list"]},{"cookieAuth":["macro:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/support/macros","operationId":"post_api_v1_support_macros","tags":["macro"],"x-surface":"data","x-entity":"macro","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["macro:create"]},{"cookieAuth":["macro:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"content":{"type":"string","minLength":1,"maxLength":50000},"variables":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":50},"suggestedByAi":{"type":"boolean"},"effectivenessScore":{"type":"number","minimum":0,"maximum":100,"nullable":true}},"required":["name","content"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/queues/{id}":{"get":{"summary":"GET /api/v1/support/queues/{id}","operationId":"get_api_v1_support_queues_id","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["queue:read"]},{"cookieAuth":["queue:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/support/queues/{id}","operationId":"patch_api_v1_support_queues_id","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["queue:update"]},{"cookieAuth":["queue:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"departmentId":{"type":"string","maxLength":64,"nullable":true},"assignmentStrategy":{"type":"string","enum":["round_robin","load_balanced","manual","skill_based"]},"memberIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":500}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/support/queues/{id}","operationId":"delete_api_v1_support_queues_id","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["queue:delete"]},{"cookieAuth":["queue:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/queues/meta":{"get":{"summary":"GET /api/v1/support/queues/meta","operationId":"get_api_v1_support_queues_meta","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["queue:read"]},{"cookieAuth":["queue:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/queues":{"get":{"summary":"GET /api/v1/support/queues","operationId":"get_api_v1_support_queues","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"departmentId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"strategy","in":"query","required":false,"schema":{"type":"string","enum":["round_robin","load_balanced","manual","skill_based"]}}],"security":[{"bearerAuth":["queue:list"]},{"cookieAuth":["queue:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/support/queues","operationId":"post_api_v1_support_queues","tags":["queue"],"x-surface":"data","x-entity":"queue","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["queue:create"]},{"cookieAuth":["queue:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"departmentId":{"type":"string","maxLength":64,"nullable":true},"assignmentStrategy":{"type":"string","enum":["round_robin","load_balanced","manual","skill_based"]},"memberIds":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":500}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/sla-policies/{id}":{"get":{"summary":"GET /api/v1/support/sla-policies/{id}","operationId":"get_api_v1_support_sla_policies_id","tags":["sla_policy"],"x-surface":"data","x-entity":"sla_policy","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["sla_policy:read"]},{"cookieAuth":["sla_policy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"PATCH /api/v1/support/sla-policies/{id}","operationId":"patch_api_v1_support_sla_policies_id","tags":["sla_policy"],"x-surface":"admin","x-entity":"sla_policy","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["sla_policy:update"]},{"cookieAuth":["sla_policy:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"tier":{"type":"string","minLength":1,"maxLength":40},"responseTime":{"type":"object","properties":{"hours":{"type":"number","minimum":0,"maximum":8760},"minutes":{"type":"number","minimum":0,"maximum":525600}},"additionalProperties":true},"resolutionTime":{"type":"object","properties":{"hours":{"type":"number","minimum":0,"maximum":8760},"minutes":{"type":"number","minimum":0,"maximum":525600}},"additionalProperties":true},"escalationRules":{"type":"array","items":{"type":"object","properties":{"afterMinutes":{"type":"number","minimum":0},"notify":{"type":"array","items":{"type":"string"},"maxItems":20},"severity":{"type":"string","enum":["critical","high","medium","low"]}},"required":["afterMinutes","notify"],"additionalProperties":true},"maxItems":50},"breachActions":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":20}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"DELETE /api/v1/support/sla-policies/{id}","operationId":"delete_api_v1_support_sla_policies_id","tags":["sla_policy"],"x-surface":"admin","x-entity":"sla_policy","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["sla_policy:delete"]},{"cookieAuth":["sla_policy:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/sla-policies/meta":{"get":{"summary":"GET /api/v1/support/sla-policies/meta","operationId":"get_api_v1_support_sla_policies_meta","tags":["sla_policy"],"x-surface":"data","x-entity":"sla_policy","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["sla_policy:read"]},{"cookieAuth":["sla_policy:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/sla-policies":{"get":{"summary":"GET /api/v1/support/sla-policies","operationId":"get_api_v1_support_sla_policies","tags":["sla_policy"],"x-surface":"data","x-entity":"sla_policy","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","maxLength":40}}],"security":[{"bearerAuth":["sla_policy:list"]},{"cookieAuth":["sla_policy:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"POST /api/v1/support/sla-policies","operationId":"post_api_v1_support_sla_policies","tags":["sla_policy"],"x-surface":"admin","x-entity":"sla_policy","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["sla_policy:create"]},{"cookieAuth":["sla_policy:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"tier":{"type":"string","minLength":1,"maxLength":40},"responseTime":{"type":"object","properties":{"hours":{"type":"number","minimum":0,"maximum":8760},"minutes":{"type":"number","minimum":0,"maximum":525600}},"additionalProperties":true},"resolutionTime":{"type":"object","properties":{"hours":{"type":"number","minimum":0,"maximum":8760},"minutes":{"type":"number","minimum":0,"maximum":525600}},"additionalProperties":true},"escalationRules":{"type":"array","items":{"type":"object","properties":{"afterMinutes":{"type":"number","minimum":0},"notify":{"type":"array","items":{"type":"string"},"maxItems":20},"severity":{"type":"string","enum":["critical","high","medium","low"]}},"required":["afterMinutes","notify"],"additionalProperties":true},"maxItems":50},"breachActions":{"type":"array","items":{"type":"string","maxLength":80},"maxItems":20}},"required":["name","tier"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/ai-insights/meta":{"get":{"summary":"Read AI insights for a ticket (agent-only)","description":"Read AI insights for a ticket (agent-only)","operationId":"get_api_v1_support_tickets_id_ai_insights_meta","tags":["ticket_ai_insight"],"x-surface":"data","x-entity":"ticket_ai_insight","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_ai_insight:read"]},{"cookieAuth":["ticket_ai_insight:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/ai-insights":{"get":{"summary":"Read AI insights for a ticket (agent-only)","description":"Read AI insights for a ticket (agent-only)","operationId":"get_api_v1_support_tickets_id_ai_insights","tags":["ticket_ai_insight"],"x-surface":"data","x-entity":"ticket_ai_insight","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_ai_insight:read"]},{"cookieAuth":["ticket_ai_insight:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Force regenerate AI insights for a ticket (agent-only)","description":"Force regenerate AI insights for a ticket (agent-only)","operationId":"post_api_v1_support_tickets_id_ai_insights","tags":["ticket_ai_insight"],"x-surface":"data","x-entity":"ticket_ai_insight","x-action":"refresh","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_ai_insight:refresh"]},{"cookieAuth":["ticket_ai_insight:refresh"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/assign":{"post":{"summary":"Assign ticket","description":"Assign ticket","operationId":"post_api_v1_support_tickets_id_assign","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"assign","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:assign"]},{"cookieAuth":["ticket:assign"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assigneeId":{"type":"string","nullable":true}},"required":["assigneeId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/attachments/{attachmentId}":{"get":{"summary":"View a attachment","description":"View a attachment","operationId":"get_api_v1_support_tickets_id_attachments_attachmentId","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attachment:read"]},{"cookieAuth":["attachment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a attachment","description":"Soft-delete a attachment","operationId":"delete_api_v1_support_tickets_id_attachments_attachmentId","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attachment:delete"]},{"cookieAuth":["attachment:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/attachments/meta":{"get":{"summary":"View a attachment","description":"View a attachment","operationId":"get_api_v1_support_tickets_id_attachments_meta","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attachment:read"]},{"cookieAuth":["attachment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/attachments":{"get":{"summary":"List attachments with filters and pagination","description":"List attachments with filters and pagination","operationId":"get_api_v1_support_tickets_id_attachments","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["attachment:list"]},{"cookieAuth":["attachment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/comments/{commentId}":{"get":{"summary":"GET /api/v1/support/tickets/{id}/comments/{commentId}","operationId":"get_api_v1_support_tickets_id_comments_commentId","tags":["ticket_comment"],"x-surface":"data","x-entity":"ticket_comment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_comment:read"]},{"cookieAuth":["ticket_comment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/comments/meta":{"get":{"summary":"GET /api/v1/support/tickets/{id}/comments/meta","operationId":"get_api_v1_support_tickets_id_comments_meta","tags":["ticket_comment"],"x-surface":"data","x-entity":"ticket_comment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_comment:read"]},{"cookieAuth":["ticket_comment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/comments":{"get":{"summary":"GET /api/v1/support/tickets/{id}/comments","operationId":"get_api_v1_support_tickets_id_comments","tags":["ticket_comment"],"x-surface":"data","x-entity":"ticket_comment","x-action":"list","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_comment:list"]},{"cookieAuth":["ticket_comment:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Post a comment on a ticket","description":"Post a comment on a ticket","operationId":"post_api_v1_support_tickets_id_comments","tags":["ticket_comment"],"x-surface":"data","x-entity":"ticket_comment","x-action":"create","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_comment:create"]},{"cookieAuth":["ticket_comment:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":50000},"isInternal":{"type":"boolean","default":false},"attachments":{"type":"array","items":{},"maxItems":20}},"required":["body"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/portal-share/contacts/{contactId}":{"delete":{"summary":"Update fields on a ticket","description":"Update fields on a ticket","operationId":"delete_api_v1_support_tickets_id_portal_share_contacts_contactId","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:update"]},{"cookieAuth":["ticket:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/portal-share/contacts":{"get":{"summary":"View a ticket","description":"View a ticket","operationId":"get_api_v1_support_tickets_id_portal_share_contacts","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:read"]},{"cookieAuth":["ticket:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a ticket","description":"Update fields on a ticket","operationId":"post_api_v1_support_tickets_id_portal_share_contacts","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:update"]},{"cookieAuth":["ticket:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","minLength":1}},"required":["contactId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/portal-share":{"post":{"summary":"Update fields on a ticket","description":"Update fields on a ticket","operationId":"post_api_v1_support_tickets_id_portal_share","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:update"]},{"cookieAuth":["ticket:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visible":{"type":"boolean"}},"required":["visible"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/reopen":{"post":{"summary":"Reopen a solved/closed ticket","description":"Reopen a solved/closed ticket","operationId":"post_api_v1_support_tickets_id_reopen","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"reopen","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:reopen"]},{"cookieAuth":["ticket:reopen"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/resolve":{"post":{"summary":"Resolve ticket (legacy alias)","description":"Resolve ticket (legacy alias)","operationId":"post_api_v1_support_tickets_id_resolve","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"approve","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:approve"]},{"cookieAuth":["ticket:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resolution":{"type":"string","minLength":1,"maxLength":5000}},"required":["resolution"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}":{"get":{"summary":"View a ticket","description":"View a ticket","operationId":"get_api_v1_support_tickets_id","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:read"]},{"cookieAuth":["ticket:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a ticket","description":"Update fields on a ticket","operationId":"patch_api_v1_support_tickets_id","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:update"]},{"cookieAuth":["ticket:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"contactId":{"type":"string","minLength":1},"projectId":{"type":"string","minLength":1,"nullable":true},"workOrderId":{"type":"string","minLength":1,"nullable":true},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"locationId":{"type":"string","minLength":1,"nullable":true},"assetId":{"type":"string","minLength":1,"nullable":true},"productId":{"type":"string","minLength":1,"nullable":true},"ownerId":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":50000},"priority":{"type":"string","enum":["critical","high","medium","low"]},"status":{"type":"string","enum":["new","open","pending","on_hold","solved","closed","reopened"]},"ticketType":{"type":"string","enum":["question","problem","feature_request","incident","task"],"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"channel":{"type":"string","enum":["web","email","phone","chat","api"]},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":50},"assigneeId":{"type":"string","nullable":true},"queueId":{"type":"string","nullable":true},"slaId":{"type":"string","nullable":true},"resolution":{"type":"string","maxLength":5000,"nullable":true},"requesterId":{"type":"string","nullable":true},"ticketNumber":{"type":"string","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a ticket","description":"Soft-delete a ticket","operationId":"delete_api_v1_support_tickets_id","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:delete"]},{"cookieAuth":["ticket:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/{id}/transition":{"post":{"summary":"Change ticket status","description":"Change ticket status","operationId":"post_api_v1_support_tickets_id_transition","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"status_change","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:status_change"]},{"cookieAuth":["ticket:status_change"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["new","open","pending","on_hold","solved","closed","reopened"]},"reason":{"type":"string","maxLength":2000}},"required":["status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets/meta":{"get":{"summary":"View a ticket","description":"View a ticket","operationId":"get_api_v1_support_tickets_meta","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["ticket:read"]},{"cookieAuth":["ticket:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/support/tickets":{"get":{"summary":"List tickets with filters and pagination","description":"List tickets with filters and pagination","operationId":"get_api_v1_support_tickets","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string"}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assigneeId","in":"query","required":false,"schema":{"type":"string"}},{"name":"requesterId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["new","open","pending","on_hold","solved","closed","reopened"]}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["critical","high","medium","low"]}},{"name":"queueId","in":"query","required":false,"schema":{"type":"string"}},{"name":"assignedToMe","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["true"]},{"type":"string","enum":["false"]},{"type":"boolean"}]}},{"name":"unassigned","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["true"]},{"type":"string","enum":["false"]},{"type":"boolean"}]}}],"security":[{"bearerAuth":["ticket:list"]},{"cookieAuth":["ticket:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new ticket","description":"Create a new ticket","operationId":"post_api_v1_support_tickets","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:create"]},{"cookieAuth":["ticket:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"type":"string","minLength":1},"contactId":{"type":"string","minLength":1},"projectId":{"type":"string","minLength":1,"nullable":true},"workOrderId":{"type":"string","minLength":1,"nullable":true},"commercialTermsSnapshotId":{"type":"string","minLength":1,"nullable":true},"locationId":{"type":"string","minLength":1,"nullable":true},"assetId":{"type":"string","minLength":1,"nullable":true},"productId":{"type":"string","minLength":1,"nullable":true},"ownerId":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":50000},"priority":{"type":"string","enum":["critical","high","medium","low"]},"status":{"type":"string","enum":["new","open","pending","on_hold","solved","closed","reopened"]},"ticketType":{"type":"string","enum":["question","problem","feature_request","incident","task"],"nullable":true},"category":{"type":"string","maxLength":120,"nullable":true},"channel":{"type":"string","enum":["web","email","phone","chat","api"]},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":50},"assigneeId":{"type":"string","nullable":true},"queueId":{"type":"string","nullable":true},"slaId":{"type":"string","nullable":true},"resolution":{"type":"string","maxLength":5000,"nullable":true},"requesterId":{"type":"string","nullable":true},"ticketNumber":{"type":"string","nullable":true}},"required":["subject","description"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/analytics":{"get":{"summary":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","description":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","operationId":"get_api_v1_web_presence_web_properties_id_analytics","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["mtd","7d","28d","90d"],"default":"mtd"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}}],"security":[{"bearerAuth":["web_property:insights"]},{"cookieAuth":["web_property:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/brief":{"post":{"summary":"Generate the AI weekly digital-presence brief (summary, top fixes, anomalies) for a web property","description":"Generate the AI weekly digital-presence brief (summary, top fixes, anomalies) for a web property","operationId":"post_api_v1_web_presence_web_properties_id_brief","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"brief","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:brief"]},{"cookieAuth":["web_property:brief"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"type":"object","properties":{"refresh":{"type":"boolean"}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/connections/{service}/options":{"get":{"summary":"View a web_property","description":"View a web_property","operationId":"get_api_v1_web_presence_web_properties_id_connections_service_options","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:read"]},{"cookieAuth":["web_property:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/connections/{service}":{"put":{"summary":"Update fields on a web_property","description":"Update fields on a web_property","operationId":"put_api_v1_web_presence_web_properties_id_connections_service","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:update"]},{"cookieAuth":["web_property:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"selectedId":{"type":"string","minLength":1,"maxLength":400}},"required":["selectedId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a web_property","description":"Update fields on a web_property","operationId":"delete_api_v1_web_presence_web_properties_id_connections_service","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"service","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:update"]},{"cookieAuth":["web_property:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/connections":{"get":{"summary":"View a web_property","description":"View a web_property","operationId":"get_api_v1_web_presence_web_properties_id_connections","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:read"]},{"cookieAuth":["web_property:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/insights":{"get":{"summary":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","description":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","operationId":"get_api_v1_web_presence_web_properties_id_insights","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}}],"security":[{"bearerAuth":["web_property:insights"]},{"cookieAuth":["web_property:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}":{"get":{"summary":"View a web_property","description":"View a web_property","operationId":"get_api_v1_web_presence_web_properties_id","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:read"]},{"cookieAuth":["web_property:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a web_property","description":"Update fields on a web_property","operationId":"patch_api_v1_web_presence_web_properties_id","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:update"]},{"cookieAuth":["web_property:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["website","social","gbp"]},"label":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"isPrimary":{"type":"boolean","nullable":true},"url":{"type":"string","maxLength":1000},"sitemapUrl":{"type":"string","maxLength":1000,"nullable":true},"handle":{"type":"string","maxLength":200,"nullable":true},"network":{"type":"string","maxLength":60,"nullable":true},"gbpLocationId":{"type":"string","maxLength":200,"nullable":true},"comments":{"type":"string","maxLength":5000,"nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a web_property","description":"Soft-delete a web_property","operationId":"delete_api_v1_web_presence_web_properties_id","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:delete"]},{"cookieAuth":["web_property:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/snapshots":{"get":{"summary":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","description":"Read aggregated digital-presence insights (speed, SEO, domain authority, site checks) for a web property","operationId":"get_api_v1_web_presence_web_properties_id_snapshots","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":400}}],"security":[{"bearerAuth":["web_property:insights"]},{"cookieAuth":["web_property:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/{id}/submit-index":{"post":{"summary":"Submit URLs for search-engine indexing (IndexNow) for a web property","description":"Submit URLs for search-engine indexing (IndexNow) for a web property","operationId":"post_api_v1_web_presence_web_properties_id_submit_index","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"submit_index","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:submit_index"]},{"cookieAuth":["web_property:submit_index"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","format":"uri"},"minItems":1,"maxItems":100}},"required":["urls"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties/meta":{"get":{"summary":"View a web_property","description":"View a web_property","operationId":"get_api_v1_web_presence_web_properties_meta","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["web_property:read"]},{"cookieAuth":["web_property:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/web-presence/web-properties":{"get":{"summary":"List web_propertys with filters and pagination","description":"List web_propertys with filters and pagination","operationId":"get_api_v1_web_presence_web_properties","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["website","social","gbp"]}}],"security":[{"bearerAuth":["web_property:list"]},{"cookieAuth":["web_property:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new web_property","description":"Create a new web_property","operationId":"post_api_v1_web_presence_web_properties","tags":["web_property"],"x-surface":"data","x-entity":"web_property","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["web_property:create"]},{"cookieAuth":["web_property:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["website","social","gbp"]},"label":{"type":"string","maxLength":200,"minLength":1},"description":{"type":"string","maxLength":2000,"nullable":true},"isPrimary":{"type":"boolean","nullable":true},"url":{"type":"string","maxLength":1000,"minLength":1},"sitemapUrl":{"type":"string","maxLength":1000,"nullable":true},"handle":{"type":"string","maxLength":200,"nullable":true},"network":{"type":"string","maxLength":60,"nullable":true},"gbpLocationId":{"type":"string","maxLength":200,"nullable":true},"comments":{"type":"string","maxLength":5000,"nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"required":["label","url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/availability":{"get":{"summary":"View a work_order","description":"View a work_order","operationId":"get_api_v1_work_orders_availability","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["work_order:read"]},{"cookieAuth":["work_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/approve":{"post":{"summary":"POST /api/v1/work-orders/orders/{id}/approve","operationId":"post_api_v1_work_orders_orders_id_approve","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"approve","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:approve"]},{"cookieAuth":["work_order:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string","maxLength":500000},"signatureAttachmentId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"signedName":{"type":"string","maxLength":200}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/assign":{"post":{"summary":"POST /api/v1/work-orders/orders/{id}/assign","operationId":"post_api_v1_work_orders_orders_id_assign","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"assign","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:assign"]},{"cookieAuth":["work_order:assign"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"technicianId":{"type":"string","minLength":1,"maxLength":64},"scheduledTimeStart":{"type":"string","format":"date-time"},"scheduledTimeEnd":{"type":"string","format":"date-time"}},"required":["technicianId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/attachments/{attachmentId}":{"get":{"summary":"View a attachment","description":"View a attachment","operationId":"get_api_v1_work_orders_orders_id_attachments_attachmentId","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"security":[{"bearerAuth":["attachment:read"]},{"cookieAuth":["attachment:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/attachments":{"post":{"summary":"Create a new attachment","description":"Create a new attachment","operationId":"post_api_v1_work_orders_orders_id_attachments","tags":["attachment"],"x-surface":"data","x-entity":"attachment","x-action":"create","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["attachment:create"]},{"cookieAuth":["attachment:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/cancel":{"post":{"summary":"POST /api/v1/work-orders/orders/{id}/cancel","operationId":"post_api_v1_work_orders_orders_id_cancel","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:cancel"]},{"cookieAuth":["work_order:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/portal-share/contacts/{contactId}":{"delete":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"delete_api_v1_work_orders_orders_id_portal_share_contacts_contactId","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/portal-share/contacts":{"get":{"summary":"View a work_order","description":"View a work_order","operationId":"get_api_v1_work_orders_orders_id_portal_share_contacts","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:read"]},{"cookieAuth":["work_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"post_api_v1_work_orders_orders_id_portal_share_contacts","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","minLength":1}},"required":["contactId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/portal-share":{"post":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"post_api_v1_work_orders_orders_id_portal_share","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visible":{"type":"boolean"}},"required":["visible"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/quotes/{quoteId}":{"put":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"put_api_v1_work_orders_orders_id_quotes_quoteId","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"quoteId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"delete_api_v1_work_orders_orders_id_quotes_quoteId","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"quoteId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/quotes/primary":{"put":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"put_api_v1_work_orders_orders_id_quotes_primary","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quoteId":{"type":"string","minLength":1,"maxLength":64}},"required":["quoteId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/quotes":{"get":{"summary":"List quotes with filters and pagination","description":"List quotes with filters and pagination","operationId":"get_api_v1_work_orders_orders_id_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"list","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:list"]},{"cookieAuth":["quote:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new quote","description":"Create a new quote","operationId":"post_api_v1_work_orders_orders_id_quotes","tags":["quote"],"x-surface":"data","x-entity":"quote","x-action":"create","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["quote:create"]},{"cookieAuth":["quote:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}":{"get":{"summary":"View a work_order","description":"View a work_order","operationId":"get_api_v1_work_orders_orders_id","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:read"]},{"cookieAuth":["work_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"patch_api_v1_work_orders_orders_id","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderNumber":{"type":"string","minLength":1,"maxLength":60},"accountId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true},"commercialTermsSnapshotId":{"type":"string","maxLength":64,"nullable":true},"workOrderTypeId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","minLength":1,"maxLength":80},"priority":{"type":"string","enum":["emergency","high","normal","low"]},"description":{"type":"string","maxLength":5000,"nullable":true},"locationAddress":{"type":"string","maxLength":500,"nullable":true},"locationLat":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"locationLng":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"scheduledDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"scheduledTimeStart":{"type":"string","format":"date-time","nullable":true},"scheduledTimeEnd":{"type":"string","format":"date-time","nullable":true},"assignedTechnicianId":{"type":"string","maxLength":64,"nullable":true},"estimatedDurationMinutes":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"actualDurationMinutes":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"arrivalTime":{"type":"string","format":"date-time","nullable":true},"completionTime":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"partsUsed":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":200},"laborCost":{"type":"number","minimum":0,"maximum":9999999999.99},"partsCost":{"type":"number","minimum":0,"maximum":9999999999.99},"totalCost":{"type":"number","minimum":0,"maximum":9999999999.99},"invoiceId":{"type":"string","maxLength":64,"nullable":true},"locationId":{"type":"string","minLength":1,"maxLength":64},"pipelineId":{"type":"string","maxLength":64,"nullable":true},"primaryQuoteId":{"type":"string","maxLength":64,"nullable":true},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"currency":{"type":"string","maxLength":3},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"sourceWarehouseId":{"type":"string","maxLength":64,"nullable":true},"shipToLine1":{"type":"string","maxLength":500,"nullable":true},"shipToLine2":{"type":"string","maxLength":500,"nullable":true},"shipToCity":{"type":"string","maxLength":120,"nullable":true},"shipToState":{"type":"string","maxLength":120,"nullable":true},"shipToPostalCode":{"type":"string","maxLength":30,"nullable":true},"shipToCountry":{"type":"string","maxLength":120,"nullable":true},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":50},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a work_order","description":"Soft-delete a work_order","operationId":"delete_api_v1_work_orders_orders_id","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:delete"]},{"cookieAuth":["work_order:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/schedule":{"post":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"post_api_v1_work_orders_orders_id_schedule","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"assigneeUserId":{"type":"string","minLength":1,"maxLength":64},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"durationMinutes":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":1440}},"required":["calendarId","assigneeUserId","startsAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/{id}/transition":{"post":{"summary":"Update fields on a work_order","description":"Update fields on a work_order","operationId":"post_api_v1_work_orders_orders_id_transition","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:update"]},{"cookieAuth":["work_order:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toStageKey":{"type":"string","minLength":1},"reason":{"type":"string","maxLength":500},"detail":{"type":"string","maxLength":2000},"pipelineId":{"type":"string","minLength":1},"force":{"type":"boolean"}},"required":["toStageKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders/meta":{"get":{"summary":"View a work_order","description":"View a work_order","operationId":"get_api_v1_work_orders_orders_meta","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"read","x-idempotent":false,"parameters":[{"name":"recordType","in":"query","required":false,"schema":{"type":"string","maxLength":64}}],"security":[{"bearerAuth":["work_order:read"]},{"cookieAuth":["work_order:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/orders":{"get":{"summary":"List work_orders with filters and pagination","description":"List work_orders with filters and pagination","operationId":"get_api_v1_work_orders_orders","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"priority","in":"query","required":false,"schema":{"type":"string","enum":["emergency","high","normal","low"]}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"projectId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"recordTypeId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"technicianId","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"scheduledFrom","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"scheduledTo","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["work_order:list"]},{"cookieAuth":["work_order:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new work_order","description":"Create a new work_order","operationId":"post_api_v1_work_orders_orders","tags":["work_order"],"x-surface":"data","x-entity":"work_order","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order:create"]},{"cookieAuth":["work_order:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderNumber":{"type":"string","minLength":1,"maxLength":60},"accountId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","maxLength":64,"nullable":true},"projectId":{"type":"string","maxLength":64,"nullable":true},"commercialTermsSnapshotId":{"type":"string","maxLength":64,"nullable":true},"workOrderTypeId":{"type":"string","maxLength":64,"nullable":true},"status":{"type":"string","minLength":1,"maxLength":80},"priority":{"type":"string","enum":["emergency","high","normal","low"]},"description":{"type":"string","maxLength":5000,"nullable":true},"locationAddress":{"type":"string","maxLength":500,"nullable":true},"locationLat":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"locationLng":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"scheduledDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"scheduledTimeStart":{"type":"string","format":"date-time","nullable":true},"scheduledTimeEnd":{"type":"string","format":"date-time","nullable":true},"assignedTechnicianId":{"type":"string","maxLength":64,"nullable":true},"estimatedDurationMinutes":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"actualDurationMinutes":{"type":"integer","minimum":0,"maximum":100000,"nullable":true},"arrivalTime":{"type":"string","format":"date-time","nullable":true},"completionTime":{"type":"string","format":"date-time","nullable":true},"notes":{"type":"string","maxLength":5000,"nullable":true},"partsUsed":{"type":"array","items":{"type":"object","additionalProperties":{}},"maxItems":200},"laborCost":{"type":"number","minimum":0,"maximum":9999999999.99},"partsCost":{"type":"number","minimum":0,"maximum":9999999999.99},"totalCost":{"type":"number","minimum":0,"maximum":9999999999.99},"invoiceId":{"type":"string","maxLength":64,"nullable":true},"locationId":{"type":"string","minLength":1,"maxLength":64},"pipelineId":{"type":"string","maxLength":64,"nullable":true},"primaryQuoteId":{"type":"string","maxLength":64,"nullable":true},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"currency":{"type":"string","maxLength":3},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"sourceWarehouseId":{"type":"string","maxLength":64,"nullable":true},"shipToLine1":{"type":"string","maxLength":500,"nullable":true},"shipToLine2":{"type":"string","maxLength":500,"nullable":true},"shipToCity":{"type":"string","maxLength":120,"nullable":true},"shipToState":{"type":"string","maxLength":120,"nullable":true},"shipToPostalCode":{"type":"string","maxLength":30,"nullable":true},"shipToCountry":{"type":"string","maxLength":120,"nullable":true},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":60},"maxItems":50},"customFields":{"type":"object","additionalProperties":{}}},"required":["orderNumber","accountId","priority","locationId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/route-optimizations":{"post":{"summary":"Optimize the stop order for a technician's day","description":"Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_optimizations","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":false,"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"technicianId":{"type":"string","minLength":1},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"pinnedWorkOrderIds":{"type":"array","items":{"type":"string","minLength":1},"maxItems":60,"default":[]},"returnToStart":{"type":"boolean","default":true},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"fuelPricePerLitre":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100},"persist":{"type":"boolean","default":true}},"required":["date","technicianId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/route-plans":{"post":{"summary":"Optimize the stop order for a technician's day","description":"Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_plans","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":false,"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"assigneeUserId":{"type":"string","minLength":1,"maxLength":64},"anchorDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"period":{"type":"string","enum":["day","week","month"],"default":"day"},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"returnToStart":{"type":"boolean","default":true},"fuelPricePerLitre":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100},"preferences":{"type":"object","properties":{"avoidTolls":{"type":"boolean"},"avoidHighways":{"type":"boolean"},"respectAppointmentTimes":{"type":"boolean"},"clusterByArea":{"type":"boolean"},"minimiseOvertime":{"type":"boolean"},"balanceWorkload":{"type":"boolean"}},"additionalProperties":false,"default":{}},"instructions":{"type":"string","maxLength":2000},"adjustment":{"type":"string","maxLength":2000},"currentOrder":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":25}},"persist":{"type":"boolean","default":true}},"required":["calendarId","assigneeUserId","anchorDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/route-schedules/{id}":{"delete":{"summary":"Soft-delete a service_route","description":"Soft-delete a service_route","operationId":"delete_api_v1_work_orders_route_schedules_id","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:delete"]},{"cookieAuth":["service_route:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/route-schedules":{"get":{"summary":"List service_routes with filters and pagination","description":"List service_routes with filters and pagination","operationId":"get_api_v1_work_orders_route_schedules","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"list","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["service_route:list"]},{"cookieAuth":["service_route:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Optimize the stop order for a technician's day","description":"Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_schedules","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"assigneeUserId":{"type":"string","minLength":1,"maxLength":64},"enabled":{"type":"boolean","default":true},"sendHourUtc":{"type":"integer","minimum":0,"maximum":23,"default":6},"daysAhead":{"type":"integer","minimum":0,"maximum":7,"default":0},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"returnToStart":{"type":"boolean","default":true},"instructions":{"type":"string","maxLength":2000,"nullable":true},"preferences":{"type":"object","properties":{"avoidTolls":{"type":"boolean"},"avoidHighways":{"type":"boolean"},"respectAppointmentTimes":{"type":"boolean"},"clusterByArea":{"type":"boolean"},"minimiseOvertime":{"type":"boolean"},"balanceWorkload":{"type":"boolean"}},"additionalProperties":false,"default":{}},"recipientUserIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50,"default":[]},"recipientEmails":{"type":"array","items":{"type":"string","format":"email"},"maxItems":50,"default":[]}},"required":["calendarId","assigneeUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/routes/{id}":{"get":{"summary":"View a service_route","description":"View a service_route","operationId":"get_api_v1_work_orders_routes_id","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:read"]},{"cookieAuth":["service_route:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a service_route","description":"Update fields on a service_route","operationId":"patch_api_v1_work_orders_routes_id","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:update"]},{"cookieAuth":["service_route:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"technicianId":{"type":"string"},"status":{"type":"string","enum":["planned","active","completed"]},"totalStops":{"type":"number","minimum":0},"totalDistanceKm":{"type":"number","minimum":0},"totalTravelMinutes":{"type":"number","minimum":0},"estimatedStart":{"type":"string","format":"date-time","nullable":true},"estimatedEnd":{"type":"string","format":"date-time","nullable":true},"optimizationScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a service_route","description":"Soft-delete a service_route","operationId":"delete_api_v1_work_orders_routes_id","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:delete"]},{"cookieAuth":["service_route:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/routes/meta":{"get":{"summary":"View a service_route","description":"View a service_route","operationId":"get_api_v1_work_orders_routes_meta","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["service_route:read"]},{"cookieAuth":["service_route:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/routes":{"get":{"summary":"List service_routes with filters and pagination","description":"List service_routes with filters and pagination","operationId":"get_api_v1_work_orders_routes","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"technicianId","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["planned","active","completed"]}},{"name":"date","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"security":[{"bearerAuth":["service_route:list"]},{"cookieAuth":["service_route:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new service_route","description":"Create a new service_route","operationId":"post_api_v1_work_orders_routes","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:create"]},{"cookieAuth":["service_route:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"technicianId":{"type":"string","minLength":1},"status":{"type":"string","enum":["planned","active","completed"]},"totalStops":{"type":"number","minimum":0},"totalDistanceKm":{"type":"number","minimum":0},"totalTravelMinutes":{"type":"number","minimum":0},"estimatedStart":{"type":"string","format":"date-time","nullable":true},"estimatedEnd":{"type":"string","format":"date-time","nullable":true},"optimizationScore":{"type":"number","minimum":0,"maximum":100,"nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["date","technicianId","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/technician-locations":{"get":{"summary":"List non-expired location points visible to the authenticated actor.","description":"List non-expired location points visible to the authenticated actor.","operationId":"get_api_v1_work_orders_technician_locations","tags":["technician_location"],"x-surface":"data","x-entity":"technician_location","x-action":"list","x-idempotent":false,"parameters":[{"name":"technicianId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["technician_location:list"]},{"cookieAuth":["technician_location:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Record a location point for the authenticated technician.","description":"Record a location point for the authenticated technician.","operationId":"post_api_v1_work_orders_technician_locations","tags":["technician_location"],"x-surface":"data","x-entity":"technician_location","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["technician_location:create"]},{"cookieAuth":["technician_location:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"accuracyM":{"type":"number","minimum":0,"maximum":100000,"nullable":true},"recordedAt":{"type":"string","format":"date-time"},"source":{"type":"string","enum":["shift_ping","navigation","arrival","completion"],"default":"shift_ping"},"workOrderId":{"type":"string","minLength":1,"maxLength":80,"nullable":true}},"required":["lat","lng","recordedAt"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/technicians/{id}":{"get":{"summary":"View a technician","description":"View a technician","operationId":"get_api_v1_work_orders_technicians_id","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["technician:read"]},{"cookieAuth":["technician:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a technician","description":"Update fields on a technician","operationId":"patch_api_v1_work_orders_technicians_id","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["technician:update"]},{"cookieAuth":["technician:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"name":{"type":"string","maxLength":200},"skills":{"type":"array","items":{}},"certifications":{"type":"array","items":{}},"homeLocationLat":{"type":"number","nullable":true},"homeLocationLng":{"type":"number","nullable":true},"vehicleId":{"type":"string","maxLength":80,"nullable":true},"maxDailyJobs":{"type":"number","minimum":0},"hourlyRate":{"type":"number","minimum":0,"maximum":9999.99},"status":{"type":"string","enum":["available","busy","off_duty"]},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a technician","description":"Soft-delete a technician","operationId":"delete_api_v1_work_orders_technicians_id","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["technician:delete"]},{"cookieAuth":["technician:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/technicians/meta":{"get":{"summary":"View a technician","description":"View a technician","operationId":"get_api_v1_work_orders_technicians_meta","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["technician:read"]},{"cookieAuth":["technician:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/technicians":{"get":{"summary":"List technicians with filters and pagination","description":"List technicians with filters and pagination","operationId":"get_api_v1_work_orders_technicians","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["available","busy","off_duty"]}}],"security":[{"bearerAuth":["technician:list"]},{"cookieAuth":["technician:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new technician","description":"Create a new technician","operationId":"post_api_v1_work_orders_technicians","tags":["technician"],"x-surface":"data","x-entity":"technician","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["technician:create"]},{"cookieAuth":["technician:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"name":{"type":"string","maxLength":200,"minLength":1},"skills":{"type":"array","items":{}},"certifications":{"type":"array","items":{}},"homeLocationLat":{"type":"number","nullable":true},"homeLocationLng":{"type":"number","nullable":true},"vehicleId":{"type":"string","maxLength":80,"nullable":true},"maxDailyJobs":{"type":"number","minimum":0},"hourlyRate":{"type":"number","minimum":0,"maximum":9999.99},"status":{"type":"string","enum":["available","busy","off_duty"]},"customFields":{"type":"object","additionalProperties":{}}},"required":["userId","name","status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/work-order-types/{id}":{"get":{"summary":"View a work_order_type","description":"View a work_order_type","operationId":"get_api_v1_work_orders_work_order_types_id","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order_type:read"]},{"cookieAuth":["work_order_type:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"patch":{"summary":"Update fields on a work_order_type","description":"Update fields on a work_order_type","operationId":"patch_api_v1_work_orders_work_order_types_id","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order_type:update"]},{"cookieAuth":["work_order_type:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":2000,"nullable":true},"category":{"type":"string","enum":["maintenance","repair","installation","inspection","emergency"]},"defaultDurationMinutes":{"type":"number","minimum":0,"nullable":true},"defaultPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"requiresParts":{"type":"boolean"},"skillRequirements":{"type":"array","items":{}},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"delete":{"summary":"Soft-delete a work_order_type","description":"Soft-delete a work_order_type","operationId":"delete_api_v1_work_orders_work_order_types_id","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order_type:delete"]},{"cookieAuth":["work_order_type:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/work-order-types/meta":{"get":{"summary":"View a work_order_type","description":"View a work_order_type","operationId":"get_api_v1_work_orders_work_order_types_meta","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["work_order_type:read"]},{"cookieAuth":["work_order_type:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/work-orders/work-order-types":{"get":{"summary":"List work_order_types with filters and pagination","description":"List work_order_types with filters and pagination","operationId":"get_api_v1_work_orders_work_order_types","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["maintenance","repair","installation","inspection","emergency"]}}],"security":[{"bearerAuth":["work_order_type:list"]},{"cookieAuth":["work_order_type:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}},"post":{"summary":"Create a new work_order_type","description":"Create a new work_order_type","operationId":"post_api_v1_work_orders_work_order_types","tags":["work_order_type"],"x-surface":"data","x-entity":"work_order_type","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["work_order_type:create"]},{"cookieAuth":["work_order_type:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"minLength":1},"description":{"type":"string","maxLength":2000,"nullable":true},"category":{"type":"string","enum":["maintenance","repair","installation","inspection","emergency"]},"defaultDurationMinutes":{"type":"number","minimum":0,"nullable":true},"defaultPrice":{"type":"number","minimum":0,"maximum":9999999999.99,"nullable":true},"requiresParts":{"type":"boolean"},"skillRequirements":{"type":"array","items":{}},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","category"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/workforce/members/meta":{"get":{"summary":"Read workforce member metadata","description":"Read workforce member metadata","operationId":"get_api_v1_workforce_members_meta","tags":["workforce_user"],"x-surface":"data","x-entity":"workforce_user","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["workforce_user:read"]},{"cookieAuth":["workforce_user:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/workforce/members":{"get":{"summary":"List workspace members for dropdowns","description":"List workspace members for dropdowns","operationId":"get_api_v1_workforce_members","tags":["workforce_user"],"x-surface":"data","x-entity":"workforce_user","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":500}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["workforce_user:list"]},{"cookieAuth":["workforce_user:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/workforce/org-chart/meta":{"get":{"summary":"Read org chart metadata","description":"Read org chart metadata","operationId":"get_api_v1_workforce_org_chart_meta","tags":["org_chart"],"x-surface":"data","x-entity":"org_chart","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["org_chart:read"]},{"cookieAuth":["org_chart:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/workforce/org-chart":{"get":{"summary":"View the org chart","description":"View the org chart","operationId":"get_api_v1_workforce_org_chart","tags":["org_chart"],"x-surface":"data","x-entity":"org_chart","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["org_chart:list"]},{"cookieAuth":["org_chart:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}}}},"/api/v1/company/employee":{"get":{"summary":"[DEPRECATED alias] List employees with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employees` instead. Reason: singular → plural collection noun. List employees with filters and pagination","operationId":"get_api_v1_company_employees__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"departmentId","in":"query","required":false,"schema":{"type":"string"}},{"name":"regionId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"accessStatus","in":"query","required":false,"schema":{"type":"string","enum":["none","pending","active","suspended"]}},{"name":"assignable","in":"query","required":false,"schema":{"type":"string","enum":["1"]}}],"security":[{"bearerAuth":["employee:list"]},{"cookieAuth":["employee:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employees"}},"post":{"summary":"[DEPRECATED alias] Create a new employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/company/employees` instead. Reason: singular → plural collection noun. Create a new employee","operationId":"post_api_v1_company_employees__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["employee:create"]},{"cookieAuth":["employee:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"title":{"type":"string","maxLength":160,"nullable":true},"managerId":{"type":"string","nullable":true},"departmentId":{"type":"string","nullable":true},"costCenterId":{"type":"string","nullable":true},"regionId":{"type":"string","nullable":true},"locale":{"type":"string","maxLength":20,"nullable":true},"country":{"type":"string","maxLength":2,"nullable":true},"timezone":{"type":"string","maxLength":80,"nullable":true},"email":{"type":"string","format":"email","nullable":true},"personalEmail":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","maxLength":50,"nullable":true},"employmentType":{"type":"string","enum":["full_time","part_time","contractor","temporary","intern","other"]},"status":{"type":"string","enum":["active","on_leave","inactive","terminated"]},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["firstName","lastName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/company/employees"}}},"/api/v1/company/employee/{id}":{"get":{"summary":"[DEPRECATED alias] View a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employees/:id` instead. Reason: singular → plural collection noun. View a employee","operationId":"get_api_v1_company_employees_id__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employees/:id"}},"patch":{"summary":"[DEPRECATED alias] Update fields on a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PATCH /api/v1/company/employees/:id` instead. Reason: singular → plural collection noun. Update fields on a employee","operationId":"patch_api_v1_company_employees_id__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"title":{"type":"string","maxLength":160,"nullable":true},"managerId":{"type":"string","nullable":true},"departmentId":{"type":"string","nullable":true},"costCenterId":{"type":"string","nullable":true},"regionId":{"type":"string","nullable":true},"locale":{"type":"string","maxLength":20,"nullable":true},"country":{"type":"string","maxLength":2,"nullable":true},"timezone":{"type":"string","maxLength":80,"nullable":true},"email":{"type":"string","format":"email","nullable":true},"personalEmail":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","maxLength":50,"nullable":true},"employmentType":{"type":"string","enum":["full_time","part_time","contractor","temporary","intern","other"]},"status":{"type":"string","enum":["active","on_leave","inactive","terminated"]},"startDate":{"type":"string","format":"date","nullable":true},"endDate":{"type":"string","format":"date","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PATCH","path":"/api/v1/company/employees/:id"}}},"/api/v1/company/employee/{id}/photo":{"put":{"summary":"[DEPRECATED alias] Update fields on a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/company/employees/:id/photo` instead. Reason: singular → plural collection noun. Update fields on a employee","operationId":"put_api_v1_company_employees_id_photo__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/company/employees/:id/photo"}}},"/api/v1/company/employee/{id}/links":{"get":{"summary":"[DEPRECATED alias] View a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employees/:id/links` instead. Reason: singular → plural collection noun. View a employee","operationId":"get_api_v1_company_employees_id_links__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employees/:id/links"}},"post":{"summary":"[DEPRECATED alias] Update fields on a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/company/employees/:id/links` instead. Reason: singular → plural collection noun. Update fields on a employee","operationId":"post_api_v1_company_employees_id_links__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toType":{"type":"string"},"toId":{"type":"string"},"linkType":{"type":"string","minLength":1,"maxLength":64},"note":{"type":"string","maxLength":2000}},"required":["toType","toId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/company/employees/:id/links"}}},"/api/v1/company/employee/{id}/links/{linkId}":{"delete":{"summary":"[DEPRECATED alias] Update fields on a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/company/employees/:id/links/:linkId` instead. Reason: singular → plural collection noun. Update fields on a employee","operationId":"delete_api_v1_company_employees_id_links_linkId__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee:update"]},{"cookieAuth":["employee:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/company/employees/:id/links/:linkId"}}},"/api/v1/company/employee/meta":{"get":{"summary":"[DEPRECATED alias] View a employee","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employees/meta` instead. Reason: singular → plural collection noun. View a employee","operationId":"get_api_v1_company_employees_meta__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["employee:read"]},{"cookieAuth":["employee:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employees/meta"}}},"/api/v1/company/employee/mention-options":{"get":{"summary":"[DEPRECATED alias] List active tenant teammates for an explicit @mention or draft-recipient picker","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employees/mention-candidates` instead. Reason: singular → plural; collection-level computation named as the noun it returns. List active tenant teammates for an explicit @mention or draft-recipient picker","operationId":"get_api_v1_company_employees_mention_candidates__deprecated_alias","tags":["employee"],"x-surface":"data","x-entity":"employee","x-action":"mention","x-idempotent":false,"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":2000}},{"name":"count","in":"query","required":false,"schema":{"type":"string","enum":["false"]}}],"security":[{"bearerAuth":["employee:mention"]},{"cookieAuth":["employee:mention"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employees/mention-candidates"}}},"/api/v1/company/employee-document":{"get":{"summary":"[DEPRECATED alias] List employee-documents with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employee-documents` instead. Reason: singular → plural collection noun. List employee-documents with filters and pagination","operationId":"get_api_v1_company_employee_documents__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"list","x-idempotent":false,"parameters":[{"name":"employeeId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"documentType","in":"query","required":false,"schema":{"type":"string","enum":["identification","passport","license","certification","other"]}}],"security":[{"bearerAuth":["employee-document:list"]},{"cookieAuth":["employee-document:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employee-documents"}},"post":{"summary":"[DEPRECATED alias] Create a new employee-document","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/company/employee-documents` instead. Reason: singular → plural collection noun. Create a new employee-document","operationId":"post_api_v1_company_employee_documents__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:create"]},{"cookieAuth":["employee-document:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/company/employee-documents"}}},"/api/v1/company/employee-document/{id}":{"get":{"summary":"[DEPRECATED alias] View a employee-document","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employee-documents/:id` instead. Reason: singular → plural collection noun. View a employee-document","operationId":"get_api_v1_company_employee_documents_id__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:read"]},{"cookieAuth":["employee-document:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employee-documents/:id"}},"patch":{"summary":"[DEPRECATED alias] Update fields on a employee-document","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PATCH /api/v1/company/employee-documents/:id` instead. Reason: singular → plural collection noun. Update fields on a employee-document","operationId":"patch_api_v1_company_employee_documents_id__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:update"]},{"cookieAuth":["employee-document:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documentType":{"type":"string","enum":["identification","passport","license","certification","other"]},"documentName":{"type":"string","minLength":1,"maxLength":200},"documentNumber":{"type":"string","maxLength":120},"certificateNumber":{"type":"string","maxLength":120},"issuerName":{"type":"string","maxLength":200},"issuerWebsite":{"type":"string","format":"uri","maxLength":500},"otherDetails":{"type":"string","maxLength":4000},"country":{"type":"string","maxLength":60},"language":{"type":"string","maxLength":20},"issueDate":{"type":"string"},"expiryDate":{"type":"string"},"fileKey":{"type":"string"},"notes":{"type":"string","maxLength":4000},"verifiedByAdmin":{"type":"boolean"},"customFields":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PATCH","path":"/api/v1/company/employee-documents/:id"}},"delete":{"summary":"[DEPRECATED alias] Soft-delete a employee-document","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/company/employee-documents/:id` instead. Reason: singular → plural collection noun. Soft-delete a employee-document","operationId":"delete_api_v1_company_employee_documents_id__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["employee-document:delete"]},{"cookieAuth":["employee-document:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/company/employee-documents/:id"}}},"/api/v1/company/employee-document/meta":{"get":{"summary":"[DEPRECATED alias] View a employee-document","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/company/employee-documents/meta` instead. Reason: singular → plural collection noun. View a employee-document","operationId":"get_api_v1_company_employee_documents_meta__deprecated_alias","tags":["employee-document"],"x-surface":"data","x-entity":"employee-document","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["employee-document:read"]},{"cookieAuth":["employee-document:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/company/employee-documents/meta"}}},"/api/v1/admin/users/invite":{"post":{"summary":"[DEPRECATED alias] Invite a user","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/admin/users` instead. Reason: verb route folded into the collection: creating a user IS inviting them (same service, same body). Invite a user","operationId":"post_api_v1_admin_users__deprecated_alias","tags":["user"],"x-surface":"admin","x-entity":"user","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["user:create"]},{"cookieAuth":["user:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":1},"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"role":{"type":"string","enum":["owner","admin","member"]},"groupId":{"type":"string","minLength":1,"maxLength":64},"employeeId":{"type":"string","minLength":1,"maxLength":128}},"required":["email","firstName","lastName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/admin/users"}}},"/api/v1/company/employee/invite":{"post":{"summary":"[DEPRECATED alias] Invite a user","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/admin/users` instead. Reason: verb route folded into POST /admin/users — both former routes called the same inviteUser service; body unchanged. Invite a user","operationId":"post_api_v1_admin_users__deprecated_alias","tags":["user"],"x-surface":"admin","x-entity":"user","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["user:create"]},{"cookieAuth":["user:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":1},"firstName":{"type":"string","minLength":1,"maxLength":120},"lastName":{"type":"string","minLength":1,"maxLength":120},"role":{"type":"string","enum":["owner","admin","member"]},"groupId":{"type":"string","minLength":1,"maxLength":64},"employeeId":{"type":"string","minLength":1,"maxLength":128}},"required":["email","firstName","lastName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/admin/users"}}},"/api/v1/admin/branding/asset/{kind}":{"get":{"summary":"[DEPRECATED alias] GET /api/v1/admin/branding/assets/{kind}","operationId":"get_api_v1_admin_branding_assets_kind__deprecated_alias","tags":["branding"],"x-surface":"admin","x-entity":"branding","x-action":"read","x-idempotent":false,"parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","enum":["logo_light","logo_dark","favicon","ppt"]}}],"security":[{"bearerAuth":["branding:read"]},{"cookieAuth":["branding:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/admin/branding/assets/:kind` instead. Reason: singular → plural collection noun. ","x-successor":{"method":"GET","path":"/api/v1/admin/branding/assets/:kind"}}},"/api/v1/admin/commissions/payout":{"post":{"summary":"[DEPRECATED alias] Approve commission payout","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/admin/commissions/payouts` instead. Reason: singular → plural collection noun. Approve commission payout","operationId":"post_api_v1_admin_commissions_payouts__deprecated_alias","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"approve","x-idempotent":false,"security":[{"bearerAuth":["commission:approve"]},{"cookieAuth":["commission:approve"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["approve","confirm"]},"entryIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1},"paymentMethod":{"type":"string"},"paymentReference":{"type":"string"},"bankTransferId":{"type":"string"},"notes":{"type":"string"}},"required":["action","entryIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/admin/commissions/payouts"}}},"/api/v1/admin/commissions/scan":{"post":{"summary":"[DEPRECATED alias] Reconcile paid invoices into commission ledger entries + clawbacks","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/admin/commissions/scans` instead. Reason: verb → plural result noun (a scan run). Reconcile paid invoices into commission ledger entries + clawbacks","operationId":"post_api_v1_admin_commissions_scans__deprecated_alias","tags":["commission"],"x-surface":"admin","x-entity":"commission","x-action":"scan","x-idempotent":false,"security":[{"bearerAuth":["commission:scan"]},{"cookieAuth":["commission:scan"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/admin/commissions/scans"}}},"/api/v1/projects/phases/reorder":{"post":{"summary":"[DEPRECATED alias] Update fields on a project phase","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/projects/phases/order` instead. Reason: collection ordering is a PUT singleton sub-resource; body { projectId, ids } unchanged. Update fields on a project phase","operationId":"put_api_v1_projects_phases_order__deprecated_alias","tags":["project_phase_instance"],"x-surface":"data","x-entity":"project_phase_instance","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase_instance:update"]},{"cookieAuth":["project_phase_instance:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":64},"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":200}},"required":["projectId","ids"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/projects/phases/order"}}},"/api/v1/projects/project-phases":{"get":{"summary":"[DEPRECATED alias] List project phases","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/admin/project-phases` instead. Reason: surface:admin catalog belongs under /admin/*. List project phases","operationId":"get_api_v1_admin_project_phases__deprecated_alias","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["project_phase:list"]},{"cookieAuth":["project_phase:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/admin/project-phases"}},"post":{"summary":"[DEPRECATED alias] Create a project phase","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/admin/project-phases` instead. Reason: surface:admin catalog belongs under /admin/*. Create a project phase","operationId":"post_api_v1_admin_project_phases__deprecated_alias","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase:create"]},{"cookieAuth":["project_phase:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":4,"maxLength":20},"orderIndex":{"type":"integer","minimum":0},"isDefault":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/admin/project-phases"}}},"/api/v1/projects/project-phases/{id}":{"delete":{"summary":"[DEPRECATED alias] Delete a project phase","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/admin/project-phases/:id` instead. Reason: surface:admin catalog belongs under /admin/*. Delete a project phase","operationId":"delete_api_v1_admin_project_phases_id__deprecated_alias","tags":["project_phase"],"x-surface":"admin","x-entity":"project_phase","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["project_phase:delete"]},{"cookieAuth":["project_phase:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/admin/project-phases/:id"}}},"/api/v1/compliance/frameworks/enable":{"post":{"summary":"[DEPRECATED alias] POST /api/v1/compliance/frameworks","operationId":"post_api_v1_compliance_frameworks__deprecated_alias","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:create"]},{"cookieAuth":["framework:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","enum":["DORA","GDPR","ISO27001","NIS2","EUAIA","SOC2","HIPAA"]},"version":{"type":"string","minLength":1,"maxLength":40},"name":{"type":"string","minLength":1,"maxLength":200}},"required":["code"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"code":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_.-]{1,23}$"},"version":{"type":"string","minLength":1,"maxLength":40},"status":{"type":"string","enum":["draft","active","archived"]},"maturityLevel":{"type":"string","enum":["initial","managed","defined","measured","optimizing"]},"description":{"type":"string","maxLength":10000,"nullable":true},"authority":{"type":"string","maxLength":200,"nullable":true},"effectiveDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"nextReviewDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"lifecyclePhase":{"type":"string","enum":["not_started","in_progress","in_review","audit","certified","on_hold","cancelled"]},"certifiedUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"ownerUserId":{"type":"string","maxLength":64,"nullable":true},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"customFields":{"type":"object","additionalProperties":{}}},"required":["name","code","version"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/compliance/frameworks` instead. Reason: verb-in-path folded into the collection create (union body: library enable | custom create). ","x-successor":{"method":"POST","path":"/api/v1/compliance/frameworks"}}},"/api/v1/compliance/readiness/recompute":{"post":{"summary":"[DEPRECATED alias] POST /api/v1/compliance/readiness","operationId":"post_api_v1_compliance_readiness__deprecated_alias","tags":["framework"],"x-surface":"admin","x-entity":"framework","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["framework:update"]},{"cookieAuth":["framework:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/compliance/readiness` instead. Reason: POST on the computed singleton = regenerate; never a /recompute verb. ","x-successor":{"method":"POST","path":"/api/v1/compliance/readiness"}}},"/api/v1/contracts/contracts/parse-document":{"post":{"summary":"[DEPRECATED alias] Create a new contract","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/contracts/contracts/extractions` instead. Reason: verb-in-path collection operation → result noun. Create a new contract","operationId":"post_api_v1_contracts_contracts_extractions__deprecated_alias","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:create"]},{"cookieAuth":["contract:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base64":{"type":"string","minLength":1,"maxLength":20000000},"mimeType":{"type":"string","enum":["application/pdf","image/png","image/jpeg","image/webp"]}},"required":["base64","mimeType"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/contracts/contracts/extractions"}}},"/api/v1/contracts/contracts/available-equipment":{"get":{"summary":"[DEPRECATED alias] List contracts with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/contracts/available-equipment` instead. Reason: module-level computed collection, not a sub-resource of the contracts entity. List contracts with filters and pagination","operationId":"get_api_v1_contracts_available_equipment__deprecated_alias","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"contractId","in":"query","required":false,"schema":{"type":"string","maxLength":80}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/contracts/available-equipment"}}},"/api/v1/contracts/commercial-terms/resolve":{"get":{"summary":"[DEPRECATED alias] List contracts with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/contracts/commercial-terms/effective` instead. Reason: never GET a verb — the effective/binding terms are a noun. List contracts with filters and pagination","operationId":"get_api_v1_contracts_commercial_terms_effective__deprecated_alias","tags":["contract"],"x-surface":"data","x-entity":"contract","x-action":"list","x-idempotent":true,"parameters":[{"name":"scopeType","in":"query","required":true,"schema":{"type":"string","enum":["tenant","account","deal","quote","contract","project","work_order","ticket","invoice"]}},{"name":"scopeId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"accountId","in":"query","required":false,"schema":{"type":"string","minLength":1}},{"name":"asOf","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract:list"]},{"cookieAuth":["contract:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/contracts/commercial-terms/effective"}}},"/api/v1/csat/surveys/{id}/respond":{"get":{"summary":"[DEPRECATED alias] Complete an internal form","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/csat/surveys/:id/response-form` instead. Reason: never GET a verb — the renderable form is a sub-resource. Complete an internal form","operationId":"get_api_v1_csat_surveys_id_response_form__deprecated_alias","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"invite","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/csat/surveys/:id/response-form"}},"post":{"summary":"[DEPRECATED alias] Complete an internal form","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/csat/surveys/:id/responses` instead. Reason: submitting a response = POST to the responses sub-collection. Complete an internal form","operationId":"post_api_v1_csat_surveys_id_responses__deprecated_alias","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"invite","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"answers":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","maxLength":4000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":500},"maxItems":50}]}},"comment":{"type":"string","maxLength":4000},"respondentName":{"type":"string","maxLength":200}},"required":["answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/csat/surveys/:id/responses"}}},"/api/v1/csat/surveys/{id}/respond/logo":{"get":{"summary":"[DEPRECATED alias] Complete an internal form","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/csat/surveys/:id/response-form/logo` instead. Reason: moved with its parent (respond → response-form). Complete an internal form","operationId":"get_api_v1_csat_surveys_id_response_form_logo__deprecated_alias","tags":["survey"],"x-surface":"data","x-entity":"survey","x-action":"respond","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["survey:respond"]},{"cookieAuth":["survey:respond"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/csat/surveys/:id/response-form/logo"}}},"/api/v1/finance/charges/credit":{"post":{"summary":"[DEPRECATED alias] Issue a credit (charge_type=credit) against an account/contract","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/finance/credits` instead. Reason: a credit is its own noun (ACL stays charge:credit). Issue a credit (charge_type=credit) against an account/contract","operationId":"post_api_v1_finance_credits__deprecated_alias","tags":["charge"],"x-surface":"data","x-entity":"charge","x-action":"credit","x-idempotent":false,"security":[{"bearerAuth":["charge:credit"]},{"cookieAuth":["charge:credit"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customerId":{"type":"string","minLength":1},"contractId":{"type":"string","nullable":true},"invoiceId":{"type":"string","nullable":true},"paymentId":{"type":"string","nullable":true},"chargeType":{"type":"string","enum":["debit","credit"],"default":"debit"},"description":{"type":"string","minLength":1,"maxLength":500},"referenceCode":{"type":"string","maxLength":80,"nullable":true},"amount":{"type":"number","minimum":0,"maximum":9999999999.99},"currency":{"type":"string","minLength":3,"maxLength":3},"taxAmount":{"type":"number","minimum":0,"nullable":true},"taxRate":{"type":"number","minimum":0,"maximum":1,"nullable":true},"status":{"type":"string","enum":["draft","applied","paid","rolled_in","cancelled"]},"statusReason":{"type":"string","maxLength":500,"nullable":true},"issueDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"tags":{"type":"array","items":{"type":"string","maxLength":60},"maxItems":50}},"required":["customerId","description","amount","currency"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/finance/credits"}}},"/api/v1/kb/pages/ai-draft":{"post":{"summary":"[DEPRECATED alias] Edit page structure and article content without approving AI drafts","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/kb/pages/ai-drafts` instead. Reason: collection-level AI operation → plural result noun. Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_ai_drafts__deprecated_alias","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hubId":{"type":"string","minLength":1},"parentPageId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","maxLength":100000,"default":""}},"required":["hubId","title"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/kb/pages/ai-drafts"}}},"/api/v1/marketing/templates/preview":{"post":{"summary":"[DEPRECATED alias] POST /api/v1/marketing/templates/previews","operationId":"post_api_v1_marketing_templates_previews__deprecated_alias","tags":["email_template"],"x-surface":"data","x-entity":"email_template","x-action":"read","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["email_template:read"]},{"cookieAuth":["email_template:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","maxLength":300,"nullable":true},"preheader":{"type":"string","maxLength":200,"nullable":true},"html":{"type":"string","maxLength":500000,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/marketing/templates/previews` instead. Reason: verb → plural result noun. ","x-successor":{"method":"POST","path":"/api/v1/marketing/templates/previews"}}},"/api/v1/crm/business-card/extract":{"post":{"summary":"[DEPRECATED alias] Extract fields from a business-card image (metered vision call)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/business-cards/extractions` instead. Reason: singular + verb-in-path collection operation → plural result noun. Extract fields from a business-card image (metered vision call)","operationId":"post_api_v1_crm_business_cards_extractions__deprecated_alias","tags":["business_card"],"x-surface":"data","x-entity":"business_card","x-action":"extract","x-idempotent":false,"security":[{"bearerAuth":["business_card:extract"]},{"cookieAuth":["business_card:extract"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"imageBase64":{"type":"string","minLength":4},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]},"filename":{"type":"string","maxLength":255},"entryPoint":{"type":"string","enum":["leads","customers","contacts"]}},"required":["imageBase64","mimeType","entryPoint"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/business-cards/extractions"}}},"/api/v1/crm/business-card/create":{"post":{"summary":"[DEPRECATED alias] Create lead / account + contact records from a staged business-card extraction","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/business-cards` instead. Reason: POST a card = create records from it. Create lead / account + contact records from a staged business-card extraction","operationId":"post_api_v1_crm_business_cards__deprecated_alias","tags":["business_card"],"x-surface":"data","x-entity":"business_card","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["business_card:create"]},{"cookieAuth":["business_card:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"extractionId":{"type":"string","format":"uuid"},"destination":{"type":"string","enum":["lead","business_contact"]},"fields":{"type":"object","properties":{"firstName":{"type":"string","maxLength":500,"nullable":true},"lastName":{"type":"string","maxLength":500,"nullable":true},"jobTitle":{"type":"string","maxLength":500,"nullable":true},"company":{"type":"string","maxLength":500,"nullable":true},"email":{"type":"string","format":"email","maxLength":320,"nullable":true},"phone":{"type":"string","maxLength":500,"nullable":true},"mobile":{"type":"string","maxLength":500,"nullable":true},"website":{"type":"string","format":"uri","maxLength":500,"nullable":true},"addressLine1":{"type":"string","maxLength":500,"nullable":true},"addressLine2":{"type":"string","maxLength":500,"nullable":true},"city":{"type":"string","maxLength":500,"nullable":true},"state":{"type":"string","maxLength":500,"nullable":true},"postalCode":{"type":"string","maxLength":500,"nullable":true},"country":{"type":"string","maxLength":500,"nullable":true}},"required":["firstName","lastName","jobTitle","company","email","phone","mobile","addressLine1","addressLine2","city","state","postalCode","country"],"additionalProperties":false},"duplicateChoice":{"type":"object","properties":{"business":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false},"contact":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false},"lead":{"type":"object","properties":{"action":{"type":"string","enum":["create","use_existing"]},"id":{"type":"string","format":"uuid"}},"required":["action"],"additionalProperties":false}},"additionalProperties":false},"logo":{"type":"object","properties":{"imageBase64":{"type":"string","minLength":4},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]}},"required":["imageBase64","mimeType"],"additionalProperties":false,"nullable":true},"confirm":{"type":"boolean","enum":[true]}},"required":["extractionId","destination","fields","confirm"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/business-cards"}}},"/api/v1/crm/customers/{id}/logo":{"get":{"summary":"[DEPRECATED alias] View a account","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/accounts/:id/logo` instead. Reason: customers/* was a half-namespace over the account entity. View a account","operationId":"get_api_v1_crm_accounts_id_logo__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/accounts/:id/logo"}},"post":{"summary":"[DEPRECATED alias] Update fields on a account","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/accounts/:id/logo` instead. Update fields on a account","operationId":"post_api_v1_crm_accounts_id_logo__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/accounts/:id/logo"}},"delete":{"summary":"[DEPRECATED alias] Update fields on a account","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/crm/accounts/:id/logo` instead. Update fields on a account","operationId":"delete_api_v1_crm_accounts_id_logo__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["account:update"]},{"cookieAuth":["account:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/crm/accounts/:id/logo"}}},"/api/v1/crm/customers/{id}/risk":{"post":{"summary":"[DEPRECATED alias] Set/clear the at-risk flag on an account","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/accounts/:id/risk` instead. Set/clear the at-risk flag on an account","operationId":"post_api_v1_crm_accounts_id_risk__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"set_risk","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["account:set_risk"]},{"cookieAuth":["account:set_risk"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"atRisk":{"type":"boolean"},"at_risk":{"type":"boolean"},"reason":{"type":"string","maxLength":500},"note":{"type":"string","maxLength":2000}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/accounts/:id/risk"}}},"/api/v1/crm/customers/export":{"get":{"summary":"[DEPRECATED alias] Export accounts","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/accounts/export` instead. Export accounts","operationId":"get_api_v1_crm_accounts_export__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"export","x-idempotent":false,"security":[{"bearerAuth":["account:export"]},{"cookieAuth":["account:export"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/accounts/export"}}},"/api/v1/crm/customers/import/analyze":{"post":{"summary":"[DEPRECATED alias] Import accounts","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/accounts/imports` instead. Reason: analyze = create the import job (multipart). Import accounts","operationId":"post_api_v1_crm_accounts_imports__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["account:import"]},{"cookieAuth":["account:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/accounts/imports"}}},"/api/v1/crm/leads/check-duplicates":{"post":{"summary":"[DEPRECATED alias] View a lead","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/leads/duplicate-checks` instead. Reason: collection verb → result noun. View a lead","operationId":"post_api_v1_crm_leads_duplicate_checks__deprecated_alias","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["lead:read"]},{"cookieAuth":["lead:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"company":{"type":"string","maxLength":200,"nullable":true},"email":{"type":"string","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/leads/duplicate-checks"}}},"/api/v1/crm/contacts/check-duplicates":{"post":{"summary":"[DEPRECATED alias] View a contact","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/contacts/duplicate-checks` instead. View a contact","operationId":"post_api_v1_crm_contacts_duplicate_checks__deprecated_alias","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["contact:read"]},{"cookieAuth":["contact:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100,"nullable":true},"lastName":{"type":"string","maxLength":100,"nullable":true},"email":{"type":"string","maxLength":254,"nullable":true},"phone":{"type":"string","maxLength":40,"nullable":true},"accountId":{"type":"string","maxLength":64,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/contacts/duplicate-checks"}}},"/api/v1/crm/accounts/check-duplicates":{"post":{"summary":"[DEPRECATED alias] View a account","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/accounts/duplicate-checks` instead. View a account","operationId":"post_api_v1_crm_accounts_duplicate_checks__deprecated_alias","tags":["account"],"x-surface":"data","x-entity":"account","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["account:read"]},{"cookieAuth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200,"nullable":true},"domain":{"type":"string","maxLength":200,"nullable":true},"excludeId":{"type":"string","maxLength":64,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/accounts/duplicate-checks"}}},"/api/v1/crm/leads/import/analyze":{"post":{"summary":"[DEPRECATED alias] Import leads","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/leads/imports` instead. Reason: import job resource; review/commit moved jobId to the path (no alias). Import leads","operationId":"post_api_v1_crm_leads_imports__deprecated_alias","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/leads/imports"}}},"/api/v1/crm/contacts/import/analyze":{"post":{"summary":"[DEPRECATED alias] Import contacts","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/contacts/imports` instead. Import contacts","operationId":"post_api_v1_crm_contacts_imports__deprecated_alias","tags":["contact"],"x-surface":"data","x-entity":"contact","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["contact:import"]},{"cookieAuth":["contact:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/contacts/imports"}}},"/api/v1/crm/deals/import/analyze":{"post":{"summary":"[DEPRECATED alias] Import deals","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/deals/imports` instead. Import deals","operationId":"post_api_v1_crm_deals_imports__deprecated_alias","tags":["deal"],"x-surface":"data","x-entity":"deal","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["deal:import"]},{"cookieAuth":["deal:import"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/deals/imports"}}},"/api/v1/crm/leads/find":{"get":{"summary":"[DEPRECATED alias] List lead-find runs","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/lead-find-runs` instead. Reason: entity lead_find_run — verb noun → plural entity noun. List lead-find runs","operationId":"get_api_v1_crm_lead_find_runs__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"list","x-idempotent":false,"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","fetching","review","completed","failed"]}},{"name":"createdBy","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":["lead_find_run:list"]},{"cookieAuth":["lead_find_run:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/lead-find-runs"}},"post":{"summary":"[DEPRECATED alias] Start a new lead-find run","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/lead-find-runs` instead. Start a new lead-find run","operationId":"post_api_v1_crm_lead_find_runs__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["lead_find_run:create"]},{"cookieAuth":["lead_find_run:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"criteria":{"type":"object","properties":{"query":{"type":"string","minLength":15,"maxLength":2000},"industry":{"type":"string","maxLength":120},"region":{"type":"string","maxLength":120},"minEmployees":{"type":"integer","minimum":0,"maximum":1000000},"maxEmployees":{"type":"integer","minimum":0,"maximum":1000000},"locale":{"type":"string","maxLength":10}},"required":["query"],"additionalProperties":false},"requestedCount":{"type":"integer","minimum":1,"maximum":20},"autoInsert":{"type":"boolean","default":false}},"required":["criteria","requestedCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/lead-find-runs"}}},"/api/v1/crm/leads/find/meta":{"get":{"summary":"[DEPRECATED alias] View a lead-find run with its candidates","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/lead-find-runs/meta` instead. View a lead-find run with its candidates","operationId":"get_api_v1_crm_lead_find_runs_meta__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/lead-find-runs/meta"}}},"/api/v1/crm/leads/find/{runId}":{"get":{"summary":"[DEPRECATED alias] View a lead-find run with its candidates","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/lead-find-runs/:runId` instead. View a lead-find run with its candidates","operationId":"get_api_v1_crm_lead_find_runs_runId__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/lead-find-runs/:runId"}},"delete":{"summary":"[DEPRECATED alias] Delete a lead-find run (does not delete accepted leads)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/crm/lead-find-runs/:runId` instead. Delete a lead-find run (does not delete accepted leads)","operationId":"delete_api_v1_crm_lead_find_runs_runId__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"delete","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:delete"]},{"cookieAuth":["lead_find_run:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/crm/lead-find-runs/:runId"}}},"/api/v1/crm/leads/find/{runId}/complete":{"post":{"summary":"[DEPRECATED alias] Mark a reviewed run as completed","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/lead-find-runs/:runId/complete` instead. Mark a reviewed run as completed","operationId":"post_api_v1_crm_lead_find_runs_runId_complete__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"complete","x-idempotent":true,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["lead_find_run:complete"]},{"cookieAuth":["lead_find_run:complete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/lead-find-runs/:runId/complete"}}},"/api/v1/crm/leads/find/{runId}/retry":{"post":{"summary":"[DEPRECATED alias] Re-queue a failed lead-find run","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/lead-find-runs/:runId/retry` instead. Re-queue a failed lead-find run","operationId":"post_api_v1_crm_lead_find_runs_runId_retry__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"retry","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:retry"]},{"cookieAuth":["lead_find_run:retry"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/lead-find-runs/:runId/retry"}}},"/api/v1/crm/leads/find/{runId}/contacts/{contactId}/accept":{"post":{"summary":"[DEPRECATED alias] Create a new lead","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/lead-find-runs/:runId/contacts/:contactId/accept` instead. Create a new lead","operationId":"post_api_v1_crm_lead_find_runs_runId_contacts_contactId_accept__deprecated_alias","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"create","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead:create"]},{"cookieAuth":["lead:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decidedLogoUrl":{"type":"string","format":"uri","nullable":true},"decidedPictureUrl":{"type":"string","format":"uri","nullable":true},"overrides":{"type":"object","properties":{"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":200},"email":{"type":"string","format":"email"},"phone":{"type":"string","maxLength":40},"linkedinUrl":{"type":"string","format":"uri","nullable":true}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/lead-find-runs/:runId/contacts/:contactId/accept"}}},"/api/v1/crm/leads/find/{runId}/contacts/{contactId}/discard":{"post":{"summary":"[DEPRECATED alias] View a lead-find run with its candidates","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/lead-find-runs/:runId/contacts/:contactId/discard` instead. View a lead-find run with its candidates","operationId":"post_api_v1_crm_lead_find_runs_runId_contacts_contactId_discard__deprecated_alias","tags":["lead_find_run"],"x-surface":"data","x-entity":"lead_find_run","x-action":"read","x-idempotent":false,"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":64}}],"security":[{"bearerAuth":["lead_find_run:read"]},{"cookieAuth":["lead_find_run:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/lead-find-runs/:runId/contacts/:contactId/discard"}}},"/api/v1/crm/migration/hubspot/preview":{"post":{"summary":"[DEPRECATED alias] Import leads","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/migrations/hubspot/previews` instead. Reason: plural collection + result noun. Import leads","operationId":"post_api_v1_crm_migrations_hubspot_previews__deprecated_alias","tags":["lead"],"x-surface":"data","x-entity":"lead","x-action":"import","x-idempotent":false,"security":[{"bearerAuth":["lead:import"]},{"cookieAuth":["lead:import"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"objects":{"type":"array","items":{"type":"string","enum":["contacts","companies","deals"]},"minItems":1,"maxItems":3},"maxRecordsPerObject":{"type":"integer","minimum":1,"maximum":500,"default":100}},"required":["objects"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/migrations/hubspot/previews"}}},"/api/v1/crm/unified-tasks/boards":{"get":{"summary":"[DEPRECATED alias] List tasks with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/task-boards` instead. Reason: task boards are their own collection. List tasks with filters and pagination","operationId":"get_api_v1_crm_task_boards__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"secondaryCursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"selection","in":"query","required":false,"schema":{"type":"string","enum":["all","created","assigned","created_or_assigned"],"default":"created_or_assigned"}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/task-boards"}},"post":{"summary":"[DEPRECATED alias] Create a new task","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/crm/task-boards` instead. Create a new task","operationId":"post_api_v1_crm_task_boards__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:create"]},{"cookieAuth":["task:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"sharing":{"type":"object","properties":{"mode":{"type":"string","enum":["private","everyone","custom"],"default":"everyone"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]}},"additionalProperties":false,"default":{"mode":"everyone","users":[],"groups":[]}},"taskVisibility":{"type":"string","enum":["all","assigned","created_or_assigned"],"default":"created_or_assigned"},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":50,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["id","label"],"additionalProperties":false},"minItems":1,"maxItems":40},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100},"status":{"type":"string","enum":["open","in_progress","blocked","done","cancelled"]}},"required":["id","label","status"],"additionalProperties":false},"minItems":1,"maxItems":30}},"required":["name","groups","columns"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/crm/task-boards"}}},"/api/v1/crm/unified-tasks/boards/{boardId}":{"get":{"summary":"[DEPRECATED alias] View a task","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/task-boards/:boardId` instead. View a task","operationId":"get_api_v1_crm_task_boards_boardId__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"read","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}],"security":[{"bearerAuth":["task:read"]},{"cookieAuth":["task:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/task-boards/:boardId"}},"patch":{"summary":"[DEPRECATED alias] Update fields on a task","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PATCH /api/v1/crm/task-boards/:boardId` instead. Update fields on a task","operationId":"patch_api_v1_crm_task_boards_boardId__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"sharing":{"type":"object","properties":{"mode":{"type":"string","enum":["private","everyone","custom"],"default":"everyone"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["view","comment","edit","manage"]}},"required":["id","role"],"additionalProperties":false},"maxItems":100,"default":[]}},"additionalProperties":false,"default":{"mode":"everyone","users":[],"groups":[]}},"taskVisibility":{"type":"string","enum":["all","assigned","created_or_assigned"],"default":"created_or_assigned"},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":50,"default":[]},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["id","label"],"additionalProperties":false},"minItems":1,"maxItems":40},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"label":{"type":"string","minLength":1,"maxLength":100},"status":{"type":"string","enum":["open","in_progress","blocked","done","cancelled"]}},"required":["id","label","status"],"additionalProperties":false},"minItems":1,"maxItems":30}},"required":["name","groups","columns"],"additionalProperties":false},"version":{"type":"integer","minimum":0}},"required":["config","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PATCH","path":"/api/v1/crm/task-boards/:boardId"}},"delete":{"summary":"[DEPRECATED alias] Soft-delete a task","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/crm/task-boards/:boardId` instead. Soft-delete a task","operationId":"delete_api_v1_crm_task_boards_boardId__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"delete","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"version","in":"query","required":true,"schema":{"type":"integer","minimum":0}}],"security":[{"bearerAuth":["task:delete"]},{"cookieAuth":["task:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/crm/task-boards/:boardId"}}},"/api/v1/crm/unified-tasks/boards/{boardId}/items":{"get":{"summary":"[DEPRECATED alias] List tasks with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/task-boards/:boardId/items` instead. List tasks with filters and pagination","operationId":"get_api_v1_crm_task_boards_boardId_items__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"list","x-idempotent":false,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"secondaryCursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"selection","in":"query","required":false,"schema":{"type":"string","enum":["all","created","assigned","created_or_assigned"],"default":"created_or_assigned"}}],"security":[{"bearerAuth":["task:list"]},{"cookieAuth":["task:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/task-boards/:boardId/items"}},"put":{"summary":"[DEPRECATED alias] Update fields on a task","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/crm/task-boards/:boardId/items` instead. Update fields on a task","operationId":"put_api_v1_crm_task_boards_boardId_items__deprecated_alias","tags":["task"],"x-surface":"data","x-entity":"task","x-action":"update","x-idempotent":true,"parameters":[{"name":"boardId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["task:update"]},{"cookieAuth":["task:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taskId":{"type":"string","minLength":1,"maxLength":100},"groupId":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"columnId":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9_-]+$"},"beforeTaskId":{"type":"string","minLength":1,"maxLength":100,"nullable":true,"default":null},"version":{"type":"integer","minimum":0}},"required":["taskId","groupId","columnId","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/crm/task-boards/:boardId/items"}}},"/api/v1/crm/pulse/mention-search":{"get":{"summary":"[DEPRECATED alias] List pulse_messages with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/pulse/mention-candidates` instead. Reason: GET of a verb → noun; add ?type=user|contact. List pulse_messages with filters and pagination","operationId":"get_api_v1_crm_pulse_mention_candidates__deprecated_alias","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["user","contact"]}}],"security":[{"bearerAuth":["pulse_message:list"]},{"cookieAuth":["pulse_message:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/pulse/mention-candidates"}}},"/api/v1/crm/unified-tasks/mention-search":{"get":{"summary":"[DEPRECATED alias] List pulse_messages with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/crm/pulse/mention-candidates` instead. Reason: duplicate of the pulse endpoint; callers pass ?type=user for the old users-only behaviour. List pulse_messages with filters and pagination","operationId":"get_api_v1_crm_pulse_mention_candidates__deprecated_alias","tags":["pulse_message"],"x-surface":"data","x-entity":"pulse_message","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["user","contact"]}}],"security":[{"bearerAuth":["pulse_message:list"]},{"cookieAuth":["pulse_message:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/crm/pulse/mention-candidates"}}},"/api/v1/inbox/send":{"post":{"summary":"[DEPRECATED alias] Send or reply to email from the signed-in user's connected mailbox","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/messages` instead. Reason: sending = creating a message; POST on the messages collection. Send or reply to email from the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_messages__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"send","x-idempotent":false,"security":[{"bearerAuth":["mailbox:send"]},{"cookieAuth":["mailbox:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"to":{"type":"array","items":{"type":"string","format":"email"},"minItems":1,"maxItems":100},"cc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"bcc":{"type":"array","items":{"type":"string","format":"email"},"maxItems":100},"subject":{"type":"string","maxLength":998},"bodyHtml":{"type":"string","maxLength":500000},"importance":{"type":"string","enum":["low","normal","high"]},"inReplyTo":{"type":"string","minLength":1,"maxLength":16384},"threadId":{"type":"string","minLength":1,"maxLength":16384},"activityContext":{"type":"object","properties":{"dealId":{"type":"string","minLength":1,"maxLength":64},"contactId":{"type":"string","minLength":1,"maxLength":64}},"required":["dealId"],"additionalProperties":false}},"required":["account","to","subject","bodyHtml"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/messages"}}},"/api/v1/inbox/classify":{"post":{"summary":"[DEPRECATED alias] List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/classifications` instead. Reason: verb-in-path collection operation → result noun. List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"post_api_v1_inbox_classifications__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"from":{"type":"string","maxLength":512,"default":""},"subject":{"type":"string","maxLength":2000,"default":""},"snippet":{"type":"string","maxLength":2000,"default":""}},"required":["id"],"additionalProperties":false},"maxItems":500}},"required":["account","items"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/classifications"}}},"/api/v1/inbox/draft-reply":{"post":{"summary":"[DEPRECATED alias] Send or reply to email from the signed-in user's connected mailbox","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/ai-drafts` instead. Reason: verb-in-path collection operation → result noun (AI-generated draft text). Send or reply to email from the signed-in user's connected mailbox","operationId":"post_api_v1_inbox_ai_drafts__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"send","x-idempotent":false,"security":[{"bearerAuth":["mailbox:send"]},{"cookieAuth":["mailbox:send"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]},"messageId":{"type":"string"},"mode":{"type":"string","enum":["reply","forward"]},"tone":{"type":"string","maxLength":40},"length":{"type":"string","enum":["short","medium","long"]},"stance":{"type":"string","enum":["agreeing","disagreeing","skeptical","neutral"]},"instructions":{"type":"string","maxLength":2000},"useWritingStyle":{"type":"boolean"},"toneOverride":{"type":"string","enum":["formal","casual"]},"recipients":{"type":"array","items":{"type":"string"},"maxItems":100}},"required":["account","messageId","mode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/ai-drafts"}}},"/api/v1/inbox/warmup":{"post":{"summary":"[DEPRECATED alias] List messages in the signed-in user's connected mailbox (live fetch, not stored)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/cache` instead. Reason: verb → POST on the cache singleton (warm it). List messages in the signed-in user's connected mailbox (live fetch, not stored)","operationId":"post_api_v1_inbox_cache__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"list","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["mailbox:list"]},{"cookieAuth":["mailbox:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/cache"}}},"/api/v1/inbox/messages/{id}/analyze":{"get":{"summary":"[DEPRECATED alias] Read the signed-in user's connected mailbox (live, not stored)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/inbox/messages/:id/analysis` instead. Reason: never GET a verb; computed/AI artifact is a sub-resource. Read the signed-in user's connected mailbox (live, not stored)","operationId":"get_api_v1_inbox_messages_id_analysis__deprecated_alias","tags":["mailbox"],"x-surface":"data","x-entity":"mailbox","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":16384}}],"security":[{"bearerAuth":["mailbox:read"]},{"cookieAuth":["mailbox:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/inbox/messages/:id/analysis"}}},"/api/v1/inbox/writing-profile/rebuild":{"post":{"summary":"[DEPRECATED alias] Rebuild the signed-in user's email writing profile from sent mail (metered LLM + embeddings)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/inbox/writing-profile` instead. Reason: computed singleton: POST regenerates, no /rebuild verb. Rebuild the signed-in user's email writing profile from sent mail (metered LLM + embeddings)","operationId":"post_api_v1_inbox_writing_profile__deprecated_alias","tags":["writing_profile"],"x-surface":"data","x-entity":"writing_profile","x-action":"update","x-idempotent":false,"security":[{"bearerAuth":["writing_profile:update"]},{"cookieAuth":["writing_profile:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"type":"string","enum":["google","microsoft","imap"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/inbox/writing-profile"}}},"/api/v1/platform/notifications":{"get":{"summary":"[DEPRECATED alias] List my notifications","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/me/notifications` instead. Reason: actor-scoped view → /me/*; /platform/* is Captiva-employee-only. List my notifications","operationId":"get_api_v1_me_notifications__deprecated_alias","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["info","success","warning","error","ai_insight","task_assigned","task_due","mention","approval_needed"]}},{"name":"sourceModule","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"createdFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"createdTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"unreadOnly","in":"query","required":false,"schema":{"type":"string","enum":["true","false"]}}],"security":[{"bearerAuth":["notification:list"]},{"cookieAuth":["notification:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/me/notifications"}}},"/api/v1/platform/notifications/unread-count":{"get":{"summary":"[DEPRECATED alias] List my notifications","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/me/notifications/unread-count` instead. Reason: actor-scoped view → /me/*. List my notifications","operationId":"get_api_v1_me_notifications_unread_count__deprecated_alias","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"list","x-idempotent":false,"security":[{"bearerAuth":["notification:list"]},{"cookieAuth":["notification:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/me/notifications/unread-count"}}},"/api/v1/platform/notifications/{id}":{"patch":{"summary":"[DEPRECATED alias] Mark-read / mark-all-read / dismiss a notification","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PATCH /api/v1/me/notifications/:id` instead. Reason: actor-scoped view → /me/*; body-less PATCH still dismisses. Mark-read / mark-all-read / dismiss a notification","operationId":"patch_api_v1_me_notifications_id__deprecated_alias","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"update","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["notification:update"]},{"cookieAuth":["notification:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dismissed":{"type":"boolean"},"read":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PATCH","path":"/api/v1/me/notifications/:id"}}},"/api/v1/platform/notifications/{id}/read":{"post":{"summary":"[DEPRECATED alias] Mark-read / mark-all-read / dismiss a notification","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/me/notifications/:id/read` instead. Reason: actor-scoped view → /me/*. Mark-read / mark-all-read / dismiss a notification","operationId":"post_api_v1_me_notifications_id_read__deprecated_alias","tags":["notification"],"x-surface":"data","x-entity":"notification","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["notification:update"]},{"cookieAuth":["notification:update"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/me/notifications/:id/read"}}},"/api/v1/calendar/events":{"get":{"summary":"[DEPRECATED alias] List calendars with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/me/calendar-events` instead. Reason: actor-scoped unified calendar → /me/*. List calendars with filters and pagination","operationId":"get_api_v1_me_calendar_events__deprecated_alias","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"list","x-idempotent":false,"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar:list"]},{"cookieAuth":["calendar:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/me/calendar-events"}}},"/api/v1/scheduling/my-agenda":{"get":{"summary":"[DEPRECATED alias] List calendar_events with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/me/agenda` instead. Reason: actor-scoped view → /me/*; the mobile app still calls the old path. List calendar_events with filters and pagination","operationId":"get_api_v1_me_agenda__deprecated_alias","tags":["calendar_event"],"x-surface":"data","x-entity":"calendar_event","x-action":"list","x-idempotent":false,"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"userId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["calendar_event:list"]},{"cookieAuth":["calendar_event:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/me/agenda"}}},"/api/v1/scheduling/availability/analyze":{"post":{"summary":"[DEPRECATED alias] Analyze staffing fit, availability, PTO blackouts, and recent overwork trends","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/scheduling/availability/analyses` instead. Reason: verb-in-path collection operation → result noun. Analyze staffing fit, availability, PTO blackouts, and recent overwork trends","operationId":"post_api_v1_scheduling_availability_analyses__deprecated_alias","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"analyze_availability","x-idempotent":false,"security":[{"bearerAuth":["calendar:analyze_availability"]},{"cookieAuth":["calendar:analyze_availability"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"assignmentId":{"type":"string","minLength":1,"maxLength":64},"lookbackDays":{"type":"integer","minimum":28,"maximum":365,"default":90}},"required":["calendarId","from","to"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/scheduling/availability/analyses"}}},"/api/v1/scheduling/availability/suggest-assignee":{"get":{"summary":"[DEPRECATED alias] Suggest the optimal allow-listed assignee for a time window","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/scheduling/availability/assignee-suggestions` instead. Reason: never GET a verb → result noun. Suggest the optimal allow-listed assignee for a time window","operationId":"get_api_v1_scheduling_availability_assignee_suggestions__deprecated_alias","tags":["calendar"],"x-surface":"data","x-entity":"calendar","x-action":"suggest_assignee","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"security":[{"bearerAuth":["calendar:suggest_assignee"]},{"cookieAuth":["calendar:suggest_assignee"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/scheduling/availability/assignee-suggestions"}}},"/api/v1/approvals":{"get":{"summary":"[DEPRECATED alias] Read an approval request + its action history","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/approvals/requests` instead. Reason: <module>/<entities>: approvals module, approval_request entity. Read an approval request + its action history","operationId":"get_api_v1_approvals_requests__deprecated_alias","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"read","x-idempotent":false,"parameters":[{"name":"entity","in":"query","required":true,"schema":{"type":"string"}},{"name":"recordId","in":"query","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:read"]},{"cookieAuth":["approval_request:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/approvals/requests"}},"post":{"summary":"[DEPRECATED alias] Start an approval on a record","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/approvals/requests` instead. Reason: <module>/<entities>: approvals module, approval_request entity. Start an approval on a record","operationId":"post_api_v1_approvals_requests__deprecated_alias","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"create","x-idempotent":false,"security":[{"bearerAuth":["approval_request:create"]},{"cookieAuth":["approval_request:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","minLength":1,"maxLength":64},"recordId":{"type":"string","minLength":1,"maxLength":64},"recordTypeId":{"type":"string","maxLength":64,"nullable":true},"workflowId":{"type":"string","minLength":1,"maxLength":128,"nullable":true},"payload":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","recordId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/approvals/requests"}}},"/api/v1/approvals/{id}":{"post":{"summary":"[DEPRECATED alias] Approve or reject the current approval step","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/approvals/requests/:id/decision` instead. Reason: item action verb names the operation (decide). Approve or reject the current approval step","operationId":"post_api_v1_approvals_requests_id_decision__deprecated_alias","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"decide","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:decide"]},{"cookieAuth":["approval_request:decide"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["approved","rejected"]},"comment":{"type":"string","maxLength":2000,"nullable":true}},"required":["decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/approvals/requests/:id/decision"}},"delete":{"summary":"[DEPRECATED alias] Cancel an in-flight approval request","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/approvals/requests/:id/cancel` instead. Reason: cancel is a state transition, not a row delete → POST item verb. Cancel an in-flight approval request","operationId":"post_api_v1_approvals_requests_id_cancel__deprecated_alias","tags":["approval_request"],"x-surface":"data","x-entity":"approval_request","x-action":"cancel","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["approval_request:cancel"]},{"cookieAuth":["approval_request:cancel"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/approvals/requests/:id/cancel"}}},"/api/v1/support/tickets/{id}/status":{"post":{"summary":"[DEPRECATED alias] Change ticket status","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/support/tickets/:id/transition` instead. Reason: status change = /transition, matching deals / projects / work-orders. Change ticket status","operationId":"post_api_v1_support_tickets_id_transition__deprecated_alias","tags":["ticket"],"x-surface":"data","x-entity":"ticket","x-action":"status_change","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket:status_change"]},{"cookieAuth":["ticket:status_change"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["new","open","pending","on_hold","solved","closed","reopened"]},"reason":{"type":"string","maxLength":2000}},"required":["status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/support/tickets/:id/transition"}}},"/api/v1/llm/pending-enrichment/{type}/{id}":{"get":{"summary":"[DEPRECATED alias] GET /api/v1/llm/pending-enrichments/{type}/{id}","operationId":"get_api_v1_llm_pending_enrichments_type_id__deprecated_alias","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"read","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:read"]},{"cookieAuth":["ai_call:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/llm/pending-enrichments/:type/:id` instead. Reason: plural collection noun. ","x-successor":{"method":"GET","path":"/api/v1/llm/pending-enrichments/:type/:id"}},"put":{"summary":"[DEPRECATED alias] Invoke an LLM via /api/v1/llm/*","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/llm/pending-enrichments/:type/:id` instead. Reason: plural collection noun. Invoke an LLM via /api/v1/llm/*","operationId":"put_api_v1_llm_pending_enrichments_type_id__deprecated_alias","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:create"]},{"cookieAuth":["ai_call:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{}},"additionalProperties":true}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/llm/pending-enrichments/:type/:id"}},"delete":{"summary":"[DEPRECATED alias] Invoke an LLM via /api/v1/llm/*","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/llm/pending-enrichments/:type/:id` instead. Reason: plural collection noun. Invoke an LLM via /api/v1/llm/*","operationId":"delete_api_v1_llm_pending_enrichments_type_id__deprecated_alias","tags":["ai_call"],"x-surface":"data","x-entity":"ai_call","x-action":"create","x-idempotent":false,"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["account","contact","lead"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["ai_call:create"]},{"cookieAuth":["ai_call:create"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/llm/pending-enrichments/:type/:id"}}},"/api/v1/public/mcp-manifest":{"get":{"summary":"[DEPRECATED alias] MCP data-plane tool catalog with JSON-Schema (machine-readable).","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/public/mcp/catalog` instead. Reason: data-plane tool catalog nests under public/mcp beside the public-tools manifest. MCP data-plane tool catalog with JSON-Schema (machine-readable).","operationId":"get_api_v1_public_mcp_catalog__deprecated_alias","tags":["public"],"x-surface":"public","x-idempotent":false,"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/public/mcp/catalog"}}},"/api/v1/competitors":{"get":{"summary":"[DEPRECATED alias] List competitors with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors` instead. Reason: <module>/<entities>: module segment always present. List competitors with filters and pagination","operationId":"get_api_v1_competitors_competitors__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"list","x-idempotent":false,"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"ids","in":"query","required":false,"schema":{"type":"string","maxLength":8000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","archived"]}}],"security":[{"bearerAuth":["competitor:list"]},{"cookieAuth":["competitor:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors"}},"post":{"summary":"[DEPRECATED alias] Create a new competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/competitors/competitors` instead. Reason: <module>/<entities>: module segment always present. Create a new competitor","operationId":"post_api_v1_competitors_competitors__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"create","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:create"]},{"cookieAuth":["competitor:create"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","maxLength":1000,"minLength":1},"label":{"type":"string","maxLength":200,"nullable":true},"status":{"type":"string","enum":["active","archived"]},"logoUrl":{"type":"string","maxLength":1000,"nullable":true},"enriched":{"type":"object","additionalProperties":{},"nullable":true},"overrides":{"type":"object","additionalProperties":{},"nullable":true},"profile":{"type":"object","additionalProperties":{},"nullable":true},"socials":{"type":"object","additionalProperties":{},"nullable":true},"people":{"type":"object","additionalProperties":{},"nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/competitors/competitors"}}},"/api/v1/competitors/meta":{"get":{"summary":"[DEPRECATED alias] View a competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/meta` instead. Reason: <module>/<entities>/meta. View a competitor","operationId":"get_api_v1_competitors_competitors_meta__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"read","x-idempotent":false,"security":[{"bearerAuth":["competitor:read"]},{"cookieAuth":["competitor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/meta"}}},"/api/v1/competitors/{id}":{"get":{"summary":"[DEPRECATED alias] View a competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/:id` instead. Reason: <module>/<entities>/:id. View a competitor","operationId":"get_api_v1_competitors_competitors_id__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"read","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:read"]},{"cookieAuth":["competitor:read"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/:id"}},"put":{"summary":"[DEPRECATED alias] Update fields on a competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `PUT /api/v1/competitors/competitors/:id` instead. Reason: <module>/<entities>/:id. Update fields on a competitor","operationId":"put_api_v1_competitors_competitors_id__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:update"]},{"cookieAuth":["competitor:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"url":{"type":"string","maxLength":1000},"label":{"type":"string","maxLength":200,"nullable":true},"status":{"type":"string","enum":["active","archived"]},"logoUrl":{"type":"string","maxLength":1000,"nullable":true},"enriched":{"type":"object","additionalProperties":{},"nullable":true},"overrides":{"type":"object","additionalProperties":{},"nullable":true},"profile":{"type":"object","additionalProperties":{},"nullable":true},"socials":{"type":"object","additionalProperties":{},"nullable":true},"people":{"type":"object","additionalProperties":{},"nullable":true},"settings":{"type":"object","additionalProperties":{},"nullable":true},"customFields":{"type":"object","additionalProperties":{},"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"PUT","path":"/api/v1/competitors/competitors/:id"}},"delete":{"summary":"[DEPRECATED alias] Soft-delete a competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/competitors/competitors/:id` instead. Reason: <module>/<entities>/:id. Soft-delete a competitor","operationId":"delete_api_v1_competitors_competitors_id__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:delete"]},{"cookieAuth":["competitor:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/competitors/competitors/:id"}}},"/api/v1/competitors/{id}/battlecard":{"get":{"summary":"[DEPRECATED alias] Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/:id/battlecard` instead. Reason: <module>/<entities>/:id/<sub-resource>. Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","operationId":"get_api_v1_competitors_competitors_id_battlecard__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"battlecard","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:battlecard"]},{"cookieAuth":["competitor:battlecard"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/:id/battlecard"}},"post":{"summary":"[DEPRECATED alias] Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/competitors/competitors/:id/battlecard` instead. Reason: <module>/<entities>/:id/<sub-resource>. Generate the us-vs-them AI battlecard comparing this competitor to the tenant's own digital presence","operationId":"post_api_v1_competitors_competitors_id_battlecard__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"battlecard","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:battlecard"]},{"cookieAuth":["competitor:battlecard"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/competitors/competitors/:id/battlecard"}}},"/api/v1/competitors/{id}/enrich":{"post":{"summary":"[DEPRECATED alias] Re-run the AI/company enrichment for a competitor (profile, size, market share, strengths/weaknesses, socials, people)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/competitors/competitors/:id/enrich` instead. Reason: <module>/<entities>/:id/<verb>. Re-run the AI/company enrichment for a competitor (profile, size, market share, strengths/weaknesses, socials, people)","operationId":"post_api_v1_competitors_competitors_id_enrich__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"enrich","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:enrich"]},{"cookieAuth":["competitor:enrich"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/competitors/competitors/:id/enrich"}}},"/api/v1/competitors/{id}/refresh":{"post":{"summary":"[DEPRECATED alias] Re-run the full competitor gather (enrich + tech stack + news + snapshot + socials) for a competitor","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/competitors/competitors/:id/refresh` instead. Reason: <module>/<entities>/:id/<verb>. Re-run the full competitor gather (enrich + tech stack + news + snapshot + socials) for a competitor","operationId":"post_api_v1_competitors_competitors_id_refresh__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"refresh","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["competitor:refresh"]},{"cookieAuth":["competitor:refresh"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/competitors/competitors/:id/refresh"}}},"/api/v1/competitors/{id}/insights":{"get":{"summary":"[DEPRECATED alias] Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/:id/insights` instead. Reason: <module>/<entities>/:id/<sub-resource>. Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_insights__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"string","enum":["0","1","true","false"]}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/:id/insights"}}},"/api/v1/competitors/{id}/snapshots":{"get":{"summary":"[DEPRECATED alias] Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/:id/snapshots` instead. Reason: <module>/<entities>/:id/<sub-collection>. Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_snapshots__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":400}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/:id/snapshots"}}},"/api/v1/competitors/{id}/updates":{"get":{"summary":"[DEPRECATED alias] Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/competitors/competitors/:id/updates` instead. Reason: <module>/<entities>/:id/<sub-collection>. Read the aggregated competitor 360 (profile + web/tech + social + latest updates), cached","operationId":"get_api_v1_competitors_competitors_id_updates__deprecated_alias","tags":["competitor"],"x-surface":"data","x-entity":"competitor","x-action":"insights","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"security":[{"bearerAuth":["competitor:insights"]},{"cookieAuth":["competitor:insights"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/competitors/competitors/:id/updates"}}},"/api/v1/contracts/templates/{id}/images/import":{"post":{"summary":"[DEPRECATED alias] POST /api/v1/contracts/templates/{id}/images/imports","operationId":"post_api_v1_contracts_templates_id_images_imports__deprecated_alias","tags":["contract_template"],"x-surface":"data","x-entity":"contract_template","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["contract_template:update"]},{"cookieAuth":["contract_template:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":4096}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/contracts/templates/:id/images/imports` instead. Reason: verb under a sub-collection → import-job noun (matches crm/*/imports). ","x-successor":{"method":"POST","path":"/api/v1/contracts/templates/:id/images/imports"}}},"/api/v1/kb/pages/{id}/images/import":{"post":{"summary":"[DEPRECATED alias] Edit page structure and article content without approving AI drafts","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/kb/pages/:id/images/imports` instead. Reason: verb under a sub-collection → import-job noun. Edit page structure and article content without approving AI drafts","operationId":"post_api_v1_kb_pages_id_images_imports__deprecated_alias","tags":["kb_page"],"x-surface":"data","x-entity":"kb_page","x-action":"update","x-idempotent":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["kb_page:update"]},{"cookieAuth":["kb_page:update"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":4096}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/kb/pages/:id/images/imports"}}},"/api/v1/support/tickets/{id}/ai-insights/refresh":{"post":{"summary":"[DEPRECATED alias] Force regenerate AI insights for a ticket (agent-only)","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/support/tickets/:id/ai-insights` instead. Reason: AI artifact: GET reads, POST regenerates (rule 4). Force regenerate AI insights for a ticket (agent-only)","operationId":"post_api_v1_support_tickets_id_ai_insights__deprecated_alias","tags":["ticket_ai_insight"],"x-surface":"data","x-entity":"ticket_ai_insight","x-action":"refresh","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["ticket_ai_insight:refresh"]},{"cookieAuth":["ticket_ai_insight:refresh"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/support/tickets/:id/ai-insights"}}},"/api/v1/work-orders/routes/build":{"post":{"summary":"[DEPRECATED alias] Optimize the stop order for a technician's day","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/work-orders/route-plans` instead. Reason: verb-in-path collection operation → result noun (a route plan built from a calendar day/week). Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_plans__deprecated_alias","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":false,"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"assigneeUserId":{"type":"string","minLength":1,"maxLength":64},"anchorDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"period":{"type":"string","enum":["day","week","month"],"default":"day"},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"returnToStart":{"type":"boolean","default":true},"fuelPricePerLitre":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100},"preferences":{"type":"object","properties":{"avoidTolls":{"type":"boolean"},"avoidHighways":{"type":"boolean"},"respectAppointmentTimes":{"type":"boolean"},"clusterByArea":{"type":"boolean"},"minimiseOvertime":{"type":"boolean"},"balanceWorkload":{"type":"boolean"}},"additionalProperties":false,"default":{}},"instructions":{"type":"string","maxLength":2000},"adjustment":{"type":"string","maxLength":2000},"currentOrder":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":25}},"persist":{"type":"boolean","default":true}},"required":["calendarId","assigneeUserId","anchorDate"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/work-orders/route-plans"}}},"/api/v1/work-orders/routes/optimize":{"post":{"summary":"[DEPRECATED alias] Optimize the stop order for a technician's day","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/work-orders/route-optimizations` instead. Reason: verb-in-path collection operation → result noun. Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_optimizations__deprecated_alias","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":false,"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"technicianId":{"type":"string","minLength":1},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"pinnedWorkOrderIds":{"type":"array","items":{"type":"string","minLength":1},"maxItems":60,"default":[]},"returnToStart":{"type":"boolean","default":true},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"fuelPricePerLitre":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100},"persist":{"type":"boolean","default":true}},"required":["date","technicianId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/work-orders/route-optimizations"}}},"/api/v1/work-orders/routes/schedules":{"get":{"summary":"[DEPRECATED alias] List service_routes with filters and pagination","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `GET /api/v1/work-orders/route-schedules` instead. Reason: daily route-digest schedules are their own collection, not a sub-path of /routes. List service_routes with filters and pagination","operationId":"get_api_v1_work_orders_route_schedules__deprecated_alias","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"list","x-idempotent":false,"parameters":[{"name":"calendarId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}}],"security":[{"bearerAuth":["service_route:list"]},{"cookieAuth":["service_route:list"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"GET","path":"/api/v1/work-orders/route-schedules"}},"put":{"summary":"[DEPRECATED alias] Optimize the stop order for a technician's day","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `POST /api/v1/work-orders/route-schedules` instead. Reason: collection upsert-by-natural-key (calendarId, assigneeUserId) is POST on the collection, not PUT; body unchanged. Optimize the stop order for a technician's day","operationId":"post_api_v1_work_orders_route_schedules__deprecated_alias","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"optimize","x-idempotent":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-supplied key; replays return the cached response.","schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:optimize"]},{"cookieAuth":["service_route:optimize"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calendarId":{"type":"string","minLength":1,"maxLength":64},"assigneeUserId":{"type":"string","minLength":1,"maxLength":64},"enabled":{"type":"boolean","default":true},"sendHourUtc":{"type":"integer","minimum":0,"maximum":23,"default":6},"daysAhead":{"type":"integer","minimum":0,"maximum":7,"default":0},"objective":{"type":"string","enum":["time","distance","fuel"],"default":"time"},"vehicle":{"type":"string","enum":["car","van","truck"],"default":"car"},"dayStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"08:00"},"returnToStart":{"type":"boolean","default":true},"instructions":{"type":"string","maxLength":2000,"nullable":true},"preferences":{"type":"object","properties":{"avoidTolls":{"type":"boolean"},"avoidHighways":{"type":"boolean"},"respectAppointmentTimes":{"type":"boolean"},"clusterByArea":{"type":"boolean"},"minimiseOvertime":{"type":"boolean"},"balanceWorkload":{"type":"boolean"}},"additionalProperties":false,"default":{}},"recipientUserIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50,"default":[]},"recipientEmails":{"type":"array","items":{"type":"string","format":"email"},"maxItems":50,"default":[]}},"required":["calendarId","assigneeUserId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"POST","path":"/api/v1/work-orders/route-schedules"}}},"/api/v1/work-orders/routes/schedules/{id}":{"delete":{"summary":"[DEPRECATED alias] Soft-delete a service_route","description":"Deprecated since 2026-09-09; sunset 2027-03-09. Use `DELETE /api/v1/work-orders/route-schedules/:id` instead. Reason: daily route-digest schedules are their own collection, not a sub-path of /routes. Soft-delete a service_route","operationId":"delete_api_v1_work_orders_route_schedules_id__deprecated_alias","tags":["service_route"],"x-surface":"data","x-entity":"service_route","x-action":"delete","x-idempotent":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"security":[{"bearerAuth":["service_route:delete"]},{"cookieAuth":["service_route:delete"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Validation error"},"401":{"description":"Unauthenticated"},"403":{"description":"Forbidden"}},"deprecated":true,"x-successor":{"method":"DELETE","path":"/api/v1/work-orders/route-schedules/:id"}}}},"x-links":{"mcpManifest":"/api/v1/public/mcp/catalog"}}