{"openapi":"3.1.0","info":{"title":"CtrlLane API","version":"1.4.0","description":"Create agents, inspect Data Sources, connect WhatsApp automation, run outbound voice calls and campaigns, and read call reports."},"servers":[{"url":"https://app.ctrllane.com"}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"CtrlLane API key"}},"schemas":{"VoiceCallStatus":{"type":"string","enum":["queued","ringing","answered","cancelling","completed","no_answer","busy","failed","cancelled"],"description":"cancelling is a durable, non-terminal hangup request awaiting carrier confirmation."},"VoiceCallEndActor":{"type":["string","null"],"enum":["customer","agent","operator","system","provider","unknown",null]},"VoiceCallSummary":{"type":"object","required":["id","status","calleeNumber","durationSeconds","recordingAvailable","transcriptAvailable","createdAt","chargedMicrocredits"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/VoiceCallStatus"},"agentName":{"type":["string","null"]},"campaignName":{"type":["string","null"]},"contactId":{"type":["string","null"],"format":"uuid"},"contactName":{"type":["string","null"]},"sourceName":{"type":["string","null"]},"callData":{"type":"object","additionalProperties":{"type":"string"}},"calleeNumber":{"type":"string","description":"E.164 destination."},"durationSeconds":{"type":"integer","minimum":0},"startedAt":{"type":["string","null"],"format":"date-time"},"endedAt":{"type":["string","null"],"format":"date-time"},"recordingAvailable":{"type":"boolean"},"transcriptAvailable":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"chargedMicrocredits":{"type":"integer","minimum":0},"endedBy":{"$ref":"#/components/schemas/VoiceCallEndActor"},"endReason":{"type":["string","null"]}}},"VoiceCallStartResult":{"type":"object","required":["callId","destination","status"],"properties":{"callId":{"type":"string","format":"uuid"},"destination":{"type":"string"},"status":{"$ref":"#/components/schemas/VoiceCallStatus"}}},"VoiceCallResolvedContext":{"type":"object","required":["destination","values","contactRequired"],"properties":{"destination":{"type":"string","description":"Resolved E.164 mobile number."},"values":{"type":"object","additionalProperties":{"type":"string"}},"contactRequired":{"type":"boolean"}}},"VoiceCallCancellation":{"type":"object","required":["callId","status"],"properties":{"callId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["cancelling","cancelled"]}}},"VoiceCallListResponse":{"type":"object","required":["calls","nextCursor"],"properties":{"calls":{"type":"array","items":{"$ref":"#/components/schemas/VoiceCallSummary"}},"nextCursor":{"type":["string","null"]}}},"VoiceCallDetailResponse":{"type":"object","required":["call","transcript"],"properties":{"call":{"$ref":"#/components/schemas/VoiceCallSummary"},"transcript":{"type":"array","items":{"$ref":"#/components/schemas/VoiceTranscriptTurn"}},"recordingUrl":{"type":"string","format":"uri","description":"Sensitive signed URL that expires after five minutes."},"recordingDownloadUrl":{"type":"string","format":"uri","description":"Sensitive signed attachment URL that expires after five minutes."},"recordingFilename":{"type":"string","description":"Safe .opus or legacy .wav filename."}}},"VoiceTranscriptTurn":{"type":"object","required":["speaker","text","createdAt"],"properties":{"speaker":{"type":"string","enum":["customer","assistant","human"]},"text":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"audioOffsetMs":{"type":["integer","null"],"minimum":0},"audioEndOffsetMs":{"type":["integer","null"],"minimum":0}}},"ApiSuccess":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"type":"object"},"meta":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"}}}}},"ApiError":{"type":"object","required":["ok","error","meta"],"properties":{"ok":{"const":false},"error":{"type":"object","required":["code","message","category","retryable","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"category":{"type":"string"},"retryable":{"type":"boolean"},"requestId":{"type":"string","format":"uuid"}}},"meta":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"}}}}},"DataSourceVariable":{"type":"object","required":["sourceId","fieldKey","alias"],"additionalProperties":false,"properties":{"sourceId":{"type":"string","format":"uuid"},"fieldKey":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_]{0,63}$"},"alias":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_]{0,63}$"}}},"VoiceSettings":{"type":"object","additionalProperties":false,"properties":{"liveVoiceId":{"type":"string","description":"Provider-neutral voice selection returned by the console."},"language":{"type":"string"},"agentGender":{"type":"string","enum":["male","female"]},"backgroundNoiseKey":{"type":"string"},"backgroundNoiseLevelPercent":{"type":"integer","minimum":50,"maximum":1000,"multipleOf":50,"default":300},"firstGreeting":{"type":"string","description":"Maximum 30 words. May contain declared {{variables}}."},"allowGreetingInterrupt":{"type":"boolean","default":false},"nudgeAfterSilenceSeconds":{"type":"number","default":12},"disconnectAfterSilenceSeconds":{"type":"number"},"maxCallDurationSeconds":{"type":"number"},"repeatInterruptedSentence":{"type":"boolean"}}},"AgentCreate":{"type":"object","required":["businessId","channel","name","instructions"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"channel":{"type":"string","enum":["whatsapp","sms","voice","instagram","other"]},"name":{"type":"string","minLength":1},"instructions":{"type":"string","minLength":1,"description":"Maximum 20,000 words."},"languageCode":{"type":"string","default":"en"},"dataSourceIds":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uuid"}},"contactCategoryIds":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uuid"}},"dataSourceVariables":{"type":"array","items":{"$ref":"#/components/schemas/DataSourceVariable"}},"voiceSettings":{"$ref":"#/components/schemas/VoiceSettings"},"instagramCollectMobileEnabled":{"type":"boolean","default":true,"description":"Instagram only. Ask naturally for a mobile number and invoke the tenant-scoped contact-capture tool when supplied."},"assignment":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"properties":{"phoneNumberId":{"type":"string"},"providerAccountId":{"type":"string","description":"Instagram professional account ID when channel=instagram."},"autoReplyEnabled":{"type":"boolean","default":true},"humanHandoffActive":{"type":"boolean","default":false}}}]}}},"AgentUpdate":{"type":"object","required":["businessId","agentId","channel","name","instructions"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"channel":{"type":"string","enum":["whatsapp","sms","voice","instagram","other"]},"name":{"type":"string","minLength":1,"maxLength":120},"instructions":{"type":"string","minLength":1,"description":"Maximum 20,000 words."},"languageCode":{"type":"string","default":"en"},"dataSourceIds":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uuid"}},"contactCategoryIds":{"type":"array","uniqueItems":true,"items":{"type":"string","format":"uuid"}},"dataSourceVariables":{"type":"array","items":{"$ref":"#/components/schemas/DataSourceVariable"}},"voiceSettings":{"$ref":"#/components/schemas/VoiceSettings"},"instagramCollectMobileEnabled":{"type":"boolean","default":true}}},"BusinessAgentMutation":{"type":"object","required":["businessId","agentId"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"}}},"ChannelAssignment":{"type":"object","required":["businessId","channel"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"channel":{"type":"string","enum":["whatsapp","sms","voice","instagram","other"]},"phoneNumberId":{"type":"string"},"providerAccountId":{"type":"string","description":"Instagram professional account ID when channel=instagram."},"aiAgentId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"autoReplyEnabled":{"type":"boolean","default":false},"humanHandoffActive":{"type":"boolean","default":false}}},"ContractWebhookSubscription":{"oneOf":[{"type":"object","required":["businessId","phoneNumberId","channel","callbackUrl","events","externalAutomation"],"properties":{"businessId":{"type":"string","format":"uuid"},"phoneNumberId":{"type":"string"},"channel":{"const":"whatsapp"},"callbackUrl":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["whatsapp.message.received","whatsapp.message.sent","whatsapp.message.delivered","whatsapp.message.read","whatsapp.message.failed"]}},"externalAutomation":{"const":true}}},{"type":"object","required":["businessId","providerAccountId","channel","callbackUrl","events","externalAutomation"],"properties":{"businessId":{"type":"string","format":"uuid"},"providerAccountId":{"type":"string"},"channel":{"const":"instagram"},"callbackUrl":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["instagram.message.received","instagram.message.sent","instagram.message.seen","instagram.message.reaction","instagram.message.referral","instagram.message.failed","instagram.comment.received","instagram.comment.replied","instagram.comment.failed"]}},"externalAutomation":{"const":true}}}]},"WebhookSubscriptionUpdate":{"type":"object","required":["businessId"],"minProperties":2,"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"callbackUrl":{"type":"string","format":"uri"},"events":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["whatsapp.message.received","whatsapp.message.sent","whatsapp.message.delivered","whatsapp.message.read","whatsapp.message.failed","instagram.message.received","instagram.message.sent","instagram.message.seen","instagram.message.reaction","instagram.message.referral","instagram.message.failed","instagram.comment.received","instagram.comment.replied","instagram.comment.failed"]}},"status":{"type":"string","enum":["active","paused"]}}},"BusinessMutation":{"type":"object","required":["businessId"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"}}},"WhatsAppMessageDeliveryState":{"type":"object","required":["messageId","businessId","recipient","type","status","taskStatus","queuedAt"],"properties":{"messageId":{"type":"string","format":"uuid"},"businessId":{"type":"string","format":"uuid"},"conversationId":{"type":["string","null"],"format":"uuid"},"phoneNumberId":{"type":["string","null"]},"recipient":{"type":"string"},"type":{"type":"string"},"status":{"type":"string","enum":["queued","submitted","accepted","sent","delivered","read","failed"]},"taskStatus":{"type":"string"},"providerMessageId":{"type":["string","null"]},"providerStatus":{"type":["string","null"]},"queuedAt":{"type":"string","format":"date-time"},"sentAt":{"type":["string","null"],"format":"date-time"},"deliveredAt":{"type":["string","null"],"format":"date-time"},"readAt":{"type":["string","null"],"format":"date-time"},"failedAt":{"type":["string","null"],"format":"date-time"},"failure":{"anyOf":[{"type":"null"},{"type":"object","properties":{"code":{"type":["string","null"]},"message":{"type":["string","null"]}}}]}}},"ContractMediaUpload":{"type":"object","required":["businessId","phoneNumberId","mediaType","mimeType","fileName","contentBase64"],"properties":{"businessId":{"type":"string","format":"uuid"},"channel":{"const":"whatsapp"},"phoneNumberId":{"type":"string"},"mediaType":{"const":"image"},"mimeType":{"type":"string"},"fileName":{"type":"string"},"contentBase64":{"type":"string","description":"Canonical base64 image bytes."},"clientAssetId":{"type":"string"}}},"ContractMessage":{"oneOf":[{"type":"object","required":["businessId","phoneNumberId","to","type"],"properties":{"businessId":{"type":"string","format":"uuid"},"channel":{"const":"whatsapp"},"phoneNumberId":{"type":"string"},"to":{"type":"string","description":"E.164 recipient phone number."},"type":{"type":"string","enum":["text","image"]},"text":{"type":"string"},"mediaId":{"type":"string"},"caption":{"type":"string"},"clientAssetId":{"type":"string"}}},{"type":"object","required":["businessId","channel","instagramAccountId","to","type","text"],"additionalProperties":false,"properties":{"businessId":{"type":"string","format":"uuid"},"channel":{"const":"instagram"},"instagramAccountId":{"type":"string"},"to":{"type":"string","description":"Instagram-scoped recipient user ID. The user must have initiated the conversation."},"type":{"const":"text"},"text":{"type":"string"}}}]},"VoiceCallStart":{"type":"object","required":["businessId","agentId"],"properties":{"businessId":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid","description":"Active Voice Call agent."},"contactId":{"type":"string","format":"uuid","description":"Contact target. Resolves declared variables once."},"toNumber":{"type":"string","pattern":"^\\+[1-9][0-9]{7,14}$","description":"Direct E.164 target when no contact context is required."},"testVariables":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Optional bounded variables for console and integration test calls."}},"oneOf":[{"required":["contactId"]},{"required":["toNumber"]}]},"VoiceCallBatchStart":{"type":"object","required":["businessId","agentId","contactIds"],"properties":{"businessId":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid","description":"Active Voice Call agent."},"contactIds":{"type":"array","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","format":"uuid"}}}}}},"paths":{"/api/v1/contracts/whatsapp-automation":{"get":{"operationId":"contracts.whatsappAutomation.read","summary":"Read WhatsApp automation contract","description":"Return the public WhatsApp automation contract version and emitted event types.","security":[],"x-connected-push-scopes":[],"x-connected-push-idempotency":"none","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/webhook-subscriptions":{"get":{"operationId":"webhookSubscriptions.list","summary":"List webhook subscriptions","description":"List tenant-scoped WhatsApp and Instagram webhook subscriptions without exposing signing secrets.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["webhooks:write"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"webhookSubscriptions.create","summary":"Create webhook subscription","description":"Subscribe an external automation backend to signed WhatsApp or Instagram messaging events.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["webhooks:write","channels:write"],"x-connected-push-idempotency":"none","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractWebhookSubscription"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/webhook-subscriptions/{subscriptionId}":{"patch":{"operationId":"webhookSubscriptions.update","summary":"Update webhook subscription","description":"Update callback URL, subscribed events, or active/paused state for a tenant-owned subscription.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["webhooks:write"],"x-connected-push-idempotency":"none","parameters":[{"name":"subscriptionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionUpdate"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"webhookSubscriptions.revoke","summary":"Revoke webhook subscription","description":"Permanently revoke a tenant-owned webhook subscription.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["webhooks:write"],"x-connected-push-idempotency":"none","parameters":[{"name":"subscriptionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/webhook-subscriptions/{subscriptionId}/rotate-secret":{"post":{"operationId":"webhookSubscriptions.rotateSecret","summary":"Rotate webhook signing secret","description":"Replace the signing secret immediately and return the new secret once.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["webhooks:write"],"x-connected-push-idempotency":"none","parameters":[{"name":"subscriptionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessMutation"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/media":{"post":{"operationId":"media.upload","summary":"Upload contract media","description":"Upload canonical base64 image bytes to Meta WhatsApp Media API and cache the provider media id.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["whatsapp:media"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractMediaUpload"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/messages":{"post":{"operationId":"messages.send","summary":"Send contract message","description":"Queue a WhatsApp or Instagram message through CtrlLane.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["communications:write"],"x-connected-push-idempotency":"required","x-connected-push-conditional-scopes":"WhatsApp image messages also require whatsapp:media; Instagram requires instagram:write.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractMessage"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/messages/{messageId}":{"get":{"operationId":"messages.read","summary":"Read message delivery status","description":"Read authoritative message delivery state and provider timestamps.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["communications:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"messageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/WhatsAppMessageDeliveryState"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/WhatsAppMessageDeliveryState"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/WhatsAppMessageDeliveryState"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/channels":{"get":{"operationId":"channels.list","summary":"List channels","description":"List channel keys, labels, live readiness, and assignment mode. WhatsApp and outbound Voice are live.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["channels:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/channels/instagram":{"get":{"operationId":"instagramConnection.read","summary":"Read Instagram connection","description":"Read tenant-scoped Instagram professional account connection metadata without exposing its token.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["channels:read","instagram:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"instagramConnection.revoke","summary":"Disconnect Instagram","description":"Revoke CtrlLane use of the tenant Instagram connection and clear provider account assets.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["channels:write","instagram:write"],"x-connected-push-idempotency":"none","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessMutation"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/agents":{"get":{"operationId":"agents.list","summary":"List agents","description":"List business agents, stable reference names, and channel mapping.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["agents:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"agents.create","summary":"Create agent","description":"Create an agent for WhatsApp, SMS, Voice, or Other. Attach Data Sources, contact categories, declared variables, and provider-neutral voice settings. WhatsApp can be assigned during creation.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["agents:write"],"x-connected-push-idempotency":"required","x-connected-push-conditional-scopes":"Creating a WhatsApp assignment also requires channels:write.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreate"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"agents.update","summary":"Update agent","description":"Update a tenant-owned agent using the same channel, prompt, Data Source, and voice-settings contract as creation.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["agents:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdate"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"agents.delete","summary":"Archive agent","description":"Archive a tenant-owned agent so it can no longer be selected for new conversations.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["agents:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessAgentMutation"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/data-sources":{"get":{"operationId":"dataSources.list","summary":"List Data Sources","description":"List the business's structured and unstructured Data Sources, including fields explicitly available for contact variables.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"dataSources.create","summary":"Create Data Source","description":"Create a tenant structured table/JSON source or unstructured text Data Source.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"dataSources.update","summary":"Update Data Source","description":"Update Data Source metadata, status, or unstructured content.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"dataSources.delete","summary":"Archive Data Source","description":"Archive a tenant Data Source.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/data-sources/upload":{"post":{"operationId":"dataSources.upload","summary":"Upload Data Source","description":"Upload a CSV, TSV, JSON, XLSX, or XLSM asset for lossless asynchronous ingestion into an immutable version.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/data-sources/ingestions":{"get":{"operationId":"dataSources.versions.read","summary":"Inspect Data Source Versions","description":"Inspect ingestion stages, immutable version status, validation issues, and columns requiring review.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"dataSources.versions.update","summary":"Resolve Data Source Validation","description":"Submit reviewed column interpretations and atomically activate the validated version.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["data_sources:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/contacts":{"get":{"operationId":"contacts.list","summary":"List contacts","description":"List mobile-first tenant contacts with categories and communication rollups.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"contacts.create","summary":"Create contact","description":"Create one mobile-first contact in a tenant-owned category.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"contacts.deleteMany","summary":"Delete contacts","description":"Delete selected tenant contacts or every contact in a tenant category.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/contacts/imports":{"post":{"operationId":"contacts.import","summary":"Import contacts","description":"Import structured CSV contact data into one or more tenant categories.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/contacts/categories":{"get":{"operationId":"contactCategories.list","summary":"List contact categories","description":"List tenant contact categories with cursor pagination and contact counts.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"contactCategories.create","summary":"Create contact category","description":"Create a tenant contact category.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"contactCategories.delete","summary":"Delete contact category","description":"Delete a tenant category after explicit name confirmation.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/contacts/{contactId}":{"get":{"operationId":"contacts.read","summary":"Read contact","description":"Read one contact with categories and per-channel activity rollups. When campaignId is supplied, include that campaign's shared contact summary.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:read"],"x-connected-push-idempotency":"none","x-connected-push-conditional-scopes":"Reading campaignSummary with campaignId also requires communications:read.","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"campaignId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"contacts.update","summary":"Update contact","description":"Update one contact, category membership, and communication-blocked state.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/contacts/{contactId}/timeline":{"get":{"operationId":"contacts.timeline","summary":"Read contact communication timeline","description":"Read a bounded cross-channel timeline of messages, transcripts, and call outcomes, optionally limited to one campaign. Recording content requires voice:read through the call API.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["communications:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"contactId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"campaignId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"Opaque cursor returned as nextCursor by the previous page."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/channel-participants/{participantId}/link-contact":{"post":{"operationId":"channelParticipants.linkContact","summary":"Link social participant to contact","description":"Resolve a mobile-first contact and link the participant's prior channel history without OTP verification.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["contacts:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"participantId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/channels/assignments":{"get":{"operationId":"channelAssignments.read","summary":"Read channel assignment","description":"Read WhatsApp phone-number assignment state and assignable agents.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["channels:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"channel","in":"query","required":true,"schema":{"type":"string","enum":["whatsapp","sms","voice","other"]}},{"name":"phoneNumberId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"channelAssignments.update","summary":"Assign agent","description":"Assign a WhatsApp agent to the connected Meta phone number.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["channels:write"],"x-connected-push-idempotency":"none","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelAssignment"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/voice/calls":{"get":{"operationId":"voiceCalls.list","summary":"List voice call reports","description":"Cursor-paginated outbound calls with immutable call IDs, status, duration, charge, transcript and recording availability, plus canonical end attribution.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/VoiceCallStatus"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallListResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallListResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallListResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"voiceCalls.create","summary":"Start voice call","description":"Start one outbound call with an active Voice Call agent. Choose exactly one target: a scoped contact or a direct E.164 number.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCallStart"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallStartResult"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallStartResult"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallStartResult"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/voice/calls/batch":{"post":{"operationId":"voiceCalls.createBatch","summary":"Start voice call batch","description":"Start calls for 1-20 scoped contacts through the same canonical call service. Each contact resolves its own declared variables and receives an independent billing reservation.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCallBatchStart"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/voice/calls/resolve":{"get":{"operationId":"voiceCalls.resolveContact","summary":"Resolve contact call context","description":"Resolve the selected agent's allowlisted contact variables and destination before placement. This endpoint exposes contact data and therefore requires both voice and contact read scopes.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:read","contacts:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"agentId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"contactId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallResolvedContext"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallResolvedContext"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallResolvedContext"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/voice/calls/{callId}":{"get":{"operationId":"voiceCalls.read","summary":"Read voice call report","description":"Return one canonical call report with who ended the call, timestamp-ordered transcript, and a short-lived recording URL when the recording is ready.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"callId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"live","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallDetailResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallDetailResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallDetailResponse"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"delete":{"operationId":"voiceCalls.cancel","summary":"Cancel voice call","description":"Durably request cancellation of a queued, ringing, or answered call. Carrier-backed calls remain cancelling until the carrier confirms a terminal result.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"callId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallCancellation"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallCancellation"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["ok","data","meta"],"properties":{"ok":{"const":true},"data":{"$ref":"#/components/schemas/VoiceCallCancellation"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string","format":"uuid"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/voice/calls/{callId}/transcript":{"get":{"operationId":"voiceCalls.transcript.download","summary":"Download voice call transcript","description":"Download the canonical timestamped call transcript as UTF-8 plain text with an attachment filename.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["voice:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"callId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"type":"string"}}}},"201":{"description":"Created","content":{"text/plain":{"schema":{"type":"string"}}}},"202":{"description":"Accepted","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns":{"get":{"operationId":"campaigns.list","summary":"List campaigns","description":"List channel-neutral campaigns and their latest Voice, WhatsApp, or SMS iteration.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"campaigns.create","summary":"Create campaign","description":"Create one campaign objective with an initial channel-specific iteration and immutable audience membership.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}":{"get":{"operationId":"campaigns.read","summary":"Read campaign","description":"Read one tenant-owned campaign and its current iteration.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"patch":{"operationId":"campaigns.control","summary":"Control campaign","description":"Start, pause, or cancel the current campaign iteration.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}/iterations":{"get":{"operationId":"campaigns.iterations.list","summary":"List campaign iterations","description":"List ordered channel-specific runs under a stable campaign ID.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"campaigns.iterations.create","summary":"Create campaign iteration","description":"Select contacts from prior outcomes and create a Voice or WhatsApp iteration without creating another campaign.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:write"],"x-connected-push-idempotency":"required","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}/memberships":{"get":{"operationId":"campaigns.memberships.list","summary":"List campaign memberships","description":"List immutable per-contact iteration membership and outcome history.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read","contacts:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}/activities":{"get":{"operationId":"campaigns.activities.list","summary":"List campaign activities","description":"List attributed calls and messages newest first with contact, iteration, status, call duration, and activity time. Filter by contact, iteration, channel, or status.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read","communications:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"contactId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"iterationId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["voice_call","whatsapp","sms"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}/summary-runs":{"get":{"operationId":"campaigns.summaryRuns.list","summary":"List campaign summary runs","description":"List append-only AI summary runs and their assessment progress for a campaign.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read","communications:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"post":{"operationId":"campaigns.summaryRuns.create","summary":"Estimate or confirm campaign summary","description":"Calculate a maximum AI assessment charge or confirm that exact estimate before processing.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:write","communications:read"],"x-connected-push-idempotency":"required","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[\\x21-\\x7E]+$"},"description":"Stable operation id. Use 1-512 visible ASCII characters, no whitespace/control characters. Exact same key+body replays the original response; same key with a different body returns 409 idempotency_key_conflict."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/campaigns/{campaignId}/exports":{"get":{"operationId":"campaigns.exports.read","summary":"Download campaign CSV","description":"Stream one campaign conclusion per unique contact with the columns Contact, AI Summary, and Next Action.","security":[{"bearerApiKey":[]}],"x-connected-push-scopes":["campaigns:read","communications:read","contacts:read"],"x-connected-push-idempotency":"none","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"businessId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"summaryRunId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"type":"string"}}}},"201":{"description":"Created","content":{"text/plain":{"schema":{"type":"string"}}}},"202":{"description":"Accepted","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Provider failure","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}