{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/sinch/main/json-schema/sinch-list-messages-response-schema.json", "title": "ListMessagesResponse", "x-generated": "2026-10-08", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/sinch-conversation-api-openapi.yml#/components/schemas/ListMessagesResponse", "type": "object", "properties": { "messages": { "description": "List of messages associated to the referenced conversation.", "type": "array", "items": { "$ref": "#/$defs/ConversationMessage" }, "readOnly": true }, "next_page_token": { "type": "string", "description": "Token that should be included in the next request to fetch the next page." } }, "$defs": { "AddressInfo": { "type": "object", "title": "Address information", "description": "Physical addresses of the contact.", "properties": { "city": { "description": "City Name", "type": "string" }, "country": { "description": "Country Name", "type": "string" }, "state": { "description": "Name of a state or region of a country.", "type": "string" }, "zip": { "description": "Zip/postal code", "type": "string" }, "type": { "description": "Address type, e.g. WORK or HOME", "type": "string" }, "country_code": { "description": "Two letter country code.", "type": "string" } } }, "Agent": { "description": "Represents an agent that is involved in a conversation.", "type": "object", "title": "Agent", "properties": { "display_name": { "description": "Agent's display name", "type": "string" }, "type": { "$ref": "#/$defs/AgentType" }, "picture_url": { "description": "The Agent's picture url.", "type": "string" } } }, "AgentType": { "description": "Agent's classification. It can be UNKNOWN_AGENT_TYPE, HUMAN or BOT.", "enum": [ "UNKNOWN_AGENT_TYPE", "HUMAN", "BOT" ], "x-enumDescriptions": { "UNKNOWN_AGENT_TYPE": "The default AgentType. When the agent type is unknown.", "HUMAN": "Human agent.", "BOT": "Bot agent." }, "type": "string", "default": "UNKNOWN_AGENT_TYPE" }, "AppMessage": { "type": "object", "title": "Message originating from app", "description": "A message originating from a Conversation API app", "allOf": [ { "$ref": "#/$defs/AppMessageTypes" }, { "$ref": "#/$defs/AppMessageCommonProps" } ] }, "AppMessageCommonProps": { "type": "object", "properties": { "explicit_channel_message": { "description": "Allows you to specify a channel and define a corresponding channel specific message payload that will override the standard Conversation API message types. The key in the map must point to a valid conversation channel as defined in the enum `ConversationChannel`. The message content must be provided in a string format. You may use the [transcoding endpoint](https://developers.sinch.com/docs/conversation/api-reference/conversation/tag/Transcoding/) to help create your message. For more information about how to construct an explicit channel message for a particular channel, see that [channel's corresponding documentation](https://developers.sinch.com/docs/conversation/channel-support/) (for example, using explicit channel messages with [the WhatsApp channel](https://developers.sinch.com/docs/conversation/channel-support/whatsapp/message-support/#explicit-channel-messages)).", "type": "object", "additionalProperties": { "type": "string" } }, "explicit_channel_omni_message": { "description": "Override the message's content for specified channels. The key in the map must point to a valid conversation channel as defined in the enum `ConversationChannel`. The content defined under the specified channel will be sent on that channel.", "type": "object", "additionalProperties": { "$ref": "#/$defs/OmniMessageOverride" } }, "channel_specific_message": { "description": "Channel specific messages, overriding any transcoding. The structure of this property is more well-defined than the open structure of the `explicit_channel_message` property, and may be easier to use.\nThe key in the map must point to a valid conversation channel as defined in the enum `ConversationChannel`.", "type": "object", "additionalProperties": { "$ref": "#/$defs/ChannelSpecificMessage" } }, "agent": { "$ref": "#/$defs/Agent" }, "reply_to": { "title": "Reply To", "description": "Sends this message as a contextual reply to an inbound contact message, so the contact sees their original message quoted. Only supported on the WhatsApp channel. Conversation API keeps the mapping needed for the quote for 96 hours. If the referenced message is unknown or older than 96 hours, or the message is sent on a channel that does not support contextual replies, the message is still sent without the quote. For more information, see [Sending contextual replies](https://developers.sinch.com/docs/conversation/channel-support/whatsapp/message-support/#sending-contextual-replies).", "type": "object", "required": [ "message_id" ], "properties": { "message_id": { "type": "string", "description": "Required when using `reply_to`. The Conversation API ID of the inbound contact message this message replies to. Do not use a channel message ID (e.g., a WhatsApp message ID) from Meta." } } } } }, "AppMessageTypes": { "type": "object", "oneOf": [ { "$ref": "#/$defs/CardMessageField" }, { "$ref": "#/$defs/CarouselMessageField" }, { "$ref": "#/$defs/ChoiceMessageField" }, { "$ref": "#/$defs/LocationMessageField" }, { "$ref": "#/$defs/MediaMessageField" }, { "$ref": "#/$defs/TemplateMessageField" }, { "$ref": "#/$defs/TextMessageField" }, { "$ref": "#/$defs/ListMessageField" }, { "$ref": "#/$defs/ContactInfoMessageField" } ] }, "CalendarMessageField": { "description": "Message containing details about a calendar event.", "type": "object", "title": "Calendar", "properties": { "calendar_message": { "title": "Calendar message", "type": "object", "required": [ "title", "event_start", "event_end", "event_title", "fallback_url" ], "properties": { "title": { "description": "The title is shown close to the button that leads to open a user calendar.", "type": "string" }, "event_start": { "description": "The timestamp defines start of a calendar event.", "type": "string", "format": "date-time" }, "event_end": { "description": "The timestamp defines end of a calendar event.", "type": "string", "format": "date-time" }, "event_title": { "description": "Title of a calendar event.", "type": "string" }, "event_description": { "description": "Description of a calendar event.", "type": "string" }, "fallback_url": { "description": "The URL that is opened when the user cannot open a calendar event directly or channel does not have support for this type.", "type": "string" } } } } }, "CallMessageField": { "description": "Message for triggering a call.", "type": "object", "title": "Call", "properties": { "call_message": { "title": "Call Message", "type": "object", "required": [ "phone_number", "title" ], "properties": { "phone_number": { "description": "Phone number in E.164 with leading +.", "type": "string" }, "title": { "description": "Title shown close to the phone number.\nThe title is clickable in some cases.", "type": "string" } } } } }, "CardHeight": { "description": "You can set the desired size of the card in the message.", "type": "string", "x-enumDescriptions": { "UNSPECIFIED_HEIGHT": "The height of the card is unspecified.", "SHORT": "The shortest card height.", "MEDIUM": "Medium card height.", "TALL": "The tallest card height." }, "enum": [ "UNSPECIFIED_HEIGHT", "SHORT", "MEDIUM", "TALL" ] }, "CardMessage": { "description": "Message containing text, media and choices.", "title": "Card Message", "type": "object", "properties": { "choices": { "description": "You may include choices in your Card Message. The number of choices is limited to 10.", "type": "array", "items": { "$ref": "#/$defs/Choice" } }, "description": { "description": "This is an optional description field that is displayed below the title on the card.", "type": "string" }, "height": { "$ref": "#/$defs/CardHeight" }, "title": { "description": "The title of the card message.", "type": "string" }, "media_message": { "type": "object", "description": "A message containing a media component.", "allOf": [ { "$ref": "#/$defs/MediaProperties" } ] }, "message_properties": { "type": "object", "description": "Optional additional properties.", "properties": { "whatsapp_header": { "description": "Optional. Sets the header for the footer of a WhatsApp reply button message, if there is no media in the message. Ignored for other channels. Ignored if not transcoded to a native WhatsApp message with reply buttons.", "type": "string" } } } } }, "CardMessageField": { "description": "Field containing a Card Message", "type": "object", "title": "Card", "properties": { "card_message": { "$ref": "#/$defs/CardMessage" } } }, "CarouselMessageField": { "description": "Message containing a list of cards often rendered horizontally on supported channels.", "type": "object", "title": "Carousel", "properties": { "carousel_message": { "title": "Carousel Message", "type": "object", "required": [ "cards" ], "properties": { "cards": { "description": "A list of up to 10 cards.", "type": "array", "items": { "$ref": "#/$defs/CardMessage" } }, "choices": { "description": "Optional. Outer choices on the carousel level. The number of outer choices is limited to 3.", "type": "array", "items": { "$ref": "#/$defs/Choice" } } } } } }, "ChannelIdentity": { "description": "A unique identity of message recipient on a particular channel.\nFor example, the channel identity on SMS, WHATSAPP or VIBERBM is a MSISDN phone number.", "type": "object", "title": "Channel Identity", "required": [ "identity", "channel" ], "properties": { "app_id": { "description": "Required if using a channel that uses app-scoped channel identities. Currently, FB Messenger, Instagram, LINE, and WeChat use app-scoped channel identities, which means contacts will have different channel identities on different Conversation API apps. These can be thought of as virtual identities that are app-specific and, therefore, the app_id must be included in the API call.", "type": "string" }, "channel": { "$ref": "#/$defs/ConversationChannel" }, "identity": { "description": "The channel identity. This will differ from channel to channel. For example, a phone number for SMS, WhatsApp, and Viber Business.", "type": "string" } } }, "ChannelSpecificCommonProps": { "type": "object", "properties": { "header": { "description": "The header of the interactive message.", "type": "object", "oneOf": [ { "$ref": "#/$defs/WhatsAppInteractiveTextHeader" }, { "$ref": "#/$defs/WhatsAppInteractiveImageHeader" }, { "$ref": "#/$defs/WhatsAppInteractiveDocumentHeader" }, { "$ref": "#/$defs/WhatsAppInteractiveVideoHeader" } ] }, "body": { "$ref": "#/$defs/WhatsAppInteractiveBody" }, "footer": { "$ref": "#/$defs/WhatsAppInteractiveFooter" } } }, "ChannelSpecificContactMessage": { "type": "object", "title": "Channel Specific Message", "description": "A contact message containing a channel specific message (not supported by OMNI types).", "required": [ "message_type", "message" ], "properties": { "channel_specific_message": { "type": "object", "properties": { "message_type": { "type": "string", "description": "The message type.", "enum": [ "nfm_reply" ], "x-enumDescriptions": { "nfm_reply": "The `nfm_reply` message type." } }, "message": { "description": "The message content.", "oneOf": [ { "$ref": "#/$defs/WhatsAppInteractiveNfmReplyChannelSpecificContactMessage" } ] } } } } }, "ChannelSpecificMessage": { "type": "object", "title": "Channel specific message", "description": "A message containing a channel specific message (not supported by OMNI types).", "required": [ "message_type", "message" ], "properties": { "message_type": { "type": "string", "x-enumDescriptions": { "FLOWS": "The WhatsApp Flows message type.", "ORDER_DETAILS": "The WhatsApp order details message type.", "ORDER_STATUS": "The WhatsApp order status message type.", "COMMERCE": "KakaoTalk commerce channel specific message type", "CAROUSEL_COMMERCE": "KakaoTalk carousel commerce channel specific message type", "NOTIFICATION_MESSAGE_TEMPLATE": "LINE notification message template type" }, "description": "The type of the channel specific message.", "enum": [ "FLOWS", "ORDER_DETAILS", "ORDER_STATUS", "COMMERCE", "CAROUSEL_COMMERCE", "NOTIFICATION_MESSAGE_TEMPLATE" ] }, "message": { "oneOf": [ { "$ref": "#/$defs/FlowChannelSpecificMessage" }, { "$ref": "#/$defs/PaymentOrderDetailsChannelSpecificMessage" }, { "$ref": "#/$defs/PaymentOrderStatusChannelSpecificMessage" }, { "$ref": "#/$defs/KakaoTalkCommerceChannelSpecificMessage" }, { "$ref": "#/$defs/KakaoTalkCarouselCommerceChannelSpecificMessage" }, { "$ref": "#/$defs/LineNotificationMessageTemplateChannelSpecificMessage" } ] } } }, "Choice": { "description": "A choice is an action the user can take such as buttons for quick replies or other call to actions.", "type": "object", "title": "Choice message", "allOf": [ { "$ref": "#/$defs/choiceTypes" }, { "$ref": "#/$defs/choiceCommonProps" } ] }, "ChoiceItem": { "type": "object", "title": "Choice", "description": "A message component for interactive messages, containing a choice.", "required": [ "title" ], "properties": { "title": { "type": "string", "description": "Required parameter. Title for the choice item." }, "description": { "type": "string", "description": "Optional parameter. The description (or subtitle) of this choice item." }, "media": { "description": "Optional parameter. The media of this choice item.", "allOf": [ { "$ref": "#/$defs/MediaProperties" } ] }, "postback_data": { "type": "string", "description": "Optional parameter. Postback data that will be returned in the MO if the user selects this option." } } }, "ChoiceMessageField": { "description": "Message containing choices/actions.", "type": "object", "title": "Choice", "properties": { "choice_message": { "title": "Choice Message", "type": "object", "required": [ "choices" ], "allOf": [ { "description": "A message containing choices." }, { "$ref": "#/$defs/Choices" }, { "$ref": "#/$defs/TextMessageField" }, { "$ref": "#/$defs/ChoiceMessagePropertiesField" } ] } } }, "ChoiceMessagePropertiesField": { "type": "object", "title": "Properties", "description": "Additional properties for the message.", "properties": { "message_properties": { "type": "object", "properties": { "whatsapp_footer": { "description": "Optional. Sets the text for the footer of a WhatsApp reply button or URL button message. Ignored for other channels.", "type": "string" } } } } }, "ChoiceResponseMessageField": { "description": "Represents a response to a choice message.", "type": "object", "title": "Choice Response", "properties": { "choice_response_message": { "title": "Choice Response Message", "type": "object", "required": [ "message_id", "postback_data" ], "properties": { "message_id": { "description": "The message id containing the choice.", "type": "string" }, "postback_data": { "description": "The postback_data defined in the selected choice.", "type": "string" } } } } }, "Choices": { "type": "object", "properties": { "choices": { "type": "array", "description": "The number of choices is limited to 10.", "items": { "$ref": "#/$defs/Choice" } } } }, "ContactInfoMessageField": { "type": "object", "description": "Message containing contact information.", "title": "Contact Info", "properties": { "contact_info_message": { "title": "Contact Info Message", "type": "object", "required": [ "name", "phone_numbers" ], "properties": { "name": { "$ref": "#/$defs/NameInfo" }, "phone_numbers": { "description": "Phone numbers of the contact", "type": "array", "items": { "$ref": "#/$defs/PhoneNumberInfo" } }, "addresses": { "description": "Physical addresses of the contact", "type": "array", "items": { "$ref": "#/$defs/AddressInfo" } }, "email_addresses": { "description": "Email addresses of the contact", "type": "array", "items": { "$ref": "#/$defs/EmailInfo" } }, "organization": { "$ref": "#/$defs/OrganizationInfo" }, "urls": { "description": "URLs/websites associated with the contact", "type": "array", "items": { "$ref": "#/$defs/UrlInfo" } }, "birthday": { "description": "Date of birth in YYYY-MM-DD format.", "type": "string" } } } } }, "ContactMessage": { "title": "Message originating from a contact", "description": "A message originating from a contact.", "type": "object", "allOf": [ { "$ref": "#/$defs/ContactMessageTypes" }, { "$ref": "#/$defs/ContactMessageCommonProps" } ] }, "ContactMessageCommonProps": { "type": "object", "allOf": [ { "$ref": "#/$defs/ReplyToField" } ] }, "ContactMessageTypes": { "type": "object", "oneOf": [ { "$ref": "#/$defs/ChannelSpecificContactMessage" }, { "$ref": "#/$defs/ChoiceResponseMessageField" }, { "$ref": "#/$defs/FallbackMessageField" }, { "$ref": "#/$defs/LocationMessageField" }, { "$ref": "#/$defs/MediaCardMessageField" }, { "$ref": "#/$defs/MediaMessageField" }, { "$ref": "#/$defs/ProductResponseMessage" }, { "$ref": "#/$defs/TextMessageField" } ] }, "ConversationChannel": { "type": "string", "title": "Channel Identifier", "description": "The identifier of the channel you want to include. Must be one of the enum values.", "x-enumDescriptions": { "SMS": "The SMS channel.", "RCS": "The RCS channel.", "WHATSAPP": "The WhatsApp channel.", "MMS": "The MMS channel.", "KAKAOTALK": "The KakaoTalk channel.", "KAKAOTALKCHAT": "The KakaoTalk chat channel (used primarily in ConsultationTalk).", "VIBERBM": "The Viber Business Messages channel.", "LINE": "The LINE channel.", "INSTAGRAM": "The Instagram channel.", "MESSENGER": "The Facebook Messenger channel.", "WECHAT": "The WeChat channel.", "TELEGRAM": "The Telegram channel.", "APPLEBC": "The Apple Messages for Business channel." }, "enum": [ "SMS", "RCS", "WHATSAPP", "MMS", "KAKAOTALK", "KAKAOTALKCHAT", "VIBERBM", "LINE", "INSTAGRAM", "MESSENGER", "WECHAT", "TELEGRAM", "APPLEBC" ] }, "ConversationDirection": { "type": "string", "description": "The direction of the message flow, indicating whether the message was sent to or from the Conversation API app.", "x-enumDescriptions": { "TO_APP": "Sent to the Conversation API app.", "TO_CONTACT": "Sent to a recipient/contact from the Conversation API app." }, "enum": [ "TO_APP", "TO_CONTACT" ] }, "ConversationMessage": { "description": "A message on a particular channel.", "type": "object", "title": "Conversation Message", "allOf": [ { "$ref": "#/$defs/ConversationMessageTypes" }, { "$ref": "#/$defs/ConversationMessageCommonProps" } ] }, "ConversationMessageCommonProps": { "type": "object", "properties": { "accept_time": { "description": "The time Conversation API processed the message.", "type": "string", "format": "date-time", "readOnly": true }, "channel_identity": { "$ref": "#/$defs/ChannelIdentity" }, "contact_id": { "description": "The ID of the contact.", "type": "string" }, "conversation_id": { "description": "The ID of the conversation.", "type": "string" }, "direction": { "$ref": "#/$defs/ConversationDirection" }, "id": { "description": "The ID of the message.", "type": "string" }, "metadata": { "description": "Optional. Metadata associated with the contact.\nUp to 1024 characters long.", "type": "string" }, "injected": { "description": "Flag for whether this message was injected.", "type": "boolean", "readOnly": true }, "sender_id": { "description": "For Contact Messages (MO messages), the sender ID represents the recipient to which the message was sent. This may be a phone number (in the case of SMS and MMS) or a unique ID (in the case of WhatsApp). This is field is not supported on all channels, nor is it supported for MT messages.", "type": "string" }, "processing_mode": { "$ref": "#/$defs/ProcessingMode" } } }, "ConversationMessageTypes": { "type": "object", "oneOf": [ { "type": "object", "properties": { "app_message": { "$ref": "#/$defs/AppMessage" } }, "title": "App Message" }, { "type": "object", "properties": { "contact_message": { "$ref": "#/$defs/ContactMessage" } }, "title": "Contact Message" } ] }, "Coordinates": { "type": "object", "title": "Geographic coordinates", "required": [ "latitude", "longitude" ], "properties": { "latitude": { "description": "The latitude.", "type": "number", "format": "float" }, "longitude": { "description": "The longitude.", "type": "number", "format": "float" } } }, "DisplayMode": { "description": "Controls the display behavior of a choice. Only supported for Choice Message on the RCS channel. Has no effect on other channels or message types, except for a carousel's outer choices, where it is rejected outright.", "type": "string", "x-enumDescriptions": { "DISPLAY_MODE_UNSPECIFIED": "Default. Transient — choice disappears when new messages arrive.", "PERSISTENT": "Persistent — choice remains visible in the message bubble." }, "enum": [ "DISPLAY_MODE_UNSPECIFIED", "PERSISTENT" ] }, "EmailInfo": { "type": "object", "title": "Email information", "description": "Email addresses of the contact.", "required": [ "email_address" ], "properties": { "email_address": { "description": "Email address.", "type": "string" }, "type": { "description": "Email address type. e.g. WORK or HOME.", "type": "string" } } }, "FallbackMessageField": { "description": "Fallback message. Used when original contact message can not be handled.", "type": "object", "title": "Fallback", "properties": { "fallback_message": { "title": "Fallback Message", "type": "object", "properties": { "raw_message": { "description": "Optional. The raw fallback message if provided by the channel.", "type": "string" }, "reason": { "$ref": "#/$defs/Reason" } } } } }, "FlowChannelSpecificMessage": { "allOf": [ { "$ref": "#/$defs/ChannelSpecificCommonProps" }, { "type": "object", "title": "WhatsApp Flow channel specific message", "description": "A message type for sending WhatsApp Flows.", "required": [ "flow_id", "flow_cta" ], "properties": { "flow_id": { "type": "string", "description": "ID of the Flow." }, "flow_token": { "type": "string", "description": "Generated token which is an identifier." }, "flow_mode": { "type": "string", "description": "The mode in which the flow is.", "default": "published", "enum": [ "draft", "published" ], "x-enumDescriptions": { "draft": "The flow is in draft mode.", "published": "The flow is published." } }, "flow_cta": { "type": "string", "description": "Text which is displayed on the Call To Action button (20 characters maximum, emoji not supported)." }, "flow_action": { "type": "string", "default": "navigate", "enum": [ "navigate", "data_exchange" ], "x-enumDescriptions": { "navigate": "The navigate flow action.", "data_exchange": "The data exchange flow action." } }, "flow_action_payload": { "type": "object", "properties": { "screen": { "type": "string", "description": "The ID of the screen displayed first. This must be an entry screen." }, "data": { "type": "object", "description": "Data for the first screen." } } } } } ] }, "KakaoTalkAppLinkButton": { "title": "KakaoTalk App Link Button", "description": "A button that opens an app link (e.g. call button)", "allOf": [ { "$ref": "#/$defs/KakaoTalkButton" }, { "type": "object", "properties": { "type": { "enum": [ "AL" ] }, "scheme_ios": { "type": "string", "description": "App link opened on an iOS device (e.g. `tel://PHONE_NUMBER`)" }, "scheme_android": { "type": "string", "description": "App link opened on an Android device (e.g. `tel://PHONE_NUMBER`)" } }, "required": [ "scheme_ios", "scheme_android" ] } ] }, "KakaoTalkBotKeywordButton": { "title": "KakaoTalk Bot Keyword Button", "description": "A button that sends a keyword specified in `name` property", "allOf": [ { "$ref": "#/$defs/KakaoTalkButton" }, { "type": "object", "properties": { "type": { "enum": [ "BK" ] } } } ] }, "KakaoTalkButton": { "type": "object", "properties": { "type": { "description": "Button type", "type": "string" }, "name": { "description": "Text displayed on the button", "type": "string", "maxLength": 8 } }, "required": [ "type", "name" ] }, "KakaoTalkCarouselCommerceChannelSpecificMessage": { "allOf": [ { "$ref": "#/$defs/KakaoTalkChannelSpecificMessage" }, { "type": "object", "title": "KakaoTalk carousel commerce channel specific message", "description": "A message type for sending KakaoTalk carousel commerce messages", "properties": { "carousel": { "description": "Carousel content", "type": "object", "properties": { "head": { "description": "Carousel introduction", "type": "object", "properties": { "header": { "description": "Carousel introduction title", "type": "string", "maxLength": 20 }, "content": { "description": "Carousel introduction description", "type": "string", "maxLength": 50 }, "image_url": { "description": "URL to the image displayed in the introduction", "type": "string" }, "link_mo": { "description": "URL opened on a mobile device", "type": "string" }, "link_pc": { "description": "URL opened on a desktop device", "type": "string" }, "scheme_ios": { "description": "App link opened on an iOS device (e.g. `tel://PHONE_NUMBER`)", "type": "string" }, "scheme_android": { "description": "App link opened on an Android device (e.g. `tel://PHONE_NUMBER`)", "type": "string" } }, "required": [ "header", "content", "image_url" ] }, "list": { "description": "List of carousel cards", "type": "array", "minItems": 2, "maxItems": 10, "items": { "$ref": "#/$defs/KakaoTalkCommerceMessage" } }, "tail": { "description": "\"More\" button", "type": "object", "properties": { "link_mo": { "description": "URL opened on a mobile device", "type": "string" }, "link_pc": { "description": "URL opened on a desktop device", "type": "string" }, "scheme_ios": { "description": "App link opened on an iOS device (e.g. `tel://PHONE_NUMBER`)", "type": "string" }, "scheme_android": { "description": "App link opened on an Android device (e.g. `tel://PHONE_NUMBER`)", "type": "string" } }, "required": [ "link_mo" ] } }, "required": [ "list" ] } }, "required": [ "carousel" ] } ] }, "KakaoTalkChannelSpecificMessage": { "type": "object", "properties": { "push_alarm": { "type": "boolean", "default": true, "description": "Set to `true` if a push alarm should be sent to a device." }, "adult": { "type": "boolean", "default": false, "description": "Set to `true` if a message contains adult content. Set to `false` by default." } } }, "KakaoTalkCommerceChannelSpecificMessage": { "allOf": [ { "$ref": "#/$defs/KakaoTalkChannelSpecificMessage" }, { "$ref": "#/$defs/KakaoTalkCommerceMessage" }, { "type": "object", "title": "KakaoTalk commerce channel specific message", "description": "A message type for sending KakaoTalk commerce messages" } ] }, "KakaoTalkCommerceMessage": { "type": "object", "title": "KakaoTalk commerce message", "description": "A message type for sending KakaoTalk commerce messages", "properties": { "buttons": { "description": "Buttons list", "type": "array", "minItems": 1, "maxItems": 2, "items": { "oneOf": [ { "$ref": "#/$defs/KakaoTalkWebLinkButton" }, { "$ref": "#/$defs/KakaoTalkAppLinkButton" }, { "$ref": "#/$defs/KakaoTalkBotKeywordButton" } ] } }, "additional_content": { "description": "Additional information", "type": "string", "maxLength": 34 }, "image": { "description": "Product image", "type": "object", "properties": { "image_url": { "type": "string", "description": "URL to the product image" }, "image_link": { "type": "string", "description": "URL opened when a user clicks on the image" } }, "required": [ "image_url" ] }, "commerce": { "description": "Product information", "oneOf": [ { "$ref": "#/$defs/KakaoTalkRegularPriceCommerce" }, { "$ref": "#/$defs/KakaoTalkDiscountFixedCommerce" }, { "$ref": "#/$defs/KakaoTalkDiscountRateCommerce" } ] }, "coupon": { "description": "Discount coupon", "oneOf": [ { "$ref": "#/$defs/KakaoTalkFixedDiscountCoupon" }, { "$ref": "#/$defs/KakaoTalkDiscountRateCoupon" }, { "$ref": "#/$defs/KakaoTalkShippingDiscountCoupon" }, { "$ref": "#/$defs/KakaoTalkFreeCoupon" }, { "$ref": "#/$defs/KakaoTalkUpCoupon" } ] } }, "required": [ "image", "commerce", "buttons" ] }, "KakaoTalkCoupon": { "properties": { "type": { "description": "Coupon type", "type": "string" }, "description": { "description": "Coupon description", "type": "string", "maxLength": 12 }, "link_mo": { "description": "Coupon URL opened on a mobile device", "type": "string" }, "link_pc": { "description": "Coupon URL opened on a desktop device", "type": "string" }, "scheme_android": { "description": "Channel coupon URL (format: `alimtalk=coupon://...`)", "type": "string" }, "scheme_ios": { "description": "Channel coupon URL (format: `alimtalk=coupon://...`)", "type": "string" } }, "required": [ "type" ] }, "KakaoTalkDiscountFixedCommerce": { "description": "Information about a product with fixed discount", "allOf": [ { "$ref": "#/$defs/KakaoTalkRegularPriceCommerce" }, { "type": "object", "properties": { "type": { "enum": [ "FIXED_DISCOUNT_COMMERCE" ], "x-enumDescriptions": { "FIXED_DISCOUNT_COMMERCE": "Commerce with fixed discount" } }, "discount_price": { "description": "Discounted price of the product", "type": "integer", "minimum": 0, "maximum": 99999999 }, "discount_fixed": { "description": "Fixed discount", "type": "integer", "minimum": 0, "maximum": 999999 } }, "required": [ "discount_price", "discount_fixed" ] } ] }, "KakaoTalkDiscountRateCommerce": { "description": "Information about a product with discount rate", "allOf": [ { "$ref": "#/$defs/KakaoTalkRegularPriceCommerce" }, { "type": "object", "properties": { "type": { "enum": [ "PERCENTAGE_DISCOUNT_COMMERCE" ], "x-enumDescriptions": { "PERCENTAGE_DISCOUNT_COMMERCE": "Commerce with percentage discount" } }, "discount_price": { "description": "Discounted price of the product", "type": "integer", "minimum": 0, "maximum": 99999999 }, "discount_rate": { "description": "Discount rate (%)", "type": "integer", "minimum": 0, "maximum": 100 } }, "required": [ "discount_price", "discount_rate" ] } ] }, "KakaoTalkDiscountRateCoupon": { "title": "KakaoTalk discount rate coupon", "description": "

Percentage discount coupon with the following title: \"discount_rate% 할인 쿠폰\" (translates to: \"discount_rate% discount coupon\")

\n

One of the following fields is required: link_mo, scheme_android, scheme_ios

", "allOf": [ { "$ref": "#/$defs/KakaoTalkCoupon" }, { "type": "object", "properties": { "type": { "enum": [ "PERCENTAGE_DISCOUNT_COUPON" ] }, "discount_rate": { "description": "Discount rate (%)", "type": "integer", "minimum": 0, "maximum": 100 } }, "required": [ "discount_rate" ] } ] }, "KakaoTalkFixedDiscountCoupon": { "title": "KakaoTalk fixed discount coupon", "description": "

Fixed discount coupon with with the following title: \"discount_fixed 원 할인 쿠폰\" (translates to: \"discount_fixed won discount coupon\")

\n

One of the following fields is required: link_mo, scheme_android, scheme_ios

", "allOf": [ { "$ref": "#/$defs/KakaoTalkCoupon" }, { "type": "object", "properties": { "type": { "enum": [ "FIXED_DISCOUNT_COUPON" ] }, "discount_fixed": { "description": "Fixed discount", "type": "integer", "minimum": 0, "maximum": 999999 } }, "required": [ "discount_fixed" ] } ] }, "KakaoTalkFreeCoupon": { "title": "KakaoTalk free coupon", "description": "

Free coupon with the following title: \"title 무료 쿠폰\" (translates to: \"title free coupon\")

\n

One of the following fields is required: link_mo, scheme_android, scheme_ios

", "allOf": [ { "$ref": "#/$defs/KakaoTalkCoupon" }, { "type": "object", "properties": { "type": { "enum": [ "FREE_COUPON" ] }, "title": { "description": "Coupon title", "type": "string", "maxLength": 7 } }, "required": [ "title" ] } ] }, "KakaoTalkRegularPriceCommerce": { "description": "Information about a product with regular price", "type": "object", "properties": { "type": { "enum": [ "REGULAR_PRICE_COMMERCE" ], "x-enumDescriptions": { "REGULAR_PRICE_COMMERCE": "Commerce with regular price" } }, "title": { "description": "Product title", "type": "string", "maxLength": 30 }, "regular_price": { "description": "Regular price of the product", "type": "integer", "minimum": 0, "maximum": 99999999 } }, "required": [ "type", "title", "regular_price" ] }, "KakaoTalkShippingDiscountCoupon": { "title": "KakaoTalk shipping discount coupon", "description": "

Shipping discount coupon with with the following title: \"배송비 할인 쿠폰\" (translates to: \"shipping fee discount coupon\")

One of the following fields is required: link_mo, scheme_android, scheme_ios

\n", "allOf": [ { "$ref": "#/$defs/KakaoTalkCoupon" }, { "type": "object", "properties": { "type": { "enum": [ "SHIPPING_DISCOUNT_COUPON" ] } } } ] }, "KakaoTalkUpCoupon": { "title": "KakaoTalk UP coupon", "description": "

UP coupon with the following title: \"title UP 쿠폰\" (translates to: \"title UP coupon\")

\n

One of the following fields is required: link_mo, scheme_android, scheme_ios

", "allOf": [ { "$ref": "#/$defs/KakaoTalkCoupon" }, { "type": "object", "properties": { "type": { "enum": [ "UP_COUPON" ] }, "title": { "description": "Coupon title", "type": "string", "maxLength": 7 } }, "required": [ "title" ] } ] }, "KakaoTalkWebLinkButton": { "title": "KakaoTalk Web Link Button", "description": "A button that opens a web link.", "allOf": [ { "$ref": "#/$defs/KakaoTalkButton" }, { "type": "object", "properties": { "type": { "enum": [ "WL" ] }, "link_mo": { "type": "string", "description": "URL opened on a mobile device" }, "link_pc": { "type": "string", "description": "URL opened on a desktop device" } }, "required": [ "link_mo" ] } ] }, "LineNotificationMessageTemplateBody": { "type": "object", "description": "Template body", "properties": { "emphasized_item": { "$ref": "#/$defs/LineNotificationMessageTemplateEmphasizedItem" }, "items": { "type": "array", "description": "List of template items", "items": { "$ref": "#/$defs/LineNotificationMessageTemplateItem" }, "maxItems": 15 }, "buttons": { "type": "array", "description": "List of template buttons", "items": { "$ref": "#/$defs/LineNotificationMessageTemplateButton" }, "maxItems": 2 } } }, "LineNotificationMessageTemplateButton": { "type": "object", "description": "Template button", "required": [ "button_key", "url" ], "properties": { "button_key": { "type": "string", "description": "Button key. See [LINE documentation](https://developers.line.biz/en/docs/partner-docs/line-notification-messages/template/?r=jp#buttons) for available keys" }, "url": { "type": "string", "maxLength": 1000, "description": "Button URL" } } }, "LineNotificationMessageTemplateChannelSpecificMessage": { "type": "object", "title": "LINE notification message (template) channel specific message", "description": "A message type for sending LINE notification messages (template)", "required": [ "template_key" ], "properties": { "template_key": { "description": "Template key. See [LINE documentation](https://developers.line.biz/en/docs/partner-docs/line-notification-messages/template/?r=jp#templates) for available keys", "type": "string" }, "body": { "$ref": "#/$defs/LineNotificationMessageTemplateBody" } } }, "LineNotificationMessageTemplateEmphasizedItem": { "type": "object", "description": "Template emphasized item", "required": [ "item_key", "content" ], "properties": { "item_key": { "description": "Item key. See [LINE documentation](https://developers.line.biz/en/docs/partner-docs/line-notification-messages/template/?r=jp#items) for available keys", "type": "string" }, "content": { "description": "Item value", "type": "string", "maxLength": 15 } } }, "LineNotificationMessageTemplateItem": { "type": "object", "description": "Template item", "required": [ "item_key", "content" ], "properties": { "item_key": { "description": "Item key. See [LINE documentation](https://developers.line.biz/en/docs/partner-docs/line-notification-messages/template/?r=jp#items) for available keys", "type": "string" }, "content": { "description": "Item value", "type": "string", "maxLength": 300 } } }, "ListItem": { "type": "object", "title": "List Item", "description": "Item containing either choiceItem or ProductItem", "oneOf": [ { "required": [ "choice" ], "type": "object", "properties": { "choice": { "$ref": "#/$defs/ChoiceItem" } }, "title": "Choice" }, { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/$defs/ProductItem" } }, "title": "Product" } ] }, "ListMessageField": { "type": "object", "title": "List", "description": "A message containing a list of options to choose from. All items must be of the same type.", "properties": { "list_message": { "title": "List Message", "type": "object", "required": [ "title", "sections" ], "properties": { "title": { "description": "A title for the message that is displayed near the products or choices.", "type": "string" }, "description": { "description": "This is an optional field, containing a description for the message.", "type": "string" }, "media": { "$ref": "#/$defs/MediaProperties" }, "sections": { "description": "List of ListSection objects containing choices to be presented in the list message.", "type": "array", "items": { "$ref": "#/$defs/ListSection" } }, "message_properties": { "description": "Additional properties for the message. Required if sending a product list message.", "properties": { "catalog_id": { "description": "Required if sending a product list message. The ID of the catalog to which the products belong.", "type": "string" }, "menu": { "description": "Optional. Sets the text for the menu of a choice list message.", "type": "string" }, "whatsapp_header": { "description": "Optional. Sets the text for the header of a WhatsApp choice list message. Ignored for other channels.", "type": "string" } } } } } } }, "ListSection": { "type": "object", "title": "List Section", "description": "Section for interactive WhatsApp messages containing ListItem", "required": [ "items" ], "properties": { "title": { "description": "Optional parameter. Title for list section.", "type": "string" }, "items": { "type": "array", "items": { "$ref": "#/$defs/ListItem" } } } }, "LocationMessageField": { "type": "object", "description": "Message containing geographic location.", "title": "Location", "properties": { "location_message": { "title": "Location Message", "type": "object", "required": [ "coordinates", "title" ], "properties": { "coordinates": { "$ref": "#/$defs/Coordinates" }, "label": { "description": "Label or name for the position.", "type": "string" }, "title": { "description": "The title is shown close to the button or link that leads to a map showing the location. The title can be clickable in some cases.", "type": "string" } } } } }, "MediaCardMessageField": { "type": "object", "title": "Media Card", "description": "A message containing a media component, such as an image or video.", "properties": { "media_card_message": { "type": "object", "title": "Media Card Message", "required": [ "url" ], "properties": { "caption": { "description": "Caption for the media on supported channels.", "type": "string" }, "url": { "description": "Url to the media file.", "type": "string" } } } } }, "MediaMessageField": { "type": "object", "title": "Media Message", "description": "A message containing a media component, such as an image, document, or video.", "properties": { "media_message": { "$ref": "#/$defs/MediaProperties" } } }, "MediaProperties": { "title": "Media Properties", "type": "object", "required": [ "url" ], "properties": { "thumbnail_url": { "type": "string", "description": "An optional parameter. Will be used where it is natively supported." }, "url": { "description": "Url to the media file.", "type": "string" }, "filename_override": { "description": "Overrides the media file name.", "type": "string" } } }, "NameInfo": { "type": "object", "title": "Name of the contact", "description": "Name information of the contact.", "required": [ "full_name" ], "properties": { "full_name": { "description": "Full name of the contact", "type": "string" }, "first_name": { "description": "First name.", "type": "string" }, "last_name": { "description": "Last name.", "type": "string" }, "middle_name": { "description": "Middle name.", "type": "string" }, "prefix": { "description": "Prefix before the name. e.g. Mr, Mrs, Dr etc.", "type": "string" }, "suffix": { "description": "Suffix after the name.", "type": "string" } } }, "OmniMessageOverride": { "oneOf": [ { "$ref": "#/$defs/TextMessageField" }, { "$ref": "#/$defs/MediaMessageField" }, { "$ref": "#/$defs/TemplateReferenceField" }, { "$ref": "#/$defs/ChoiceMessageField" }, { "$ref": "#/$defs/CardMessageField" }, { "$ref": "#/$defs/CarouselMessageField" }, { "$ref": "#/$defs/LocationMessageField" }, { "$ref": "#/$defs/ContactInfoMessageField" }, { "$ref": "#/$defs/ListMessageField" } ] }, "OrganizationInfo": { "type": "object", "title": "Organization information", "description": "Organization information of the contact.", "properties": { "company": { "description": "Company name", "type": "string" }, "department": { "description": "Department at the company", "type": "string" }, "title": { "description": "Corporate title, e.g. Software engineer", "type": "string" } } }, "PaymentOrderDetailsChannelSpecificMessage": { "allOf": [ { "$ref": "#/$defs/ChannelSpecificCommonProps" }, { "type": "object", "title": "WhatsApp Payment Order Details channel specific message.", "description": "A message type for sending WhatsApp Payment Requests.", "required": [ "payment" ], "properties": { "payment": { "type": "object", "description": "The payment order details content.", "required": [ "type", "reference_id", "type_of_goods", "total_amount_value", "order" ], "properties": { "type": { "type": "string", "description": "The country/currency associated with the payment message.", "enum": [ "br", "sg" ], "x-enumDescriptions": { "br": "Brazil", "sg": "Singapore" } }, "reference_id": { "type": "string", "description": "Unique reference ID." }, "type_of_goods": { "type": "string", "description": "The type of good associated with this order.", "enum": [ "digital-goods", "physical-goods" ], "x-enumDescriptions": { "digital-goods": "Digital goods.", "physical-goods": "Physical goods." } }, "payment_settings": { "deprecated": true, "description": "The payment settings. Use `payment_buttons` in place of this deprecated field.", "oneOf": [ { "$ref": "#/$defs/WhatsAppPaymentSettingsPix" }, { "$ref": "#/$defs/WhatsAppPaymentSettingsPaymentLink" }, { "$ref": "#/$defs/WhatsAppPaymentSettingsBoleto" } ] }, "payment_buttons": { "type": "array", "description": "Array of payment buttons (1 to 2 items).", "minItems": 1, "maxItems": 2, "items": { "$ref": "#/$defs/WhatsAppPaymentButton" } }, "total_amount_value": { "type": "integer", "description": "Integer representing the total amount of the transaction." }, "order": { "type": "object", "description": "The payment order.", "required": [ "items", "subtotal_value", "tax_value" ], "properties": { "catalog_id": { "type": "string", "description": "Unique ID of the Facebook catalog being used by the business." }, "expiration_time": { "type": "string", "description": "UTC timestamp indicating when the order should expire.\nThe timestamp must be given in seconds.\nThe minimum threshold for the timestamp is 300 seconds." }, "expiration_description": { "type": "string", "description": "Description of the expiration." }, "subtotal_value": { "type": "integer", "description": "Value representing the subtotal amount of this order." }, "tax_value": { "type": "integer", "description": "Value representing the tax amount for this order." }, "tax_description": { "type": "string", "description": "Description of the tax for this order." }, "shipping_value": { "type": "integer", "description": "Value representing the shipping amount for this order." }, "shipping_description": { "type": "string", "description": "Shipping description for this order." }, "discount_value": { "type": "integer", "description": "Value of the discount for this order." }, "discount_description": { "type": "string", "description": "Description of the discount for this order." }, "discount_program_name": { "type": "string", "description": "Discount program name for this order." }, "items": { "type": "array", "description": "The items list for this order.", "items": { "type": "object", "required": [ "retailer_id", "name", "amount_value", "quantity" ], "properties": { "retailer_id": { "type": "string", "description": "Unique ID of the retailer." }, "name": { "type": "string", "description": "Item's name as displayed to the user." }, "amount_value": { "type": "integer", "description": "Price per item." }, "quantity": { "type": "integer", "description": "Number of items in this order." }, "sale_amount_value": { "type": "integer", "description": "Discounted price per item." } } } } } } } } } } ] }, "PaymentOrderStatusChannelSpecificMessage": { "allOf": [ { "$ref": "#/$defs/ChannelSpecificCommonProps" }, { "type": "object", "title": "WhatsApp Payment Order Status channel specific message.", "description": "A message type for sending WhatsApp Payment Status Requests.", "required": [ "payment" ], "properties": { "payment": { "type": "object", "description": "The payment order status message content", "required": [ "reference_id", "order" ], "properties": { "reference_id": { "type": "string", "description": "Unique ID used to query the current payment status." }, "order": { "type": "object", "description": "The payment order.", "required": [ "status" ], "properties": { "status": { "type": "string", "description": "The new payment message status.", "enum": [ "pending", "processing", "partially-shipped", "shipped", "completed", "canceled" ], "x-enumDescriptions": { "pending": "The order is pending.", "processing": "The order is processing.", "partially-shipped": "A portion of the order has been shipped.", "shipped": "The order has been shipped.", "completed": "The order is complete.", "canceled": "The order was canceled." } }, "description": { "type": "string", "description": "The description of payment message status update (120 characters maximum)." } } } } } } } ] }, "PhoneNumberInfo": { "type": "object", "title": "Phone number", "description": "Phone numbers of the contact.", "required": [ "phone_number" ], "properties": { "phone_number": { "description": "Phone number with country code included.", "type": "string" }, "type": { "description": "Phone number type, e.g. WORK or HOME.", "type": "string" } } }, "ProcessingMode": { "description": "Whether or not Conversation API should store contacts and conversations for the app. For more information, see [Processing Modes](https://developers.sinch.com/docs/conversation/processing-modes/).", "enum": [ "CONVERSATION", "DISPATCH" ], "x-enumDescriptions": { "CONVERSATION": "Creates contacts and conversations automatically when a message is sent or received and there's no existing contact or active conversation.", "DISPATCH": "The default Processing Mode. Does not associate messages with contacts and conversations. This processing mode is mostly intended for unidirectional high volume SMS use cases. The lack of contacts and conversations limits some API features as related data won't be queryable in the [Contact](https://developers.sinch.com/docs/conversation/api-reference/conversation/tag/Contact/) and [Conversation](https://developers.sinch.com/docs/conversation/api-reference/conversation/tag/Conversation/) APIs." }, "type": "string", "default": "DISPATCH" }, "ProductItem": { "type": "object", "title": "Product", "description": "A message component for interactive messages, containing a product.", "required": [ "id", "marketplace" ], "properties": { "id": { "type": "string", "description": "Required parameter. The ID for the product." }, "marketplace": { "type": "string", "description": "Required parameter. The marketplace to which the product belongs." }, "quantity": { "type": "integer", "format": "int32", "description": "Output only. The quantity of the chosen product." }, "item_price": { "type": "number", "format": "float", "description": "Output only. The price for one unit of the chosen product." }, "currency": { "type": "string", "description": "Output only. The currency of the item_price." } } }, "ProductResponseMessage": { "type": "object", "title": "Product Response Message", "description": "Represents an interactive WhatsApp message containing ProductItem objects", "required": [ "products" ], "properties": { "product_response_message": { "type": "object", "properties": { "products": { "description": "The selected products.", "type": "array", "items": { "$ref": "#/$defs/ProductItem" } }, "title": { "description": "Optional parameter. Text that may be sent with selected products.", "type": "string" }, "catalog_id": { "description": "Optional parameter. The catalog id that the selected products belong to.", "type": "string" } } } } }, "Reason": { "type": "object", "properties": { "code": { "$ref": "#/$defs/ReasonCode" }, "description": { "description": "A textual description of the reason.", "type": "string" }, "sub_code": { "$ref": "#/$defs/ReasonSubCode" }, "channel_code": { "description": "Error code forwarded directly from the channel. Useful in case of unmapped or channel specific errors. Currently only supported on the WhatsApp channel.", "type": "string" } } }, "ReasonCode": { "enum": [ "UNKNOWN", "INTERNAL_ERROR", "RATE_LIMITED", "RECIPIENT_INVALID_CHANNEL_IDENTITY", "RECIPIENT_NOT_REACHABLE", "RECIPIENT_NOT_OPTED_IN", "OUTSIDE_ALLOWED_SENDING_WINDOW", "CHANNEL_FAILURE", "CHANNEL_BAD_CONFIGURATION", "CHANNEL_CONFIGURATION_MISSING", "MEDIA_TYPE_UNSUPPORTED", "MEDIA_TOO_LARGE", "MEDIA_NOT_REACHABLE", "NO_CHANNELS_LEFT", "TEMPLATE_NOT_FOUND", "TEMPLATE_INSUFFICIENT_PARAMETERS", "TEMPLATE_NON_EXISTING_LANGUAGE_OR_VERSION", "DELIVERY_TIMED_OUT", "DELIVERY_REJECTED_DUE_TO_POLICY", "CONTACT_NOT_FOUND", "BAD_REQUEST", "UNKNOWN_APP", "NO_CHANNEL_IDENTITY_FOR_CONTACT", "CHANNEL_REJECT", "NO_PERMISSION", "NO_PROFILE_AVAILABLE", "UNSUPPORTED_OPERATION" ], "x-enumDescriptions": { "UNKNOWN": "UNKNOWN is used if no other code can be used to describe the encountered error.", "INTERNAL_ERROR": "An internal error occurred. Please save the entire callback if you want to report an error.", "RATE_LIMITED": "The message or event was not sent due to rate limiting.", "RECIPIENT_INVALID_CHANNEL_IDENTITY": "The channel recipient identity was malformed.", "RECIPIENT_NOT_REACHABLE": "It was not possible to reach the contact, or channel recipient identity, on the channel.", "RECIPIENT_NOT_OPTED_IN": "The contact, or channel recipient identity, has not opt-ed in on the channel.", "OUTSIDE_ALLOWED_SENDING_WINDOW": "The allowed sending window has expired. See the channel documentation for more information about how the sending window works for the different channels.", "CHANNEL_FAILURE": "The channel failed to accept the message. The Conversation API performs multiple retries in case of transient errors.", "CHANNEL_BAD_CONFIGURATION": "The configuration of the channel for the used App is wrong. The bad configuration caused the channel to reject the message. Please see the [channel support documentation page](https://developers.sinch.com/docs/conversation/channel-support/) for how to set it up correctly.", "CHANNEL_CONFIGURATION_MISSING": "The configuration of the channel is missing from the used App. Please see the [channel support documentation](https://developers.sinch.com/docs/conversation/channel-support/) page for how to set it up correctly.", "MEDIA_TYPE_UNSUPPORTED": "Some of the referenced media files are of an unsupported media type. Please read the [channel support documentation](https://developers.sinch.com/docs/conversation/channel-support/) page to find out the limitations on media that the different channels impose.", "MEDIA_TOO_LARGE": "Some of the referenced media files are too large. Please read the [channel support documentation](https://developers.sinch.com/docs/conversation/channel-support/) to find out the limitations on file size that the different channels impose.", "MEDIA_NOT_REACHABLE": "The provided media link was not accessible from the Conversation API or from the underlying channels. Please make sure that the media file is accessible.", "NO_CHANNELS_LEFT": "No channels to try to send the message to. This error will occur if one attempts to send a message to a channel with no channel identities or if all applicable channels have been attempted.", "TEMPLATE_NOT_FOUND": "The referenced template was not found.", "TEMPLATE_INSUFFICIENT_PARAMETERS": "Sufficient template parameters was not given. All parameters defined in the template must be provided when sending a template message.", "TEMPLATE_NON_EXISTING_LANGUAGE_OR_VERSION": "The selected language, or version, of the referenced template did not exist. Please check the available versions and languages of the template.", "DELIVERY_TIMED_OUT": "The message delivery, or event delivery, failed due to a channel-imposed timeout. See the [channel support documentation](https://developers.sinch.com/docs/conversation/channel-support/) page for further details about how the different channels behave.", "DELIVERY_REJECTED_DUE_TO_POLICY": "The message or event was rejected by the channel due to a policy. Some channels have specific policies that must be met to send a message. See the [channel support documentation](https://developers.sinch.com/docs/conversation/channel-support/) page for more information about when this error will be triggered.", "CONTACT_NOT_FOUND": "The provided Contact ID did not exist.", "BAD_REQUEST": "Conversation API validates send requests in two different stages. The first stage is right before the message is enqueued. If this first validation fails the API responds with 400 Bad Request and the request is discarded immediately. The second validation kicks in during message processing and it normally contains channel specific validation rules. Failures during second request validation are delivered as callbacks to `MESSAGE_DELIVERY (EVENT_DELIVERY)` webhooks with ReasonCode `BAD_REQUEST`.", "UNKNOWN_APP": "The used App is missing. This error may occur when the app is removed during message processing.", "NO_CHANNEL_IDENTITY_FOR_CONTACT": "The contact has no channel identities set up, or the contact has no channels set up for the resolved channel priorities.", "CHANNEL_REJECT": "Generic error for channel permanently rejecting a message. Only used if no other better matching error can be used.", "NO_PERMISSION": "No permission to perform action.", "NO_PROFILE_AVAILABLE": "No available profile data for user.", "UNSUPPORTED_OPERATION": "Generic error for channel unsupported operations." }, "type": "string" }, "ReasonSubCode": { "enum": [ "UNSPECIFIED_SUB_CODE", "ATTACHMENT_REJECTED", "MEDIA_TYPE_UNDETERMINED", "INACTIVE_SENDER" ], "x-enumDescriptions": { "UNSPECIFIED_SUB_CODE": "UNSPECIFIED_SUB_CODE is used if no other sub code can be used to describe the encountered error.", "ATTACHMENT_REJECTED": "The message attachment was rejected by the channel due to a policy. Some channels have specific policies that must be met to receive an attachment.", "MEDIA_TYPE_UNDETERMINED": "The specified media urls media type could not be determined.", "INACTIVE_SENDER": "The used credentials for the underlying channel is inactivated and not allowed to send or receive messages." }, "type": "string" }, "ReplyToField": { "description": "If the contact message was a response to a previous App message then this field contains information about that.", "type": "object", "title": "Reply To", "properties": { "reply_to": { "title": "Reply To", "type": "object", "required": [ "message_id" ], "properties": { "message_id": { "type": "string", "description": "Required. The Id of the message that this is a response to" } } } } }, "ShareLocationMessageField": { "description": "Message requesting location from a user.", "type": "object", "title": "Request location", "properties": { "share_location_message": { "title": "Share Location Message", "type": "object", "required": [ "title", "fallback_url" ], "properties": { "title": { "description": "The title is shown close to the button that leads to open a map to share a location.", "type": "string" }, "fallback_url": { "description": "The URL that is opened when channel does not have support for this type.", "type": "string" } } } } }, "TemplateMessageField": { "type": "object", "description": "Message referring to predefined template", "title": "Template Message", "properties": { "template_message": { "type": "object", "title": "Template Message", "properties": { "channel_template": { "description": "Optional. Channel specific template reference with parameters per channel.\nThe channel template if exists overrides the omnichannel template.\nAt least one of `channel_template` or `omni_template` needs to be present.\nThe key in the map must point to a valid conversation channel as\ndefined by the enum ConversationChannel.", "type": "object", "additionalProperties": { "$ref": "#/$defs/TemplateReference" } }, "omni_template": { "$ref": "#/$defs/TemplateReferenceWithVersion" } } } } }, "TemplateReference": { "type": "object", "title": "Template reference with concrete parameter values", "description": "The referenced template can be an omnichannel template stored in Conversation API Template Store as an AppMessage. You may also reference external channel-specific templates, such as a WhatsApp Business Template. Note that channel-specific template references are not supported when populating the `explicit_channel_omni_message` field.", "required": [ "template_id" ], "properties": { "version": { "type": "string", "description": "Used to specify what version of a template to use. Required when using `omni_channel_override` and `omni_template` fields.\nThis will be used in conjunction with `language_code`. Note that, when referencing omni-channel templates using the [Sinch Customer Dashboard](https://dashboard.sinch.com/), the latest version of a given omni-template can be identified by populating this field with `latest`." }, "language_code": { "description": "The BCP-47 language code, such as `en_US` or `sr_Latn`.\nFor more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. English is the default `language_code`.\nNote that, while many API calls involving templates accept either the dashed format (`en-US`) or the underscored format (`en_US`), some channel specific templates (for example, WhatsApp channel-specific templates) only accept the underscored format. Note that this field is required for WhatsApp channel-specific templates.", "type": "string" }, "parameters": { "description": "Required if the template has parameters. Concrete values must\nbe present for all defined parameters\nin the template. Parameters can be different for\ndifferent versions and/or languages of the template.", "type": "object", "additionalProperties": { "type": "string" } }, "template_id": { "description": "The ID of the template. Note that, in the case of WhatsApp channel-specific templates, this field must be populated by the name of the template.", "type": "string" } } }, "TemplateReferenceField": { "type": "object", "title": "Template (Reference)", "properties": { "template_reference": { "$ref": "#/$defs/TemplateReferenceWithVersion" } } }, "TemplateReferenceWithVersion": { "type": "object", "allOf": [ { "required": [ "version" ] }, { "$ref": "#/$defs/TemplateReference" } ] }, "TextMessageField": { "type": "object", "title": "Text", "description": "A message containing only text.", "properties": { "text_message": { "type": "object", "title": "Text Message", "required": [ "text" ], "properties": { "text": { "description": "The text to be sent.", "type": "string" } } } } }, "UrlInfo": { "type": "object", "title": "URL Info", "description": "A URL/website", "required": [ "url" ], "properties": { "url": { "description": "The URL to be referenced", "type": "string" }, "type": { "description": "Optional. URL type, e.g. Org or Social", "type": "string" } } }, "UrlMessageField": { "description": "A generic URL message.", "type": "object", "title": "URL", "properties": { "url_message": { "title": "URL Message", "type": "object", "required": [ "title", "url" ], "properties": { "title": { "description": "The title shown close to the URL. The title can be clickable in some cases.", "type": "string" }, "url": { "description": "The url to show.", "type": "string" } } } } }, "WhatsAppInteractiveBody": { "type": "object", "description": "Body of the interactive message.", "required": [ "text" ], "properties": { "text": { "type": "string", "description": "The content of the message (1024 characters maximum). Emojis and Markdown are supported." } } }, "WhatsAppInteractiveDocumentHeader": { "type": "object", "description": "Header of the interactive message with document.", "required": [ "type", "document" ], "properties": { "type": { "type": "string", "x-enumDescriptions": { "document": "The document associated with the header." }, "enum": [ "document" ] }, "document": { "$ref": "#/$defs/WhatsAppInteractiveHeaderMedia" } } }, "WhatsAppInteractiveFooter": { "type": "object", "description": "Footer of the interactive message.", "required": [ "text" ], "properties": { "text": { "type": "string", "description": "The footer content (60 characters maximum). Emojis, Markdown and links are supported." } } }, "WhatsAppInteractiveHeaderMedia": { "type": "object", "description": "Media object for the header.", "required": [ "link" ], "properties": { "link": { "type": "string", "description": "URL for the media." } } }, "WhatsAppInteractiveImageHeader": { "type": "object", "description": "Header of the interactive message with image.", "required": [ "type", "image" ], "properties": { "type": { "type": "string", "x-enumDescriptions": { "image": "The image associated with the header." }, "enum": [ "image" ] }, "image": { "$ref": "#/$defs/WhatsAppInteractiveHeaderMedia" } } }, "WhatsAppInteractiveNfmReply": { "type": "object", "title": "Nfm Reply", "description": "The interactive nfm reply message.", "required": [ "name", "response_json", "body" ], "properties": { "name": { "type": "string", "description": "The nfm reply message type.", "x-enumDescriptions": { "flow": "The WhatsApp flow nfm reply message type.", "address_message": "The address nfm reply message type." }, "enum": [ "flow", "address_message" ] }, "response_json": { "type": "string", "description": "The JSON specific data." }, "body": { "type": "string", "description": "The message body." } } }, "WhatsAppInteractiveNfmReplyChannelSpecificContactMessage": { "type": "object", "title": "WhatsApp Interactive Nfm Reply Channel Specific Contact Message", "description": "A WhatsApp interactive contact message containing the nfm_reply.", "required": [ "type", "nfm_reply" ], "properties": { "type": { "type": "string", "description": "The interactive message type.", "default": "nfm_reply", "x-enumDescriptions": { "nfm_reply": "The interactive nfm reply type." }, "enum": [ "nfm_reply" ] }, "nfm_reply": { "$ref": "#/$defs/WhatsAppInteractiveNfmReply" } } }, "WhatsAppInteractiveTextHeader": { "type": "object", "description": "Header of the interactive message with text.", "required": [ "type", "text" ], "properties": { "type": { "type": "string", "x-enumDescriptions": { "text": "The text of the header." }, "enum": [ "text" ] }, "text": { "type": "string", "description": "Text for the header. Formatting allows emojis, but not Markdown." } } }, "WhatsAppInteractiveVideoHeader": { "type": "object", "description": "Header of the interactive message with video.", "required": [ "type", "video" ], "properties": { "type": { "type": "string", "x-enumDescriptions": { "video": "The video associated with the header." }, "enum": [ "video" ] }, "video": { "$ref": "#/$defs/WhatsAppInteractiveHeaderMedia" } } }, "WhatsAppPaymentButton": { "description": "WhatsApp Payment Button", "oneOf": [ { "$ref": "#/$defs/WhatsAppPaymentSettingsButtonPix" }, { "$ref": "#/$defs/WhatsAppPaymentSettingsButtonPaymentLink" }, { "$ref": "#/$defs/WhatsAppPaymentSettingsButtonBoleto" } ] }, "WhatsAppPaymentSettingsBoleto": { "type": "object", "deprecated": true, "required": [ "boleto" ], "properties": { "boleto": { "type": "object", "description": "The Boleto payment settings.", "required": [ "digitable_line" ], "properties": { "digitable_line": { "type": "string", "description": "The Boleto digitable line which will be copied to the clipboard when the user taps the Boleto button." } } } } }, "WhatsAppPaymentSettingsButtonBoleto": { "type": "object", "description": "The Boleto payment settings.", "required": [ "type", "digitable_line" ], "properties": { "type": { "type": "string", "enum": [ "boleto" ], "x-enumDescriptions": { "boleto": "The Boleto button identifier" } }, "digitable_line": { "type": "string", "description": "The Boleto digitable line which will be copied to the clipboard when the user taps the Boleto button." } } }, "WhatsAppPaymentSettingsButtonPaymentLink": { "type": "object", "description": "The payment link payment settings.", "required": [ "type", "uri" ], "properties": { "type": { "type": "string", "enum": [ "payment_link" ], "x-enumDescriptions": { "payment_link": "The payment link button identifier" } }, "uri": { "type": "string", "description": "The payment link to be used by the buyer to pay." } } }, "WhatsAppPaymentSettingsButtonPix": { "type": "object", "description": "The dynamic Pix payment settings button.", "required": [ "type", "code", "merchant_name", "key", "key_type" ], "properties": { "type": { "type": "string", "enum": [ "pix_dynamic_code" ], "x-enumDescriptions": { "pix_dynamic_code": "The dynamic Pix code button identifier" } }, "code": { "type": "string", "description": "The dynamic Pix code to be used by the buyer to pay." }, "merchant_name": { "type": "string", "description": "Account holder name." }, "key": { "type": "string", "description": "Pix key." }, "key_type": { "type": "string", "description": "Pix key type.", "enum": [ "CPF", "CNPJ", "EMAIL", "PHONE", "EVP" ], "x-enumDescriptions": { "CPF": "The CPF key type.", "CNPJ": "The CNPJ key type.", "EMAIL": "The EMAIL key type.", "PHONE": "The PHONE key type.", "EVP": "The EVP key type." } } } }, "WhatsAppPaymentSettingsPaymentLink": { "type": "object", "deprecated": true, "required": [ "payment_link" ], "properties": { "payment_link": { "type": "object", "description": "The payment link payment settings.", "required": [ "uri" ], "properties": { "uri": { "type": "string", "description": "The payment link to be used by the buyer to pay." } } } } }, "WhatsAppPaymentSettingsPix": { "type": "object", "deprecated": true, "required": [ "dynamic_pix" ], "properties": { "dynamic_pix": { "type": "object", "description": "The dynamic Pix payment settings.", "required": [ "code", "merchant_name", "key", "key_type" ], "properties": { "code": { "type": "string", "description": "The dynamic Pix code to be used by the buyer to pay." }, "merchant_name": { "type": "string", "description": "Account holder name." }, "key": { "type": "string", "description": "Pix key." }, "key_type": { "type": "string", "description": "Pix key type.", "enum": [ "CPF", "CNPJ", "EMAIL", "PHONE", "EVP" ], "x-enumDescriptions": { "CPF": "The CPF key type.", "CNPJ": "The CNPJ key type.", "EMAIL": "The EMAIL key type.", "PHONE": "The PHONE key type.", "EVP": "The EVP key type." } } } } } }, "choiceCommonProps": { "type": "object", "properties": { "postback_data": { "description": "An optional field. This data will be returned in the ChoiceResponseMessage. The default is message_id_{text, title}." }, "display_mode": { "$ref": "#/$defs/DisplayMode" } } }, "choiceTypes": { "type": "object", "oneOf": [ { "$ref": "#/$defs/CallMessageField" }, { "$ref": "#/$defs/LocationMessageField" }, { "$ref": "#/$defs/TextMessageField" }, { "$ref": "#/$defs/UrlMessageField" }, { "$ref": "#/$defs/CalendarMessageField" }, { "$ref": "#/$defs/ShareLocationMessageField" } ] } } }