{"openapi":"3.1.0","info":{"title":"VoiceCore voice-api","version":"0.3.0"},"paths":{"/v1/widget/token":{"post":{"summary":"Widget Token","operationId":"widget_token_v1_widget_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Widget Token V1 Widget Token Post"}}}}}}},"/widget":{"get":{"summary":"Widget Page","operationId":"widget_page_widget_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/v1/r/{token}":{"get":{"tags":["rachel-sms-public"],"summary":"Rachel Sms Recording Player","description":"Phone-friendly player. Token is the only auth.","operationId":"rachel_sms_recording_player_v1_r__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/r/{token}/audio":{"get":{"tags":["rachel-sms-public"],"summary":"Rachel Sms Recording Audio","description":"Stream .ogg for a valid token. No ops token.","operationId":"rachel_sms_recording_audio_v1_r__token__audio_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/telnyx/messaging":{"post":{"tags":["phase3"],"summary":"Telnyx Messaging Webhook","operationId":"telnyx_messaging_webhook_webhooks_telnyx_messaging_post","parameters":[{"name":"telnyx-signature-ed25519","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telnyx-Signature-Ed25519"}},{"name":"telnyx-timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telnyx-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telnyx Messaging Webhook Webhooks Telnyx Messaging Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/telnyx/voice":{"post":{"tags":["phase3"],"summary":"Telnyx Voice Webhook","description":"Telnyx Call Control webhooks — Premium AMD for PA outbound.","operationId":"telnyx_voice_webhook_webhooks_telnyx_voice_post","parameters":[{"name":"telnyx-signature-ed25519","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telnyx-Signature-Ed25519"}},{"name":"telnyx-timestamp","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telnyx-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telnyx Voice Webhook Webhooks Telnyx Voice Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tenants/{slug}/locations/{location_ref}/incident":{"post":{"tags":["phase3"],"summary":"Set Incident","description":"Merge per-location incident_mode into active tenant_profiles row.","operationId":"set_incident_v1_tenants__slug__locations__location_ref__incident_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"location_ref","in":"path","required":true,"schema":{"type":"string","title":"Location Ref"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Incident V1 Tenants  Slug  Locations  Location Ref  Incident Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/callbacks/process":{"post":{"tags":["phase3"],"summary":"Callbacks Process","operationId":"callbacks_process_v1_callbacks_process_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessCallbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Callbacks Process V1 Callbacks Process Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/callbacks/claim":{"post":{"tags":["phase3"],"summary":"Callbacks Claim","operationId":"callbacks_claim_v1_callbacks_claim_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimCallbacksBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Callbacks Claim V1 Callbacks Claim Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/callbacks/drain":{"post":{"tags":["phase3"],"summary":"Callbacks Drain","description":"Park NEW rows at HELD, then process leftover queued (legacy) rows.","operationId":"callbacks_drain_v1_callbacks_drain_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainCallbacksBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Callbacks Drain V1 Callbacks Drain Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls":{"get":{"tags":["ops"],"summary":"Ops List Calls","operationId":"ops_list_calls_v1_ops_calls_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","description":"tenant slug","title":"Slug"},"description":"tenant slug"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops List Calls V1 Ops Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}":{"get":{"tags":["ops"],"summary":"Ops Get Call","description":"Call detail: meta + transcript turns + latency summary.","operationId":"ops_get_call_v1_ops_calls__call_id__get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Get Call V1 Ops Calls  Call Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/live":{"get":{"tags":["ops"],"summary":"Ops Live Calls","description":"Active (unended) calls + LiveKit room snapshot.","operationId":"ops_live_calls_v1_ops_live_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Live Calls V1 Ops Live Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/settings":{"get":{"tags":["ops"],"summary":"Ops Get Settings","operationId":"ops_get_settings_v1_ops_settings_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Get Settings V1 Ops Settings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops"],"summary":"Ops Patch Settings","description":"Update LLM aliases and/or transfer_policy on the active profile.","operationId":"ops_patch_settings_v1_ops_settings_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Patch Settings V1 Ops Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/proposals":{"get":{"tags":["ops"],"summary":"Ops List Proposals","operationId":"ops_list_proposals_v1_ops_proposals_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"cache | prompt | keyterm | …","title":"Kind"},"description":"cache | prompt | keyterm | …"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops List Proposals V1 Ops Proposals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/proposals/{proposal_id}/approve":{"post":{"tags":["ops"],"summary":"Ops Approve Proposal","operationId":"ops_approve_proposal_v1_ops_proposals__proposal_id__approve_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Ops-only: bypass cache quality gate","default":false,"title":"Force"},"description":"Ops-only: bypass cache quality gate"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}},{"name":"X-Request-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ProposalDecideBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Approve Proposal V1 Ops Proposals  Proposal Id  Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/proposals/{proposal_id}/reject":{"post":{"tags":["ops"],"summary":"Ops Reject Proposal","operationId":"ops_reject_proposal_v1_ops_proposals__proposal_id__reject_post","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Proposal Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}},{"name":"X-Request-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Request-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ProposalDecideBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Reject Proposal V1 Ops Proposals  Proposal Id  Reject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tasks":{"get":{"tags":["ops"],"summary":"Ops List Tasks","description":"Phase 6 spine — list PA tasks (pa_tasks).","operationId":"ops_list_tasks_v1_ops_tasks_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":40,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops List Tasks V1 Ops Tasks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ops"],"summary":"Ops Create Task","operationId":"ops_create_task_v1_ops_tasks_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Create Task V1 Ops Tasks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tasks/{task_id}":{"get":{"tags":["ops"],"summary":"Ops Get Task","operationId":"ops_get_task_v1_ops_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Get Task V1 Ops Tasks  Task Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tasks/{task_id}/run":{"post":{"tags":["ops"],"summary":"Ops Run Task","description":"Phase 6.4/6.5 — run pending outbound steps, then optional owner briefing.","operationId":"ops_run_task_v1_ops_tasks__task_id__run_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunTaskBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Run Task V1 Ops Tasks  Task Id  Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/pa/outbound":{"post":{"tags":["ops"],"summary":"Ops Pa Outbound","description":"Phase 6.2/6.3 — dispatch AgentSession + dial ``to_e164`` (outbound PA).","operationId":"ops_pa_outbound_v1_ops_pa_outbound_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaOutboundBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Pa Outbound V1 Ops Pa Outbound Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/pa/brief-owner":{"post":{"tags":["ops"],"summary":"Ops Pa Brief Owner","description":"Phase 6.3 — dial owner/assignee with a task results briefing.","operationId":"ops_pa_brief_owner_v1_ops_pa_brief_owner_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaOwnerBriefBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Pa Brief Owner V1 Ops Pa Brief Owner Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/consent/check-opt-out":{"post":{"tags":["ops"],"summary":"Ops Consent Check Opt Out","description":"Owner-directed Rachel outreach — allow unless DNC or STOP/revoked.","operationId":"ops_consent_check_opt_out_v1_ops_consent_check_opt_out_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","description":"tenant slug","title":"Slug"},"description":"tenant slug"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentCheckOptOutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Consent Check Opt Out V1 Ops Consent Check Opt Out Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/consent/revoke":{"post":{"tags":["ops"],"summary":"Ops Consent Revoke","description":"STOP / opt-out — write consent basis=revoked + DNC row (token-gated).","operationId":"ops_consent_revoke_v1_ops_consent_revoke_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","description":"tenant slug","title":"Slug"},"description":"tenant slug"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentRevokeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Consent Revoke V1 Ops Consent Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/sms/{message_id}/detail":{"get":{"tags":["ops-portal"],"summary":"Ops Sms Detail","description":"SMS thread + body for Open SMS. Never a blank call page.","operationId":"ops_sms_detail_v1_ops_sms__message_id__detail_get","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Sms Detail V1 Ops Sms  Message Id  Detail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}/detail":{"get":{"tags":["ops-portal"],"summary":"Ops Call Detail Enriched","description":"Call detail with tools, entities, channel energy, outbox / summary status.","operationId":"ops_call_detail_enriched_v1_ops_calls__call_id__detail_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Call Detail Enriched V1 Ops Calls  Call Id  Detail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}/recording":{"get":{"tags":["ops-portal"],"summary":"Ops Call Recording","description":"Stream ``.ogg`` for a call (local path or R2).","operationId":"ops_call_recording_v1_ops_calls__call_id__recording_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}/recording/staff":{"get":{"tags":["ops-portal"],"summary":"Ops Call Recording Staff","description":"Stream staff-segment ``.staff.ogg`` (404 when absent — not an error).","operationId":"ops_call_recording_staff_v1_ops_calls__call_id__recording_staff_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}/recording/caller":{"get":{"tags":["ops-portal"],"summary":"Ops Call Recording Caller","description":"Stream isolated caller-mic ``.caller.ogg`` (404 when absent).","operationId":"ops_call_recording_caller_v1_ops_calls__call_id__recording_caller_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/calls/{call_id}/recording/carrier":{"get":{"tags":["ops-portal"],"summary":"Ops Call Recording Carrier","description":"Stream Telnyx dual-channel WAV (includes post-REFER when carrier kept it).","operationId":"ops_call_recording_carrier_v1_ops_calls__call_id__recording_carrier_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/inbox":{"get":{"tags":["ops-portal"],"summary":"Ops Inbox","description":"Unified voice (+ SMS) inbox with Phone.com archive merged for voice rows.","operationId":"ops_inbox_v1_ops_inbox_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"store","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"location_ref filter","title":"Store"},"description":"location_ref filter"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD America/Chicago","title":"Date"},"description":"YYYY-MM-DD America/Chicago"},{"name":"contained","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"true|false","title":"Contained"},"description":"true|false"},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"voice|archive|sms|all","title":"Channel"},"description":"voice|archive|sms|all"},{"name":"include_probes","in":"query","required":false,"schema":{"type":"boolean","description":"Include DID-monitor / synthetic probe legs (default hidden)","default":false,"title":"Include Probes"},"description":"Include DID-monitor / synthetic probe legs (default hidden)"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Inbox V1 Ops Inbox Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/today":{"get":{"tags":["ops-portal"],"summary":"Ops Today","description":"Today rollup: calls/store, containment, N1 latency, answer-rate, active calls.","operationId":"ops_today_v1_ops_today_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Today V1 Ops Today Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/callback-queue":{"get":{"tags":["ops-portal"],"summary":"Ops Callback Queue","description":"Open please-call-back tickets mirrored from complaint audit + dispositions.","operationId":"ops_callback_queue_v1_ops_callback_queue_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"phone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one caller ANI (10-digit ok)","title":"Phone"},"description":"Filter to one caller ANI (10-digit ok)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":80,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Callback Queue V1 Ops Callback Queue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/callback-disposition":{"post":{"tags":["ops-portal"],"summary":"Ops Callback Disposition","description":"Close or update a please-call-back ticket in LaundryOS (ops bearer).","operationId":"ops_callback_disposition_v1_ops_callback_disposition_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackDispositionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Callback Disposition V1 Ops Callback Disposition Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/scorecard":{"get":{"tags":["ops-portal"],"summary":"Ops Scorecard","operationId":"ops_scorecard_v1_ops_scorecard_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Scorecard V1 Ops Scorecard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tool-flags":{"get":{"tags":["ops-portal"],"summary":"Ops Tool Flags","description":"Live ON/OFF from runtime overrides + VoiceCore env (fleet-wide).","operationId":"ops_tool_flags_v1_ops_tool_flags_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flags V1 Ops Tool Flags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Tool Flags Patch","description":"Flip a live flag immediately (VoiceCore runtime or L2 tool-service).","operationId":"ops_tool_flags_patch_v1_ops_tool_flags_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flags Patch V1 Ops Tool Flags Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tool-flags/store-override":{"patch":{"tags":["ops-portal"],"summary":"Ops Tool Flags Store Override","description":"Set or clear a per-store U2 tool flag override (inherit when null).","operationId":"ops_tool_flags_store_override_v1_ops_tool_flags_store_override_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFlagOverrideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flags Store Override V1 Ops Tool Flags Store Override Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tool-flags/request-change":{"post":{"tags":["ops-portal"],"summary":"Ops Tool Flags Request","description":"Legacy queue — prefer PATCH /tool-flags for real-time flips.","operationId":"ops_tool_flags_request_v1_ops_tool_flags_request_change_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flags Request V1 Ops Tool Flags Request Change Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tool-flags/recommendations":{"get":{"tags":["ops-portal"],"summary":"Ops Tool Flag Recommendations","description":"Per-flag ON/OFF recommendation with evidence — never auto-flips.","operationId":"ops_tool_flag_recommendations_v1_ops_tool_flags_recommendations_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flag Recommendations V1 Ops Tool Flags Recommendations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/tool-flags/suggestions":{"get":{"tags":["ops-portal"],"summary":"Ops Tool Flag Suggestions","description":"Suggested enables from soak scorecard — never auto-flips.","operationId":"ops_tool_flag_suggestions_v1_ops_tool_flags_suggestions_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Tool Flag Suggestions V1 Ops Tool Flags Suggestions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/fleet-health":{"get":{"tags":["ops-portal"],"summary":"Ops Fleet Health","description":"Fleet health: DID map, scorecard last-run, canaries snapshot, external clocks.","operationId":"ops_fleet_health_v1_ops_fleet_health_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"hours","in":"query","required":false,"schema":{"type":"number","maximum":168,"minimum":1,"default":24,"title":"Hours"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Fleet Health V1 Ops Fleet Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/service-health":{"get":{"tags":["ops-portal"],"summary":"Ops Service Health","description":"Is the fleet still answering? Silence-vs-baseline, with its own caveats.\n\nEvery `calls` row is a call that reached the worker, so no ratio computed\nfrom these rows can fall when the worker stops receiving them — it goes\nquiet instead. This route measures that silence: each hour against what the\nsame hour of the week normally carries. `blind_spots` travels with the\nnumbers because the proxy is only honest when it says what it cannot see.\n\nRead-only. The judgement lives in `core.observe.service_health`.","operationId":"ops_service_health_v1_ops_service_health_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":24,"title":"Hours"}},{"name":"baseline_weeks","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":2,"default":4,"title":"Baseline Weeks"}},{"name":"min_baseline_calls","in":"query","required":false,"schema":{"type":"number","maximum":100.0,"minimum":0.0,"default":3.0,"title":"Min Baseline Calls"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Service Health V1 Ops Service Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/consent-registry":{"get":{"tags":["ops-portal"],"summary":"Ops Consent Registry","description":"CallsBack.ai consent ledger (voicecore SoT) — not LaundryOS P1 table.","operationId":"ops_consent_registry_v1_ops_consent_registry_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Consent Registry V1 Ops Consent Registry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ops-portal"],"summary":"Ops Consent Add","operationId":"ops_consent_add_v1_ops_consent_registry_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentAddBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Consent Add V1 Ops Consent Registry Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/knowledge":{"get":{"tags":["ops-portal"],"summary":"Ops Knowledge List","operationId":"ops_knowledge_list_v1_ops_knowledge_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"location","in":"query","required":false,"schema":{"type":"string","default":"_all","title":"Location"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Knowledge List V1 Ops Knowledge Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Knowledge Patch","operationId":"ops_knowledge_patch_v1_ops_knowledge_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgePatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Knowledge Patch V1 Ops Knowledge Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/knowledge/audit":{"get":{"tags":["ops-portal"],"summary":"Ops Knowledge Audit","operationId":"ops_knowledge_audit_v1_ops_knowledge_audit_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Knowledge Audit V1 Ops Knowledge Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/prompts":{"get":{"tags":["ops-portal"],"summary":"Ops Prompts Get","description":"Read tenant receptionist prompt files or Rachel owner prompt.","operationId":"ops_prompts_get_v1_ops_prompts_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Prompt stem or rachel","title":"Name"},"description":"Prompt stem or rachel"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Prompts Get V1 Ops Prompts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Prompts Patch","description":"Save prompt markdown — git + prompt-audit.jsonl trail.","operationId":"ops_prompts_patch_v1_ops_prompts_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Prompts Patch V1 Ops Prompts Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/prompts/audit":{"get":{"tags":["ops-portal"],"summary":"Ops Prompts Audit","operationId":"ops_prompts_audit_v1_ops_prompts_audit_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Prompts Audit V1 Ops Prompts Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/prompts/suggest":{"post":{"tags":["ops-portal"],"summary":"Ops Prompts Suggest","description":"Scan customer-call assistant turns → pending prompt warmth proposals.","operationId":"ops_prompts_suggest_v1_ops_prompts_suggest_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptSuggestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Prompts Suggest V1 Ops Prompts Suggest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/learn/staff-leg":{"get":{"tags":["ops-portal"],"summary":"Ops Learn Staff Leg Status","description":"Staff-leg learn gate + candidate counts (no STT when OFF).","operationId":"ops_learn_staff_leg_status_v1_ops_learn_staff_leg_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"lookback_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":24,"default":168,"title":"Lookback Hours"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Learn Staff Leg Status V1 Ops Learn Staff Leg Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ops-portal"],"summary":"Ops Learn Staff Leg Run","description":"Mine staff-leg recordings → pending proposals (flag or dry_run).\n\nWhen ``VOICECORE_LEARN_FROM_STAFF_LEG`` is OFF, only ``dry_run=true``\nis allowed (force scan without writes). Never auto-approves.","operationId":"ops_learn_staff_leg_run_v1_ops_learn_staff_leg_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffLegLearnBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Learn Staff Leg Run V1 Ops Learn Staff Leg Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/experts":{"get":{"tags":["ops-portal"],"summary":"Ops Experts Get","description":"CallsBack.ai receptionist expert modules — catalog + LaundryOS enable flags.","operationId":"ops_experts_get_v1_ops_experts_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Experts Get V1 Ops Experts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Experts Patch","description":"Toggle expert modules via LaundryOS receptionist-config PATCH.","operationId":"ops_experts_patch_v1_ops_experts_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpertsPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Experts Patch V1 Ops Experts Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/personas/tools-rules":{"get":{"tags":["ops-portal"],"summary":"Ops Personas Tools Rules","description":"Rachel + store receptionist tool catalogs and rules (CallsBack.ai ops).","operationId":"ops_personas_tools_rules_v1_ops_personas_tools_rules_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Personas Tools Rules V1 Ops Personas Tools Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/agent-policy":{"get":{"tags":["ops-portal"],"summary":"Ops Agent Policy Get","description":"LaundryOS receptionist hard-stops — read for portal editor.","operationId":"ops_agent_policy_get_v1_ops_agent_policy_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Agent Policy Get V1 Ops Agent Policy Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Agent Policy Patch","description":"Persist receptionist hard-stops (SoapBox disk — live on next inbound call).","operationId":"ops_agent_policy_patch_v1_ops_agent_policy_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Agent Policy Patch V1 Ops Agent Policy Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/config-catalog":{"get":{"tags":["ops-portal"],"summary":"Ops Config Catalog","description":"Unified config inventory — every supported knob with current values.","operationId":"ops_config_catalog_v1_ops_config_catalog_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"refresh_telnyx","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass Telnyx dual-channel cache","default":false,"title":"Refresh Telnyx"},"description":"Bypass Telnyx dual-channel cache"},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Config Catalog V1 Ops Config Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/rachel/sms-summary":{"get":{"tags":["ops-portal"],"summary":"Ops Rachel Sms Summary Get","description":"Rachel SMS summary settings + send status.","operationId":"ops_rachel_sms_summary_get_v1_ops_rachel_sms_summary_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Sms Summary Get V1 Ops Rachel Sms Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Rachel Sms Summary Patch","description":"Update quiet hours / expiry / personas. Dest requires verify.","operationId":"ops_rachel_sms_summary_patch_v1_ops_rachel_sms_summary_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RachelSmsSummaryPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Sms Summary Patch V1 Ops Rachel Sms Summary Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/rachel/sms-summary/dest/request":{"post":{"tags":["ops-portal"],"summary":"Ops Rachel Sms Dest Request","description":"Send a confirmation code to a pending dest. Not the summary sender.","operationId":"ops_rachel_sms_dest_request_v1_ops_rachel_sms_summary_dest_request_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RachelSmsDestStart"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Sms Dest Request V1 Ops Rachel Sms Summary Dest Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/rachel/sms-summary/dest/confirm":{"post":{"tags":["ops-portal"],"summary":"Ops Rachel Sms Dest Confirm","description":"Save dest only after the confirmation code matches.","operationId":"ops_rachel_sms_dest_confirm_v1_ops_rachel_sms_summary_dest_confirm_post","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RachelSmsDestConfirm"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Sms Dest Confirm V1 Ops Rachel Sms Summary Dest Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/rachel":{"get":{"tags":["ops-portal"],"summary":"Ops Rachel Config","description":"Rachel owner-assistant stack — inbound DID, tools, health, env.","operationId":"ops_rachel_config_v1_ops_rachel_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Config V1 Ops Rachel Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Rachel Config Patch","description":"Proxy PATCH to LaundryOS rachel-config SoT (not store receptionist).","operationId":"ops_rachel_config_patch_v1_ops_rachel_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RachelConfigPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Rachel Config Patch V1 Ops Rachel Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/receptionist-config":{"get":{"tags":["ops-portal"],"summary":"Ops Receptionist Config Get","description":"Proxy LaundryOS per-store receptionist SoT.","operationId":"ops_receptionist_config_get_v1_ops_receptionist_config_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Receptionist Config Get V1 Ops Receptionist Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ops-portal"],"summary":"Ops Receptionist Config Patch","description":"Proxy PATCH to LaundryOS (Bearer LAUNDRYOS_OPS_TOKEN).","operationId":"ops_receptionist_config_patch_v1_ops_receptionist_config_patch","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceptionistPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops Receptionist Config Patch V1 Ops Receptionist Config Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/u2ext-portal":{"get":{"tags":["ops-portal"],"summary":"Ops U2Ext Portal","description":"Read-only U2-EXT portal aggregates via L2 tool service (:3041).","operationId":"ops_u2ext_portal_v1_ops_u2ext_portal_get","parameters":[{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ops U2Ext Portal V1 Ops U2Ext Portal Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/meta":{"get":{"tags":["journal-grades"],"summary":"Journal Grade Meta","description":"Bound model IDs, rubric, flags. Divert writes stay off by default.","operationId":"journal_grade_meta_v1_ops_journal_grades_meta_get","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Grade Meta V1 Ops Journal Grades Meta Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/grades":{"get":{"tags":["journal-grades"],"summary":"Journal Grades List","description":"Persisted grades for the Grading tab.","operationId":"journal_grades_list_v1_ops_journal_grades_grades_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":400,"minimum":1,"default":80,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Grades List V1 Ops Journal Grades Grades Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/repairs":{"get":{"tags":["journal-grades"],"summary":"Journal Repairs","description":"Repair queue (≤8 speech + grader/infra). ``fixed`` = repaired.","operationId":"journal_repairs_v1_ops_journal_grades_repairs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"open","title":"Status"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Repairs V1 Ops Journal Grades Repairs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/repairs/{repair_id}":{"post":{"tags":["journal-grades"],"summary":"Journal Repair Status","description":"Mark in-repair / repaired. Deploy event is still required to restore.","operationId":"journal_repair_status_v1_ops_journal_grades_repairs__repair_id__post","parameters":[{"name":"repair_id","in":"path","required":true,"schema":{"type":"string","title":"Repair Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepairStatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Repair Status V1 Ops Journal Grades Repairs  Repair Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/divert":{"get":{"tags":["journal-grades"],"summary":"Journal Divert Chips","description":"Per-location AI / DIVERTED-location / DIVERTED-fleet chips.","operationId":"journal_divert_chips_v1_ops_journal_grades_divert_get","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Divert Chips V1 Ops Journal Grades Divert Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/alarm/resume":{"post":{"tags":["journal-grades"],"summary":"Journal Alarm Resume","description":"One-click resume after divert-alarm pause.","operationId":"journal_alarm_resume_v1_ops_journal_grades_alarm_resume_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Alarm Resume V1 Ops Journal Grades Alarm Resume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/caller-flag":{"post":{"tags":["journal-grades"],"summary":"Journal Caller Flag","description":"SUSPECT badge clear / confirm. No divert from the click.","operationId":"journal_caller_flag_v1_ops_journal_grades_caller_flag_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallerFlagIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Caller Flag V1 Ops Journal Grades Caller Flag Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/stream":{"get":{"tags":["journal-grades"],"summary":"Journal Grade Stream","description":"SSE of live grades.","operationId":"journal_grade_stream_v1_ops_journal_grades_stream_get","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/deploy-event":{"post":{"tags":["journal-grades"],"summary":"Journal Deploy Event","description":"promote.sh webhook. Deploy is the restore trigger.","operationId":"journal_deploy_event_v1_ops_journal_grades_deploy_event_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployEventIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Deploy Event V1 Ops Journal Grades Deploy Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/chat":{"post":{"tags":["journal-grades"],"summary":"Journal Grade Chat","description":"Grade a TLP/LOS web session. Persist + repair. Never divert.","operationId":"journal_grade_chat_v1_ops_journal_grades_chat_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatGradeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Grade Chat V1 Ops Journal Grades Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/journal-grades/{channel}/{item_id}":{"get":{"tags":["journal-grades"],"summary":"Journal Grade One","description":"Grade one journal call or SMS (read-only of live traffic).","operationId":"journal_grade_one_v1_ops_journal_grades__channel___item_id__get","parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"slug","in":"query","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Journal Grade One V1 Ops Journal Grades  Channel   Item Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/owner-reviews/item":{"get":{"tags":["owner-reviews"],"summary":"Owner Review Item","description":"Return the current live Phase 0 queue head.","operationId":"owner_review_item_v1_ops_owner_reviews_item_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Owner Review Item V1 Ops Owner Reviews Item Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/owner-reviews/audio":{"get":{"tags":["owner-reviews"],"summary":"Owner Review Audio","description":"Stream the current item's server-bounded WAV clip.","operationId":"owner_review_audio_v1_ops_owner_reviews_audio_get","parameters":[{"name":"item_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Item Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/owner-reviews/verdict":{"post":{"tags":["owner-reviews"],"summary":"Owner Review Verdict","description":"Write one confirmed verdict or skip and return the next item.","operationId":"owner_review_verdict_v1_ops_owner_reviews_verdict_post","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerReviewVerdictRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Owner Review Verdict V1 Ops Owner Reviews Verdict Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/owner-ldap-verify":{"post":{"tags":["owner-ldap"],"summary":"Owner Ldap Verify","description":"Verify the owner Workspace password. Never logs the password.","operationId":"owner_ldap_verify_v1_ops_owner_ldap_verify_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerLdapVerifyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Owner Ldap Verify V1 Ops Owner Ldap Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/call-corrections":{"get":{"tags":["call-corrections"],"summary":"List Corrections","description":"List corrections for one call (newest first).","operationId":"list_corrections_v1_ops_call_corrections_get","parameters":[{"name":"call_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Call Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Corrections V1 Ops Call Corrections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["call-corrections"],"summary":"Create Correction","description":"Save one correction. Does not mutate the call record.","operationId":"create_correction_v1_ops_call_corrections_post","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorrectionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Correction V1 Ops Call Corrections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/call-corrections/sessions":{"post":{"tags":["call-corrections"],"summary":"Open Session","description":"Open a correction session for a call.","operationId":"open_session_v1_ops_call_corrections_sessions_post","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Open Session V1 Ops Call Corrections Sessions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-cdr":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Cdr List","operationId":"phonecom_cdr_list_v1_ops_phonecom_cdr_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Direction"}},{"name":"has_recording","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Recording"}},{"name":"has_transcript","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Transcript"}},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"allow_owner_private","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Allow Owner Private"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Phonecom Cdr List V1 Ops Phonecom Cdr Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-cdr/{call_id}":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Cdr Detail","operationId":"phonecom_cdr_detail_v1_ops_phonecom_cdr__call_id__get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"allow_owner_private","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Allow Owner Private"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Phonecom Cdr Detail V1 Ops Phonecom Cdr  Call Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-cdr/{call_id}/recording":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Cdr Recording","operationId":"phonecom_cdr_recording_v1_ops_phonecom_cdr__call_id__recording_get","parameters":[{"name":"call_id","in":"path","required":true,"schema":{"type":"string","title":"Call Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"allow_owner_private","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Allow Owner Private"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Phonecom Cdr Recording V1 Ops Phonecom Cdr  Call Id  Recording Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-config":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Config Summary","operationId":"phonecom_config_summary_v1_ops_phonecom_config_get","parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Phonecom Config Summary V1 Ops Phonecom Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-config/{section}":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Config Section","operationId":"phonecom_config_section_v1_ops_phonecom_config__section__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Phonecom Config Section V1 Ops Phonecom Config  Section  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/phonecom-config/{section}/{item_id}":{"get":{"tags":["ops-phonecom"],"summary":"Phonecom Config Item","operationId":"phonecom_config_item_v1_ops_phonecom_config__section___item_id__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string","default":"laundryplace","title":"Slug"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Phonecom Config Item V1 Ops Phonecom Config  Section   Item Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/texml/wave3/health":{"get":{"tags":["texml-wave3"],"summary":"Health","operationId":"health_texml_wave3_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Texml Wave3 Health Get"}}}}}}},"/texml/wave3/inbound":{"get":{"tags":["texml-wave3"],"summary":"Inbound","description":"Top-level picker so one spare DID covers both Wave 3 menus.","operationId":"inbound_texml_wave3_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"Inbound","description":"Top-level picker so one spare DID covers both Wave 3 menus.","operationId":"inbound_texml_wave3_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/texml/wave3/picker":{"get":{"tags":["texml-wave3"],"summary":"Picker","operationId":"picker_texml_wave3_picker_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"Picker","operationId":"picker_texml_wave3_picker_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/texml/wave3/east33":{"get":{"tags":["texml-wave3"],"summary":"East33 Menu","description":"Phone.com menu 118896 — East 33rd (no-AI preserved).","operationId":"east33_menu_texml_wave3_east33_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"East33 Menu","description":"Phone.com menu 118896 — East 33rd (no-AI preserved).","operationId":"east33_menu_texml_wave3_east33_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/texml/wave3/east33/digit":{"get":{"tags":["texml-wave3"],"summary":"East33 Digit","operationId":"east33_digit_texml_wave3_east33_digit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"East33 Digit","operationId":"east33_digit_texml_wave3_east33_digit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/texml/wave3/corp":{"get":{"tags":["texml-wave3"],"summary":"Corp Menu","description":"Phone.com menu 198599 — Corporate Main Line.","operationId":"corp_menu_texml_wave3_corp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"Corp Menu","description":"Phone.com menu 198599 — Corporate Main Line.","operationId":"corp_menu_texml_wave3_corp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/texml/wave3/corp/digit":{"get":{"tags":["texml-wave3"],"summary":"Corp Digit","operationId":"corp_digit_texml_wave3_corp_digit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["texml-wave3"],"summary":"Corp Digit","operationId":"corp_digit_texml_wave3_corp_digit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/ops/qa-board":{"get":{"tags":["qa-board"],"summary":"Qa Board List","description":"Full board for a store.","operationId":"qa_board_list_v1_ops_qa_board_get","parameters":[{"name":"store","in":"query","required":false,"schema":{"type":"string","default":"south-ankeny","title":"Store"}},{"name":"leg","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leg"}},{"name":"wrong_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wrong Only"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board List V1 Ops Qa Board Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/items/{item_id}":{"get":{"tags":["qa-board"],"summary":"Qa Board Get Item","description":"One board item.","operationId":"qa_board_get_item_v1_ops_qa_board_items__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Get Item V1 Ops Qa Board Items  Item Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["qa-board"],"summary":"Qa Board Patch Item","description":"Edit expected answer / action / notes.","operationId":"qa_board_patch_item_v1_ops_qa_board_items__item_id__patch","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchItemBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Patch Item V1 Ops Qa Board Items  Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/items/{item_id}/mark":{"post":{"tags":["qa-board"],"summary":"Qa Board Mark","description":"Owner mark pass/fail.","operationId":"qa_board_mark_v1_ops_qa_board_items__item_id__mark_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Mark V1 Ops Qa Board Items  Item Id  Mark Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/items/{item_id}/flag":{"post":{"tags":["qa-board"],"summary":"Qa Board Flag Item","description":"Flag wrong on a board item.","operationId":"qa_board_flag_item_v1_ops_qa_board_items__item_id__flag_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Flag Item V1 Ops Qa Board Items  Item Id  Flag Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/flag":{"post":{"tags":["qa-board"],"summary":"Qa Board Flag Unlinked","description":"Flag wrong without / with optional item_id (Live Talk).","operationId":"qa_board_flag_unlinked_v1_ops_qa_board_flag_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Flag Unlinked V1 Ops Qa Board Flag Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/wrong-events":{"get":{"tags":["qa-board"],"summary":"Qa Board Wrong Events","description":"Newest-first flagged replies.","operationId":"qa_board_wrong_events_v1_ops_qa_board_wrong_events_get","parameters":[{"name":"store","in":"query","required":false,"schema":{"type":"string","default":"south-ankeny","title":"Store"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Wrong Events V1 Ops Qa Board Wrong Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/runs":{"post":{"tags":["qa-board"],"summary":"Qa Board Runs","description":"Append canary / live-talk grade batch.","operationId":"qa_board_runs_v1_ops_qa_board_runs_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Runs V1 Ops Qa Board Runs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/seed":{"post":{"tags":["qa-board"],"summary":"Qa Board Seed","description":"Idempotent seed from FULL canary script.","operationId":"qa_board_seed_v1_ops_qa_board_seed_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Seed V1 Ops Qa Board Seed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/items/{item_id}/promote":{"post":{"tags":["qa-board"],"summary":"Qa Board Promote","description":"INSERT pending learn_proposals; approve via existing ops path.","operationId":"qa_board_promote_v1_ops_qa_board_items__item_id__promote_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Promote V1 Ops Qa Board Items  Item Id  Promote Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/listen":{"post":{"tags":["qa-board"],"summary":"Qa Board Listen","description":"Build chunked two-voice playlist (caller Q → assistant A).","operationId":"qa_board_listen_v1_ops_qa_board_listen_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Listen V1 Ops Qa Board Listen Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/listen/chunk/{token}":{"get":{"tags":["qa-board"],"summary":"Qa Board Listen Chunk","description":"Return one Listen WAV chunk.","operationId":"qa_board_listen_chunk_v1_ops_qa_board_listen_chunk__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/script":{"get":{"tags":["qa-board"],"summary":"Qa Board Script","description":"Teleprompter export from board SoT.","operationId":"qa_board_script_v1_ops_qa_board_script_get","parameters":[{"name":"store","in":"query","required":false,"schema":{"type":"string","default":"south-ankeny","title":"Store"}},{"name":"format","in":"query","required":false,"schema":{"enum":["md","txt","json"],"type":"string","default":"md","title":"Format"}},{"name":"leg","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leg"}},{"name":"wrong_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wrong Only"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Qa Board Script V1 Ops Qa Board Script Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/live-talk/token":{"post":{"tags":["qa-board"],"summary":"Qa Board Live Talk Token","description":"Ops LiveKit token for /qa/ Live Talk — no SIP / store DID dial.","operationId":"qa_board_live_talk_token_v1_ops_qa_board_live_talk_token_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveTalkTokenBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Live Talk Token V1 Ops Qa Board Live Talk Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/qa-board/live-talk/end":{"post":{"tags":["qa-board"],"summary":"Qa Board Live Talk End","description":"Optional explicit LiveKit room teardown.","operationId":"qa_board_live_talk_end_v1_ops_qa_board_live_talk_end_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Qa Board Live Talk End V1 Ops Qa Board Live Talk End Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/behavior-lora/stats":{"get":{"tags":["behavior-lora"],"summary":"Behavior Lora Stats","description":"Dataset version, sha256, trainable counts, and intent breakdown.","operationId":"behavior_lora_stats_v1_ops_behavior_lora_stats_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Behavior Lora Stats V1 Ops Behavior Lora Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/behavior-lora/rows":{"get":{"tags":["behavior-lora"],"summary":"Behavior Lora Rows","description":"Paginated list of LoRA rows (summary fields only).","operationId":"behavior_lora_rows_v1_ops_behavior_lora_rows_get","parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"intent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search id, caller text, positive","title":"Q"},"description":"Search id, caller text, positive"},{"name":"trainable_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Trainable Only"}},{"name":"dataset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Behavior Lora Rows V1 Ops Behavior Lora Rows Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ops/behavior-lora/rows/{row_id}":{"get":{"tags":["behavior-lora"],"summary":"Behavior Lora Row","description":"Full JSON for one curated LoRA row.","operationId":"behavior_lora_row_v1_ops_behavior_lora_rows__row_id__get","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"string","title":"Row Id"}},{"name":"dataset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset"}},{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Behavior Lora Row V1 Ops Behavior Lora Rows  Row Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/v1/tools/execute":{"post":{"summary":"Tools Execute","description":"HTTP tool gateway — ops-token only (LiveKit uses in-process execute_tool).","operationId":"tools_execute_v1_tools_execute_post","parameters":[{"name":"X-VoiceCore-Ops-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Voicecore-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolExecuteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tools Execute V1 Tools Execute Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AgentPolicyPatchBody":{"properties":{"blurb":{"type":"string","maxLength":500,"minLength":1,"title":"Blurb"},"items":{"items":{"type":"string"},"type":"array","maxItems":24,"minItems":1,"title":"Items"},"editor":{"type":"string","title":"Editor","default":"owner"}},"type":"object","required":["blurb","items"],"title":"AgentPolicyPatchBody"},"CallbackDispositionBody":{"properties":{"ticketId":{"type":"string","title":"Ticketid"},"disposition":{"type":"string","title":"Disposition"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"callerPhoneE164":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callerphonee164"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},"type":"object","required":["ticketId","disposition"],"title":"CallbackDispositionBody"},"CallerFlagIn":{"properties":{"e164":{"type":"string","title":"E164"},"action":{"type":"string","pattern":"^(clear|confirm)$","title":"Action"}},"type":"object","required":["e164","action"],"title":"CallerFlagIn","description":"Clear or confirm a SUSPECT_CALLER stamp."},"ChatGradeIn":{"properties":{"channel":{"type":"string","title":"Channel"},"session_id":{"type":"string","title":"Session Id"},"turns":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Turns"},"location_ref":{"type":"string","title":"Location Ref","default":""}},"type":"object","required":["channel","session_id"],"title":"ChatGradeIn","description":"TLP / LaundryOS web chat transcript for dual journal grade."},"ClaimCallbacksBody":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":5}},"type":"object","required":["tenant_id"],"title":"ClaimCallbacksBody"},"ConsentAddBody":{"properties":{"e164":{"type":"string","title":"E164"},"basis":{"type":"string","title":"Basis","default":"explicit_optin"},"evidence":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evidence"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["e164"],"title":"ConsentAddBody"},"ConsentCheckOptOutBody":{"properties":{"e164":{"type":"string","maxLength":20,"minLength":8,"title":"E164"}},"type":"object","required":["e164"],"title":"ConsentCheckOptOutBody"},"ConsentRevokeBody":{"properties":{"e164":{"type":"string","maxLength":20,"minLength":8,"title":"E164"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"}},"type":"object","required":["e164"],"title":"ConsentRevokeBody"},"CorrectionBody":{"properties":{"call_id":{"type":"string","format":"uuid","title":"Call Id"},"correction_type":{"type":"string","enum":["utterance","tool_call","metadata"],"title":"Correction Type"},"corrected_value":{"additionalProperties":true,"type":"object","title":"Corrected Value"},"corrected_by":{"type":"string","maxLength":256,"minLength":1,"title":"Corrected By"},"reason":{"type":"string","maxLength":10000,"title":"Reason","default":""},"severity":{"type":"string","enum":["cosmetic","reached_customer","caused_harm"],"title":"Severity","default":"cosmetic"},"ai_assisted":{"type":"boolean","title":"Ai Assisted","default":false},"ai_prompt":{"type":"string","maxLength":4000,"title":"Ai Prompt","default":""},"turn_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turn Index"},"status":{"type":"string","enum":["draft","submitted"],"title":"Status","default":"submitted"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"actor_role":{"type":"string","enum":["owner","manager"],"title":"Actor Role","default":"owner"}},"type":"object","required":["call_id","correction_type","corrected_value","corrected_by"],"title":"CorrectionBody","description":"One human-saved correction (observed filled server-side)."},"CreateTaskBody":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"brief":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brief"},"assignee_e164":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee E164"},"source_call_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Call Id"},"steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Steps"}},"type":"object","required":["title"],"title":"CreateTaskBody"},"DeployEventIn":{"properties":{"sha":{"type":"string","title":"Sha","default":""},"source":{"type":"string","title":"Source","default":"webhook"}},"type":"object","title":"DeployEventIn","description":"promote.sh / deploy webhook body."},"DrainCallbacksBody":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Limit","default":5}},"type":"object","required":["tenant_id"],"title":"DrainCallbacksBody"},"ExpertsPatchBody":{"properties":{"experts":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Experts"},"editor":{"type":"string","title":"Editor","default":"owner"}},"type":"object","title":"ExpertsPatchBody"},"FlagBody":{"properties":{"said_text":{"type":"string","title":"Said Text","default":""},"note":{"type":"string","title":"Note","default":""},"channel":{"type":"string","title":"Channel","default":"owner_mark"},"live_talk_room":{"type":"string","title":"Live Talk Room","default":""},"turn_id":{"type":"string","title":"Turn Id","default":""},"item_id":{"type":"string","title":"Item Id","default":""},"store":{"type":"string","title":"Store","default":"south-ankeny"},"editor":{"type":"string","title":"Editor","default":"owner"}},"type":"object","title":"FlagBody","description":"Flag wrong reply (board row or Live Talk turn)."},"FlagChangeRequest":{"properties":{"flag":{"type":"string","title":"Flag"},"desired":{"type":"boolean","title":"Desired"},"reason":{"type":"string","maxLength":500,"title":"Reason","default":""},"store":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store"},"confirmed":{"type":"boolean","title":"Confirmed","default":false},"actor":{"type":"string","maxLength":120,"title":"Actor","default":"owner"}},"type":"object","required":["flag","desired"],"title":"FlagChangeRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IncidentBody":{"properties":{"active":{"type":"boolean","title":"Active","default":false},"script":{"type":"string","title":"Script","default":""}},"type":"object","title":"IncidentBody"},"KnowledgePatchBody":{"properties":{"location_slug":{"type":"string","title":"Location Slug"},"path":{"type":"string","title":"Path","description":"Dot path under location, e.g. pricing.wdf.base_wash_dry_fold_per_lb_usd"},"value":{"title":"Value"},"editor":{"type":"string","title":"Editor","default":"owner"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["location_slug","path","value"],"title":"KnowledgePatchBody"},"ListenBody":{"properties":{"store":{"type":"string","title":"Store","default":"south-ankeny"},"leg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leg"},"wrong_only":{"type":"boolean","title":"Wrong Only","default":false},"item_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Item Ids"},"max_items":{"type":"integer","title":"Max Items","default":20}},"type":"object","title":"ListenBody","description":"Build two-voice Listen playlist for filtered items."},"LiveTalkTokenBody":{"properties":{"store":{"type":"string","title":"Store","default":"south-ankeny"}},"type":"object","title":"LiveTalkTokenBody","description":"Mint LiveKit room for portal Live Talk (no SIP)."},"MarkBody":{"properties":{"result":{"type":"string","enum":["pass","fail"],"title":"Result"},"call_id":{"type":"string","title":"Call Id","default":""},"editor":{"type":"string","title":"Editor","default":"owner"}},"type":"object","required":["result"],"title":"MarkBody","description":"Owner mark pass/fail."},"OwnerLdapVerifyBody":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"OwnerLdapVerifyBody"},"OwnerReviewVerdictRequest":{"properties":{"item_id":{"type":"string","maxLength":128,"minLength":1,"title":"Item Id"},"action":{"type":"string","enum":["approved","correct","incorrect","labeled","rejected","skip"],"title":"Action"},"correction":{"type":"string","maxLength":10000,"title":"Correction","default":""},"notes":{"type":"string","maxLength":10000,"title":"Notes","default":""},"gender":{"type":"string","maxLength":64,"title":"Gender","default":""},"accent":{"type":"string","maxLength":256,"title":"Accent","default":""}},"type":"object","required":["item_id","action"],"title":"OwnerReviewVerdictRequest","description":"One explicit owner review action from the portal."},"PaOutboundBody":{"properties":{"to_e164":{"type":"string","maxLength":20,"minLength":8,"title":"To E164"},"brief":{"type":"string","maxLength":2000,"minLength":1,"title":"Brief"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"step_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Step Id"},"ring_timeout_s":{"type":"integer","maximum":60.0,"minimum":10.0,"title":"Ring Timeout S","default":40},"brief_owner":{"type":"boolean","title":"Brief Owner","default":false},"amd":{"type":"boolean","title":"Amd","default":true},"persona":{"anyOf":[{"type":"string","pattern":"^(rachel)?$"},{"type":"null"}],"title":"Persona"},"ask":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Ask"},"callee_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Callee Name"},"also_dial":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":4},{"type":"null"}],"title":"Also Dial"},"dial_muted":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":4},{"type":"null"}],"title":"Dial Muted"},"defer_owner_bridge":{"type":"boolean","title":"Defer Owner Bridge","default":false},"owner_bridge_e164":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Owner Bridge E164"},"owner_bridge_muted":{"type":"boolean","title":"Owner Bridge Muted","default":true},"dtmf_sequence":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Dtmf Sequence"},"ivr_hints":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","maxItems":8},{"type":"null"}],"title":"Ivr Hints"},"owner_directed":{"type":"boolean","title":"Owner Directed","default":false},"callee_class":{"anyOf":[{"type":"string","pattern":"^(owner|customer|guest|external|staff|vendor|other)$"},{"type":"null"}],"title":"Callee Class"},"recipient_timezone":{"type":"string","maxLength":64,"minLength":1,"title":"Recipient Timezone","default":"America/Chicago"},"execute_at":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Execute At"},"owner_scheduling_override":{"type":"boolean","title":"Owner Scheduling Override","default":false},"owner_session_trust":{"anyOf":[{"type":"string","pattern":"^(verified_owner|owner_coaching|none)?$"},{"type":"null"}],"title":"Owner Session Trust"},"owner_delegation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Owner Delegation"},"wait_until_answered":{"type":"boolean","title":"Wait Until Answered","default":true},"no_voicemail":{"type":"boolean","title":"No Voicemail","default":false},"owner_message_recording_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Message Recording Id"},"owner_monitored_room":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Owner Monitored Room"},"owner_monitored_owner_identity":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Owner Monitored Owner Identity"},"verified_owner_session":{"type":"boolean","title":"Verified Owner Session","default":false},"leave_voicemail_authorized":{"type":"boolean","title":"Leave Voicemail Authorized","default":false}},"type":"object","required":["to_e164","brief"],"title":"PaOutboundBody"},"PaOwnerBriefBody":{"properties":{"task_id":{"type":"string","format":"uuid","title":"Task Id"},"to_e164":{"anyOf":[{"type":"string","maxLength":20,"minLength":8},{"type":"null"}],"title":"To E164"},"summary":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Summary"},"ring_timeout_s":{"type":"integer","maximum":60.0,"minimum":10.0,"title":"Ring Timeout S","default":40}},"type":"object","required":["task_id"],"title":"PaOwnerBriefBody"},"PatchItemBody":{"properties":{"expected_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Answer"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"owner_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Note"},"editor":{"type":"string","title":"Editor","default":"owner"}},"type":"object","title":"PatchItemBody","description":"Owner edit of expected answer / action / note."},"ProcessCallbackBody":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"callback_id":{"type":"string","format":"uuid","title":"Callback Id"}},"type":"object","required":["tenant_id","callback_id"],"title":"ProcessCallbackBody"},"PromoteBody":{"properties":{"editor":{"type":"string","title":"Editor","default":"owner"},"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"PromoteBody","description":"Insert pending learn_proposals row for FAQ promote."},"PromptPatchBody":{"properties":{"name":{"type":"string","title":"Name","description":"Prompt stem: _prefix, merle-hay, or rachel"},"content":{"type":"string","title":"Content"},"editor":{"type":"string","title":"Editor","default":"owner"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["name","content"],"title":"PromptPatchBody"},"PromptSuggestBody":{"properties":{"prompt_name":{"type":"string","title":"Prompt Name","description":"Prompt stem to target","default":"_prefix"},"lookback_hours":{"type":"integer","maximum":2000.0,"minimum":24.0,"title":"Lookback Hours","default":720}},"type":"object","title":"PromptSuggestBody"},"ProposalDecideBody":{"properties":{"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"suggested_addition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Addition"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"editor":{"type":"string","title":"Editor","default":"owner"},"note":{"type":"string","title":"Note","default":""},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","title":"ProposalDecideBody"},"RachelConfigPatchBody":{"properties":{"rachel":{"additionalProperties":true,"type":"object","title":"Rachel"}},"type":"object","title":"RachelConfigPatchBody","description":"LaundryOS rachel.* namespace patch (identity/telephony/behavior/…)."},"RachelSmsDestConfirm":{"properties":{"e164":{"type":"string","title":"E164"},"code":{"type":"string","title":"Code"}},"type":"object","required":["e164","code"],"title":"RachelSmsDestConfirm","description":"Confirm dest with the SMS code."},"RachelSmsDestStart":{"properties":{"e164":{"type":"string","title":"E164"}},"type":"object","required":["e164"],"title":"RachelSmsDestStart","description":"Start dest confirmation-code round-trip."},"RachelSmsSummaryPatch":{"properties":{"link_expiry_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Link Expiry Days"},"quiet_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Start"},"quiet_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet End"},"self_call":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Self Call"},"persona_owner_assistant":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Persona Owner Assistant"},"persona_personal_line":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Persona Personal Line"}},"type":"object","title":"RachelSmsSummaryPatch","description":"Non-dest Rachel SMS settings (dest requires verify)."},"ReceptionistPatchBody":{"properties":{"location":{"type":"string","title":"Location","description":"location slug or site slug"},"patch":{"additionalProperties":true,"type":"object","title":"Patch"}},"type":"object","required":["location"],"title":"ReceptionistPatchBody"},"RepairStatusIn":{"properties":{"status":{"type":"string","pattern":"^(open|in-repair|repaired)$","title":"Status"},"fix":{"type":"string","title":"Fix","default":""},"pr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pr"},"pr_repo":{"type":"string","title":"Pr Repo","default":"voicecore"},"merged_at":{"type":"string","title":"Merged At","default":""},"build":{"type":"string","title":"Build","default":""},"merge_sha":{"type":"string","title":"Merge Sha","default":""}},"type":"object","required":["status"],"title":"RepairStatusIn","description":"Repair status flip — does not restore by itself.\n\nFixed stamps (fix / pr / merged_at / build) are optional. Missing\nfields stay blank and the UI shows Incomplete stamp. Never invent\na PR or default build to the live worker SHA."},"RunItemBody":{"properties":{"item_id":{"type":"string","title":"Item Id"},"result":{"type":"string","enum":["pass","fail","skip"],"title":"Result","default":"fail"},"transcript":{"type":"string","title":"Transcript","default":""},"stt":{"type":"string","title":"Stt","default":""},"runtime_source":{"type":"string","title":"Runtime Source","default":""}},"type":"object","required":["item_id"],"title":"RunItemBody","description":"One graded item inside a run batch."},"RunTaskBody":{"properties":{"brief_owner":{"type":"boolean","title":"Brief Owner","default":true},"amd":{"type":"boolean","title":"Amd","default":true},"ring_timeout_s":{"type":"integer","maximum":60.0,"minimum":10.0,"title":"Ring Timeout S","default":40},"max_steps":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Steps","default":20},"step_timeout_s":{"type":"number","maximum":1800.0,"minimum":60.0,"title":"Step Timeout S","default":600.0},"stop_on_step_failure":{"type":"boolean","title":"Stop On Step Failure","default":false},"authorized_by_inbound":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Authorized By Inbound"},"background":{"type":"boolean","title":"Background","default":false}},"type":"object","title":"RunTaskBody"},"RunsBody":{"properties":{"store":{"type":"string","title":"Store","default":"south-ankeny"},"channel":{"type":"string","enum":["pstn_canary","live_talk","owner_mark"],"title":"Channel","default":"owner_mark"},"call_id":{"type":"string","title":"Call Id","default":""},"live_talk_room":{"type":"string","title":"Live Talk Room","default":""},"results":{"items":{"$ref":"#/components/schemas/RunItemBody"},"type":"array","title":"Results"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","title":"RunsBody","description":"Canary or live-talk grade batch."},"SeedBody":{"properties":{"store":{"type":"string","title":"Store","default":"south-ankeny"},"script_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Script Path"}},"type":"object","title":"SeedBody","description":"Idempotent seed from FULL canary markdown."},"SessionBody":{"properties":{"call_id":{"type":"string","format":"uuid","title":"Call Id"},"opened_by":{"type":"string","maxLength":256,"minLength":1,"title":"Opened By"},"actor_role":{"type":"string","enum":["owner","manager"],"title":"Actor Role","default":"owner"}},"type":"object","required":["call_id","opened_by"],"title":"SessionBody","description":"Open a correction session for provenance grouping."},"SettingsPatch":{"properties":{"llm_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Model","description":"Gateway alias: voice|fast|best|deep|plan"},"fallback_llm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Llm"},"transfer_policy":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transfer Policy","description":"Transfer Advanced Mode policy (mode, caller_confirm, amd_prefilter, …)"}},"type":"object","title":"SettingsPatch"},"StaffLegLearnBody":{"properties":{"lookback_hours":{"type":"integer","maximum":720.0,"minimum":24.0,"title":"Lookback Hours","default":168},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":25},"dry_run":{"type":"boolean","title":"Dry Run","description":"Default dry-run — set false to write pending proposals","default":true}},"type":"object","title":"StaffLegLearnBody"},"StoreFlagOverrideRequest":{"properties":{"flag":{"type":"string","title":"Flag"},"location_ref":{"type":"string","title":"Location Ref"},"desired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Desired"},"reason":{"type":"string","maxLength":500,"title":"Reason","default":""},"confirmed":{"type":"boolean","title":"Confirmed","default":false},"actor":{"type":"string","maxLength":120,"title":"Actor","default":"owner"}},"type":"object","required":["flag","location_ref"],"title":"StoreFlagOverrideRequest","description":"Per-store U2 override. desired=null clears to inherit fleet."},"ToolExecuteRequest":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"tenant_slug":{"type":"string","title":"Tenant Slug","default":"laundryplace"},"tool":{"type":"string","title":"Tool"},"args":{"additionalProperties":true,"type":"object","title":"Args"},"call_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Call Id"},"location_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Ref"},"e164_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"E164 From"}},"type":"object","required":["tenant_id","tool"],"title":"ToolExecuteRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}