{"openapi": "3.1.0", "info": {"title": "Clover API", "version": "1.0.0", "description": "API for external integrations"}, "paths": {"/api/oauth/token": {"post": {"operationId": "apps_api_api_oauth_router_issue_token", "summary": "OAuth 2.0 token endpoint (client_credentials grant)", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuthTokenResponse"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuthErrorResponse"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OAuthErrorResponse"}}}}}, "description": "Exchange client credentials for a short-lived access token.\n\nRequest (``application/x-www-form-urlencoded``):\n    grant_type=client_credentials&client_id=...&client_secret=...\n\nReturns a signed JWT carrying the client's granted scopes.", "tags": ["OAuth"], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"title": "FormParams", "type": "object", "properties": {"grant_type": {"title": "Grant Type", "type": "string"}, "client_id": {"title": "Client Id", "type": "string"}, "client_secret": {"title": "Client Secret", "type": "string"}}, "required": ["grant_type", "client_id", "client_secret"]}}}, "required": true}}}, "/api/v1/health": {"get": {"operationId": "apps_api_api_router_health_check", "summary": "Health check", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HealthCheckResponse"}}}}}, "description": "Health check endpoint for load balancers.\n\nNo authentication required.", "tags": ["API v1"]}}, "/api/v1/members/lookup": {"post": {"operationId": "apps_api_api_router_lookup_member", "summary": "Look up member by identifier", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberLookupResponse"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "Look up a member by one of the supported identifier combinations:\n\n- subscriber_id only: exact match on subscriber ID\n- phone_number only: matches primary or alternate phone (digit-normalized)\n- subscriber_id + date_of_birth: both must match the same record\n\nReturns basic member information including support team and language.\n\nRequires scope: members:read\n\nNote: Uses POST to keep PHI out of URLs (compliance requirement).", "tags": ["API v1"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MemberLookupRequest"}}}, "required": true}, "security": [{"SignedRequestAuth": []}]}}, "/api/v1/ivr/config": {"get": {"operationId": "apps_business_config_api_ivr_router_get_ivr_config", "summary": "Get IVR config for Twilio", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IVRConfigResponse"}}}}}, "tags": ["IVR"], "security": [{"SignedRequestAuth": []}]}}, "/api/v1/ivr/hours/check": {"post": {"operationId": "apps_business_config_api_ivr_router_check_ivr_hours", "summary": "Check IVR hours for Twilio", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IVRCheckHoursResponse"}}}}}, "tags": ["IVR"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IVRCheckHoursRequest"}}}, "required": true}, "security": [{"SignedRequestAuth": []}]}}, "/api/v1/novologix/prior_auth": {"post": {"operationId": "apps_api_api_novologix_router_receive_prior_auth", "summary": "Receive a NovoLogix prior authorization payload", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AcceptedResponse"}}}}}, "description": "Receive a prior authorization payload from NovoLogix.\n\nRequires scope: novologix:write\n\nOnly the envelope and member id are modeled (see ``NovologixPriorAuthRequest``);\nthe auth-level body is not mapped yet. We log the *raw* request body \u2014 not\n``payload.dict()`` \u2014 so unmodeled fields are captured for inspection, since\nNinja's schema drops keys it doesn't declare even with ``extra=\"allow\"``.\nDownstream processing will be added later.", "tags": ["NovoLogix"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NovologixPriorAuthRequest"}}}, "required": true}, "security": [{"JWTScopeAuth": []}]}}, "/api/v1/novologix/notes": {"post": {"operationId": "apps_api_api_novologix_router_receive_note", "summary": "Receive a NovoLogix note payload", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AcceptedResponse"}}}}}, "description": "Receive a note from NovoLogix.\n\nRequires scope: novologix:write\n\nNotes are sent on a channel separate from the prior authorization payload\n(NovoLogix's recommended best practice). Like ``receive_prior_auth``, we log\nthe *raw* request body \u2014 not ``payload.dict()`` \u2014 so any unmodeled fields are\ncaptured for inspection. Downstream processing will be added later.", "tags": ["NovoLogix"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NovologixNoteRequest"}}}, "required": true}, "security": [{"JWTScopeAuth": []}]}}, "/api/v1/optumrx/pharmacy_txn": {"post": {"operationId": "apps_api_api_optumrx_router_receive_pharmacy_txn", "summary": "Receive an OptumRx NRT pharmacy accumulator transaction", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptumRxHandshakeResponse"}}}}}, "description": "Receive a pharmacy accumulator transaction from OptumRx (RxCLAIM).\n\nRequires scope: optumrx:write\n\nThe transaction is persisted idempotently and committed, then a pharmacy\nacknowledgement is sent back to OptumRx. The synchronous handshake below only\nconfirms receipt; if the outbound ack fails it is left pending and retried\nwhen OptumRx resends (which reuses the same stored row \u2014 no duplicate).", "tags": ["OptumRx NRT"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptumRxPharmacyTransactionRequest"}}}, "required": true}, "security": [{"JWTScopeAuth": []}]}}, "/api/v1/optumrx/medical_ack": {"post": {"operationId": "apps_api_api_optumrx_router_receive_medical_ack", "summary": "Receive an OptumRx NRT medical accumulator acknowledgement", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptumRxHandshakeResponse"}}}}}, "description": "Receive an acknowledgement for a medical accumulator claim we sent to OptumRx.\n\nRequires scope: optumrx:write\n\nThe acknowledgement is persisted idempotently and 202'd. Reconciling it\nagainst the originating medical claim happens downstream. No outbound ack is\nowed for this direction (we are the one being acknowledged).", "tags": ["OptumRx NRT"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/OptumRxMedicalAckRequest"}}}, "required": true}, "security": [{"JWTScopeAuth": []}]}}, "/api/v1/ca/voice-calls/test": {"post": {"operationId": "apps_ca_voice_calls_api_router_voice_call_test", "summary": "Place a test voice call via Sierra", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PayloadChangedResponse"}}}}, "410": {"description": "Gone", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenExpiredResponse"}}}}, "502": {"description": "Bad Gateway", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SierraDispatchFailedResponse"}}}}}, "description": "Dry-run/confirm-gated endpoint to place a Sierra voice-agent test call.\n\nRequires scope: voice_calls:write\n\nTwo possible 202 response shapes, depending on ``payload.confirmation_token``:\n\n- Dry run (``confirmation_token`` omitted)::\n\n    {\n        \"mode\": \"dry_run\",\n        \"confirmation_token\": \"<token>\",\n        \"validated_config\": {\"purpose\": ..., \"target\": {...}, \"inputs\": {...}},\n        \"sierra_request_preview\": {\n            \"url\": \"https://api.sierra.chat/playbooks/<playbook_id>/start\",\n            \"target\": \"MammogramTestTarget\",\n            \"body\": {\"idempotencyKey\": ..., \"entities\": {...}, \"events\": [...]}\n        }\n    }\n\n- Confirmed (``confirmation_token`` supplied and valid)::\n\n    {\"mode\": \"confirmed\", \"call_id\": \"<sierra call id>\", \"status\": \"dispatched\"}", "tags": ["CA Voice Calls"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VoiceCallTestRequest"}}}, "required": true}, "security": [{"JWTScopeAuth": []}]}}, "/api/v1/field-providers/auth/exchange/": {"post": {"operationId": "apps_field_api_api_auth_router_exchange", "summary": "Exchange an Okta access token for MC-issued tokens", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenPairResponse"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "Validate an Okta access token (from the iOS Native app's PKCE login) and\nmint MC's own access/refresh JWT pair scoped to the FieldProvider.", "tags": ["Field Providers", "Field API \u2014 Auth"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenExchangeRequest"}}}, "required": true}}}, "/api/v1/field-providers/auth/refresh/": {"post": {"operationId": "apps_field_api_api_auth_router_refresh", "summary": "Refresh access token", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenPairResponse"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "Rotate the refresh token and issue a new access token.", "tags": ["Field Providers", "Field API \u2014 Auth"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenRefreshRequest"}}}, "required": true}}}, "/api/v1/field-providers/me/": {"get": {"operationId": "apps_field_api_api_profile_router_me", "summary": "Current provider profile + state", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MeResponse"}}}}}, "description": "Profile + current duty status + current in-progress visit, for the iOS app\nto reconcile local state on launch/foreground.", "tags": ["Field Providers", "Field API \u2014 Profile"], "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/appointments/": {"get": {"operationId": "apps_field_api_api_appointments_router_list_appointments", "summary": "My appointments for today or tomorrow", "parameters": [{"in": "query", "name": "date", "schema": {"default": "today", "title": "Date", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AppointmentSchema"}, "title": "Response", "type": "array"}}}}}, "description": "``date`` is ``today`` (default) or ``tomorrow`` \u2014 a non-PHI query param, so\nGET is fine. Excludes CareLink-deleted appointments.", "tags": ["Field Providers", "Field API \u2014 Appointments"], "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/appointments/{appointment_id}/": {"get": {"operationId": "apps_field_api_api_appointments_router_get_appointment", "summary": "Single appointment detail", "parameters": [{"in": "path", "name": "appointment_id", "schema": {"title": "Appointment Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppointmentSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "``appointment_id`` is MC's opaque UUID, never a CareLink or patient ID.", "tags": ["Field Providers", "Field API \u2014 Appointments"], "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/duty/": {"post": {"operationId": "apps_field_api_api_duty_router_change_duty", "summary": "Report on/off duty change", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DutyChangeResponse"}}}}}, "description": "Records a duty transition. Idempotent on ``client_event_id`` \u2014 a retry with\nthe same key returns the existing event rather than creating a duplicate.", "tags": ["Field Providers", "Field API \u2014 Duty"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DutyChangeRequest"}}}, "required": true}, "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/location/pings/": {"post": {"operationId": "apps_field_api_api_location_router_report_pings", "summary": "Report a batch of location pings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationPingBatchResponse"}}}}}, "description": "Bulk-inserts pings, ignoring any whose ``client_event_id`` already exists\n(safe idempotent replay of a queued batch). Then publishes the batch to the\nlive-map SSE channel.", "tags": ["Field Providers", "Field API \u2014 Location"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationPingBatchRequest"}}}, "required": true}, "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/appointments/{appointment_id}/start/": {"post": {"operationId": "apps_field_api_api_visit_router_start_visit", "summary": "Start a visit", "parameters": [{"in": "path", "name": "appointment_id", "schema": {"title": "Appointment Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitTransitionResponse"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "Marks the visit in-progress. Idempotent: if the visit already started (or\ncompleted), returns the existing state rather than erroring.", "tags": ["Field Providers", "Field API \u2014 Visits"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitTransitionRequest"}}}, "required": true}, "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/field-providers/appointments/{appointment_id}/complete/": {"post": {"operationId": "apps_field_api_api_visit_router_complete_visit", "summary": "Complete a visit", "parameters": [{"in": "path", "name": "appointment_id", "schema": {"title": "Appointment Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitTransitionResponse"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "description": "Marks the visit completed. If no visit exists yet (exit without a recorded\nentry), synthesizes a start from this same event first, so a start always\nprecedes an end. Idempotent: an already-completed visit is a no-op.", "tags": ["Field Providers", "Field API \u2014 Visits"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitTransitionRequest"}}}, "required": true}, "security": [{"FieldProviderJWTAuth": []}]}}, "/api/v1/it-helpline/validate-pin": {"post": {"operationId": "apps_corporate_helpline_api_router_validate_pin_endpoint", "summary": "Validate a PIN entered on the IT Helpline IVR", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidatePinResponse"}}}}}, "description": "Returns {\"valid\": true, \"transferNumber\": \"...\"} on success (consumes the\nPIN), or just {\"valid\": false} for any failure reason \u2014 no distinct error\ncodes, by design (see PRD).", "tags": ["IT Helpline"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PinRequest"}}}, "required": true}, "security": [{"SignedRequestAuth": []}]}}, "/api/v1/it-helpline/invalidate-pin": {"post": {"operationId": "apps_corporate_helpline_api_router_invalidate_pin_endpoint", "summary": "Burn a PIN after repeated failed attempts on a call", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidatePinResponse"}}}}}, "tags": ["IT Helpline"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PinRequest"}}}, "required": true}, "security": [{"SignedRequestAuth": []}]}}}, "components": {"schemas": {"OAuthTokenResponse": {"description": "OAuth 2.0 access token response (RFC 6749 \u00a75.1).", "properties": {"access_token": {"title": "Access Token", "type": "string"}, "token_type": {"default": "Bearer", "title": "Token Type", "type": "string"}, "expires_in": {"title": "Expires In", "type": "integer"}, "scope": {"title": "Scope", "type": "string"}}, "required": ["access_token", "expires_in", "scope"], "title": "OAuthTokenResponse", "type": "object"}, "OAuthErrorResponse": {"description": "OAuth 2.0 error response (RFC 6749 \u00a75.2).", "properties": {"error": {"title": "Error", "type": "string"}}, "required": ["error"], "title": "OAuthErrorResponse", "type": "object"}, "HealthCheckResponse": {"description": "Response schema for health check.", "properties": {"status": {"title": "Status", "type": "string"}, "version": {"title": "Version", "type": "string"}}, "required": ["status", "version"], "title": "HealthCheckResponse", "type": "object"}, "MemberLookupResponse": {"description": "Response schema for member lookup endpoint.", "properties": {"lookup_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lookup Status"}, "subscriber_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Subscriber Id"}, "first_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "First Name"}, "last_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Name"}, "master_record_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Master Record Id"}, "support_team": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Support Team"}, "language_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Language Code"}, "preferred_worker_sid": {"default": "", "title": "Preferred Worker Sid", "type": "string"}}, "title": "MemberLookupResponse", "type": "object"}, "ErrorResponse": {"properties": {"detail": {"title": "Detail", "type": "string"}, "code": {"default": "error", "title": "Code", "type": "string"}}, "required": ["detail"], "title": "ErrorResponse", "type": "object"}, "MemberLookupRequest": {"description": "Request schema for unified member lookup endpoint.\n\nValid combinations:\n- subscriber_id only\n- phone_number only\n- subscriber_id + date_of_birth (both must match the same record)", "properties": {"subscriber_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Subscriber Id"}, "phone_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone Number"}, "date_of_birth": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Date Of Birth"}}, "title": "MemberLookupRequest", "type": "object"}, "IVRConfigResponse": {"properties": {"isEmergencyHoliday": {"title": "Isemergencyholiday", "type": "string"}, "memberServicePhoneNumber": {"title": "Memberservicephonenumber", "type": "string"}, "lobName": {"title": "Lobname", "type": "string"}, "mxAgentEnabled": {"title": "Mxagentenabled", "type": "boolean"}, "mxAgentThresholdPercent": {"title": "Mxagentthresholdpercent", "type": "integer"}}, "required": ["isEmergencyHoliday", "memberServicePhoneNumber", "lobName", "mxAgentEnabled", "mxAgentThresholdPercent"], "title": "IVRConfigResponse", "type": "object"}, "IVRCheckHoursResponse": {"properties": {"isHoliday": {"title": "Isholiday", "type": "string"}, "isOpen": {"title": "Isopen", "type": "string"}}, "required": ["isHoliday", "isOpen"], "title": "IVRCheckHoursResponse", "type": "object"}, "IVRCheckHoursRequest": {"properties": {"lobName": {"title": "Lobname", "type": "string"}}, "required": ["lobName"], "title": "IVRCheckHoursRequest", "type": "object"}, "AcceptedResponse": {"description": "Response schema for endpoints that accept a payload for later processing.", "properties": {"status": {"title": "Status", "type": "string"}}, "required": ["status"], "title": "AcceptedResponse", "type": "object"}, "NovologixPAStatusUpdate": {"additionalProperties": true, "description": "A single prior authorization entry within ``updatePAStatus``.\n\nOnly ``patient`` is modeled (to reach the member id). The remaining\nauth-level fields ride along as extra keys until they are mapped.", "properties": {"patient": {"anyOf": [{"$ref": "#/components/schemas/NovologixPatient"}, {"type": "null"}]}}, "title": "NovologixPAStatusUpdate", "type": "object"}, "NovologixPatient": {"additionalProperties": true, "description": "Patient block \u2014 only the member identifier is modeled for now.", "properties": {"beneficiaryId": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Beneficiaryid"}}, "title": "NovologixPatient", "type": "object"}, "NovologixPriorAuthData": {"additionalProperties": true, "description": "The ``data`` envelope of a NovoLogix prior authorization payload.", "properties": {"cagmId": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Cagmid"}, "operationType": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Operationtype"}, "updatePAStatus": {"anyOf": [{"items": {"$ref": "#/components/schemas/NovologixPAStatusUpdate"}, "type": "array"}, {"type": "null"}], "title": "Updatepastatus"}, "isMedicalPA": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Ismedicalpa"}, "paRequestType": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Parequesttype"}}, "title": "NovologixPriorAuthData", "type": "object"}, "NovologixPriorAuthRequest": {"additionalProperties": true, "description": "Request schema for the NovoLogix prior authorization endpoint.\n\nModels the envelope and member id of NovoLogix's native authorization\nextract format. Kept lenient (fields optional, extra keys allowed) because\nNovoLogix populates fields based on available data and future additions go\nthrough their standard enhancement process \u2014 neither should reject an\notherwise valid payload.", "properties": {"data": {"allOf": [{"$ref": "#/components/schemas/NovologixPriorAuthData"}], "default": {"cagmId": null, "operationType": null, "updatePAStatus": null, "isMedicalPA": null, "paRequestType": null}}}, "title": "NovologixPriorAuthRequest", "type": "object"}, "NovologixNoteAuthor": {"additionalProperties": true, "description": "Author block for a note (``createdBy``).", "properties": {"userId": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Userid"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}}, "title": "NovologixNoteAuthor", "type": "object"}, "NovologixNoteData": {"additionalProperties": true, "description": "The ``data`` envelope of a NovoLogix note payload.", "properties": {"paNumber": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Panumber"}, "noteType": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notetype"}, "noteVisibility": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notevisibility"}, "noteText": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notetext"}, "createdDate": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Createddate"}, "createdBy": {"anyOf": [{"$ref": "#/components/schemas/NovologixNoteAuthor"}, {"type": "null"}]}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}}, "title": "NovologixNoteData", "type": "object"}, "NovologixNoteRequest": {"additionalProperties": true, "description": "Request schema for the NovoLogix notes endpoint.\n\nModels NovoLogix's confirmed note contract (PA number, note type/visibility,\ntext, and authorship). Kept lenient (fields optional, extra keys allowed) for\nthe same reasons as the prior authorization payload: NovoLogix populates\nfields based on available data and future additions go through their standard\nenhancement process \u2014 neither should reject an otherwise valid payload.", "properties": {"data": {"allOf": [{"$ref": "#/components/schemas/NovologixNoteData"}], "default": {"paNumber": null, "noteType": null, "noteVisibility": null, "noteText": null, "createdDate": null, "createdBy": null, "source": null}}}, "title": "NovologixNoteRequest", "type": "object"}, "OptumRxHandshakeResponse": {"description": "Synchronous handshake returned to OptumRx (OptumRx ``HandshakeResponse``).\n\nMirrors the OptumRx NRT contract: a ``responseCode``/``responseStatus`` plus\na ``partnerCorrelationId`` that ties our stored record to OptumRx's request.", "properties": {"responseCode": {"title": "Responsecode", "type": "string"}, "responseStatus": {"title": "Responsestatus", "type": "string"}, "partnerCorrelationId": {"title": "Partnercorrelationid", "type": "string"}}, "required": ["responseCode", "responseStatus", "partnerCorrelationId"], "title": "OptumRxHandshakeResponse", "type": "object"}, "OptumRxPharmacyTransactionRequest": {"description": "Request schema for the OptumRx NRT pharmacy accumulator transaction.\n\nMirrors the OptumRx ``DefaultPharmacyTransaction`` envelope but keeps each\nsection as an open dict rather than a fully typed model: the payload is\npersisted verbatim rather than validated, so we can capture real OptumRx\ntraffic before pinning the inner schema. The two top-level keys are the fixed\ncontract; their contents pass through untouched.", "properties": {"requestContext": {"additionalProperties": true, "default": {}, "title": "Requestcontext", "type": "object"}, "pharmacyTransactionContent": {"additionalProperties": true, "default": {}, "title": "Pharmacytransactioncontent", "type": "object"}}, "title": "OptumRxPharmacyTransactionRequest", "type": "object"}, "OptumRxMedicalAckRequest": {"description": "Request schema for the OptumRx NRT medical accumulator acknowledgement.\n\nAcknowledges a medical accumulator claim we sent to OptumRx elsewhere.\nOpen-dict sections for the same reason as the pharmacy transaction above.", "properties": {"requestContext": {"additionalProperties": true, "default": {}, "title": "Requestcontext", "type": "object"}, "medicalAcknowledgementContent": {"additionalProperties": true, "default": {}, "title": "Medicalacknowledgementcontent", "type": "object"}}, "title": "OptumRxMedicalAckRequest", "type": "object"}, "PayloadChangedResponse": {"description": "Returned when a confirm request's payload no longer matches its dry-run.", "properties": {"error": {"const": "payload_changed_since_dry_run", "default": "payload_changed_since_dry_run", "title": "Error", "type": "string"}}, "title": "PayloadChangedResponse", "type": "object"}, "TokenExpiredResponse": {"description": "Returned when a confirmation token is unknown, expired, or already used.", "properties": {"error": {"const": "token_expired_or_invalid", "default": "token_expired_or_invalid", "title": "Error", "type": "string"}}, "title": "TokenExpiredResponse", "type": "object"}, "SierraDispatchFailedResponse": {"description": "Returned when Sierra dispatch fails (or is blocked by environment).", "properties": {"error": {"const": "sierra_dispatch_failed", "default": "sierra_dispatch_failed", "title": "Error", "type": "string"}, "detail": {"title": "Detail", "type": "string"}}, "required": ["detail"], "title": "SierraDispatchFailedResponse", "type": "object"}, "VoiceCallTarget": {"description": "The person or facility the test call is placed to.", "properties": {"type": {"enum": ["provider", "member"], "title": "Type", "type": "string"}, "name": {"title": "Name", "type": "string"}, "phone_number": {"title": "Phone Number", "type": "string"}}, "required": ["type", "name", "phone_number"], "title": "VoiceCallTarget", "type": "object"}, "VoiceCallTestRequest": {"description": "Request body for ``POST /api/v1/ca/voice-calls/test``.\n\n``confirmation_token`` is omitted (or null) for the initial dry-run call,\nwhich validates the payload and mints a token, and supplied on the\nfollow-up call that actually dispatches the Sierra call.", "properties": {"purpose": {"title": "Purpose", "type": "string"}, "target": {"$ref": "#/components/schemas/VoiceCallTarget"}, "inputs": {"additionalProperties": {"type": "string"}, "default": {}, "title": "Inputs", "type": "object"}, "confirmation_token": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Confirmation Token"}}, "required": ["purpose", "target"], "title": "VoiceCallTestRequest", "type": "object"}, "TokenPairResponse": {"properties": {"access": {"title": "Access", "type": "string"}, "refresh": {"title": "Refresh", "type": "string"}}, "required": ["access", "refresh"], "title": "TokenPairResponse", "type": "object"}, "TokenExchangeRequest": {"properties": {"okta_access_token": {"title": "Okta Access Token", "type": "string"}}, "required": ["okta_access_token"], "title": "TokenExchangeRequest", "type": "object"}, "TokenRefreshRequest": {"properties": {"refresh": {"title": "Refresh", "type": "string"}}, "required": ["refresh"], "title": "TokenRefreshRequest", "type": "object"}, "CurrentVisitSchema": {"properties": {"appointment_id": {"title": "Appointment Id", "type": "string"}, "status": {"title": "Status", "type": "string"}, "started_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Started At"}}, "required": ["appointment_id", "status"], "title": "CurrentVisitSchema", "type": "object"}, "MeResponse": {"properties": {"id": {"title": "Id", "type": "string"}, "okta_email": {"title": "Okta Email", "type": "string"}, "display_name": {"title": "Display Name", "type": "string"}, "provider_type": {"title": "Provider Type", "type": "string"}, "is_active": {"title": "Is Active", "type": "boolean"}, "on_duty": {"title": "On Duty", "type": "boolean"}, "current_visit": {"anyOf": [{"$ref": "#/components/schemas/CurrentVisitSchema"}, {"type": "null"}]}}, "required": ["id", "okta_email", "display_name", "provider_type", "is_active", "on_duty"], "title": "MeResponse", "type": "object"}, "AppointmentSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "scheduled_start": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Scheduled Start"}, "scheduled_end": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Scheduled End"}, "patient_name": {"title": "Patient Name", "type": "string"}, "patient_phone": {"title": "Patient Phone", "type": "string"}, "address_line1": {"title": "Address Line1", "type": "string"}, "address_line2": {"title": "Address Line2", "type": "string"}, "city": {"title": "City", "type": "string"}, "state": {"title": "State", "type": "string"}, "zip": {"title": "Zip", "type": "string"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "visit_prep_notes": {"title": "Visit Prep Notes", "type": "string"}, "appointment_classification": {"title": "Appointment Classification", "type": "string"}, "visit_medium": {"title": "Visit Medium", "type": "string"}, "carelink_confirmed": {"title": "Carelink Confirmed", "type": "boolean"}, "visit": {"anyOf": [{"$ref": "#/components/schemas/VisitStatusSchema"}, {"type": "null"}]}}, "required": ["id", "patient_name", "patient_phone", "address_line1", "address_line2", "city", "state", "zip", "visit_prep_notes", "appointment_classification", "visit_medium", "carelink_confirmed"], "title": "AppointmentSchema", "type": "object"}, "VisitStatusSchema": {"properties": {"status": {"title": "Status", "type": "string"}, "started_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Started At"}, "started_trigger": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Started Trigger"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "completed_trigger": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed Trigger"}}, "required": ["status"], "title": "VisitStatusSchema", "type": "object"}, "DutyChangeResponse": {"properties": {"id": {"title": "Id", "type": "string"}, "on_duty": {"title": "On Duty", "type": "boolean"}, "occurred_at": {"format": "date-time", "title": "Occurred At", "type": "string"}}, "required": ["id", "on_duty", "occurred_at"], "title": "DutyChangeResponse", "type": "object"}, "DutyChangeRequest": {"properties": {"on_duty": {"title": "On Duty", "type": "boolean"}, "occurred_at": {"format": "date-time", "title": "Occurred At", "type": "string"}, "client_event_id": {"title": "Client Event Id", "type": "string"}}, "required": ["on_duty", "occurred_at", "client_event_id"], "title": "DutyChangeRequest", "type": "object"}, "LocationPingBatchResponse": {"properties": {"received": {"title": "Received", "type": "integer"}, "stored": {"title": "Stored", "type": "integer"}}, "required": ["received", "stored"], "title": "LocationPingBatchResponse", "type": "object"}, "LocationPingBatchRequest": {"properties": {"pings": {"items": {"$ref": "#/components/schemas/LocationPingItem"}, "title": "Pings", "type": "array"}}, "required": ["pings"], "title": "LocationPingBatchRequest", "type": "object"}, "LocationPingItem": {"properties": {"latitude": {"title": "Latitude", "type": "number"}, "longitude": {"title": "Longitude", "type": "number"}, "accuracy_meters": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Accuracy Meters"}, "recorded_at": {"format": "date-time", "title": "Recorded At", "type": "string"}, "client_event_id": {"title": "Client Event Id", "type": "string"}}, "required": ["latitude", "longitude", "recorded_at", "client_event_id"], "title": "LocationPingItem", "type": "object"}, "VisitTransitionResponse": {"properties": {"appointment_id": {"title": "Appointment Id", "type": "string"}, "status": {"title": "Status", "type": "string"}, "started_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Started At"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}}, "required": ["appointment_id", "status"], "title": "VisitTransitionResponse", "type": "object"}, "VisitTransitionRequest": {"properties": {"trigger": {"title": "Trigger", "type": "string"}, "occurred_at": {"format": "date-time", "title": "Occurred At", "type": "string"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "client_event_id": {"title": "Client Event Id", "type": "string"}}, "required": ["trigger", "occurred_at", "client_event_id"], "title": "VisitTransitionRequest", "type": "object"}, "ValidatePinResponse": {"properties": {"valid": {"title": "Valid", "type": "boolean"}, "transferNumber": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transfernumber"}}, "required": ["valid"], "title": "ValidatePinResponse", "type": "object"}, "PinRequest": {"properties": {"pin": {"pattern": "^\\d{6}$", "title": "Pin", "type": "string"}}, "required": ["pin"], "title": "PinRequest", "type": "object"}, "InvalidatePinResponse": {"properties": {"invalidated": {"title": "Invalidated", "type": "boolean"}}, "required": ["invalidated"], "title": "InvalidatePinResponse", "type": "object"}}, "securitySchemes": {"SignedRequestAuth": {"type": "apiKey", "in": "header", "name": "X-MC2-Signature"}, "JWTScopeAuth": {"type": "http", "scheme": "bearer"}, "FieldProviderJWTAuth": {"type": "http", "scheme": "bearer"}}}, "servers": []}