{"components":{"schemas":{"AuthConfig":{"properties":{"auth_scheme":{"type":"string"},"created_at":{"type":"string"},"credentials":{"description":"Never carries the client secret","properties":{"client_id":{"description":"For a managed config, the client id of this deployment's OAuth application","type":["string","null"]},"oauth_redirect_uri":{"type":["string","null"]},"scopes":{"items":{"type":"string"},"type":["array","null"]}},"required":["client_id","oauth_redirect_uri","scopes"],"type":"object"},"id":{"type":"string"},"is_composio_managed":{"type":"boolean"},"name":{"type":"string"},"toolkit":{"properties":{"slug":{"type":"string"}},"required":["slug"],"type":"object"},"uuid":{"type":"string"}},"required":["id","uuid","name","auth_scheme","is_composio_managed","toolkit","credentials","created_at"],"type":"object"},"AuthConfigCreateRequest":{"properties":{"auth_scheme":{"description":"use_custom_auth only; default OAUTH2","type":["string","null"]},"credentials":{"description":"use_custom_auth only, and then client_id and client_secret are required","properties":{"client_id":{"type":"string"},"client_secret":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":["object","null"]},"toolkit":{"properties":{"slug":{"minLength":1,"type":"string"}},"required":["slug"],"type":"object"},"type":{"enum":["use_composio_managed_auth","use_custom_auth"],"type":"string"}},"required":["toolkit","type"],"type":"object"},"AuthConfigCreated":{"properties":{"auth_config":{"properties":{"auth_scheme":{"type":"string"},"id":{"type":"string"},"is_composio_managed":{"type":"boolean"},"restrict_to_following_tools":{"items":{"type":"string"},"type":"array"}},"required":["id","auth_scheme","is_composio_managed","restrict_to_following_tools"],"type":"object"},"toolkit":{"properties":{"slug":{"type":"string"}},"required":["slug"],"type":"object"}},"required":["toolkit","auth_config"],"type":"object"},"AuthConfigUpdateRequest":{"description":"type custom takes name and credentials; type default takes name and scopes. Any other field answers 400 AuthConfig_FieldNotSupported.","properties":{"credentials":{"description":"custom only","properties":{"client_id":{"minLength":1,"type":"string"},"client_secret":{"minLength":1,"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},"name":{"minLength":1,"type":"string"},"scopes":{"description":"default only","items":{"type":"string"},"type":"array"},"type":{"enum":["custom","default"],"type":"string"}},"required":["type"],"type":"object"},"CollectedKeyRequest":{"properties":{"api_key":{"description":"The raw ak_* key. Shown in this response only","type":"string"},"key":{"description":"The metadata of the new key. name is the client name, expires_at is null, and created_by is the principal that allowed the request","properties":{"created_at":{"type":"string"},"created_by":{"type":"string"},"expires_at":{"type":["string","null"]},"id":{"type":"string"},"installation_id":{"type":"string"},"last_used_at":{"type":["string","null"]},"masked":{"type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"project_id":{"type":"string"},"revoked_at":{"type":["string","null"]}},"required":["id","installation_id","organization_id","project_id","name","masked","created_by","created_at","last_used_at","expires_at","revoked_at"],"type":"object"},"project_id":{"description":"The project that the person chose","type":"string"},"status":{"enum":["allowed"],"type":"string"}},"required":["status","project_id","key","api_key"],"type":"object"},"CollectedMachineSignIn":{"properties":{"created_at":{"type":"string"},"expires_at":{"description":"30 days after the collect","type":"string"},"id":{"description":"The id of the token (cpti_*), not a credential","type":"string"},"installation_id":{"type":"string"},"last_used_at":{"type":["string","null"]},"name":{"description":"The client name","type":["string","null"]},"personal_token":{"description":"The raw cpt_* token. Shown in this response only","type":"string"},"principal_id":{"description":"The principal that approved the request","type":"string"},"revoked_at":{"type":["string","null"]},"status":{"enum":["allowed"],"type":"string"},"token":{"description":"The same value as personal_token","type":"string"}},"required":["status","id","installation_id","principal_id","name","expires_at","revoked_at","last_used_at","created_at","personal_token","token"],"type":"object"},"ConnectLink":{"properties":{"connected_account_id":{"type":"string"},"experimental":{"properties":{"account_type":{"enum":["PRIVATE"],"type":"string"}},"required":["account_type"],"type":"object"},"expires_at":{"format":"date-time","type":"string"},"link_token":{"type":"string"},"redirect_url":{"description":"Send the application user here to authorize the provider","format":"uri","type":"string"}},"required":["link_token","redirect_url","expires_at","connected_account_id","experimental"],"type":"object"},"ConnectLinkRequest":{"properties":{"auth_config_id":{"description":"An auth config of the project's organization (ac_*)","type":"string"},"user_id":{"description":"The application user, or org:<organization id> to share one account in this project","type":"string"}},"required":["user_id","auth_config_id"],"type":"object"},"ConnectedAccount":{"properties":{"alias":{"type":"null"},"authScheme":{"type":"string"},"auth_config":{"properties":{"auth_scheme":{"type":"string"},"id":{"type":"string"},"is_composio_managed":{"type":"boolean"},"is_disabled":{"type":"boolean"}},"required":["id","auth_scheme","is_composio_managed","is_disabled"],"type":"object"},"created_at":{"type":"string"},"data":{"properties":{"status":{"description":"INITIALIZING, INITIATED, ACTIVE, FAILED, EXPIRED, REVOKED or INACTIVE","type":"string"}},"required":["status"],"type":"object"},"experimental":{"properties":{"account_type":{"enum":["PRIVATE"],"type":"string"}},"required":["account_type"],"type":"object"},"id":{"type":"string"},"is_disabled":{"type":"boolean"},"state":{"properties":{"authScheme":{"type":"string"},"val":{"properties":{"status":{"description":"INITIALIZING, INITIATED, ACTIVE, FAILED, EXPIRED, REVOKED or INACTIVE","type":"string"}},"required":["status"],"type":"object"}},"required":["authScheme","val"],"type":"object"},"status":{"description":"INITIALIZING, INITIATED, ACTIVE, FAILED, EXPIRED, REVOKED or INACTIVE","type":"string"},"status_reason":{"type":["string","null"]},"toolkit":{"properties":{"slug":{"type":"string"}},"required":["slug"],"type":"object"},"updated_at":{"type":"string"},"user_id":{"type":"string"},"word_id":{"type":"string"}},"required":["toolkit","auth_config","authScheme","id","word_id","alias","user_id","status","experimental","created_at","updated_at","data","state","is_disabled","status_reason"],"type":"object"},"ConnectedAccountRefresh":{"properties":{"id":{"type":"string"},"redirect_url":{"format":"uri","type":"string"},"status":{"enum":["INITIATED"],"type":"string"}},"required":["id","status","redirect_url"],"type":"object"},"DeviceAuthorization":{"properties":{"device_code":{"description":"The agent's secret for the poll: 32 random bytes, base64url. Shown in this response only; the server keeps its SHA-256","type":"string"},"expires_in":{"description":"Seconds until the request expires","enum":[600],"type":"integer"},"interval":{"description":"The least seconds between two polls","enum":[5],"type":"integer"},"user_code":{"description":"8 letters written XXXX-XXXX. The agent shows it, and the person checks that the page shows the same code","type":"string"},"verification_uri":{"description":"The page where a person types user_code","format":"uri","type":"string"},"verification_uri_complete":{"description":"The same page with user_code in the link","format":"uri","type":"string"}},"required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"type":"object"},"DevicePoll":{"properties":{"device_code":{"type":"string"}},"required":["device_code"],"type":"object"},"DevicePollPending":{"properties":{"interval":{"enum":[5],"type":"integer"},"status":{"enum":["pending"],"type":"string"}},"required":["status","interval"],"type":"object"},"ErrorEnvelope":{"properties":{"error":{"properties":{"code":{"description":"The HTTP status","type":"integer"},"message":{"type":"string"},"request_id":{"type":"string"},"slug":{"description":"The machine-readable refusal, for example Tool_NotFound","type":"string"},"status":{"type":"integer"},"suggested_fix":{"type":"string"}},"required":["message","code","slug","status","request_id","suggested_fix"],"type":"object"},"errors":{"description":"Present on some refusals: field errors, the alternative a refusal names, or the quota standing","items":{"type":"string"},"type":"array"}},"required":["error"],"type":"object"},"ExecuteRequest":{"properties":{"arguments":{"additionalProperties":true,"description":"The tool's input, as the tool's input_parameters describe it","type":"object"},"connected_account_id":{"description":"A specific connected account, when the user has more than one for the toolkit","type":["string","null"]},"idempotency_key":{"description":"Used when no X-Idempotency-Key header is sent","type":["string","null"]},"implementation_id":{"description":"The intent's implementation to run. Absent lets the platform resolve it","type":["string","null"]},"intent_id":{"description":"A capability intent from the vocabulary. The call is validated against the intent's pin and recorded under it","type":["string","null"]},"model_side_validity":{"description":"Recorded in the execution log: InvalidJson, UnknownName, SchemaMismatch or None. Another value is recorded as absent","type":["string","null"]},"ranked_alternatives":{"description":"Recorded in the execution log as sent"},"resolution":{"description":"Recorded in the execution log: contract_pin, org_pin, agent_choice or ranking. Another value is recorded as absent","type":["string","null"]},"user_id":{"description":"The application user the call runs for. Selects the connected account when connected_account_id is absent","type":"string"},"version":{"description":"Accepted and ignored","type":["string","null"]}},"required":["arguments","user_id"],"type":"object"},"ExecuteResult":{"properties":{"data":{"description":"The provider's answer, as the tool's output_parameters describe it; null on failure"},"error":{"description":"The provider's error when successful is false","type":["string","null"]},"idempotency_key":{"type":["string","null"]},"log_id":{"description":"The execution log row (log_*). For a Sequence intent, the row of the call as a whole","type":["string","null"]},"replayed":{"description":"true when this is the recorded outcome of an earlier call with the same idempotency key","type":"boolean"},"successful":{"description":"Whether the provider call succeeded. false still answers 200","type":"boolean"}},"required":["successful","error","data","log_id"],"type":"object"},"FileItem":{"properties":{"created_at":{"type":"string"},"download_url":{"description":"A short-lived signed GET URL","format":"uri","type":"string"},"download_url_expires_at":{"format":"date-time","type":["string","null"]},"filename":{"type":"string"},"id":{"type":"string"},"md5":{"type":"string"},"mimetype":{"type":"string"},"size":{"type":"integer"},"tool_slug":{"type":"string"},"toolkit_slug":{"type":"string"}},"required":["id","filename","mimetype","md5","tool_slug","toolkit_slug","size","created_at","download_url","download_url_expires_at"],"type":"object"},"GoogleSuperStatus":{"properties":{"connected":{"type":"boolean"},"connected_account_id":{"type":["string","null"]},"entity_id":{"type":["string","null"]},"excluded_toolkits":{"items":{"type":"string"},"type":"array"},"members":{"items":{"properties":{"connected":{"type":"boolean"},"missing_scopes":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"required_scopes":{"items":{"type":"string"},"type":"array"},"toolkit_slug":{"type":"string"}},"required":["toolkit_slug","name","connected","required_scopes","missing_scopes"],"type":"object"},"type":"array"},"name":{"type":"string"},"ownership":{"enum":["organization","user"],"type":"string"},"status":{"type":["string","null"]},"toolkit_slug":{"enum":["googlesuper"],"type":"string"},"unified_scopes":{"items":{"type":"string"},"type":"array"}},"required":["toolkit_slug","name","ownership","connected","connected_account_id","entity_id","status","unified_scopes","members","excluded_toolkits"],"type":"object"},"HealthResponse":{"properties":{"status":{"example":"ok","type":"string"}},"required":["status"],"type":"object"},"IntentInspection":{"properties":{"contract_pin":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"identity_scope":{"enum":["user","service","org"],"type":"string"},"implementations":{"items":{"properties":{"idempotency":{"type":"string"},"params_mapping":{"additionalProperties":{"type":"string"},"type":"object"},"served":{"description":"false: declared but not served by this deployment","type":"boolean"},"toolkit":{"type":"string"},"upstream_action":{"type":"string"}},"required":["upstream_action","toolkit","params_mapping","idempotency","served"],"type":"object"},"type":"array"},"observed_stats":{"description":"Absent when the statistics cannot be read","properties":{"implementations":{"items":{"properties":{"implementation_id":{"type":"string"},"model_side_validity":{"properties":{"invalid_json":{"type":"integer"},"schema_mismatch":{"type":"integer"},"unknown_name":{"type":"integer"}},"required":["invalid_json","unknown_name","schema_mismatch"],"type":"object"},"ok_rate":{"type":["number","null"]},"p50_ms":{"type":["integer","null"]},"p95_ms":{"type":["integer","null"]},"samples":{"type":"integer"}},"required":["implementation_id","samples","ok_rate","p50_ms","p95_ms","model_side_validity"],"type":"object"},"type":"array"},"min_samples":{"type":"integer"},"window_days":{"type":"integer"}},"required":["window_days","min_samples","implementations"],"type":"object"},"sequence":{"properties":{"implemented":{"type":"boolean"},"steps":{"items":{"properties":{"action":{"type":"string"},"description":{"type":"string"},"order":{"type":"integer"}},"required":["order","action","description"],"type":"object"},"type":"array"}},"required":["implemented","steps"],"type":["object","null"]},"suggested_pin":{"description":"A hint, never applied automatically. Present only when the statistics clear the sample floor and a served sibling beats the contract pin","type":"string"}},"required":["id","description","identity_scope","implementations","contract_pin","sequence"],"type":"object"},"KeyRequestStart":{"properties":{"client_name":{"description":"The name of the agent, as the person reads it on the page. 1 to 60 characters after trimming, and no control character","maxLength":60,"minLength":1,"type":"string"},"toolkits":{"description":"Slugs of offered toolkits (available: true in GET /v1/specs/catalog), for example gmail. After the allow, the page offers to connect the person's own account of each","items":{"type":"string"},"maxItems":8,"type":"array","uniqueItems":true}},"required":["client_name"],"type":"object"},"MachineSignInStart":{"properties":{"client_name":{"description":"The name of the agent, as the person reads it on the page. 1 to 60 characters after trimming, and no control character","maxLength":60,"minLength":1,"type":"string"}},"required":["client_name"],"type":"object"},"Meta":{"properties":{"request_id":{"description":"The X-Request-ID sent, or one generated; also echoed in the x-request-id header","type":"string"},"total":{"description":"Listings only","type":"integer"},"vocabulary_version":{"description":"The checksum of the vocabulary this answer was served under; see /v1/specs/vocabulary","type":"string"}},"required":["request_id","vocabulary_version"],"type":"object"},"MintedProjectKey":{"properties":{"api_key":{"description":"The raw ak_* key. Shown in this response only","type":"string"},"created_at":{"type":"string"},"created_by":{"description":"The control principal that minted the key","type":"string"},"expires_at":{"type":["string","null"]},"id":{"type":"string"},"installation_id":{"type":"string"},"last_used_at":{"type":["string","null"]},"masked":{"description":"ak_** and the last four characters","type":"string"},"name":{"type":"string"},"organization_id":{"type":"string"},"project_id":{"type":"string"},"revoked_at":{"type":["string","null"]}},"required":["id","installation_id","organization_id","project_id","name","masked","created_by","created_at","last_used_at","expires_at","revoked_at","api_key"],"type":"object"},"ProjectKeyMintRequest":{"properties":{"expires_at":{"description":"An RFC 3339 instant. Absent mints a key that never expires","type":["string","null"]},"name":{"description":"Tells the key apart from its siblings during a rotation","maxLength":120,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"PublicToolCatalog":{"properties":{"auth":{"type":"string"},"available_count":{"type":"integer"},"execute":{"properties":{"absolute_path":{"enum":["/v1/tools/{slug}/execute"],"type":"string"},"credential":{"enum":["project_api_key"],"type":"string"},"guide":{"format":"uri","type":"string"},"header":{"type":"string"},"key_mint":{"type":"string"},"key_request":{"description":"The start of a key request: an agent with no credential asks a person for a project key","type":"string"},"machine_sign_in":{"description":"The start of machine sign-in: a person approves one link, and the agent receives a control-plane token (cpt_*) that can mint project keys and cannot run a tool","type":"string"},"method":{"enum":["POST"],"type":"string"},"summary":{"type":"string"}},"required":["summary","method","absolute_path","credential","header","key_mint","key_request","machine_sign_in","guide"],"type":"object"},"surface":{"enum":["catalog"],"type":"string"},"toolkits":{"items":{"$ref":"#/components/schemas/ToolkitView"},"type":"array"},"tools":{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},"unavailable_count":{"type":"integer"},"version":{"enum":["v1"],"type":"string"}},"required":["surface","version","auth","toolkits","available_count","unavailable_count","tools","execute"],"type":"object"},"ReadinessResponse":{"additionalProperties":true,"properties":{"ready":{"type":"boolean"}},"required":["ready"],"type":"object"},"ToolDefinition":{"properties":{"available_versions":{"items":{"type":"string"},"type":"array"},"deprecated":{"type":"boolean"},"description":{"type":"string"},"human_description":{"type":"string"},"input_parameters":{"additionalProperties":true,"description":"The JSON Schema of arguments in the execute call","type":"object"},"is_deprecated":{"type":"boolean"},"name":{"type":"string"},"no_auth":{"type":"boolean"},"output_parameters":{"additionalProperties":true,"description":"The JSON Schema of data in a successful execute result","type":"object"},"scope_requirements":{"items":{},"type":"array"},"scopes":{"items":{"type":"string"},"type":"array"},"slug":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"toolkit":{"$ref":"#/components/schemas/ToolkitRef"},"version":{"type":"string"}},"required":["slug","name","toolkit","description","input_parameters","output_parameters","tags","available_versions","version","scopes","scope_requirements","is_deprecated","deprecated","no_auth","human_description"],"type":"object"},"ToolkitCatalog":{"properties":{"available_count":{"type":"integer"},"items":{"items":{"$ref":"#/components/schemas/ToolkitView"},"type":"array"},"unavailable_count":{"type":"integer"}},"required":["items","available_count","unavailable_count"],"type":"object"},"ToolkitRef":{"properties":{"logo":{"format":"uri","type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["slug","name","logo"],"type":"object"},"ToolkitView":{"properties":{"action_count":{"type":"integer"},"available":{"description":"Whether this deployment offers the toolkit for connection now","type":"boolean"},"chip_color":{"type":"string"},"connection_scope":{"description":"The entity a connect link must bind to","enum":["organization","user"],"type":"string"},"managed_provider":{"enum":["google","microsoft",null],"type":["string","null"]},"monogram":{"type":"string"},"name":{"type":"string"},"owns_actions":{"type":"boolean"},"toolkit_slug":{"type":"string"},"unavailable_reason":{"type":["string","null"]}},"required":["toolkit_slug","name","chip_color","monogram","connection_scope","owns_actions","action_count","managed_provider","available","unavailable_reason"],"type":"object"},"UploadGrant":{"properties":{"key":{"description":"The file id","type":"string"},"newPresignedUrl":{"format":"uri","type":"string"},"new_presigned_url":{"format":"uri","type":"string"},"s3key":{"description":"The file id, under its Composio name","type":"string"},"upload_url":{"description":"PUT the bytes here. The three URL fields carry the same value","format":"uri","type":"string"},"upload_url_expires_at":{"format":"date-time","type":["string","null"]}},"required":["key","s3key","new_presigned_url","newPresignedUrl","upload_url","upload_url_expires_at"],"type":"object"},"UploadRequest":{"properties":{"filename":{"type":"string"},"md5":{"description":"A file of this project with the same md5 is reused only while its age is less than the retention window minus the upload URL lifetime; otherwise a new file is created.","type":"string"},"mimetype":{"type":"string"},"tool_slug":{"type":"string"},"toolkit_slug":{"type":"string"}},"required":["filename","md5","mimetype","tool_slug","toolkit_slug"],"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"description":"An API key (ak_* or ww_*), with the part the route needs: a Tools part for the tools routes, a channel part for the channel routes. A valid key without that part is 403 Auth_KeyOutOfReach.","in":"header","name":"x-api-key","type":"apiKey"},"BearerAuth":{"description":"Control-plane tokens use cpt_* values. An API key (ak_* or ww_*) is also sent as a bearer value; it never reaches a route under /v1/control.","scheme":"bearer","type":"http"},"WartaKeyAuth":{"description":"An API key with a channel part (a Warta key: ww_*, or an ak_* key with a channel part), as a bearer value or in x-api-key: exactly one credential per request, and an organization-scoped key implies its own organization. One kind of API key (issue #2257): a valid key without a channel part is 403 Auth_KeyOutOfReach.","scheme":"bearer","type":"http"}}},"info":{"description":"Sambungapi connects bots and agents to the channels and tools they work with. Its API covers organizations, projects, connected accounts, and tool executions. Public discovery endpoints are listed here, among them the tool catalog GET /v1/specs/catalog, which needs no credential, together with the whole tools surface under /v1/tools with its request and response schemas (the execute route is POST /v1/tools/{slug}/execute), the mint of the project key those routes take, the subscriber delivery log and the Send log a Warta key reads directly, the read of Meta's WhatsApp analytics, the business profile and the quality rating of a business phone number, the Account changes Meta reports by webhook, the management of WhatsApp Flows, and the configuration of the WhatsApp Flow endpoint Sambungapi hosts, and the channel API under /v1/channels, where a bot sends and reads through a business address with a Warta key; the rest of the authenticated control and messaging surface is described by the bounded contracts under /v1/specs/.","title":"Sambungapi API","version":"v1"},"openapi":"3.1.0","paths":{"/health":{"get":{"description":"Returns status ok when the HTTP process is alive.","operationId":"getHealth","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}},"description":"Process is alive"}},"security":[],"summary":"Check liveness"}},"/openapi.json":{"get":{"description":"Returns this standards-compliant OpenAPI 3.1 document.","operationId":"getOpenApiDocument","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OpenAPI document"}},"security":[],"summary":"Get the OpenAPI discovery document"}},"/ready":{"get":{"description":"Returns the dependency and storage readiness report. A server process runs the checks at most once in 5 seconds and answers from that result, so the report can be up to 5 seconds old.","operationId":"getReadiness","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadinessResponse"}}},"description":"Service is ready"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadinessResponse"}}},"description":"Service is not ready"}},"security":[],"summary":"Check readiness"}},"/v1/channels/addresses":{"get":{"operationId":"channels_get_addresses","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"The business addresses the credential reaches","tags":["channels"]}},"/v1/channels/addresses/{business_address_id}":{"get":{"operationId":"channels_get_addresses_business_address_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"One business address, with its platform id","tags":["channels"]}},"/v1/channels/addresses/{business_address_id}/media":{"post":{"operationId":"channels_post_addresses_business_address_id_media","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"Upload one media object to the platform; the body is the media, Content-Type its type","tags":["channels"]}},"/v1/channels/addresses/{business_address_id}/messages":{"post":{"operationId":"channels_post_addresses_business_address_id_messages","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"429":{"description":"Channel_PlatformThrottled: The platform rate-limited the send. Wait, then send again. A Microsoft Teams answer names the wait in Retry-After when Microsoft names it."},"502":{"description":"Channel_SendOutcomeUnknown: An Unknown outcome (issue #2254): the platform may have received the message, and its answer did not arrive. The Idempotency-Key keeps this answer for 24 hours, and a repeat with it makes no call to the platform. A repeat with no key can deliver the message twice. suggested_fix names the next step for the channel.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}},"503":{"description":"Channel_PlatformUnavailable: The platform was unreachable or failed. Retry the send later. A connection that did not open frees the Idempotency-Key. Or Storage_Unavailable: the storage is unavailable."},"504":{"description":"Request_Timeout: The send did not finish within the server time budget. When its call to the platform started, the call continues to its end and the answer carries x-should-retry: false: a repeat with no Idempotency-Key can deliver the message twice.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}}},"security":[{"WartaKeyAuth":[]}],"summary":"Send one message through the business address: exactly one target, text or attachments or native content; optional Idempotency-Key; 201 when the platform accepted it","tags":["channels"]}},"/v1/channels/addresses/{business_address_id}/templates":{"get":{"operationId":"channels_get_addresses_business_address_id_templates","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"The utility templates of one Messenger business address, by name and language; ?refresh=true (control only) first reads every template of the Page from Meta","tags":["channels"]},"post":{"operationId":"channels_post_addresses_business_address_id_templates","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Create one utility template on the Facebook Page: Page-owned components, or a clone of a library template by library_template_name; 201 the stored template","tags":["channels"]}},"/v1/channels/addresses/{business_address_id}/templates/{name}":{"delete":{"operationId":"channels_delete_addresses_business_address_id_templates_name","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete a utility template at Meta and in the projection: one language with ?language=, or every language","tags":["channels"]}},"/v1/channels/contacts/{contact_id}":{"get":{"operationId":"channels_get_contacts_contact_id","parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"One Contact with its channel identities","tags":["channels"]}},"/v1/channels/contacts/{contact_id}/merge":{"post":{"operationId":"channels_post_contacts_contact_id_merge","parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Merge the Contact from_contact_id into this Contact (contact.update): every channel identity moves here with its Conversations and Consent evidence, this Contact keeps its Display name or takes the other one, gets the union of the Labels and both Contact notes (refused past 4096 characters), and the other Contact is deleted; one Security audit event. 200 with the Contact","tags":["channels"]}},"/v1/channels/contacts/{contact_id}/split":{"post":{"operationId":"channels_post_contacts_contact_id_split","parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Move the chosen channel identities (kind, scope, value) of this Contact to a new Contact with a copy of its Labels and no Display name and no Contact note (contact.update): their Conversations and Consent evidence move with them, and at least one identity stays; one Security audit event. 201 with the new Contact","tags":["channels"]}},"/v1/channels/conversations/{conversation_id}":{"get":{"operationId":"channels_get_conversations_conversation_id","parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"One Conversation","tags":["channels"]}},"/v1/channels/conversations/{conversation_id}/messages":{"get":{"operationId":"channels_get_conversations_conversation_id_messages","parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"A Conversation's messages, newest first, paged with ?limit= and ?before=","tags":["channels"]}},"/v1/channels/deliveries":{"get":{"operationId":"channels_get_deliveries","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"The delivery log over both envelopes, newest first; organization-wide; ?channels= narrows it. During a Channel stop it leaves out the stopped channel's Deliveries, and meta.channel_stops names each open stop the caller reaches (issue #2259)","tags":["channels"]}},"/v1/channels/deliveries/{delivery_id}":{"get":{"operationId":"channels_get_deliveries_delivery_id","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"One Delivery of either envelope; 409 Messaging_ChannelStopped for a Delivery of a stopped channel","tags":["channels"]}},"/v1/channels/deliveries/{delivery_id}/replay":{"post":{"operationId":"channels_post_deliveries_delivery_id_replay","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Queue one failed Delivery again; 409 Messaging_ChannelStopped for a Delivery of a stopped channel","tags":["channels"]}},"/v1/channels/deliveries/{delivery_id}/retry-now":{"post":{"operationId":"channels_post_deliveries_delivery_id_retry-now","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Make one Delivery that waits for a retry due now; 409 Messaging_ChannelStopped for a Delivery of a stopped channel","tags":["channels"]}},"/v1/channels/instagram/accounts":{"get":{"operationId":"channels_get_instagram_accounts","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Instagram business addresses of the organization, with the platform app of the latest connect","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats":{"get":{"operationId":"channels_get_instagram_accounts_business_address_id_chats","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Conversations of one Instagram business address, newest activity first (the later of the last inbound and the last outbound message), each with its messaging window, its Assignment and its version","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}":{"delete":{"operationId":"channels_delete_instagram_accounts_business_address_id_chats_conversation_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete one Instagram Conversation in SambungAPI only, with its messages, Send failures and reads; the Contact stays, Meta is not called and the person still sees the messages; org_admin authority or above, or a messaging_waba.delete grant; 204","tags":["channels"]},"get":{"operationId":"channels_get_instagram_accounts_business_address_id_chats_conversation_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"One Instagram Conversation with its messaging window and its newest messages, oldest first","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}/assignee":{"post":{"operationId":"channels_post_instagram_accounts_business_address_id_chats_conversation_id_assignee","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Assign an Instagram Conversation to one principal, or clear its individual assignee (conversation.assign); its Team stays. Carries the version read","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}/messages":{"post":{"operationId":"channels_post_instagram_accounts_business_address_id_chats_conversation_id_messages","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"429":{"description":"Channel_PlatformThrottled: The platform rate-limited the send. Wait, then send again. A Microsoft Teams answer names the wait in Retry-After when Microsoft names it."},"502":{"description":"Channel_SendOutcomeUnknown: An Unknown outcome (issue #2254): the platform may have received the message, and its answer did not arrive. The Idempotency-Key keeps this answer for 24 hours, and a repeat with it makes no call to the platform. A repeat with no key can deliver the message twice. suggested_fix names the next step for the channel.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}},"503":{"description":"Channel_PlatformUnavailable: The platform was unreachable or failed. Retry the send later. A connection that did not open frees the Idempotency-Key. Or Storage_Unavailable: the storage is unavailable."},"504":{"description":"Request_Timeout: The send did not finish within the server time budget. When its call to the platform started, the call continues to its end and the answer carries x-should-retry: false: a repeat with no Idempotency-Key can deliver the message twice.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}}},"security":[{"BearerAuth":[]}],"summary":"Reply from Chats: plain inside the messaging window, with the HUMAN_AGENT tag inside the human agent window, refused after it","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}/messages/{message_id}":{"delete":{"operationId":"channels_delete_instagram_accounts_business_address_id_chats_conversation_id_messages_message_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"message_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete one Instagram message in SambungAPI only: its text and content go and its deletion time stays; Meta is not called and the person still sees it; no Delivery; org_admin authority or above, or a messaging_waba.delete grant; 204","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}/state":{"post":{"operationId":"channels_post_instagram_accounts_business_address_id_chats_conversation_id_state","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Move an Instagram Conversation to open, pending or resolved (conversation.update); a later inbound message reopens a resolved one. Carries the version read","tags":["channels"]}},"/v1/channels/instagram/accounts/{business_address_id}/chats/{conversation_id}/team":{"post":{"operationId":"channels_post_instagram_accounts_business_address_id_chats_conversation_id_team","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Put an Instagram Conversation in a Team's queue, or take it out with team_id null (conversation.assign). Carries the version read","tags":["channels"]}},"/v1/channels/instagram/connect/callback":{"post":{"operationId":"channels_post_instagram_connect_callback","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Finish an Instagram connect with its state and code: connect the Instagram professional account as one business address","tags":["channels"]}},"/v1/channels/instagram/connect/config":{"get":{"operationId":"channels_get_instagram_connect_config","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Whether this deployment serves Instagram connect","tags":["channels"]}},"/v1/channels/instagram/connect/start":{"post":{"operationId":"channels_post_instagram_connect_start","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Mint the single-use state of one Instagram connect, with the address the browser opens","tags":["channels"]}},"/v1/channels/instagram/page-connect/callback":{"post":{"operationId":"channels_post_instagram_page-connect_callback","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Finish a Page connect with its state and code: connect each granted Page's linked Instagram professional account as one business address","tags":["channels"]}},"/v1/channels/instagram/page-connect/config":{"get":{"operationId":"channels_get_instagram_page-connect_config","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Whether this deployment serves Page connect, and the Meta app id and Page connect configuration id the console opens Facebook Login for Business with","tags":["channels"]}},"/v1/channels/instagram/page-connect/start":{"post":{"operationId":"channels_post_instagram_page-connect_start","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Mint the single-use state of one Page connect for the organization","tags":["channels"]}},"/v1/channels/keys":{"get":{"operationId":"channels_get_keys","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Every Warta key of the organization, of every scope, revoked ones included","tags":["channels"]},"post":{"operationId":"channels_post_keys","parameters":[],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Mint a Warta key of scope organization, channel (with channel) or business_address (with business_address_id); the raw ww_ key is shown once","tags":["channels"]}},"/v1/channels/keys/{key_id}/revoke":{"post":{"operationId":"channels_post_keys_key_id_revoke","parameters":[{"in":"path","name":"key_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Revoke one Warta key of any scope","tags":["channels"]}},"/v1/channels/media/{media_id}":{"get":{"operationId":"channels_get_media_media_id","parameters":[{"in":"path","name":"media_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]}],"summary":"One platform media object's bytes; ?business_address_id= names the address it arrived on","tags":["channels"]}},"/v1/channels/messenger/page-connect/callback":{"post":{"operationId":"channels_post_messenger_page-connect_callback","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Finish a Page connect for Messenger with its state and code: connect each granted Facebook Page as one Messenger business address","tags":["channels"]}},"/v1/channels/messenger/page-connect/config":{"get":{"operationId":"channels_get_messenger_page-connect_config","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Whether this deployment serves Page connect for Messenger, and the Meta app id and Page connect configuration id the console opens Facebook Login for Business with","tags":["channels"]}},"/v1/channels/messenger/page-connect/start":{"post":{"operationId":"channels_post_messenger_page-connect_start","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Mint the single-use state of one Page connect for Messenger for the organization","tags":["channels"]}},"/v1/channels/messenger/pages":{"get":{"operationId":"channels_get_messenger_pages","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Messenger business addresses of the organization: one Facebook Page each","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats":{"get":{"operationId":"channels_get_messenger_pages_business_address_id_chats","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Conversations of one Messenger business address, newest activity first (the later of the last inbound and the last outbound message), each with its messaging window, its Assignment and its version","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}":{"delete":{"operationId":"channels_delete_messenger_pages_business_address_id_chats_conversation_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete one Messenger Conversation in SambungAPI only, with its messages, Send failures and reads; the Contact stays, Meta is not called and the person still sees the messages; org_admin authority or above, or a messaging_waba.delete grant; 204","tags":["channels"]},"get":{"operationId":"channels_get_messenger_pages_business_address_id_chats_conversation_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"One Messenger Conversation with its messaging window and its newest messages, oldest first","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/assignee":{"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_assignee","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Assign a Messenger Conversation to one principal, or clear its individual assignee (conversation.assign); its Team stays. Carries the version read","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/consent":{"get":{"operationId":"channels_get_messenger_pages_business_address_id_chats_conversation_id_consent","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Consent evidence of the person of one Messenger Conversation on its business address","tags":["channels"]},"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_consent","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Record the Consent evidence of the utility category for the person of one Messenger Conversation: source, captured_at and policy_reference","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/consent/withdraw":{"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_consent_withdraw","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Withdraw the Consent evidence of the person of one Messenger Conversation; the row stays with its withdrawal","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/messages":{"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_messages","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"429":{"description":"Channel_PlatformThrottled: The platform rate-limited the send. Wait, then send again. A Microsoft Teams answer names the wait in Retry-After when Microsoft names it."},"502":{"description":"Channel_SendOutcomeUnknown: An Unknown outcome (issue #2254): the platform may have received the message, and its answer did not arrive. The Idempotency-Key keeps this answer for 24 hours, and a repeat with it makes no call to the platform. A repeat with no key can deliver the message twice. suggested_fix names the next step for the channel.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}},"503":{"description":"Channel_PlatformUnavailable: The platform was unreachable or failed. Retry the send later. A connection that did not open frees the Idempotency-Key. Or Storage_Unavailable: the storage is unavailable."},"504":{"description":"Request_Timeout: The send did not finish within the server time budget. When its call to the platform started, the call continues to its end and the answer carries x-should-retry: false: a repeat with no Idempotency-Key can deliver the message twice.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}}},"security":[{"BearerAuth":[]}],"summary":"Reply from Chats: plain inside the messaging window, with the HUMAN_AGENT tag inside the human agent window, refused after it; or, with template in place of text, one approved utility template, which needs Consent evidence of the utility category in every window","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/messages/{message_id}":{"delete":{"operationId":"channels_delete_messenger_pages_business_address_id_chats_conversation_id_messages_message_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"message_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete one Messenger message in SambungAPI only: its text and content go and its deletion time stays; Meta is not called and the person still sees it; no Delivery; org_admin authority or above, or a messaging_waba.delete grant; 204","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/state":{"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_state","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Move a Messenger Conversation to open, pending or resolved (conversation.update); a later inbound message reopens a resolved one. Carries the version read","tags":["channels"]}},"/v1/channels/messenger/pages/{business_address_id}/chats/{conversation_id}/team":{"post":{"operationId":"channels_post_messenger_pages_business_address_id_chats_conversation_id_team","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Put a Messenger Conversation in a Team's queue, or take it out with team_id null (conversation.assign). Carries the version read","tags":["channels"]}},"/v1/channels/messenger/template-library":{"get":{"operationId":"channels_get_messenger_template-library","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Search Meta's template library with the token of a Facebook Page: ?q=, ?language= and ?business_address_id=","tags":["channels"]}},"/v1/channels/sends":{"get":{"operationId":"channels_get_sends","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"The Send log, newest first: Sends, Send failures and Unknown outcomes, a refused proactive message included; ?status= (unknown is an Unknown outcome, issue #2254), ?channels= and ?business_address_ids= narrow it. During a Channel stop it leaves out the stopped channel's rows, and meta.channel_stops names each open stop the caller reaches (issue #2259)","tags":["channels"]}},"/v1/channels/sends/{send_id}":{"get":{"operationId":"channels_get_sends_send_id","parameters":[{"in":"path","name":"send_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"One Send, either arm; 409 Messaging_ChannelStopped for a Send of a stopped channel","tags":["channels"]}},"/v1/channels/subscriptions":{"get":{"operationId":"channels_get_subscriptions","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"The subscriptions of both envelopes the credential reaches","tags":["channels"]},"post":{"operationId":"channels_post_subscriptions","parameters":[],"responses":{"201":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Register a subscription with the channel envelope; the raw whsec_ secret is shown once","tags":["channels"]}},"/v1/channels/subscriptions/{subscription_id}/revoke":{"post":{"operationId":"channels_post_subscriptions_subscription_id_revoke","parameters":[{"in":"path","name":"subscription_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Revoke a subscription of either envelope","tags":["channels"]}},"/v1/channels/teams/addresses":{"get":{"operationId":"channels_get_teams_addresses","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Microsoft Teams business addresses of the organization: tenant, status, platform app, messaging endpoint of a brought platform app, and the deletion date of a disconnected one","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}":{"delete":{"operationId":"channels_delete_teams_addresses_business_address_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete one Microsoft Teams business address at once with its messages, Conversations, the Send failures of its tenant, its Teams channel identities and each Contact left with none; a connected one is disconnected first; org_admin authority or above, or a messaging_waba.delete grant; 204","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats":{"get":{"operationId":"channels_get_teams_addresses_business_address_id_chats","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"The Conversations of one Microsoft Teams business address, newest activity first: direct ones with the person and the tenant, group spaces with their name","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats/{conversation_id}":{"get":{"operationId":"channels_get_teams_addresses_business_address_id_chats_conversation_id","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"One Microsoft Teams Conversation with its newest messages, oldest first, each with its poster and its reply chain; no messaging window","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats/{conversation_id}/assignee":{"post":{"operationId":"channels_post_teams_addresses_business_address_id_chats_conversation_id_assignee","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Assign a Teams Conversation to one principal, or clear its individual assignee (conversation.assign); its Team stays. Carries the version read","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats/{conversation_id}/messages":{"post":{"operationId":"channels_post_teams_addresses_business_address_id_chats_conversation_id_messages","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"429":{"description":"Channel_PlatformThrottled: The platform rate-limited the send. Wait, then send again. A Microsoft Teams answer names the wait in Retry-After when Microsoft names it."},"502":{"description":"Channel_SendOutcomeUnknown: An Unknown outcome (issue #2254): the platform may have received the message, and its answer did not arrive. The Idempotency-Key keeps this answer for 24 hours, and a repeat with it makes no call to the platform. A repeat with no key can deliver the message twice. suggested_fix names the next step for the channel.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}},"503":{"description":"Channel_PlatformUnavailable: The platform was unreachable or failed. Retry the send later. A connection that did not open frees the Idempotency-Key. Or Storage_Unavailable: the storage is unavailable."},"504":{"description":"Request_Timeout: The send did not finish within the server time budget. When its call to the platform started, the call continues to its end and the answer carries x-should-retry: false: a repeat with no Idempotency-Key can deliver the message twice.","headers":{"x-should-retry":{"description":"false: do not repeat the send by itself","schema":{"enum":["false"],"type":"string"}}}}},"security":[{"BearerAuth":[]}],"summary":"Reply from Chats as the bot, through the send of /v1/channels/*: one Usage unit when Microsoft accepts it; reply_to posts into a channel's reply chain","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats/{conversation_id}/state":{"post":{"operationId":"channels_post_teams_addresses_business_address_id_chats_conversation_id_state","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Move a Teams Conversation to open, pending or resolved (conversation.update). Carries the version read","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/chats/{conversation_id}/team":{"post":{"operationId":"channels_post_teams_addresses_business_address_id_chats_conversation_id_team","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"conversation_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Put a Teams Conversation in a Team's queue, or take it out with team_id null (conversation.assign). Carries the version read","tags":["channels"]}},"/v1/channels/teams/addresses/{business_address_id}/disconnect":{"post":{"operationId":"channels_post_teams_addresses_business_address_id_disconnect","parameters":[{"in":"path","name":"business_address_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Disconnect one Microsoft Teams business address: sambungapi stops sending and storing for its tenant, keeps the history, and queues business_address.disconnected; org_admin authority or above, or a messaging_waba.delete grant","tags":["channels"]}},"/v1/channels/teams/connect/callback":{"post":{"operationId":"channels_post_teams_connect_callback","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Channel_PlatformUnavailable: the platform was unreachable or failed; or Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Finish a Microsoft Teams connect with its state and code: read the tenant from the signed id token, refuse 409 Channel_TenantInUse a tenant another organization holds on the managed platform app, publish the app package to the tenant's org catalog (or submit it for review), install it for the person who signed in, and create, reuse or move the business address","tags":["channels"]}},"/v1/channels/teams/connect/config":{"get":{"operationId":"channels_get_teams_connect_config","parameters":[],"responses":{"200":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Whether this deployment serves Connect Microsoft Teams and the managed platform app, the redirect URI of the connect app, and the base of a brought platform app's messaging endpoint","tags":["channels"]}},"/v1/channels/teams/connect/start":{"post":{"operationId":"channels_post_teams_connect_start","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Mint the single-use state of one Microsoft Teams connect for the organization, mode admin or submit, and answer the Microsoft sign-in address of the connect app; platform_app_id publishes a brought platform app's package","tags":["channels"]}},"/v1/channels/teams/platform-apps":{"post":{"operationId":"channels_post_teams_platform-apps","parameters":[],"responses":{"204":{"description":"Success, in the {data, meta} envelope (204 has no body)"},"400":{"description":"Channel_InvalidInput, Channel_TargetInvalid or Channel_NativeMismatch"},"401":{"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"403":{"description":"Channel_ScopeDenied, or Control_Forbidden for a control caller"},"404":{"description":"Channel_AddressNotFound, Channel_ChannelNotAvailable, Channel_TemplateNotFound, Channel_ConsentNotFound or Resource_NotFound"},"409":{"description":"Channel_AddressDisconnected, Channel_WindowClosed, Channel_AddressPaused, Channel_ConsentMissing, Channel_ConsentWithdrawn, Channel_ConsentPredatesWithdrawal, Channel_TemplateNotApproved, Channel_IdempotencyConflict or Channel_IdempotencyKeyInUse; or Messaging_ChannelStopped during a Channel stop of the channel whose data the route sends, reads or connects (issues #2204 and #2259)"},"422":{"description":"Channel_PlatformRejected, or a refusal of the proactive gate (#1490): Channel_HumanAgentRefused, Channel_IdentityNotPermitted, Channel_GroupSpaceNotPermitted, Channel_CategoryNotPermitted or Channel_ProactiveNotPermitted"},"503":{"description":"Storage_Unavailable: the storage is unavailable"}},"security":[{"BearerAuth":[]}],"summary":"Save a brought platform app (Microsoft App ID, client secret stored encrypted and never answered, tenant id) and create, reuse or move the Teams business address of its tenant; 201 with the messaging endpoint /webhooks/teams/{platform_app_id}","tags":["channels"]}},"/v1/control/key_requests":{"post":{"description":"An agent with no credential asks a person for a project key. Give the person verification_uri_complete and show them user_code, then poll POST /v1/control/key_requests/token with device_code every interval seconds. The request expires after expires_in seconds. Keep device_code secret: it collects the key. An optional toolkits list, at most 8 slugs of offered toolkits, names the toolkits whose accounts the person can connect as their own on the same page after the allow.","operationId":"createKeyRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequestStart"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/DeviceAuthorization"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The codes and the link of the new key request"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InvalidInput: the body is not an object with client_name, the name is blank or longer than 60 characters or holds a control character, or toolkits is not a list of at most 8 distinct slugs of offered toolkits"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"RateLimit_Exceeded: more than 10 starts in one hour from this client address. Wait Retry-After seconds"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InternalError"}},"security":[],"summary":"Start a key request","tags":["control"]}},"/v1/control/key_requests/token":{"post":{"description":"Answers 202 until the person answers, then 200 one time with the new project key in api_key. 429 KeyRequest_SlowDown: wait Retry-After seconds. 403 KeyRequest_Denied: the person denied the request. 400 KeyRequest_Expired: the request expired, its key was already collected, or it does not exist; start a new one.","operationId":"pollKeyRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePoll"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/CollectedKeyRequest"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The new project key, shown this one time"},"202":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/DevicePollPending"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The person has not answered. Poll again after interval seconds"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"KeyRequest_Expired: the request expired, its key was already collected, or it does not exist; or Control_InvalidInput: the body is not an object with device_code"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"KeyRequest_Denied: the person denied the request, or the person who allowed it can no longer create keys in its project"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"KeyRequest_SlowDown: polled sooner than interval seconds after the previous poll. Wait Retry-After seconds"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InternalError: the key could not be created. The request stays allowed: poll again after interval seconds"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[],"summary":"Collect the project key of a key request","tags":["control"]}},"/v1/control/machine_sign_ins":{"post":{"description":"An agent with no credential asks a person to sign it in. Give the person verification_uri_complete and show them user_code, then poll POST /v1/control/machine_sign_ins/token with device_code every interval seconds. The request expires after expires_in seconds. Keep device_code secret: it collects the token. After the person approves, the poll answers one control-plane token (cpt_*) of that person's principal. The agent names no principal.","operationId":"createMachineSignIn","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineSignInStart"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/DeviceAuthorization"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The codes and the link of the new machine sign-in"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InvalidInput: the body is not an object with client_name, the name is blank or longer than 60 characters or holds a control character, or toolkits is not a list of at most 8 distinct slugs of offered toolkits"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"RateLimit_Exceeded: more than 10 starts in one hour from this client address. Wait Retry-After seconds"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InternalError"}},"security":[],"summary":"Start machine sign-in","tags":["control"]}},"/v1/control/machine_sign_ins/token":{"post":{"description":"Answers 202 until the person answers, then 200 one time with a new control-plane token (cpt_*) of the person who approved, in personal_token and in its alias token. The token expires after 30 days. It can use the control-plane routes that the person can use, except the routes that need a browser session or a fresh sign-in, and it can mint more control-plane tokens and project keys. It cannot call a tool or /mcp: mint a project key with it first. 429 MachineSignIn_SlowDown: wait Retry-After seconds. 403 MachineSignIn_Denied: the person denied the request. 400 MachineSignIn_Expired: the request expired, its token was already collected, or it does not exist; start a new one.","operationId":"pollMachineSignIn","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePoll"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/CollectedMachineSignIn"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The new control-plane token, shown this one time"},"202":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/DevicePollPending"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The person has not answered. Poll again after interval seconds"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"MachineSignIn_Expired: the request expired, its token was already collected, or it does not exist; or Control_InvalidInput: the body is not an object with device_code"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"MachineSignIn_Denied: the person denied the request, or the person who allowed it can no longer use the control plane"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"MachineSignIn_SlowDown: polled sooner than interval seconds after the previous poll. Wait Retry-After seconds"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InternalError: the token could not be created. The request stays allowed: poll again after interval seconds"}},"security":[],"summary":"Collect the control-plane token of a machine sign-in","tags":["control"]}},"/v1/control/projects/{project_id}/keys":{"post":{"description":"Mints one named ak_* key for the project with a control-plane token (cpt_*). The raw key is in api_key in this response and nowhere else, ever: the server keeps only its hash. Rotate by minting a new key, moving consumers, then revoking the old one. An agent with no credential asks a person for a project key with a key request: POST /v1/control/key_requests (see /docs/api). Machine sign-in gives an agent the control-plane token that this route takes: POST /v1/control/machine_sign_ins.","operationId":"createProjectKey","parameters":[{"description":"The project id","in":"path","name":"project_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectKeyMintRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/MintedProjectKey"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The key's metadata and the raw key, shown once"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InvalidInput: the body is not an object with name, the name is blank or longer than 120 characters, or expires_at is not an RFC 3339 instant; or Auth_MultipleCredentials"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingControlToken when the credential is not a cpt_* token, for example an ak_* key"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_Forbidden: the caller has no project_key.create grant reaching the project and no org_admin authority or above at a binding that reaches it"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Resource_NotFound or Control_NotFound: no such project, or a project of an organization outside the caller's reach"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"ProjectKey_InstallationNotServed: the project is outside the installation this deployment serves"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Control_InternalError"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"BearerAuth":[]}],"summary":"Mint a project key","tags":["control"]}},"/v1/messaging/deliveries":{"get":{"description":"One page of the organization's delivery log, newest first, as {data, meta}. Metadata only: no payload, no signing secret, and the endpoint reduced to a scheme://host[:port] locator. The organization is implied by an organization-scoped API key with a channel part (a Warta key, ww_* or ak_*) and must be named as organization_id by a control caller.","operationId":"listMessagingDeliveries","parameters":[{"description":"Required of a control caller; implied by a Warta key, which may not name another organization.","in":"query","name":"organization_id","required":false,"schema":{"type":"string"}},{"description":"The delivery lifecycle state.","in":"query","name":"status","required":false,"schema":{"enum":["pending","in_flight","completed","failed"],"type":"string"}},{"description":"The exact subscriber endpoint. Naming this and subscription_id together is a 400.","in":"query","name":"endpoint","required":false,"schema":{"type":"string"}},{"description":"The registered subscription whose endpoint to filter on, resolved server-side.","in":"query","name":"subscription_id","required":false,"schema":{"type":"string"}},{"description":"The exact event id (evt_*), which is also the delivery's Idempotency-Key.","in":"query","name":"event_id","required":false,"schema":{"type":"string"}},{"description":"The exact event class. A name outside the vocabulary is a 400 that lists it.","in":"query","name":"event_type","required":false,"schema":{"type":"string"}},{"description":"The exact WhatsApp message id. Opaque and unvalidated; an id nothing was fanned out for answers an empty page.","in":"query","name":"wamid","required":false,"schema":{"type":"string"}},{"description":"Inclusive RFC 3339 lower bound on created_at.","in":"query","name":"created_after","required":false,"schema":{"type":"string"}},{"description":"Inclusive RFC 3339 upper bound on created_at.","in":"query","name":"created_before","required":false,"schema":{"type":"string"}},{"description":"Page size; defaults to 50 and is clamped to 200.","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":200,"type":"integer"}},{"description":"The keyset cursor from meta.next_cursor. A token this surface did not mint is a 400.","in":"query","name":"before","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"One page of the delivery log"},"400":{"description":"A malformed filter, or a control caller that named no organization"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"A phone-scoped Warta key, or an organization this caller does not reach"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"List an organization's subscriber deliveries"}},"/v1/messaging/deliveries/{delivery_id}":{"get":{"description":"The same projection as the listing plus the delivery's capped attempt timeline. A missing id, a purged one past the 30-day terminal-row horizon, and another organization's id all answer the same 404, so a dlv_* id is never an existence oracle.","operationId":"getMessagingDelivery","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}},{"description":"Required of a control caller; implied by a Warta key.","in":"query","name":"organization_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"One delivery"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"A phone-scoped Warta key, or an organization this caller does not reach"},"404":{"description":"No such delivery in this organization's log"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Read one delivery's metadata"}},"/v1/messaging/deliveries/{delivery_id}/replay":{"post":{"description":"202 means QUEUED, not sent: a fresh delivery id joins the tail of the queue carrying the same event id, endpoint, payload, signature and Idempotency-Key, and the source row stays terminal. Only a terminal failed delivery is accepted. There is no event-wide bulk replay.","operationId":"replayMessagingDelivery","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Required of a control caller; implied by a Warta key.","type":"string"}},"type":"object"}}},"required":false},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The replay is queued"},"400":{"description":"A body that is not a JSON object, or a control caller that named no organization"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"A phone-scoped Warta key, or an organization this caller does not reach"},"404":{"description":"No such delivery in this organization's log"},"409":{"description":"The delivery is not terminal failed, or a replay of it is already queued"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Queue one failed delivery again"}},"/v1/messaging/deliveries/{delivery_id}/retry-now":{"post":{"description":"202 means DUE, not sent: the delivery keeps its id and its attempt_count, and the delivery worker sends it on its next pass. That attempt counts toward the nine, and its attempt record's trigger is retry_now. A wait after a Retry-After header ends too. Only a pending delivery that has made at least one attempt and waits for its next attempt is accepted (waiting_for_retry on the delivery log). There is no bulk Retry now.","operationId":"retryMessagingDeliveryNow","parameters":[{"in":"path","name":"delivery_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Required of a control caller; implied by a Warta key.","type":"string"}},"type":"object"}}},"required":false},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The delivery is due now: {delivery_id, status, next_attempt_at}"},"400":{"description":"A body that is not a JSON object, or a control caller that named no organization"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"A phone-scoped Warta key, or an organization this caller does not reach"},"404":{"description":"No such delivery in this organization's log"},"409":{"description":"The delivery does not wait for a retry (Messaging_DeliveryNotWaiting)"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Make one delivery that waits for a retry due now"}},"/v1/messaging/sends":{"get":{"description":"One page of the organization's Send log, newest first, as {data, meta}: every message sambungapi recorded after Meta answered. An accepted Send carries Meta's wamid and the newest status Meta reported; a refused attempt carries wamid null, failure_reason (the slug) and failure_code (Meta's number), and never Meta's error message. An organization-scoped API key with a channel part (a Warta key, ww_* or ak_*) reads the organization's gateway Sends, a phone-scoped key its own number's, and a control caller every origin and must name organization_id. A Send is not a Delivery: this log is what went to Meta, the delivery log is what reached your endpoint.","operationId":"listMessagingSends","parameters":[{"description":"Required of a control caller; implied by a Warta key, which may not name another organization.","in":"query","name":"organization_id","required":false,"schema":{"type":"string"}},{"description":"The contact's phone number, country code first; a leading + is dropped. Not a phone number is a 400.","in":"query","name":"contact","required":false,"schema":{"type":"string"}},{"description":"The business phone number, exact. A phone-scoped Warta key naming another number is a 403.","in":"query","name":"phone_number_id","required":false,"schema":{"type":"string"}},{"description":"The exact WhatsApp message id. Opaque and unvalidated; it matches no refused attempt, which has none.","in":"query","name":"wamid","required":false,"schema":{"type":"string"}},{"description":"Inclusive RFC 3339 lower bound on at.","in":"query","name":"created_after","required":false,"schema":{"type":"string"}},{"description":"Inclusive RFC 3339 upper bound on at.","in":"query","name":"created_before","required":false,"schema":{"type":"string"}},{"description":"Page size; defaults to 50 and is clamped to 200.","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":200,"type":"integer"}},{"description":"The keyset cursor from meta.next_cursor. A token this surface did not mint is a 400.","in":"query","name":"before","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"One page of the Send log"},"400":{"description":"A malformed filter, or a control caller that named no organization"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"A phone-scoped Warta key naming another number, or an organization this caller does not reach"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"List an organization's Sends and refused attempts"}},"/v1/messaging/sends/{send_id}":{"get":{"description":"The listing's projection for one om_* or sf_* id. A refused attempt answers 200 with wamid null, never a 404. A missing id, another organization's id, and one outside the credential's reach all answer the same 404, so a send id is never an existence oracle.","operationId":"getMessagingSend","parameters":[{"in":"path","name":"send_id","required":true,"schema":{"type":"string"}},{"description":"Required of a control caller; implied by a Warta key.","in":"query","name":"organization_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"One Send"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"An organization this caller does not reach"},"404":{"description":"No such Send in the log this credential reads"}},"security":[{"WartaKeyAuth":[]},{"BearerAuth":[]}],"summary":"Read one Send or refused attempt"}},"/v1/messaging/wabas/{waba_id}/account-changes":{"get":{"description":"Captured phone_number_quality_update, business_capability_update, account_update and account_alerts changes, newest first, with Meta's whole value object as raw. No change is a quality rating.","operationId":"listAccountChanges","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"field","required":false,"schema":{"enum":["phone_number_quality_update","business_capability_update","account_update","account_alerts"],"type":"string"}},{"in":"query","name":"phone_number_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"maximum":200,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"changes":{"items":{"properties":{"entity":{"type":"object"},"entry_id":{"type":["string","null"]},"event":{"type":["string","null"]},"field":{"enum":["phone_number_quality_update","business_capability_update","account_update","account_alerts"],"type":"string"},"id":{"type":"string"},"occurred_at":{"format":"date-time","type":["string","null"]},"phone_number_id":{"type":["string","null"]},"raw":{"description":"Meta's whole value object"},"received_at":{"format":"date-time","type":"string"},"unknown_fields":{"items":{"type":"string"},"type":"array"},"values":{"type":"object"}},"type":"object"},"type":"array"},"source":{"type":"string"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The captured Account changes, newest first, in the {data, meta} envelope"},"400":{"description":"Messaging_InvalidInput: a query parameter this route does not take, repeated, or out of range"},"401":{"description":"Absent, invalid or revoked credential"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"}},"security":[{"BearerAuth":[]}],"summary":"List the quality, limit and capability changes Meta reported by webhook"}},"/v1/messaging/wabas/{waba_id}/analytics/call":{"get":{"description":"Meta's call_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. Meta documents no lookback for this family, so none is enforced here. Sambungapi stores nothing from this read.","operationId":"getMetaCallAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"start","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"end","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["HALF_HOUR","DAILY","MONTHLY"],"type":"string"}},{"description":"Comma-separated business phone numbers, country code first. Leave it out for every number of the account.","explode":false,"in":"query","name":"phone_numbers","required":false,"schema":{"items":{"pattern":"^\\+?[0-9]{6,15}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated two-letter country codes.","explode":false,"in":"query","name":"country_codes","required":false,"schema":{"items":{"pattern":"^[A-Za-z]{2}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"directions","required":false,"schema":{"items":{"enum":["USER_INITIATED","BUSINESS_INITIATED"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"dimensions","required":false,"schema":{"items":{"enum":["phone","direction","country"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":false,"schema":{"items":{"enum":["COUNT","COST","AVERAGE_DURATION"],"type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's call analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/conversation":{"get":{"description":"Meta's conversation_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 1 year lookback is refused before Graph is called. Sambungapi stores nothing from this read.","operationId":"getMetaConversationAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"start","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"end","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["HALF_HOUR","DAILY","MONTHLY"],"type":"string"}},{"description":"Comma-separated business phone numbers, country code first. Leave it out for every number of the account.","explode":false,"in":"query","name":"phone_numbers","required":false,"schema":{"items":{"pattern":"^\\+?[0-9]{6,15}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":false,"schema":{"items":{"enum":["COST","CONVERSATION"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"conversation_categories","required":false,"schema":{"items":{"enum":["AUTHENTICATION","MARKETING","SERVICE","UTILITY"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"conversation_types","required":false,"schema":{"items":{"enum":["FREE_ENTRY_POINT","FREE_TIER","REGULAR"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"conversation_directions","required":false,"schema":{"items":{"enum":["BUSINESS_INITIATED","USER_INITIATED","UNKNOWN"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"dimensions","required":false,"schema":{"items":{"enum":["CONVERSATION_CATEGORY","CONVERSATION_DIRECTION","CONVERSATION_TYPE","COUNTRY","PHONE"],"type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's conversation analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/group":{"get":{"description":"Meta's group_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 90 days lookback is refused before Graph is called. Pages: pass next_after back as after. Sambungapi stores nothing from this read.","operationId":"getMetaGroupAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"start","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"end","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"Comma-separated ids, within the bound Meta documents.","explode":false,"in":"query","name":"group_ids","required":true,"schema":{"items":{"type":"string"},"maxItems":1,"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":true,"schema":{"items":{"enum":["SENT","DELIVERED","READ","PARTICIPANTS_JOINED","PARTICIPANTS_LEFT"],"type":"string"},"type":"array"},"style":"form"},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":false,"schema":{"enum":["DAILY"],"type":"string"}},{"description":"Meta's cursor from next_after, for the next page.","in":"query","name":"after","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's group analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/messaging":{"get":{"description":"Meta's analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 1 year lookback is refused before Graph is called. Sambungapi stores nothing from this read.","operationId":"getMetaMessagingAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"start","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"end","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["HALF_HOUR","DAY","MONTH"],"type":"string"}},{"description":"Comma-separated business phone numbers, country code first. Leave it out for every number of the account.","explode":false,"in":"query","name":"phone_numbers","required":false,"schema":{"items":{"pattern":"^\\+?[0-9]{6,15}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated numbers Meta documents for this family.","explode":false,"in":"query","name":"product_types","required":false,"schema":{"items":{"enum":[0,2,100],"type":"integer"},"type":"array"},"style":"form"},{"description":"Comma-separated two-letter country codes.","explode":false,"in":"query","name":"country_codes","required":false,"schema":{"items":{"pattern":"^[A-Za-z]{2}$","type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's messaging analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/pricing":{"get":{"description":"Meta's pricing_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 1 year lookback is refused before Graph is called. Sambungapi stores nothing from this read.","operationId":"getMetaPricingAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"start","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"A UNIX timestamp in seconds (UTC).","in":"query","name":"end","required":true,"schema":{"minimum":0,"type":"integer"}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["HALF_HOUR","DAILY","MONTHLY"],"type":"string"}},{"description":"Comma-separated business phone numbers, country code first. Leave it out for every number of the account.","explode":false,"in":"query","name":"phone_numbers","required":false,"schema":{"items":{"pattern":"^\\+?[0-9]{6,15}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated two-letter country codes.","explode":false,"in":"query","name":"country_codes","required":false,"schema":{"items":{"pattern":"^[A-Za-z]{2}$","type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":false,"schema":{"items":{"enum":["COST","VOLUME"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"pricing_types","required":false,"schema":{"items":{"enum":["FREE_CUSTOMER_SERVICE","FREE_ENTRY_POINT","REGULAR"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"pricing_categories","required":false,"schema":{"items":{"enum":["AUTHENTICATION","AUTHENTICATION_INTERNATIONAL","MARKETING","MARKETING_LITE","SERVICE","UTILITY","REFERRAL_CONVERSION"],"type":"string"},"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"dimensions","required":false,"schema":{"items":{"enum":["COUNTRY","PHONE","PRICING_CATEGORY","PRICING_TYPE","TIER"],"type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's pricing analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/template":{"get":{"description":"Meta's template_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 90 days lookback is refused before Graph is called. Pages: pass next_after back as after. Sambungapi stores nothing from this read.","operationId":"getMetaTemplateAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds, or a YYYY-MM-DD date. Dates are required when use_waba_timezone is true.","in":"query","name":"start","required":true,"schema":{"anyOf":[{"minimum":0,"type":"integer"},{"format":"date","type":"string"}]}},{"description":"A UNIX timestamp in seconds, or a YYYY-MM-DD date. Dates are required when use_waba_timezone is true.","in":"query","name":"end","required":true,"schema":{"anyOf":[{"minimum":0,"type":"integer"},{"format":"date","type":"string"}]}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["DAILY"],"type":"string"}},{"description":"Comma-separated ids, within the bound Meta documents.","explode":false,"in":"query","name":"template_ids","required":true,"schema":{"items":{"type":"string"},"maxItems":10,"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":false,"schema":{"items":{"enum":["COST","CLICKED","DELIVERED","READ","SENT","APP_ACTIVATIONS","APP_ADD_TO_CART","APP_CHECKOUTS_INITIATED","APP_PURCHASES","APP_PURCHASES_CONVERSION_VALUE","WEBSITE_ADD_TO_CART","WEBSITE_CHECKOUTS_INITIATED","WEBSITE_PURCHASES","WEBSITE_PURCHASES_CONVERSION_VALUE"],"type":"string"},"type":"array"},"style":"form"},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"product_type","required":false,"schema":{"enum":["CLOUD_API","MARKETING_MESSAGES_API_FOR_WHATSAPP"],"type":"string"}},{"description":"Show Meta's daily values in the account's own time zone.","in":"query","name":"use_waba_timezone","required":false,"schema":{"type":"boolean"}},{"description":"Meta's cursor from next_after, for the next page.","in":"query","name":"after","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's template analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/analytics/template_group":{"get":{"description":"Meta's template_group_analytics values through the account's stored token, as {data, meta}. data.source is meta_graph: data_points are Meta's data points copied verbatim, raw is Meta's whole answer, and nothing is counted from Sambungapi's own delivery or message records or estimated. observed_at is when this server received Meta's answer. A start older than Meta's 90 days lookback is refused before Graph is called. Pages: pass next_after back as after. Sambungapi stores nothing from this read.","operationId":"getMetaTemplateGroupAnalytics","parameters":[{"in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"A UNIX timestamp in seconds, or a YYYY-MM-DD date. Dates are required when use_waba_timezone is true.","in":"query","name":"start","required":true,"schema":{"anyOf":[{"minimum":0,"type":"integer"},{"format":"date","type":"string"}]}},{"description":"A UNIX timestamp in seconds, or a YYYY-MM-DD date. Dates are required when use_waba_timezone is true.","in":"query","name":"end","required":true,"schema":{"anyOf":[{"minimum":0,"type":"integer"},{"format":"date","type":"string"}]}},{"description":"One value Meta documents for this family. Case does not matter.","in":"query","name":"granularity","required":true,"schema":{"enum":["DAILY"],"type":"string"}},{"description":"Comma-separated ids, within the bound Meta documents.","explode":false,"in":"query","name":"template_group_ids","required":true,"schema":{"items":{"type":"string"},"maxItems":10,"type":"array"},"style":"form"},{"description":"Comma-separated values Meta documents for this family. Case does not matter.","explode":false,"in":"query","name":"metric_types","required":false,"schema":{"items":{"enum":["cost","clicked","delivered","read","sent"],"type":"string"},"type":"array"},"style":"form"},{"description":"Show Meta's daily values in the account's own time zone.","in":"query","name":"use_waba_timezone","required":false,"schema":{"type":"boolean"}},{"description":"Meta's cursor from next_after, for the next page.","in":"query","name":"after","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer"},"400":{"description":"Messaging_InvalidInput before any Graph call: a parameter this family does not take, a value outside its vocabulary, a missing required parameter, end before start, or a start outside the lookback. Also Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused the read on a permission code"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused the read or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read Meta's template group analytics for one WhatsApp Business Account"}},"/v1/messaging/wabas/{waba_id}/flow-encryption":{"delete":{"description":"Every endpoint of the account answers Meta 421 until a new key is signed.","operationId":"deleteFlowEncryption","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Removed"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Retire the account's Flow endpoint key"},"get":{"description":"The public key in custody and, for each business phone number, Meta's business_public_key_signature_status and whether Meta's key is the key in custody. Never the private key.","operationId":"getFlowEncryption","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The key and one entry per business phone number"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Read the account's Flow endpoint key and Meta's copy of it"},"post":{"description":"Mints a 2048-bit RSA pair once, then signs its public half onto every business phone number of the account at Meta. Safe to repeat: a later call signs the same key again.","operationId":"signFlowEncryption","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The pair was minted by this call and signed; 200 when the pair already held was signed again"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Hold a Flow endpoint key and sign it onto every number"}},"/v1/messaging/wabas/{waba_id}/flows":{"get":{"description":"One page of Meta's Flows for the account through its stored token: flows[] holds flow_id, name, status, categories and validation_errors as Meta returns them. Sambungapi stores no Flow.","operationId":"listMetaFlows","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's cursor from next_after, for the next page","in":"query","name":"after","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"List the WhatsApp Flows of one WhatsApp Business Account"},"post":{"description":"Creates a Flow with Meta's fields. A clone_flow_id must name a Flow of this account. Answers Meta's Flow id, success and validation_errors.","operationId":"createMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"categories":{"items":{"enum":["SIGN_UP","SIGN_IN","APPOINTMENT_BOOKING","LEAD_GENERATION","CONTACT_US","CUSTOMER_SUPPORT","SURVEY","OTHER"],"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"clone_flow_id":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"endpoint_uri":{"format":"uri","type":"string"},"flow_json":{"anyOf":[{"type":"object"},{"maxLength":10485760,"type":"string"}],"description":"The Flow JSON object, or a string holding it. At most 10 MB."},"name":{"minLength":1,"type":"string"},"publish":{"type":"boolean"}},"required":["name","categories"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Create a WhatsApp Flow"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}":{"delete":{"description":"Meta deletes only a DRAFT Flow.","operationId":"deleteMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Delete a WhatsApp Flow"},"get":{"description":"Every field of Meta's Flow detail request, with Meta's status verbatim. A Flow another account owns is the same 404 as one Meta does not hold.","operationId":"getMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Read one WhatsApp Flow"},"patch":{"description":"Sends name, categories or endpoint_uri to Meta. Meta decides whether the Flow's status allows it.","operationId":"updateMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"minProperties":1,"properties":{"categories":{"items":{"enum":["SIGN_UP","SIGN_IN","APPOINTMENT_BOOKING","LEAD_GENERATION","CONTACT_US","CUSTOMER_SUPPORT","SURVEY","OTHER"],"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"endpoint_uri":{"format":"uri","type":"string"},"name":{"minLength":1,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Update a WhatsApp Flow's metadata"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}/assets":{"get":{"description":"Each asset's name, asset_type and download_url as Meta returns them.","operationId":"listMetaFlowAssets","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"List a WhatsApp Flow's assets"},"post":{"description":"Sends flow_json to Meta as the file flow.json with asset_type FLOW_JSON. Answers Meta's success and validation_errors.","operationId":"uploadMetaFlowJson","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"flow_json":{"anyOf":[{"type":"object"},{"maxLength":10485760,"type":"string"}],"description":"The Flow JSON object, or a string holding it. At most 10 MB."}},"required":["flow_json"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Replace a WhatsApp Flow's Flow JSON"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}/deprecate":{"post":{"description":"Meta says a deprecated Flow cannot be sent or restored.","operationId":"deprecateMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Deprecate a WhatsApp Flow"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}/endpoint":{"delete":{"description":"Meta's next request for the Flow answers 404.","operationId":"deleteFlowEndpoint","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"204":{"description":"Removed"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Remove one Flow's endpoint"},"get":{"description":"The endpoint_uri to give Meta, the handler_url, and whether the account holds a key. Never the signing secret.","operationId":"getFlowEndpoint","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The endpoint"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Read one Flow's endpoint"},"put":{"description":"Names the organization's Flow handler. The Flow's owner is read from Meta first. The whsec_ signing secret is shown once, on the answer that mints it.","operationId":"putFlowEndpoint","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"handler_url":{"description":"An absolute http or https URL that receives each decrypted Flow request","format":"uri","type":"string"},"rotate_signing_secret":{"description":"Mint and show a new signing secret for an existing endpoint","type":"boolean"}},"required":["handler_url"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Created, with signing_secret shown once; 200 when an existing endpoint changed"},"400":{"description":"Messaging_InvalidInput, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, Messaging_FlowNotFound, Messaging_FlowEndpointNotFound or Messaging_FlowKeyNotFound"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Configure one Flow's endpoint"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}/messages":{"post":{"description":"Reads the Flow's owner and Meta's status first, refuses DEPRECATED and BLOCKED, and sends every other status for Meta to decide. mode is required. flow_status in the answer is Meta's word, never inferred from mode.","operationId":"sendMetaFlowMessage","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"body":{"minLength":1,"type":"string"},"flow_action":{"enum":["navigate","data_exchange"],"type":"string"},"flow_action_payload":{"additionalProperties":false,"properties":{"data":{"minProperties":1,"type":"object"},"screen":{"minLength":1,"type":"string"}},"required":["screen"],"type":"object"},"flow_cta":{"description":"The button text. Meta advises 30 characters or fewer.","minLength":1,"type":"string"},"flow_token":{"minLength":1,"type":"string"},"footer":{"minLength":1,"type":"string"},"header":{"minLength":1,"type":"string"},"mode":{"enum":["draft","published"],"type":"string"},"phone_number_id":{"description":"A business phone number of this account","type":"string"},"to":{"description":"The recipient, country code first","type":"string"}},"required":["phone_number_id","to","mode","flow_cta","body"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowNotSendable: Meta reports the Flow as DEPRECATED or BLOCKED"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Send a WhatsApp Flow message"}},"/v1/messaging/wabas/{waba_id}/flows/{flow_id}/publish":{"post":{"description":"Meta publishes only a Flow whose validation errors are resolved.","operationId":"publishMetaFlow","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's Flow id","in":"path","name":"flow_id","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Meta's answer in {data, meta}: data.source is meta_graph and data.raw is Meta's whole answer"},"400":{"description":"Messaging_InvalidInput before any Graph call, or Messaging_GraphTokenInvalid when Meta rejects the stored token"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code"},"404":{"description":"Messaging_WabaNotFound for an account this caller does not operate, or Messaging_FlowNotFound for a Flow Meta does not hold or another account owns"},"409":{"description":"Messaging_FlowRefused: Meta refused the operation, for example an update or delete of a PUBLISHED Flow. The message names the operation and Meta's code"},"429":{"description":"Messaging_GraphThrottled: Meta is throttling the account; see Retry-After"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable"}},"security":[{"BearerAuth":[]}],"summary":"Publish a WhatsApp Flow"}},"/v1/messaging/wabas/{waba_id}/phones/{phone_number_id}/business-profile":{"get":{"description":"The stored observation, with no Graph call: profile is projected from raw, Meta's whole answer to the last read, and observed_at dates it. Before the first refresh or update, observed_at, profile and raw are null.","operationId":"getBusinessProfile","parameters":[{"description":"The account's wb_ id.","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's phone number id of a business phone number of that account.","in":"path","name":"phone_number_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"observed_at":{"description":"When this server received Meta's answer. Null before the first refresh or update.","format":"date-time","type":["string","null"]},"phone_number_id":{"type":"string"},"profile":{"anyOf":[{"properties":{"about":{"anyOf":[{"description":"The About text, shown beneath the profile picture. Meta: it cannot be empty and must be between 1 and 139 characters; hyperlinks do not render as links and Markdown is not supported","type":"string"},{"type":"null"}]},"address":{"anyOf":[{"description":"The address of the business. Meta: character limit 256","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"description":"The description of the business. Meta: character limit 512","type":"string"},{"type":"null"}]},"email":{"anyOf":[{"description":"The contact email of the business. Meta: a valid email format, character limit 128. Meta checks the format; this build checks only the limit","type":"string"},{"type":"null"}]},"profile_picture_url":{"anyOf":[{"description":"The URL of the profile picture, as Meta answers it. Read only: an update sets the picture with profile_picture_handle","type":"string"},{"type":"null"}]},"vertical":{"anyOf":[{"description":"The category of the business. Meta: an empty string or one of the accepted values","type":"string"},{"type":"null"}]},"websites":{"anyOf":[{"description":"The URLs of the business, such as a website, a Facebook Page or an Instagram account. Meta: at most 2 websites of at most 256 characters each, and each must include the http:// or https:// portion","items":{"maxLength":256,"pattern":"^[Hh][Tt][Tt][Pp][Ss]?://.+","type":"string"},"type":"array"},{"type":"null"}]}},"type":"object"},{"type":"null"}]},"raw":{"description":"Meta's whole answer to the last read."},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"description":"Fields Meta sent that are not projected. Their values are in raw.","items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The business profile Meta last reported, in the {data, meta} envelope"},"401":{"description":"Absent, invalid or revoked credential"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"}},"security":[{"BearerAuth":[]}],"summary":"Read the business profile Meta last reported for one business phone number"},"patch":{"description":"Sends the fields given to Meta, then reads the profile back and stores that answer, so the response is what Meta reports holding and not the request. A field left out is left as it is. There is no delete: Meta deletes a business profile only by deleting the phone number.","operationId":"updateBusinessProfile","parameters":[{"description":"The account's wb_ id.","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's phone number id of a business phone number of that account.","in":"path","name":"phone_number_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"minProperties":1,"properties":{"about":{"description":"The About text, shown beneath the profile picture. Meta: it cannot be empty and must be between 1 and 139 characters; hyperlinks do not render as links and Markdown is not supported","maxLength":139,"minLength":1,"type":"string"},"address":{"description":"The address of the business. Meta: character limit 256","maxLength":256,"type":"string"},"description":{"description":"The description of the business. Meta: character limit 512","maxLength":512,"type":"string"},"email":{"description":"The contact email of the business. Meta: a valid email format, character limit 128. Meta checks the format; this build checks only the limit","maxLength":128,"type":"string"},"profile_picture_handle":{"description":"The handle Meta's Resumable Upload API returns for the uploaded picture file. Write only: a read answers profile_picture_url instead","minLength":1,"type":"string"},"vertical":{"description":"The category of the business. Meta: an empty string or one of the accepted values","enum":["","ALCOHOL","APPAREL","AUTO","BEAUTY","EDU","ENTERTAIN","EVENT_PLAN","FINANCE","GOVT","GROCERY","HEALTH","HOTEL","NONPROFIT","ONLINE_GAMBLING","OTC_DRUGS","OTHER","PHYSICAL_GAMBLING","PROF_SERVICES","RESTAURANT","RETAIL","TRAVEL"],"type":"string"},"websites":{"description":"The URLs of the business, such as a website, a Facebook Page or an Instagram account. Meta: at most 2 websites of at most 256 characters each, and each must include the http:// or https:// portion","items":{"maxLength":256,"pattern":"^[Hh][Tt][Tt][Pp][Ss]?://.+","type":"string"},"maxItems":2,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"observed_at":{"description":"When this server received Meta's answer. Null before the first refresh or update.","format":"date-time","type":["string","null"]},"phone_number_id":{"type":"string"},"profile":{"anyOf":[{"properties":{"about":{"anyOf":[{"description":"The About text, shown beneath the profile picture. Meta: it cannot be empty and must be between 1 and 139 characters; hyperlinks do not render as links and Markdown is not supported","type":"string"},{"type":"null"}]},"address":{"anyOf":[{"description":"The address of the business. Meta: character limit 256","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"description":"The description of the business. Meta: character limit 512","type":"string"},{"type":"null"}]},"email":{"anyOf":[{"description":"The contact email of the business. Meta: a valid email format, character limit 128. Meta checks the format; this build checks only the limit","type":"string"},{"type":"null"}]},"profile_picture_url":{"anyOf":[{"description":"The URL of the profile picture, as Meta answers it. Read only: an update sets the picture with profile_picture_handle","type":"string"},{"type":"null"}]},"vertical":{"anyOf":[{"description":"The category of the business. Meta: an empty string or one of the accepted values","type":"string"},{"type":"null"}]},"websites":{"anyOf":[{"description":"The URLs of the business, such as a website, a Facebook Page or an Instagram account. Meta: at most 2 websites of at most 256 characters each, and each must include the http:// or https:// portion","items":{"maxLength":256,"pattern":"^[Hh][Tt][Tt][Pp][Ss]?://.+","type":"string"},"type":"array"},{"type":"null"}]}},"type":"object"},{"type":"null"}]},"raw":{"description":"Meta's whole answer to the last read."},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"description":"Fields Meta sent that are not projected. Their values are in raw.","items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The business profile Meta last reported, in the {data, meta} envelope"},"400":{"description":"Messaging_InvalidInput before any Graph call: a field Meta does not take, a wrong type, a text past Meta's limit, a third website, a website without http:// or https://, or a vertical outside Meta's list. Messaging_GraphTokenInvalid: Meta rejected the stored token, and the account moves to EXPIRED"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code, and the account moves to ACCESS_LOST"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Update the business profile of one business phone number at Meta"}},"/v1/messaging/wabas/{waba_id}/phones/{phone_number_id}/business-profile/refresh":{"post":{"description":"Reads the profile with the account's stored credential, stores Meta's whole answer with the instant it arrived, and answers the same shape as the read. No body. A refusal stores nothing.","operationId":"refreshBusinessProfile","parameters":[{"description":"The account's wb_ id.","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's phone number id of a business phone number of that account.","in":"path","name":"phone_number_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"observed_at":{"description":"When this server received Meta's answer. Null before the first refresh or update.","format":"date-time","type":["string","null"]},"phone_number_id":{"type":"string"},"profile":{"anyOf":[{"properties":{"about":{"anyOf":[{"description":"The About text, shown beneath the profile picture. Meta: it cannot be empty and must be between 1 and 139 characters; hyperlinks do not render as links and Markdown is not supported","type":"string"},{"type":"null"}]},"address":{"anyOf":[{"description":"The address of the business. Meta: character limit 256","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"description":"The description of the business. Meta: character limit 512","type":"string"},{"type":"null"}]},"email":{"anyOf":[{"description":"The contact email of the business. Meta: a valid email format, character limit 128. Meta checks the format; this build checks only the limit","type":"string"},{"type":"null"}]},"profile_picture_url":{"anyOf":[{"description":"The URL of the profile picture, as Meta answers it. Read only: an update sets the picture with profile_picture_handle","type":"string"},{"type":"null"}]},"vertical":{"anyOf":[{"description":"The category of the business. Meta: an empty string or one of the accepted values","type":"string"},{"type":"null"}]},"websites":{"anyOf":[{"description":"The URLs of the business, such as a website, a Facebook Page or an Instagram account. Meta: at most 2 websites of at most 256 characters each, and each must include the http:// or https:// portion","items":{"maxLength":256,"pattern":"^[Hh][Tt][Tt][Pp][Ss]?://.+","type":"string"},"type":"array"},{"type":"null"}]}},"type":"object"},{"type":"null"}]},"raw":{"description":"Meta's whole answer to the last read."},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"description":"Fields Meta sent that are not projected. Their values are in raw.","items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The business profile Meta last reported, in the {data, meta} envelope"},"400":{"description":"Messaging_GraphTokenInvalid: Meta rejected the stored token, and the account moves to EXPIRED"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code, and the account moves to ACCESS_LOST"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused or could not be reached"}},"security":[{"BearerAuth":[]}],"summary":"Read the business profile from Meta and store it"}},"/v1/messaging/wabas/{waba_id}/phones/{phone_number_id}/quality":{"get":{"description":"The stored read, with no Graph call. quality_status is high only for a GREEN read younger than max_age_seconds.","operationId":"getPhoneQuality","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's phone number id of a business phone number of that account","in":"path","name":"phone_number_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"checked_at":{"format":"date-time","type":["string","null"]},"display_phone_number":{"type":["string","null"]},"expires_at":{"format":"date-time","type":["string","null"]},"max_age_seconds":{"type":"integer"},"phone_number_id":{"type":"string"},"quality_rating":{"anyOf":[{"enum":["GREEN","YELLOW","RED","NA","UNKNOWN"],"type":"string"},{"type":"null"}],"description":"Meta's token as read at checked_at. Null when the read carried none this build can read, or before the first read"},"quality_status":{"description":"The verdict to branch on: high only for a GREEN read younger than max_age_seconds","enum":["high","medium","low","not_determined","unreadable","stale","not_observed"],"type":"string"},"raw":{"description":"Meta's whole answer to the last read, or null"},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The number's quality in the {data, meta} envelope"},"400":{"description":"Messaging_InvalidInput: a query parameter this route does not take, repeated, or out of range"},"401":{"description":"Absent, invalid or revoked credential"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"}},"security":[{"BearerAuth":[]}],"summary":"Read the quality rating Meta last reported for one business phone number"}},"/v1/messaging/wabas/{waba_id}/phones/{phone_number_id}/quality/refresh":{"post":{"description":"Reads GET /{phone_number_id}?fields=quality_rating with the account's stored credential and stores Meta's whole answer with the instant it arrived. No body. A refusal stores nothing.","operationId":"refreshPhoneQuality","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}},{"description":"Meta's phone number id of a business phone number of that account","in":"path","name":"phone_number_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"checked_at":{"format":"date-time","type":["string","null"]},"display_phone_number":{"type":["string","null"]},"expires_at":{"format":"date-time","type":["string","null"]},"max_age_seconds":{"type":"integer"},"phone_number_id":{"type":"string"},"quality_rating":{"anyOf":[{"enum":["GREEN","YELLOW","RED","NA","UNKNOWN"],"type":"string"},{"type":"null"}],"description":"Meta's token as read at checked_at. Null when the read carried none this build can read, or before the first read"},"quality_status":{"description":"The verdict to branch on: high only for a GREEN read younger than max_age_seconds","enum":["high","medium","low","not_determined","unreadable","stale","not_observed"],"type":"string"},"raw":{"description":"Meta's whole answer to the last read, or null"},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"The number's quality in the {data, meta} envelope"},"400":{"description":"Messaging_GraphTokenInvalid: Meta rejected the stored token, and the account moves to EXPIRED"},"401":{"description":"Absent, invalid or revoked credential"},"403":{"description":"Messaging_GraphAccessDenied: Meta refused on a permission code, and the account moves to ACCESS_LOST"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"},"502":{"description":"Messaging_GraphError or Messaging_GraphUnavailable: Meta refused or could not be reached. Nothing is stored"}},"security":[{"BearerAuth":[]}],"summary":"Read the quality rating from Meta and store it"}},"/v1/messaging/wabas/{waba_id}/quality":{"get":{"description":"The stored reads, with no Graph call. A number nobody read answers quality_status not_observed.","operationId":"listPhoneQuality","parameters":[{"description":"Sambungapi's wb_* id of the WhatsApp Business Account","in":"path","name":"waba_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"max_age_seconds":{"type":"integer"},"phones":{"items":{"properties":{"checked_at":{"format":"date-time","type":["string","null"]},"display_phone_number":{"type":["string","null"]},"expires_at":{"format":"date-time","type":["string","null"]},"max_age_seconds":{"type":"integer"},"phone_number_id":{"type":"string"},"quality_rating":{"anyOf":[{"enum":["GREEN","YELLOW","RED","NA","UNKNOWN"],"type":"string"},{"type":"null"}],"description":"Meta's token as read at checked_at. Null when the read carried none this build can read, or before the first read"},"quality_status":{"description":"The verdict to branch on: high only for a GREEN read younger than max_age_seconds","enum":["high","medium","low","not_determined","unreadable","stale","not_observed"],"type":"string"},"raw":{"description":"Meta's whole answer to the last read, or null"},"source":{"enum":["meta_graph"],"type":"string"},"unknown_fields":{"items":{"type":"string"},"type":"array"},"waba_id":{"type":"string"}},"type":"object"},"type":"array"},"source":{"type":"string"},"waba_id":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Every business phone number's quality in the {data, meta} envelope"},"400":{"description":"Messaging_InvalidInput: a query parameter this route does not take, repeated, or out of range"},"401":{"description":"Absent, invalid or revoked credential"},"404":{"description":"Messaging_WabaNotFound: no such account, or one this caller does not operate. Messaging_PhoneNotFound: the number is not a business phone number of that account"}},"security":[{"BearerAuth":[]}],"summary":"Read the quality rating of every business phone number of one account"}},"/v1/specs/catalog":{"get":{"description":"Every toolkit of this deployment and every tool with its input_parameters, with no credential, so that an agent can choose a tool and write its arguments before it holds a project key. Toolkits in the terminal Channel enablement state, and their tools, are left out. available says whether this deployment offers a managed connection for the toolkit; the catalog reads no Organization, so an auth config an Organization made does not change it. execute names the next step: the execute route, which needs a project key.","operationId":"getPublicToolCatalog","parameters":[{"description":"Case-insensitive substring of the slug, the name or the description","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Only the tools of this toolkit, for example gmail","in":"query","name":"toolkit_slug","required":false,"schema":{"type":"string"}},{"description":"At most this many tools. No default: absent answers every match","in":"query","name":"limit","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PublicToolCatalog"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The public tool catalog"}},"security":[],"summary":"Read the tool catalog without a credential","tags":["tools"]}},"/v1/specs/control":{"get":{"description":"Returns the public bounded contract for organization, project, membership, role, and control-token operations.","operationId":"getControlSurfaceSpec","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Control-plane surface contract"}},"security":[],"summary":"Describe the control-plane surface"}},"/v1/specs/messaging":{"get":{"description":"Returns the public bounded contract for WhatsApp Business Account custody, the Warta gateway, the subscriber registry, the delivery log, and the Send log.","operationId":"getMessagingSurfaceSpec","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Messaging surface contract"}},"security":[],"summary":"Describe the messaging surface"}},"/v1/specs/tools":{"get":{"description":"Returns the public bounded contract for tool discovery, connected accounts, auth configs, and execution.","operationId":"getToolsSurfaceSpec","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tools surface contract"}},"security":[],"summary":"Describe the tools surface"}},"/v1/tools":{"get":{"description":"The catalog, filtered by toolkit and by a case-insensitive substring of slug, name and description. meta.total is the number of tools in this answer.","operationId":"listTools","parameters":[{"description":"Case-insensitive substring of the slug, the name or the description","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Only the tools of this toolkit, for example gmail","in":"query","name":"toolkit_slug","required":false,"schema":{"type":"string"}},{"description":"At most this many tools. No default: absent answers every match","in":"query","name":"limit","required":false,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The matching tools"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"List or search the tool catalog","tags":["tools"]}},"/v1/tools/auth_configs":{"get":{"description":"The auth configs of the project's organization. No client secret is ever returned.","operationId":"listAuthConfigs","parameters":[{"description":"Items per page. Default 10; a value below 1 is read as 1. meta.total counts every item, not only this page.","in":"query","name":"limit","required":false,"schema":{"default":10,"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AuthConfig"},"type":"array"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"One page of auth configs"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"List auth configs","tags":["tools"]},"post":{"description":"Registers an auth config for the project's organization. type use_composio_managed_auth uses this deployment's OAuth application; use_custom_auth brings your own client_id and client_secret. The secret is stored encrypted and never returned.","operationId":"createAuthConfig","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthConfigCreateRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/AuthConfigCreated"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The auth config"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"BadRequest: toolkit is not an object with a non-empty slug, type is unknown, or a custom config has no client_id or client_secret; Toolkit_NotConnectable: this deployment has no OAuth application for the toolkit; or Auth_MultipleCredentials"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"InternalError: the auth config could not be created"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an auth config","tags":["tools"]}},"/v1/tools/auth_configs/{id}":{"delete":{"description":"Deletes one auth config of the project's organization, with this project's connected accounts that use it. Only a project key may call it. When a connected account of another project uses the auth config, nothing is deleted and the answer is 409. With revoke_on_delete=true, the provider revoke rule runs for the deleted accounts first; its outcome is not in the answer. There is no revoke_job_id.","operationId":"deleteAuthConfig","parameters":[{"description":"The auth config id (ac_*)","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"true applies the provider revoke rule to the deleted connected accounts before the delete. Any other value calls no provider.","in":"query","name":"revoke_on_delete","required":false,"schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"message":{"description":"Auth config {id} deleted, with {n} connected accounts.","type":"string"},"success":{"type":"boolean"}},"required":["success","message"],"type":"object"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"Deleted"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_SessionRefused: a browser session cannot delete an auth config"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_NotFound: no auth config of this organization has the id"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_InUse: connected accounts of another project use the auth config; nothing was deleted"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete an auth config","tags":["tools"]},"get":{"description":"One auth config of the project's organization. Another organization's id answers the same 404 as a missing one.","operationId":"getAuthConfig","parameters":[{"description":"The auth config id (ac_*)","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/AuthConfig"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The auth config"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_NotFound"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get an auth config","tags":["tools"]},"patch":{"description":"Changes the name, the client secret and the stored scopes of one auth config of the project's organization. A field that is absent stays as it is. Each connected account uses the new secret at its next refresh, and nobody connects again. The client ID changes only while no connected account uses the auth config. The stored scopes do not decide the consent scopes, which come from the toolkit. Only a project key may call it.","operationId":"updateAuthConfig","parameters":[{"description":"The auth config id (ac_*)","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthConfigUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"message":{"description":"Auth config {id} updated.","type":"string"},"success":{"type":"boolean"}},"required":["success","message"],"type":"object"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"Updated"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"BadRequest: type is missing, or does not match the auth config (custom for a custom one, default for a managed one), or client_id or client_secret is empty; AuthConfig_FieldNotSupported: a field Sambungapi does not store, such as sealed_credentials; nothing changed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_SessionRefused: a browser session cannot update an auth config"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_NotFound: no auth config of this organization has the id"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_InUse: connected accounts use the auth config, so its client ID cannot change; nothing changed"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update an auth config","tags":["tools"]}},"/v1/tools/connected_accounts":{"get":{"description":"The project's connected accounts, optionally only those of some application users.","operationId":"listConnectedAccounts","parameters":[{"description":"Comma-separated user ids","in":"query","name":"user_ids","required":false,"schema":{"type":"string"}},{"description":"Items per page. Default 10; a value below 1 is read as 1. meta.total counts every item, not only this page.","in":"query","name":"limit","required":false,"schema":{"default":10,"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConnectedAccount"},"type":"array"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"One page of connected accounts"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"List connected accounts","tags":["tools"]}},"/v1/tools/connected_accounts/link":{"post":{"description":"Creates a connected account in INITIALIZING state and a single-use link. Send the application user to redirect_url to authorize the provider. user_id is the application user; to share one account in this project, send the entity org:<organization id>, and that account serves only this project.","operationId":"createConnectLink","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectLinkRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ConnectLink"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The connect link"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"BadRequest: user_id or auth_config_id is missing or not a string; ScopePolicy_OrgShared: the deployment makes the toolkit shared and user_id is not org:<organization id>; ScopePolicy_UnsupportedPersonal: the toolkit is not in the tool catalog; ScopePolicy_OrganizationMismatch: user_id starts with org: and is not org:<organization id> of this Project's Organization; or Auth_MultipleCredentials"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_UserIdUnauthorized: user_id is the id of a principal other than the one that created this key (a Personal connected account is created only by its own principal), or, for a session, a user id the session does not reach"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"AuthConfig_NotFound: no auth config of this organization has the id"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"InternalError: the account or the link could not be created"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a connect link","tags":["tools"]}},"/v1/tools/connected_accounts/{id}":{"delete":{"description":"Deletes one account of this project.","operationId":"deleteConnectedAccount","parameters":[{"description":"The connected account id (ca_*)","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted. The body is empty: no envelope"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"ActionExecute_ConnectedAccountNotFound: the project has no account with this id"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a connected account","tags":["tools"]}},"/v1/tools/connected_accounts/{id}/refresh":{"post":{"description":"Mints a new connect link for an existing account of this project. No body.","operationId":"refreshConnectedAccount","parameters":[{"description":"The connected account id (ca_*)","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ConnectedAccountRefresh"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The new link"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"ActionExecute_ConnectedAccountNotFound: the project has no account with this id"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"InternalError: the link could not be created"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Refresh a connected account","tags":["tools"]}},"/v1/tools/files/list":{"get":{"description":"The project's files, each with a short-lived signed download URL.","operationId":"listFiles","parameters":[{"description":"Items per page. Default 10; a value below 1 is read as 1. meta.total counts every item, not only this page.","in":"query","name":"limit","required":false,"schema":{"default":10,"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FileItem"},"type":"array"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"One page of files"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"List uploaded files","tags":["tools"]}},"/v1/tools/files/upload/request":{"post":{"description":"Answers a signed URL to PUT the file's bytes to. A file of this project with the same md5 is reused only while its age is less than the retention window minus the upload URL lifetime; otherwise a new file is created.","operationId":"requestFileUpload","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/UploadGrant"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The upload grant"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"BadRequest: a field is missing or not a string; or Auth_MultipleCredentials"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"InternalError: the file metadata could not be created"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Request a presigned upload URL","tags":["tools"]}},"/v1/tools/intents/{intent_id}":{"get":{"description":"One intent from the embedded vocabulary: every implementation, which of them this deployment serves, and the observed success statistics of the last window when they can be read.","operationId":"getIntent","parameters":[{"description":"The intent id, for example gmail.send_email","in":"path","name":"intent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/IntentInspection"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The intent"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Tool_NotFound: the vocabulary has no such intent"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Vocabulary_Unavailable: the embedded vocabulary failed to parse"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Inspect one capability intent","tags":["tools"]}},"/v1/tools/toolkits":{"get":{"description":"Every catalogued toolkit with its identity, connection scope and whether this deployment offers it. Static server configuration, never tenant data: the route reads no project, so any accepted v1 credential reaches it, a cpt_* token and a session with no X-Project-Id included.","operationId":"listToolkits","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ToolkitCatalog"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The toolkit catalog; meta.total is the number of toolkits"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"summary":"List the toolkit catalog with availability","tags":["tools"]}},"/v1/tools/toolkits/googlesuper/status":{"get":{"description":"Which toolkits a googlesuper connection of this project covers, computed with the predicate the execute path uses: the account of user_id, or of org:<organization id> without one. Carries no credential and no granted scope string: only the required and the missing scopes of each member.","operationId":"getGoogleSuperStatus","parameters":[{"description":"The application user whose googlesuper account to read; ownership is user. Leave it out to read the account of org:<organization id>, which this project shares; ownership is organization.","in":"query","name":"user_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/GoogleSuperStatus"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The coverage"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Read the unified Google connection's coverage","tags":["tools"]}},"/v1/tools/{slug}":{"get":{"description":"The catalog entry for one action slug. toolkit.logo is an absolute URL on this deployment.","operationId":"getTool","parameters":[{"description":"The tool's action slug, for example GMAIL_SEND_EMAIL","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ToolDefinition"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The tool definition"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_MultipleCredentials: credentials from two families in one request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Tool_NotFound: no tool has this slug"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get one tool definition","tags":["tools"]}},"/v1/tools/{slug}/execute":{"post":{"description":"Runs one action with the connected account of user_id (or connected_account_id) and records it in the execution log. The slug comes before execute: /v1/tools/execute/{slug} answers 404 Route_NotFound. A provider failure is still 200, with successful false and the provider's error. The call costs one unit of the daily execution quota once it passes validation.","operationId":"executeTool","parameters":[{"description":"The tool's action slug, for example GMAIL_SEND_EMAIL","in":"path","name":"slug","required":true,"schema":{"type":"string"}},{"description":"Wins over the body's idempotency_key. A key already recorded for this project replays the recorded outcome instead of executing again","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ExecuteResult"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"type":"object"}}},"description":"The execution outcome, a provider failure included"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"BadRequest: the body does not match the request schema; Intent_Refused: implementation_id is not a served implementation of intent_id (errors names the alternative); or Auth_MultipleCredentials"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Auth_NoAuthProvided or Auth_InvalidCredential; or Auth_MissingProjectKey when the credential binds no project, for example a cpt_* token"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Capability_Pinned: a capability pin forces another implementation of intent_id (errors names it)"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Tool_NotFound: no tool or executor serves the slug; ActionExecute_ConnectedAccountNotFound: the user has no active connected account for the toolkit; ActionExecute_GoogleSuperScopeMissing: the unified Google connection lacks the toolkit's scopes; or Sequence_UnknownIntent"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Intent_Ambiguous: several served implementations and nothing to decide between them; Fallback_Blocked: a non-idempotent fallback after a refused call; ActionExecute_IdempotencyKeyInUse: a call with the same idempotency key is still running; or Sequence_ConcurrentRun"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"A platform sequence refused or failed: Sequence_NotImplemented, Sequence_StepFailed, Sequence_Refused, Sequence_NoEventResource or Sequence_NoConferenceCode"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Quota_Exceeded: the daily execution quota is spent. errors carries scope, limit, remaining and reset","headers":{"Retry-After":{"description":"Seconds until the quota resets","schema":{"type":"integer"}},"x-quota-limit":{"schema":{"type":"integer"}},"x-quota-remaining":{"schema":{"type":"integer"}},"x-quota-reset":{"schema":{"format":"date-time","type":"string"}},"x-quota-scope":{"schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Storage_Unavailable: the credential or the data could not be read. Retry the request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Execute a tool action","tags":["tools"]}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"servers":[{"url":"https://sabi.metatech.id"}]}