{"openapi":"3.1.0","info":{"title":"AgentMailer API","version":"1.0.0","description":"Email inboxes and durable communication identities for autonomous agents."},"servers":[{"url":"https://api.agentmailer.ai"}],"security":[{"oauth2Auth":[]},{"bearerAuth":[]}],"tags":[{"name":"agent","description":"Bootstrap and approve agent identities"},{"name":"inboxes","description":"Create and manage agent inboxes"},{"name":"messages","description":"Read, send, reply to, and forward email"},{"name":"threads","description":"Read inbox conversations"},{"name":"drafts","description":"Create, update, and send drafts"},{"name":"attachments","description":"Prepare attachment uploads"},{"name":"channels","description":"Send and receive consent-bound human-channel messages"},{"name":"labels","description":"Organize messages and threads"},{"name":"lists","description":"Manage sender allow and block rules"},{"name":"pods","description":"Manage isolated tenant workspaces"},{"name":"domains","description":"Claim and inspect sending domains"},{"name":"webhooks","description":"Manage event delivery endpoints"},{"name":"events","description":"Create realtime event-stream tickets"},{"name":"billing","description":"Inspect plans and open billing flows"},{"name":"a2a","description":"Send tasks to AgentMailer identities"}],"paths":{"/v1/agent/bootstrap":{"post":{"summary":"Create an approved agent's inbox","security":[{"oauth2Auth":["inboxes:create"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:create","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapRequest"}}}},"responses":{"200":{"description":"Existing bootstrap replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapResponse"}}}},"201":{"description":"Agent identity and inbox created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapResponse"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_agent_bootstrap","description":"Create an approved agent's inbox"}},"/v1/agent/sign-up":{"post":{"summary":"Start human approval for an agent","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["human_email","username"],"properties":{"human_email":{"type":"string","format":"email"},"username":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$","minLength":3,"maxLength":48}}}}}},"responses":{"202":{"description":"Human approval requested","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending_human_approval"]},"username":{"type":"string"},"requestedEmailAddress":{"type":"string","format":"email"},"approvalUrl":{"type":"string","format":"uri"}},"required":["status","username","requestedEmailAddress","approvalUrl"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_agent_sign_up","description":"Start human approval for an agent"}},"/v1/inboxes":{"get":{"summary":"List inboxes","security":[{"oauth2Auth":["inboxes:read"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page_token","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Inbox page","content":{"application/json":{"schema":{"type":"object","properties":{"inboxes":{"type":"array","items":{"$ref":"#/components/schemas/Inbox"}},"nextPageToken":{"type":"string"}},"required":["inboxes"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes","description":"List inboxes"},"post":{"summary":"Create an inbox","security":[{"oauth2Auth":["inboxes:create"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:create","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxCreate"}}}},"responses":{"200":{"description":"Existing idempotent result","content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"$ref":"#/components/schemas/Inbox"}},"required":["inbox"]}}}},"201":{"description":"Inbox created","content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"$ref":"#/components/schemas/Inbox"}},"required":["inbox"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes","description":"Create an inbox"}},"/v1/channel-endpoints":{"get":{"summary":"List human-channel endpoints","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","responses":{"200":{"description":"Channel endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/ChannelEndpoint"}}},"required":["endpoints"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_endpoints","description":"List human-channel endpoints"},"post":{"summary":"Assign a human-channel endpoint","security":[{"oauth2Auth":["channels:write"]},{"bearerAuth":[]}],"x-required-permission":"channels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelEndpointCreate"}}}},"responses":{"201":{"description":"Channel endpoint assigned","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/ChannelEndpoint"}},"required":["endpoint"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_channel_endpoints","description":"Assign a human-channel endpoint"}},"/v1/channel-endpoints/{endpointId}":{"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","pattern":"^cep_"}}],"get":{"summary":"Get a human-channel endpoint","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","responses":{"200":{"description":"Channel endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/ChannelEndpoint"}},"required":["endpoint"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_endpoints_by_endpointId","description":"Get a human-channel endpoint"},"patch":{"summary":"Enable or disable a human-channel endpoint","security":[{"oauth2Auth":["channels:write"]},{"bearerAuth":[]}],"x-required-permission":"channels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelEndpointUpdate"}}}},"responses":{"200":{"description":"Updated channel endpoint","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/ChannelEndpoint"}},"required":["endpoint"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_channel_endpoints_by_endpointId","description":"Enable or disable a human-channel endpoint"}},"/v1/channel-conversations":{"get":{"summary":"List human-channel conversations","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpointId","in":"query","required":false,"schema":{"type":"string","pattern":"^cep_"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","closed"]}}],"responses":{"200":{"description":"Channel conversation page","content":{"application/json":{"schema":{"type":"object","properties":{"conversations":{"type":"array","items":{"$ref":"#/components/schemas/ChannelConversation"}},"nextPageToken":{"type":"string"}},"required":["conversations","nextPageToken"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_conversations","description":"List human-channel conversations"}},"/v1/channel-conversations/{conversationId}":{"parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"string","pattern":"^ccv_"}}],"get":{"summary":"Get a human-channel conversation","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","responses":{"200":{"description":"Channel conversation","content":{"application/json":{"schema":{"type":"object","properties":{"conversation":{"$ref":"#/components/schemas/ChannelConversation"}},"required":["conversation"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_conversations_by_conversationId","description":"Get a human-channel conversation"},"patch":{"summary":"Open or close a human-channel conversation","security":[{"oauth2Auth":["channels:write"]},{"bearerAuth":[]}],"x-required-permission":"channels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelConversationUpdate"}}}},"responses":{"200":{"description":"Updated channel conversation","content":{"application/json":{"schema":{"type":"object","properties":{"conversation":{"$ref":"#/components/schemas/ChannelConversation"}},"required":["conversation"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_channel_conversations_by_conversationId","description":"Open or close a human-channel conversation"}},"/v1/channel-recipient-permissions":{"get":{"summary":"List human-channel consent and opt-out state","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpointId","in":"query","required":false,"schema":{"type":"string","pattern":"^cep_"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["consented","opted_out"]}}],"responses":{"200":{"description":"Channel recipient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"array","items":{"$ref":"#/components/schemas/ChannelRecipientPermission"}},"nextPageToken":{"type":"string"}},"required":["permissions","nextPageToken"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_recipient_permissions","description":"List human-channel consent and opt-out state"}},"/v1/channel-messages":{"get":{"summary":"List human-channel messages","security":[{"oauth2Auth":["channels:read"]},{"bearerAuth":[]}],"x-required-permission":"channels:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpointId","in":"query","required":false,"schema":{"type":"string","pattern":"^cep_"}},{"name":"conversationId","in":"query","required":false,"schema":{"type":"string","pattern":"^ccv_"}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]}}],"responses":{"200":{"description":"Channel message page","content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChannelMessage"}},"nextPageToken":{"type":"string"}},"required":["messages","nextPageToken"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_channel_messages","description":"List human-channel messages"},"post":{"summary":"Send a human-channel message","security":[{"oauth2Auth":["channels:send"]},{"bearerAuth":[]}],"x-required-permission":"channels:send","description":"Sends through an assigned SMS, MMS, RCS, WhatsApp, or outbound voice endpoint. Supports RCS rich cards and replies, plus WhatsApp media and reply buttons. All non-template WhatsApp messages require a recipient message within the last 24 hours; otherwise use an approved template.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelMessageSend"}}}},"responses":{"200":{"description":"Existing idempotent result","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/ChannelMessage"},"replayed":{"type":"boolean"}},"required":["message","replayed"]}}}},"202":{"description":"Channel message accepted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/ChannelMessage"},"replayed":{"type":"boolean"}},"required":["message","replayed"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_channel_messages"}},"/v1/inboxes/{inboxId}":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"get":{"summary":"Get an inbox","security":[{"oauth2Auth":["inboxes:read"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:read","responses":{"200":{"description":"Inbox","content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"$ref":"#/components/schemas/Inbox"}},"required":["inbox"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId","description":"Get an inbox"},"patch":{"summary":"Update an inbox","security":[{"oauth2Auth":["inboxes:update"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:update","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxUpdate"}}}},"responses":{"200":{"description":"Updated inbox","content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"$ref":"#/components/schemas/Inbox"}},"required":["inbox"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_inboxes_by_inboxId","description":"Update an inbox"},"delete":{"summary":"Delete an inbox","security":[{"oauth2Auth":["inboxes:delete"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:delete","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_inboxes_by_inboxId","description":"Delete an inbox"}},"/v1/inboxes/{inboxId}/messages":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"get":{"summary":"List or search messages","security":[{"oauth2Auth":["messages:read"]},{"bearerAuth":[]}],"x-required-permission":"messages:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page_token","in":"query","required":false,"schema":{"type":"string"}},{"name":"thread_id","in":"query","required":false,"schema":{"type":"string","pattern":"^thr_"}},{"name":"label","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"query","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":1000}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Message page","content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}},"nextPageToken":{"type":"string"}},"required":["messages"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_messages","description":"List or search messages"}},"/v1/inboxes/{inboxId}/credentials":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"post":{"summary":"Issue new IMAP and SMTP credentials","security":[{"oauth2Auth":["inboxes:credentials"]},{"bearerAuth":[]}],"x-required-permission":"inboxes:credentials","responses":{"201":{"description":"Mailbox credentials","content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string","writeOnly":true},"imap":{"$ref":"#/components/schemas/MailProtocolEndpoint"},"smtp":{"$ref":"#/components/schemas/MailProtocolEndpoint"}},"required":["username","password","imap","smtp"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_credentials","description":"Issue new IMAP and SMTP credentials"}},"/v1/inboxes/{inboxId}/messages/send":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"post":{"summary":"Send a message","security":[{"oauth2Auth":["messages:send"]},{"bearerAuth":[]}],"x-required-permission":"messages:send","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCompose"}}}},"responses":{"202":{"description":"Message accepted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_messages_send","description":"Send a message"}},"/v1/inboxes/{inboxId}/messages/{messageId}":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^msg_"}}],"get":{"summary":"Get a message","security":[{"oauth2Auth":["messages:read"]},{"bearerAuth":[]}],"x-required-permission":"messages:read","responses":{"200":{"description":"Message","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_messages_by_messageId","description":"Get a message"},"delete":{"summary":"Delete a message","security":[{"oauth2Auth":["messages:write"]},{"bearerAuth":[]}],"x-required-permission":"messages:write","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_inboxes_by_inboxId_messages_by_messageId","description":"Delete a message"}},"/v1/inboxes/{inboxId}/messages/{messageId}/reply":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^msg_"}}],"post":{"summary":"Reply to a message","security":[{"oauth2Auth":["messages:send"]},{"bearerAuth":[]}],"x-required-permission":"messages:send","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyCompose"}}}},"responses":{"202":{"description":"Reply accepted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_messages_by_messageId_reply","description":"Reply to a message"}},"/v1/inboxes/{inboxId}/messages/{messageId}/reply-all":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^msg_"}}],"post":{"summary":"Reply all to a message","security":[{"oauth2Auth":["messages:send"]},{"bearerAuth":[]}],"x-required-permission":"messages:send","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyCompose"}}}},"responses":{"202":{"description":"Reply accepted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_messages_by_messageId_reply_all","description":"Reply all to a message"}},"/v1/inboxes/{inboxId}/messages/{messageId}/forward":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^msg_"}}],"post":{"summary":"Forward a message","security":[{"oauth2Auth":["messages:send"]},{"bearerAuth":[]}],"x-required-permission":"messages:send","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCompose"}}}},"responses":{"202":{"description":"Forward accepted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_messages_by_messageId_forward","description":"Forward a message"}},"/v1/inboxes/{inboxId}/threads":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"get":{"summary":"List or search threads","security":[{"oauth2Auth":["messages:read"]},{"bearerAuth":[]}],"x-required-permission":"messages:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"page_token","in":"query","required":false,"schema":{"type":"string"}},{"name":"label","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"query","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":1000}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Thread page","content":{"application/json":{"schema":{"type":"object","properties":{"threads":{"type":"array","items":{"$ref":"#/components/schemas/Thread"}},"nextPageToken":{"type":"string"}},"required":["threads"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_threads","description":"List or search threads"}},"/v1/inboxes/{inboxId}/threads/{threadId}":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"threadId","in":"path","required":true,"schema":{"type":"string","pattern":"^thr_"}}],"get":{"summary":"Get a thread and conversation","security":[{"oauth2Auth":["messages:read"]},{"bearerAuth":[]}],"x-required-permission":"messages:read","responses":{"200":{"description":"Thread and messages","content":{"application/json":{"schema":{"type":"object","properties":{"thread":{"$ref":"#/components/schemas/Thread"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}},"required":["thread","messages"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_threads_by_threadId","description":"Get a thread and conversation"}},"/v1/inboxes/{inboxId}/drafts":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"get":{"summary":"List drafts","security":[{"oauth2Auth":["drafts:read"]},{"bearerAuth":[]}],"x-required-permission":"drafts:read","responses":{"200":{"description":"Drafts","content":{"application/json":{"schema":{"type":"object","properties":{"drafts":{"type":"array","items":{"$ref":"#/components/schemas/Draft"}}},"required":["drafts"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_drafts","description":"List drafts"},"post":{"summary":"Create a draft","security":[{"oauth2Auth":["drafts:write"]},{"bearerAuth":[]}],"x-required-permission":"drafts:write","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftCreate"}}}},"responses":{"201":{"description":"Draft created","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"$ref":"#/components/schemas/Draft"}},"required":["draft"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_drafts","description":"Create a draft"}},"/v1/inboxes/{inboxId}/drafts/{draftId}":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"draftId","in":"path","required":true,"schema":{"type":"string","pattern":"^drf_"}}],"get":{"summary":"Get a draft","security":[{"oauth2Auth":["drafts:read"]},{"bearerAuth":[]}],"x-required-permission":"drafts:read","responses":{"200":{"description":"Draft","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"$ref":"#/components/schemas/Draft"}},"required":["draft"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_drafts_by_draftId","description":"Get a draft"},"patch":{"summary":"Update a draft","security":[{"oauth2Auth":["drafts:write"]},{"bearerAuth":[]}],"x-required-permission":"drafts:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftUpdate"}}}},"responses":{"200":{"description":"Updated draft","content":{"application/json":{"schema":{"type":"object","properties":{"draft":{"$ref":"#/components/schemas/Draft"}},"required":["draft"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_inboxes_by_inboxId_drafts_by_draftId","description":"Update a draft"},"delete":{"summary":"Delete a draft","security":[{"oauth2Auth":["drafts:write"]},{"bearerAuth":[]}],"x-required-permission":"drafts:write","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_inboxes_by_inboxId_drafts_by_draftId","description":"Delete a draft"}},"/v1/inboxes/{inboxId}/drafts/{draftId}/send":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"draftId","in":"path","required":true,"schema":{"type":"string","pattern":"^drf_"}}],"post":{"summary":"Send a draft","security":[{"oauth2Auth":["messages:send"]},{"bearerAuth":[]}],"x-required-permission":"messages:send","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Stable caller-generated key used to make retries safe without duplicating the operation.","schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"202":{"description":"Draft accepted for delivery","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"$ref":"#/components/schemas/Message"}},"required":["message"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_drafts_by_draftId_send","description":"Send a draft"}},"/v1/inboxes/{inboxId}/attachments":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}}],"post":{"summary":"Create a direct attachment upload","security":[{"oauth2Auth":["attachments:create"]},{"bearerAuth":[]}],"x-required-permission":"attachments:create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentUploadCreate"}}}},"responses":{"201":{"description":"Attachment upload created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_attachments","description":"Create a direct attachment upload"}},"/v1/inboxes/{inboxId}/attachments/{attachmentId}/complete":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^att_"}}],"post":{"summary":"Complete a direct attachment upload","security":[{"oauth2Auth":["attachments:create"]},{"bearerAuth":[]}],"x-required-permission":"attachments:create","responses":{"200":{"description":"Attachment ready","content":{"application/json":{"schema":{"type":"object","properties":{"attachment":{"$ref":"#/components/schemas/Attachment"}},"required":["attachment"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_inboxes_by_inboxId_attachments_by_attachmentId_complete","description":"Complete a direct attachment upload"}},"/v1/inboxes/{inboxId}/attachments/{attachmentId}/download":{"parameters":[{"name":"inboxId","in":"path","required":true,"schema":{"type":"string","pattern":"^inb_"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^att_"}}],"get":{"summary":"Create a short-lived attachment download","security":[{"oauth2Auth":["attachments:read"]},{"bearerAuth":[]}],"x-required-permission":"attachments:read","responses":{"200":{"description":"Attachment download","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time"}},"required":["url","expiresAt"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_inboxes_by_inboxId_attachments_by_attachmentId_download","description":"Create a short-lived attachment download"}},"/v1/pods":{"get":{"summary":"List Pods","security":[{"oauth2Auth":["pods:read"]},{"bearerAuth":[]}],"x-required-permission":"pods:read","responses":{"200":{"description":"Pods","content":{"application/json":{"schema":{"type":"object","properties":{"pods":{"type":"array","items":{"$ref":"#/components/schemas/Pod"}}},"required":["pods"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_pods","description":"List Pods"},"post":{"summary":"Create a Pod","security":[{"oauth2Auth":["pods:create"]},{"bearerAuth":[]}],"x-required-permission":"pods:create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodCreate"}}}},"responses":{"201":{"description":"Pod created","content":{"application/json":{"schema":{"type":"object","properties":{"pod":{"$ref":"#/components/schemas/Pod"}},"required":["pod"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_pods","description":"Create a Pod"}},"/v1/pods/{podId}":{"parameters":[{"name":"podId","in":"path","required":true,"schema":{"type":"string","pattern":"^pod_"}}],"get":{"summary":"Get a Pod","security":[{"oauth2Auth":["pods:read"]},{"bearerAuth":[]}],"x-required-permission":"pods:read","responses":{"200":{"description":"Pod","content":{"application/json":{"schema":{"type":"object","properties":{"pod":{"$ref":"#/components/schemas/Pod"}},"required":["pod"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_pods_by_podId","description":"Get a Pod"},"patch":{"summary":"Update a Pod","security":[{"oauth2Auth":["pods:update"]},{"bearerAuth":[]}],"x-required-permission":"pods:update","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodUpdate"}}}},"responses":{"200":{"description":"Updated Pod","content":{"application/json":{"schema":{"type":"object","properties":{"pod":{"$ref":"#/components/schemas/Pod"}},"required":["pod"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_pods_by_podId","description":"Update a Pod"},"delete":{"summary":"Delete a Pod","security":[{"oauth2Auth":["pods:delete"]},{"bearerAuth":[]}],"x-required-permission":"pods:delete","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_pods_by_podId","description":"Delete a Pod"}},"/v1/domains":{"get":{"summary":"List custom domains","security":[{"oauth2Auth":["domains:read"]},{"bearerAuth":[]}],"x-required-permission":"domains:read","responses":{"200":{"description":"Domains","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/Domain"}}},"required":["domains"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_domains","description":"List custom domains"},"post":{"summary":"Create a custom domain","security":[{"oauth2Auth":["domains:create"]},{"bearerAuth":[]}],"x-required-permission":"domains:create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainCreate"}}}},"responses":{"201":{"description":"Domain created","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"$ref":"#/components/schemas/Domain"}},"required":["domain"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_domains","description":"Create a custom domain"}},"/v1/domains/{domainId}":{"parameters":[{"name":"domainId","in":"path","required":true,"schema":{"type":"string","pattern":"^dom_"}}],"get":{"summary":"Get a custom domain","security":[{"oauth2Auth":["domains:read"]},{"bearerAuth":[]}],"x-required-permission":"domains:read","responses":{"200":{"description":"Domain","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"$ref":"#/components/schemas/Domain"}},"required":["domain"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_domains_by_domainId","description":"Get a custom domain"},"delete":{"summary":"Delete a custom domain","security":[{"oauth2Auth":["domains:delete"]},{"bearerAuth":[]}],"x-required-permission":"domains:delete","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_domains_by_domainId","description":"Delete a custom domain"}},"/v1/domains/{domainId}/verify":{"parameters":[{"name":"domainId","in":"path","required":true,"schema":{"type":"string","pattern":"^dom_"}}],"post":{"summary":"Verify a custom domain's DNS records","security":[{"oauth2Auth":["domains:update"]},{"bearerAuth":[]}],"x-required-permission":"domains:update","responses":{"200":{"description":"Verified domain state","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"$ref":"#/components/schemas/Domain"}},"required":["domain"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_domains_by_domainId_verify","description":"Verify a custom domain's DNS records"}},"/v1/webhooks":{"get":{"summary":"List webhook endpoints","security":[{"oauth2Auth":["webhooks:read"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:read","responses":{"200":{"description":"Webhooks","content":{"application/json":{"schema":{"type":"object","properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}},"required":["webhooks"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_webhooks","description":"List webhook endpoints"},"post":{"summary":"Create a webhook endpoint","security":[{"oauth2Auth":["webhooks:write"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Webhook created","content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"$ref":"#/components/schemas/Webhook"},"secret":{"type":"string","writeOnly":true}},"required":["webhook","secret"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_webhooks","description":"Create a webhook endpoint"}},"/v1/webhooks/{webhookId}":{"parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","pattern":"^whk_"}}],"get":{"summary":"Get a webhook endpoint","security":[{"oauth2Auth":["webhooks:read"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:read","responses":{"200":{"description":"Webhook","content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"$ref":"#/components/schemas/Webhook"}},"required":["webhook"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_webhooks_by_webhookId","description":"Get a webhook endpoint"},"patch":{"summary":"Update a webhook endpoint","security":[{"oauth2Auth":["webhooks:write"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Updated webhook","content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"$ref":"#/components/schemas/Webhook"}},"required":["webhook"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_webhooks_by_webhookId","description":"Update a webhook endpoint"},"delete":{"summary":"Delete a webhook endpoint","security":[{"oauth2Auth":["webhooks:write"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:write","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_webhooks_by_webhookId","description":"Delete a webhook endpoint"}},"/v1/webhooks/{webhookId}/rotate-secret":{"parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"type":"string","pattern":"^whk_"}}],"post":{"summary":"Rotate a webhook signing secret","security":[{"oauth2Auth":["webhooks:write"]},{"bearerAuth":[]}],"x-required-permission":"webhooks:write","responses":{"200":{"description":"New signing secret","content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"type":"string","writeOnly":true}},"required":["secret"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_webhooks_by_webhookId_rotate_secret","description":"Rotate a webhook signing secret"}},"/v1/labels":{"get":{"summary":"List labels","security":[{"oauth2Auth":["labels:read"]},{"bearerAuth":[]}],"x-required-permission":"labels:read","parameters":[{"name":"pod_id","in":"query","required":false,"schema":{"type":"string","pattern":"^pod_"}}],"responses":{"200":{"description":"Labels","content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","items":{"$ref":"#/components/schemas/Label"}}},"required":["labels"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_labels","description":"List labels"},"post":{"summary":"Create a label","security":[{"oauth2Auth":["labels:write"]},{"bearerAuth":[]}],"x-required-permission":"labels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelCreate"}}}},"responses":{"201":{"description":"Label created","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"$ref":"#/components/schemas/Label"}},"required":["label"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_labels","description":"Create a label"}},"/v1/labels/{labelId}":{"parameters":[{"name":"labelId","in":"path","required":true,"schema":{"type":"string","pattern":"^lbl_"}}],"delete":{"summary":"Delete a label","security":[{"oauth2Auth":["labels:write"]},{"bearerAuth":[]}],"x-required-permission":"labels:write","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_labels_by_labelId","description":"Delete a label"}},"/v1/messages/{messageId}/labels":{"parameters":[{"name":"messageId","in":"path","required":true,"schema":{"type":"string","pattern":"^msg_"}}],"patch":{"summary":"Add or remove message labels","security":[{"oauth2Auth":["labels:write"]},{"bearerAuth":[]}],"x-required-permission":"labels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelMutation"}}}},"responses":{"200":{"description":"Current labels","content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}}},"required":["labels"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_messages_by_messageId_labels","description":"Add or remove message labels"}},"/v1/threads/{threadId}/labels":{"parameters":[{"name":"threadId","in":"path","required":true,"schema":{"type":"string","pattern":"^thr_"}}],"patch":{"summary":"Add or remove thread labels","security":[{"oauth2Auth":["labels:write"]},{"bearerAuth":[]}],"x-required-permission":"labels:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelMutation"}}}},"responses":{"200":{"description":"Current labels","content":{"application/json":{"schema":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}}},"required":["labels"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_threads_by_threadId_labels","description":"Add or remove thread labels"}},"/v1/lists":{"get":{"summary":"List allow and block lists","security":[{"oauth2Auth":["lists:read"]},{"bearerAuth":[]}],"x-required-permission":"lists:read","parameters":[{"name":"pod_id","in":"query","required":false,"schema":{"type":"string","pattern":"^pod_"}}],"responses":{"200":{"description":"Lists","content":{"application/json":{"schema":{"type":"object","properties":{"lists":{"type":"array","items":{"$ref":"#/components/schemas/List"}}},"required":["lists"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_lists","description":"List allow and block lists"},"post":{"summary":"Create an allow or block list","security":[{"oauth2Auth":["lists:write"]},{"bearerAuth":[]}],"x-required-permission":"lists:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCreate"}}}},"responses":{"201":{"description":"List created","content":{"application/json":{"schema":{"type":"object","properties":{"list":{"$ref":"#/components/schemas/List"}},"required":["list"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_lists","description":"Create an allow or block list"}},"/v1/lists/{listId}":{"parameters":[{"name":"listId","in":"path","required":true,"schema":{"type":"string","pattern":"^lst_"}}],"delete":{"summary":"Delete an allow or block list","security":[{"oauth2Auth":["lists:write"]},{"bearerAuth":[]}],"x-required-permission":"lists:write","responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_lists_by_listId","description":"Delete an allow or block list"}},"/v1/lists/{listId}/entries":{"parameters":[{"name":"listId","in":"path","required":true,"schema":{"type":"string","pattern":"^lst_"}}],"post":{"summary":"Add an address pattern to a list","security":[{"oauth2Auth":["lists:write"]},{"bearerAuth":[]}],"x-required-permission":"lists:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEntry"}}}},"responses":{"200":{"description":"Updated list","content":{"application/json":{"schema":{"type":"object","properties":{"list":{"$ref":"#/components/schemas/List"}},"required":["list"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_lists_by_listId_entries","description":"Add an address pattern to a list"},"delete":{"summary":"Remove an address pattern from a list","security":[{"oauth2Auth":["lists:write"]},{"bearerAuth":[]}],"x-required-permission":"lists:write","parameters":[{"name":"address_pattern","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":320}}],"responses":{"200":{"description":"Updated list","content":{"application/json":{"schema":{"type":"object","properties":{"list":{"$ref":"#/components/schemas/List"}},"required":["list"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"delete_v1_lists_by_listId_entries","description":"Remove an address pattern from a list"}},"/v1/events/tickets":{"post":{"summary":"Create a short-lived realtime ticket","security":[{"oauth2Auth":["events:read"]},{"bearerAuth":[]}],"x-required-permission":"events:read","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"podId":{"type":"string","pattern":"^pod_"}},"required":["podId"]}}}},"responses":{"201":{"description":"Realtime ticket","content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"type":"string","writeOnly":true},"expiresIn":{"type":"integer","minimum":1},"websocketUrl":{"type":"string","format":"uri"}},"required":["ticket","expiresIn","websocketUrl"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_events_tickets","description":"Create a short-lived realtime ticket"}},"/v1/billing":{"get":{"summary":"Get plan and subscription entitlement","security":[{"oauth2Auth":["billing:read"]},{"bearerAuth":[]}],"x-required-permission":"billing:read","responses":{"200":{"description":"Billing account","content":{"application/json":{"schema":{"type":"object","properties":{"billing":{"$ref":"#/components/schemas/BillingAccount"}},"required":["billing"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_v1_billing","description":"Get plan and subscription entitlement"}},"/v1/billing/checkout":{"post":{"summary":"Create a subscription checkout session","security":[{"oauth2Auth":["billing:write"]},{"bearerAuth":[]}],"x-required-permission":"billing:write","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSelection"}}}},"responses":{"201":{"description":"Checkout session","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_billing_checkout","description":"Create a subscription checkout session"}},"/v1/billing/portal":{"post":{"summary":"Create a billing management session","security":[{"oauth2Auth":["billing:write"]},{"bearerAuth":[]}],"x-required-permission":"billing:write","responses":{"201":{"description":"Customer portal","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_billing_portal","description":"Create a billing management session"}},"/a2a/{handle}":{"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"}}],"post":{"summary":"Call an agent over A2A JSON-RPC","security":[{"oauth2Auth":["a2a:send"]},{"bearerAuth":[]}],"x-required-permission":"a2a:send","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AJsonRpcRequest"}}}},"responses":{"200":{"description":"A2A JSON-RPC response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_a2a_by_handle","description":"Call an agent over A2A JSON-RPC"}},"/a2a/{handle}/.well-known/agent-card.json":{"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"}}],"get":{"summary":"Discover an agent's public A2A card","security":[],"responses":{"200":{"description":"A2A Agent Card","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AAgentCard"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"get_a2a_by_handle_well_known_agent_card_json","description":"Discover an agent's public A2A card"}},"/v1/a2a/tasks/{taskId}":{"parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string","pattern":"^tsk_"}}],"post":{"summary":"Update an assigned A2A task","security":[{"oauth2Auth":["a2a:update"]},{"bearerAuth":[]}],"x-required-permission":"a2a:update","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ATaskUpdate"}}}},"responses":{"200":{"description":"Updated task","content":{"application/json":{"schema":{"type":"object","properties":{"task":{"$ref":"#/components/schemas/A2ATask"}},"required":["task"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"post_v1_a2a_tasks_by_taskId","description":"Update an assigned A2A task"}},"/v1/a2a/identity":{"patch":{"summary":"Update the calling agent's public A2A profile","security":[{"oauth2Auth":["a2a:update"]},{"bearerAuth":[]}],"x-required-permission":"a2a:update","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AIdentitySettings"}}}},"responses":{"200":{"description":"Updated identity","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"operationId":"patch_v1_a2a_identity","description":"Update the calling agent's public A2A profile"}},"/mcp":{"post":{"summary":"Call the hosted MCP server","security":[{"oauth2Auth":[]},{"bearerAuth":[]}],"x-required-permission":"tool-specific","operationId":"post_mcp","description":"Call the hosted MCP server","responses":{"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient permission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate or plan limit reached","headers":{"RateLimit-Policy":{"description":"The enforced shared API policy in RateLimit structured-field syntax.","schema":{"type":"string"}},"RateLimit":{"description":"Current remaining quota and reset time in RateLimit structured-field syntax.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying this request.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"oauth2Auth":{"type":"oauth2","description":"Human-approved OAuth with per-operation least-privilege scopes.","flows":{"authorizationCode":{"authorizationUrl":"https://adaptable-positivity-80.authkit.app/oauth2/authorize","tokenUrl":"https://adaptable-positivity-80.authkit.app/oauth2/token","scopes":{"inboxes:read":"Read inboxe resources.","inboxes:create":"Create inboxe resources.","inboxes:update":"Update inboxe resources.","inboxes:delete":"Delete inboxe resources.","inboxes:credentials":"Issue credentials for inboxe resources.","messages:read":"Read message resources.","messages:send":"Send message resources.","messages:write":"Create and update message resources.","channels:read":"Read channel resources.","channels:send":"Send channel resources.","channels:write":"Create and update channel resources.","drafts:read":"Read draft resources.","drafts:write":"Create and update draft resources.","attachments:create":"Create attachment resources.","attachments:read":"Read attachment resources.","pods:read":"Read pod resources.","pods:create":"Create pod resources.","pods:update":"Update pod resources.","pods:delete":"Delete pod resources.","domains:read":"Read domain resources.","domains:create":"Create domain resources.","domains:update":"Update domain resources.","domains:delete":"Delete domain resources.","webhooks:read":"Read webhook resources.","webhooks:write":"Create and update webhook resources.","labels:read":"Read label resources.","labels:write":"Create and update label resources.","lists:read":"Read list resources.","lists:write":"Create and update list resources.","events:read":"Read event resources.","billing:read":"Read billing resources.","billing:write":"Create and update billing resources.","a2a:read":"Read agent-to-agent communication resources.","a2a:send":"Send agent-to-agent communication resources.","a2a:update":"Update agent-to-agent communication resources."}}}},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT or AgentMailer API key","description":"Human-approved credential. Least-privilege grants are published in RFC 9728 protected-resource metadata and on each operation as x-required-permission.","x-scopes-supported":["inboxes:read","inboxes:create","inboxes:update","inboxes:delete","inboxes:credentials","messages:read","messages:send","messages:write","channels:read","channels:send","channels:write","drafts:read","drafts:write","attachments:create","attachments:read","pods:read","pods:create","pods:update","pods:delete","domains:read","domains:create","domains:update","domains:delete","webhooks:read","webhooks:write","labels:read","labels:write","lists:read","lists:write","events:read","billing:read","billing:write","a2a:read","a2a:send","a2a:update"]}},"schemas":{"Error":{"type":"object","required":["type","title","status","code","requestId"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"code":{"type":"string"},"detail":{"type":"string"},"requestId":{"type":"string"}}},"BootstrapRequest":{"type":"object","properties":{"requestedLocalPart":{"type":"string","minLength":3,"maxLength":48,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"},"podName":{"type":"string","minLength":1,"maxLength":64}},"additionalProperties":false},"BootstrapResponse":{"type":"object","properties":{"agent":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"trustTier":{"type":"string","enum":["bootstrap","verified","established"]}},"required":["id","trustTier"],"additionalProperties":false},"identity":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"handle":{"type":"string","minLength":3,"maxLength":48,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"},"emailAddress":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["id","handle","emailAddress"],"additionalProperties":false},"organization":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"}},"required":["id"],"additionalProperties":false},"pod":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string","minLength":1}},"required":["id","name"],"additionalProperties":false},"inbox":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"address":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"status":{"type":"string","const":"active"}},"required":["id","address","status"],"additionalProperties":false},"capabilities":{"type":"object","properties":{"receive":{"type":"boolean"},"send":{"type":"boolean"},"imap":{"type":"boolean"},"smtp":{"type":"boolean"},"customDomains":{"type":"boolean"},"a2a":{"type":"boolean"}},"required":["receive","send","imap","smtp","customDomains","a2a"],"additionalProperties":false},"limits":{"type":"object","properties":{"messagesPerDay":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"recipientsPerMessage":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"attachmentBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["messagesPerDay","recipientsPerMessage","attachmentBytes"],"additionalProperties":false},"links":{"type":"object","properties":{"inbox":{"type":"string","pattern":"^\\/.*"},"messages":{"type":"string","pattern":"^\\/.*"},"events":{"type":"string","pattern":"^\\/.*"},"imap":{"type":"string","pattern":"^\\/.*"},"smtp":{"type":"string","pattern":"^\\/.*"},"a2a":{"type":"string","pattern":"^\\/.*"},"agentCard":{"type":"string","pattern":"^\\/.*"}},"required":["inbox","messages","events","imap","smtp","a2a","agentCard"],"additionalProperties":false}},"required":["agent","identity","organization","pod","inbox","capabilities","limits","links"],"additionalProperties":false},"InboxCreate":{"type":"object","properties":{"username":{"type":"string","minLength":3,"maxLength":48,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"},"podId":{"type":"string","pattern":"^pod_.*"},"domainId":{"type":"string","pattern":"^dom_.*"},"clientId":{"type":"string","minLength":1,"maxLength":128},"displayName":{"type":"string","minLength":1,"maxLength":256},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":256},"additionalProperties":{"anyOf":[{"type":"string","maxLength":256},{"type":"number"},{"type":"boolean"}]}}},"additionalProperties":false},"InboxUpdate":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string","minLength":1,"maxLength":256},{"type":"null"}]},"clientId":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":256},"additionalProperties":{"anyOf":[{"type":"string","maxLength":256},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},{"type":"null"}]}},"additionalProperties":false},"Inbox":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"podId":{"type":"string","pattern":"^pod_.*"},"address":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"status":{"type":"string","enum":["provisioning","active","failed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","podId","address","displayName","clientId","metadata","status","createdAt","updatedAt"],"additionalProperties":false},"ChannelEndpointCreate":{"type":"object","properties":{"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"channel":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]}},"required":["inboxId","podId","channel"],"additionalProperties":false},"ChannelEndpointUpdate":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]}},"required":["status"],"additionalProperties":false},"ChannelEndpoint":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"channel":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]},"address":{"type":"string","minLength":1},"status":{"type":"string","enum":["provisioning","active","disabled","failed"]},"capabilities":{"type":"array","items":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","inboxId","podId","channel","address","status","capabilities","createdAt","updatedAt"],"additionalProperties":false},"ChannelConversationUpdate":{"type":"object","properties":{"status":{"type":"string","enum":["active","closed"]}},"required":["status"],"additionalProperties":false},"ChannelConversation":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"channel":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]},"remoteAddress":{"type":"string","minLength":1},"status":{"type":"string","enum":["active","closed"]},"messageCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastMessageAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastInboundAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","endpointId","channel","remoteAddress","status","messageCount","lastMessageAt","lastInboundAt","createdAt","updatedAt"],"additionalProperties":false},"ChannelRecipientPermission":{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"channel":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]},"recipient":{"type":"string","minLength":1},"status":{"type":"string","enum":["consented","opted_out"]},"consentBasis":{"anyOf":[{"type":"string","enum":["explicit","transactional_relationship","inbound_keyword"]},{"type":"null"}]},"consentReference":{"anyOf":[{"type":"string"},{"type":"null"}]},"consentCapturedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"optedOutAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["endpointId","channel","recipient","status","consentBasis","consentReference","consentCapturedAt","optedOutAt","updatedAt"],"additionalProperties":false},"ChannelMessageSend":{"oneOf":[{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"to":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"},"consent":{"type":"object","properties":{"basis":{"type":"string","enum":["explicit","transactional_relationship"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reference":{"type":"string","minLength":1,"maxLength":512}},"required":["basis","capturedAt","reference"]},"channel":{"type":"string","const":"sms"},"content":{"type":"object","properties":{"type":{"type":"string","const":"text"},"body":{"type":"string","minLength":1,"maxLength":1600}},"required":["type","body"]},"messageType":{"default":"transactional","type":"string","enum":["transactional","promotional"]}},"required":["endpointId","to","consent","channel","content"]},{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"to":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"},"consent":{"type":"object","properties":{"basis":{"type":"string","enum":["explicit","transactional_relationship"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reference":{"type":"string","minLength":1,"maxLength":512}},"required":["basis","capturedAt","reference"]},"channel":{"type":"string","const":"mms"},"content":{"type":"object","properties":{"type":{"type":"string","const":"text"},"body":{"type":"string","minLength":1,"maxLength":1600}},"required":["type","body"]},"attachmentIds":{"minItems":1,"maxItems":10,"type":"array","items":{}}},"required":["endpointId","to","consent","channel","attachmentIds"]},{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"to":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"},"consent":{"type":"object","properties":{"basis":{"type":"string","enum":["explicit","transactional_relationship"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reference":{"type":"string","minLength":1,"maxLength":512}},"required":["basis","capturedAt","reference"]},"channel":{"type":"string","const":"rcs"},"content":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"body":{"type":"string","minLength":1,"maxLength":1600}},"required":["type","body"]},{"type":"object","properties":{"type":{"type":"string","const":"rich_card"},"body":{"type":"string","minLength":1,"maxLength":1600},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"replies":{"default":[],"maxItems":4,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25},"data":{"type":"string","minLength":1,"maxLength":2048}},"required":["text","data"]}}},"required":["type","body","title"],"additionalProperties":false}]},"fallback":{"default":"sms","type":"string","enum":["none","sms"]}},"required":["endpointId","to","consent","channel","content"]},{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"to":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"},"consent":{"type":"object","properties":{"basis":{"type":"string","enum":["explicit","transactional_relationship"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reference":{"type":"string","minLength":1,"maxLength":512}},"required":["basis","capturedAt","reference"]},"channel":{"type":"string","const":"whatsapp"},"content":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"body":{"type":"string","minLength":1,"maxLength":4096}},"required":["type","body"]},{"type":"object","properties":{"type":{"type":"string","const":"template"},"name":{"type":"string","minLength":1,"maxLength":512},"languageCode":{"type":"string","minLength":2,"maxLength":35},"components":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}}},"required":["type","name","languageCode"]},{"type":"object","properties":{"type":{"type":"string","const":"media"},"kind":{"type":"string","enum":["image","video","audio","document"]},"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"}},"required":["type","kind","attachmentId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"buttons"},"body":{"type":"string","minLength":1,"maxLength":1024},"buttons":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":256},"title":{"type":"string","minLength":1,"maxLength":20}},"required":["id","title"]}}},"required":["type","body","buttons"],"additionalProperties":false}]}},"required":["endpointId","to","consent","channel","content"]},{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"to":{"type":"string","pattern":"^\\+[1-9]\\d{7,14}$"},"consent":{"type":"object","properties":{"basis":{"type":"string","enum":["explicit","transactional_relationship"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reference":{"type":"string","minLength":1,"maxLength":512}},"required":["basis","capturedAt","reference"]},"channel":{"type":"string","const":"voice"},"content":{"type":"object","properties":{"type":{"type":"string","const":"text"},"body":{"type":"string","minLength":1,"maxLength":3000}},"required":["type","body"]},"textType":{"default":"text","type":"string","enum":["text","ssml"]},"voiceId":{"default":"MATTHEW","type":"string","minLength":1,"maxLength":64}},"required":["endpointId","to","consent","channel","content"]}],"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}},"ChannelMessage":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"endpointId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"conversationId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"channel":{"type":"string","enum":["sms","mms","rcs","whatsapp","voice"]},"direction":{"type":"string","enum":["inbound","outbound"]},"status":{"type":"string","enum":["queued","sent","delivered","read","failed","received","blocked"]},"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"mediaUrls":{"type":"array","items":{"type":"string","format":"uri"}},"attachmentIds":{"type":"array","items":{}},"providerMessageId":{"anyOf":[{"type":"string"},{"type":"null"}]},"failureCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"safety":{"anyOf":[{"type":"object","properties":{"action":{"type":"string","enum":["allow","hold"]},"risk":{"type":"string","enum":["low","medium","high","unknown"]},"score":{"type":"number","minimum":0,"maximum":100},"signals":{"type":"array","items":{"type":"string"}},"classifier":{"type":"string","enum":["local","local+openai-guardrails"]},"modelStatus":{"type":"string","enum":["not_configured","skipped","completed","unavailable"]}},"required":["action","risk","score","signals","classifier","modelStatus"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","endpointId","conversationId","channel","direction","status","from","to","text","mediaUrls","attachmentIds","providerMessageId","failureCode","safety","createdAt","sentAt","receivedAt"],"additionalProperties":false},"MessageCompose":{"type":"object","properties":{"to":{"minItems":1,"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"default":"","type":"string","maxLength":998},"text":{"type":"string","maxLength":10000000},"html":{"type":"string","maxLength":10000000},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","maxLength":998},"additionalProperties":{"type":"string","maxLength":8192}},"attachments":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$"},"content":{"type":"string","format":"base64","contentEncoding":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["filename","contentType","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["attachmentId"],"additionalProperties":false}]}}},"required":["to"],"additionalProperties":false},"ReplyCompose":{"type":"object","properties":{"to":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"default":"","type":"string","maxLength":998},"text":{"type":"string","maxLength":10000000},"html":{"type":"string","maxLength":10000000},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","maxLength":998},"additionalProperties":{"type":"string","maxLength":8192}},"attachments":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$"},"content":{"type":"string","format":"base64","contentEncoding":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["filename","contentType","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["attachmentId"],"additionalProperties":false}]}}},"additionalProperties":false},"Message":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"threadId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"direction":{"type":"string","enum":["inbound","outbound"]},"status":{"type":"string","enum":["queued","sent","delivered","bounced","complained","rejected","received"]},"from":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]},"to":{"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}]},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Untrusted email HTML. Sanitize and isolate it before browser rendering."},"extractedText":{"anyOf":[{"type":"string"},{"type":"null"}]},"extractedHtml":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Untrusted latest-reply HTML. Sanitize and isolate it before browser rendering."},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"inReplyTo":{"anyOf":[{"type":"string"},{"type":"null"}]},"references":{"type":"array","items":{"type":"string"}},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"filename":{"type":"string"},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"contentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"disposition":{"type":"string","enum":["attachment","inline"]}},"required":["id","filename","contentType","size","contentId","disposition"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","inboxId","threadId","direction","status","from","to","cc","bcc","replyTo","subject","text","html","extractedText","extractedHtml","headers","inReplyTo","references","attachments","createdAt","sentAt","receivedAt"],"additionalProperties":false},"Thread":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"subject":{"type":"string"},"participants":{"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"messageCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastMessageAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","subject","participants","messageCount","lastMessageAt"],"additionalProperties":false},"DraftCreate":{"type":"object","properties":{"to":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"default":"","type":"string","maxLength":998},"text":{"type":"string","maxLength":10000000},"html":{"type":"string","maxLength":10000000},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","maxLength":998},"additionalProperties":{"type":"string","maxLength":8192}},"attachments":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$"},"content":{"type":"string","format":"base64","contentEncoding":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["filename","contentType","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["attachmentId"],"additionalProperties":false}]}},"replyToMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"forwardMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"sendAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"additionalProperties":false},"DraftUpdate":{"type":"object","properties":{"to":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"type":"string","maxLength":998},"text":{"type":"string","maxLength":10000000},"html":{"type":"string","maxLength":10000000},"headers":{"type":"object","propertyNames":{"type":"string","maxLength":998},"additionalProperties":{"type":"string","maxLength":8192}},"attachments":{"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$"},"content":{"type":"string","format":"base64","contentEncoding":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["filename","contentType","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["attachmentId"],"additionalProperties":false}]}},"replyToMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"forwardMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"sendAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"additionalProperties":false},"Draft":{"type":"object","properties":{"to":{"default":[],"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"cc":{"default":[],"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"bcc":{"default":[],"maxItems":50,"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"replyTo":{"default":[],"maxItems":10,"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"object","properties":{"address":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"name":{"type":"string","maxLength":256}},"required":["address"],"additionalProperties":false}]}},"subject":{"default":"","type":"string","maxLength":998},"text":{"type":"string","maxLength":10000000},"html":{"type":"string","maxLength":10000000},"headers":{"default":{},"type":"object","propertyNames":{"type":"string","maxLength":998},"additionalProperties":{"type":"string","maxLength":8192}},"attachments":{"default":[],"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{},"content":{"type":"string","format":"base64","contentEncoding":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["filename","contentType","content","disposition"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"contentId":{"type":"string","maxLength":998},"disposition":{"default":"attachment","type":"string","enum":["attachment","inline"]}},"required":["attachmentId","disposition"],"additionalProperties":false}]}},"replyToMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"forwardMessageId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"sendAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sendStatus":{"anyOf":[{"type":"string","enum":["scheduled","sending","failed"]},{"type":"null"}]}},"required":["to","attachments","id","inboxId","createdAt","updatedAt","sendStatus"],"additionalProperties":false},"AttachmentUploadCreate":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":512},"contentType":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x20-\\x7e]+$"},"size":{"type":"integer","exclusiveMinimum":0,"maximum":31457280},"checksumSha256":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"}},"required":["filename","contentType","size","checksumSha256"],"additionalProperties":false},"Attachment":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"filename":{"type":"string"},"contentType":{"type":"string"},"size":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["pending","uploaded","committed"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","filename","contentType","size","status","expiresAt"],"additionalProperties":false},"PodCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64}},"required":["name"],"additionalProperties":false},"PodUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64}},"required":["name"],"additionalProperties":false},"Pod":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","createdAt","updatedAt"],"additionalProperties":false},"DomainCreate":{"type":"object","properties":{"domain":{"type":"string","maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"}},"required":["domain"],"additionalProperties":false},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"^dom_.*"},"podId":{"anyOf":[{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},{"type":"null"}]},"domain":{"type":"string"},"status":{"type":"string","enum":["pending","verified","failed"]},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["CNAME","MX","TXT"]},"name":{"type":"string","minLength":1},"value":{"type":"string","minLength":1},"priority":{"type":"integer","minimum":0,"maximum":65535}},"required":["type","name","value"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","podId","domain","status","records","createdAt","updatedAt"],"additionalProperties":false},"WebhookCreate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"eventTypes":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","enum":["inbox.provisioning","inbox.created","inbox.provisioning_failed","message.received","message.send.requested","message.sent","message.delivered","message.bounced","message.complained","message.rejected","channel.endpoint.created","channel.message.received","channel.message.blocked","channel.message.send.requested","channel.message.sent","channel.message.delivered","channel.message.read","channel.message.failed","domain.verified","a2a.task.created","a2a.task.message","a2a.task.canceled","a2a.sent_task.updated"]}},"description":{"type":"string","maxLength":256}},"required":["url"],"additionalProperties":false},"WebhookUpdate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"eventTypes":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","enum":["inbox.provisioning","inbox.created","inbox.provisioning_failed","message.received","message.send.requested","message.sent","message.delivered","message.bounced","message.complained","message.rejected","channel.endpoint.created","channel.message.received","channel.message.blocked","channel.message.send.requested","channel.message.sent","channel.message.delivered","channel.message.read","channel.message.failed","domain.verified","a2a.task.created","a2a.task.message","a2a.task.canceled","a2a.sent_task.updated"]}},"description":{"type":"string","maxLength":256},"enabled":{"type":"boolean"}},"additionalProperties":false},"Webhook":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"inboxId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"eventTypes":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","enum":["inbox.provisioning","inbox.created","inbox.provisioning_failed","message.received","message.send.requested","message.sent","message.delivered","message.bounced","message.complained","message.rejected","channel.endpoint.created","channel.message.received","channel.message.blocked","channel.message.send.requested","channel.message.sent","channel.message.delivered","channel.message.read","channel.message.failed","domain.verified","a2a.task.created","a2a.task.message","a2a.task.canceled","a2a.sent_task.updated"]}},"description":{"type":"string","maxLength":256},"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"status":{"type":"string","enum":["enabled","disabled"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["url","eventTypes","id","status","createdAt","updatedAt"],"additionalProperties":false},"LabelCreate":{"type":"object","properties":{"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\p{L}\\p{N}][\\p{L}\\p{N}_. -]*$"},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["podId","name"],"additionalProperties":false},"LabelMutation":{"type":"object","properties":{"add":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\p{L}\\p{N}][\\p{L}\\p{N}_. -]*$"}},"remove":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\p{L}\\p{N}][\\p{L}\\p{N}_. -]*$"}}},"additionalProperties":false},"Label":{"type":"object","properties":{"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[\\p{L}\\p{N}][\\p{L}\\p{N}_. -]*$"},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["podId","name","id","createdAt"],"additionalProperties":false},"ListCreate":{"type":"object","properties":{"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string","minLength":1,"maxLength":64},"kind":{"type":"string","enum":["allow","block"]}},"required":["podId","name","kind"],"additionalProperties":false},"ListEntry":{"type":"object","properties":{"addressPattern":{"type":"string","minLength":3,"maxLength":320},"note":{"type":"string","maxLength":1000}},"required":["addressPattern"],"additionalProperties":false},"List":{"type":"object","properties":{"podId":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"name":{"type":"string","minLength":1,"maxLength":64},"kind":{"type":"string","enum":["allow","block"]},"id":{"type":"string","pattern":"^[a-z]{3}_[A-Za-z0-9]{6,}$"},"entries":{"type":"array","items":{"type":"object","properties":{"addressPattern":{},"note":{"type":"string","maxLength":1000}},"required":["addressPattern"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["podId","name","kind","id","entries","createdAt","updatedAt"],"additionalProperties":false},"A2AJsonRpcRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"method":{"type":"string","minLength":1},"params":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["jsonrpc","id","method"],"additionalProperties":false},"A2ATaskUpdate":{"type":"object","properties":{"state":{"type":"string","enum":["TASK_STATE_SUBMITTED","TASK_STATE_WORKING","TASK_STATE_COMPLETED","TASK_STATE_FAILED","TASK_STATE_CANCELED","TASK_STATE_INPUT_REQUIRED","TASK_STATE_REJECTED","TASK_STATE_AUTH_REQUIRED"]},"message":{"type":"object","properties":{"messageId":{"type":"string","minLength":1,"maxLength":255},"contextId":{"type":"string","minLength":1,"maxLength":255},"taskId":{"type":"string","minLength":1,"maxLength":255},"role":{"type":"string","enum":["ROLE_USER","ROLE_AGENT"]},"parts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"raw":{"type":"string"},"url":{"type":"string","format":"uri"},"data":{"$ref":"#/$defs/__schema0"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"filename":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"extensions":{"maxItems":32,"type":"array","items":{"type":"string","format":"uri"}},"referenceTaskIds":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}}},"required":["messageId","role","parts"],"additionalProperties":false},"artifacts":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"artifactId":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"parts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"raw":{"type":"string"},"url":{"type":"string","format":"uri"},"data":{"$ref":"#/$defs/__schema0"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"filename":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"extensions":{"maxItems":32,"type":"array","items":{"type":"string","format":"uri"}}},"required":["artifactId","parts"],"additionalProperties":false}}},"required":["state"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}},"A2ATask":{"type":"object","properties":{"id":{"type":"string","minLength":1},"contextId":{"type":"string","minLength":1},"status":{"type":"object","properties":{"state":{"type":"string","enum":["TASK_STATE_SUBMITTED","TASK_STATE_WORKING","TASK_STATE_COMPLETED","TASK_STATE_FAILED","TASK_STATE_CANCELED","TASK_STATE_INPUT_REQUIRED","TASK_STATE_REJECTED","TASK_STATE_AUTH_REQUIRED"]},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"message":{"type":"object","properties":{"messageId":{"type":"string","minLength":1,"maxLength":255},"contextId":{"type":"string","minLength":1,"maxLength":255},"taskId":{"type":"string","minLength":1,"maxLength":255},"role":{"type":"string","enum":["ROLE_USER","ROLE_AGENT"]},"parts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"raw":{"type":"string"},"url":{"type":"string","format":"uri"},"data":{"$ref":"#/$defs/__schema0"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"filename":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"extensions":{"maxItems":32,"type":"array","items":{"type":"string","format":"uri"}},"referenceTaskIds":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}}},"required":["messageId","role","parts"],"additionalProperties":false}},"required":["state","timestamp"],"additionalProperties":false},"artifacts":{"type":"array","items":{"type":"object","properties":{"artifactId":{"type":"string","minLength":1,"maxLength":255},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"parts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"raw":{"type":"string"},"url":{"type":"string","format":"uri"},"data":{"$ref":"#/$defs/__schema0"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"filename":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"extensions":{"maxItems":32,"type":"array","items":{"type":"string","format":"uri"}}},"required":["artifactId","parts"],"additionalProperties":false}},"history":{"type":"array","items":{"type":"object","properties":{"messageId":{"type":"string","minLength":1,"maxLength":255},"contextId":{"type":"string","minLength":1,"maxLength":255},"taskId":{"type":"string","minLength":1,"maxLength":255},"role":{"type":"string","enum":["ROLE_USER","ROLE_AGENT"]},"parts":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"raw":{"type":"string"},"url":{"type":"string","format":"uri"},"data":{"$ref":"#/$defs/__schema0"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"filename":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"type":"string","minLength":1,"maxLength":255}},"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},"extensions":{"maxItems":32,"type":"array","items":{"type":"string","format":"uri"}},"referenceTaskIds":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}}},"required":["messageId","role","parts"],"additionalProperties":false}},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}},"required":["id","contextId","status"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}},"A2AIdentitySettings":{"type":"object","properties":{"publiclyDiscoverable":{"type":"boolean"},"admissionMode":{"type":"string","enum":["whitelist","public"]},"name":{"type":"string","minLength":1,"maxLength":128},"description":{"type":"string","minLength":1,"maxLength":2000},"skills":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":128},"description":{"type":"string","minLength":1,"maxLength":2000},"tags":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"examples":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"inputModes":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1}},"outputModes":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","name","description","tags"],"additionalProperties":false}}},"additionalProperties":false},"A2AAgentCard":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"supportedInterfaces":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"protocolBinding":{"type":"string","const":"JSONRPC"},"protocolVersion":{"type":"string","const":"1.0"}},"required":["url","protocolBinding","protocolVersion"],"additionalProperties":false}},"provider":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"organization":{"type":"string"}},"required":["url","organization"],"additionalProperties":false},"version":{"type":"string"},"documentationUrl":{"type":"string","format":"uri"},"capabilities":{"type":"object","properties":{"streaming":{"type":"boolean"},"pushNotifications":{"type":"boolean"},"extendedAgentCard":{"type":"boolean"}},"required":["streaming","pushNotifications","extendedAgentCard"],"additionalProperties":false},"securitySchemes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"securityRequirements":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"defaultInputModes":{"type":"array","items":{"type":"string"}},"defaultOutputModes":{"type":"array","items":{"type":"string"}},"skills":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":128},"description":{"type":"string","minLength":1,"maxLength":2000},"tags":{"maxItems":32,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"examples":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"inputModes":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1}},"outputModes":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","name","description","tags"],"additionalProperties":false}}},"required":["name","description","supportedInterfaces","provider","version","documentationUrl","capabilities","securitySchemes","securityRequirements","defaultInputModes","defaultOutputModes","skills"],"additionalProperties":false},"MailProtocolEndpoint":{"type":"object","additionalProperties":false,"required":["host","port","security"],"properties":{"host":{"type":"string","format":"hostname"},"port":{"type":"integer","minimum":1,"maximum":65535},"security":{"type":"string","enum":["tls","starttls"]}}},"BillingSelection":{"type":"object","additionalProperties":false,"properties":{"inboxes":{"type":"integer","minimum":10,"maximum":1000,"default":10},"monthlyMessages":{"type":"integer","minimum":10000,"maximum":1000000,"multipleOf":1000,"default":10000},"customDomains":{"type":"integer","minimum":10,"maximum":1000,"default":10},"interval":{"type":"string","enum":["month","year"],"default":"month"}}},"BillingAccount":{"type":"object","required":["plan","status","currentPeriodEnd","inboxLimit","monthlySendLimit","customDomainLimit","billingInterval"],"properties":{"plan":{"type":"string","enum":["free","developer","startup","enterprise"]},"status":{"type":"string","enum":["active","trialing","past_due","paused","canceled","unpaid"]},"currentPeriodEnd":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"inboxLimit":{"anyOf":[{"type":"integer"},{"type":"null"}]},"monthlySendLimit":{"anyOf":[{"type":"integer"},{"type":"null"}]},"customDomainLimit":{"anyOf":[{"type":"integer"},{"type":"null"}]},"billingInterval":{"anyOf":[{"type":"string","enum":["month","year"]},{"type":"null"}]}}}}}}