openapi: 3.2.0 info: version: 2.1.0 title: Route Mobile Rich Communication Services (RCS) API Documentation Callback API description: 'Welcome to the Route Mobile developer hub. You will find comprehensive RCS API documentation to help you start working with Route Mobile as quickly as possible and support if you get stuck. Let''s jump right in! For more information, see the [Route Mobile Open API Specifications](https://routemobile.github.io/RCS-Business-Messaging-API/RCS.html)' contact: url: https://developers.routemobile.com/ name: Route Mobile Development email: support@routemobile.com license: name: Proprietary url: https://www.routemobile.com/terms-and-conditions/ x-logo: url: https://www.routemobile.com/wp-content/uploads/2021/07/RM-Logo.png altText: Route Mobile Logo x-readme: samples-languages: - curl - python - node - java - php servers: - url: https://apis.rmlconnect.net security: - jwt: [] tags: - name: Callback API description: Webhook receiver endpoints for real-time RCS message delivery and event notifications. paths: /callback: post: tags: - Callback API summary: Callback description: 'Use the Callback API to receive real-time RCS notifications of incoming messages and other events. ' operationId: post-callback requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/rcs_callback_incoming_text' - $ref: '#/components/schemas/rcs_callback_incoming_image' - $ref: '#/components/schemas/rcs_callback_incoming_location' - $ref: '#/components/schemas/rcs_callback_incoming_suggaction' - $ref: '#/components/schemas/rcs_callback_incoming_suggestion_reply' - $ref: '#/components/schemas/rcs_callback_incoming_video' - $ref: '#/components/schemas/rcs_callback_incoming_document' - $ref: '#/components/schemas/rcs_callback_status_read_delivered' - $ref: '#/components/schemas/rcs_callback_status_failed' - $ref: '#/components/schemas/rcs_callback_fallback_whatsapp' examples: Incoming Text: value: bot_name: Routemobile event_type: text_message request_id: Mx068dFMQbSWm7zPxvVFIxxxx session_id: 1d80575f-fe51-4ea9-b1b4-883ded8fxxxx text_message: Hi timestamp: 2023-05-23T09:14:36.2599xxx user_contact: '{phone}' username: demo Incoming Image: value: bot_name: Routemobile event_type: media_message media_name: 16656.jpg media_size: '193386' media_type: image media_uri: https://www.example.com/a502a4e475d7f700cead51b416a1040ed53f2c607a6d87790561d5xxxxxx request_id: MxE3=LDqIZRqKVzsjLPIxxxx session_id: b19d033c-a159-4565-8d3d-8d527abaxxxx timestamp: 2023-04-02T10:49:30.9598xxxx user_contact: '{phone}' username: demo Incoming Location: value: request_id: 01bc1fcd-6ceb-473d-bd17-b0979ea2xxxx user_contact: '{phone}' timestamp: 2021-02-06T03:50:00.432xxxx bot_name: VMart username: vmartretail session_id: 72cfbb87-f7bf-4e02-bd40-322e4e35xxxxx event_type: location latitude: 19.1453xxx longitude: 72.8236xxx Incoming Suggestion Action (URL/Dial): value: bot_name: Routemobile event_type: response request_id: MxoUu=Ito5SfCX-SVJ0jmxxxx response_postback: url response_text: Tap me session_id: b19d033c-a159-4565-8d3d-8d527abaxxxx suggestion_type: action timestamp: 2023-04-02T12:02:33.594xxxx user_contact: '{phone}' username: demo Incoming Suggestion Reply: value: bot_name: Routemobile event_type: response request_id: Mxtq0v4sL6T1Oa2WpBXxxxxx response_postback: test response_text: Nice session_id: b19d033c-a159-4565-8d3d-8d527abaxxxx suggestion_type: reply timestamp: 2023-04-02T12:03:03.315xxxx user_contact: '{phone}' username: demo Incoming Video: value: bot_name: Routemobile event_type: media_message media_name: 15584.mp4 media_size: '8372956' media_type: video media_uri: https://www.example.com/8ffc96b86dd5a47a1b3e0c5baf68b952998e561e681cf92f6539xxxxxxx request_id: Mx1DOwT7ZHRN-8Gzu2PFxxxxx session_id: b19d033c-a159-4565-8d3d-8d527abxxxxx timestamp: 2023-04-02T10:50:45.8520xxx user_contact: '{phone}' username: demo Incoming Document: value: bot_name: Routemobile event_type: media_message media_name: Ticket.pdf media_size: '160827' media_type: application media_uri: https://www.example.com/9108880408b94cf4a9dfb48002ac580ed868962d757321463a2b8dxxxxx request_id: Mxi3EWJ6TvQkeJZ4MZbPxxxx2 session_id: b19d033c-a159-4565-8d3d-8d527abxxxxx1 timestamp: 2023-04-02T10:51:33.554xxxxx user_contact: '{phone}' username: demo Status (Read/Delivered): value: bot_name: Routemobile event_type: status message_id: 66b3ef00-d14e-11ed-a253-0a58a9xxxxx message_status: READ/DELIVERED timestamp: 2023-04-02T12:03:43.655xxxxxx user_contact: '{phone}' extra: extra username: demo campaign_name: '{campaign_name}' campaign_id: '{campaign_id}' Status Failed: value: bot_name: Routemobile event_type: status message_id: 66b3ef00-d14e-11ed-a253-0a58a9fxxxxx message_status: FAILED failure_reason: 'The supplied file URL https://storage.googleapis.com/kitchen-sink-xxxxx-images/xxxxt.jpg is invalid Code: INVALID_ARGUMENT' timestamp: 2023-04-02T12:03:43.6557xxxx user_contact: '{phone}' extra: extra username: demo campaign_name: '{campaign_name}' campaign_id: '{campaign_id}' Fallback to Whatsapp: value: bot_name: Routemobile event_type: status message_id: 66b3ef00-d14e-11ed-a253-0a58a9feac02 message_status: fallback timestamp: '2023-04-02T12:03:43.655710Z' user_contact: '+917045345285' whatsapp_message_id: 11b3ef00-d14e-11ed-a253-0a58a9feac02 extra: extra username: demo responses: '200': description: OK components: schemas: rcs_callback_incoming_text: type: object title: Incoming Text properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" request_id: type: string description: 'The unique identifier for the original request or message. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' text_message: type: string description: 'The text content of the message sent by the user. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - request_id - session_id - text_message - timestamp - user_contact - username rcs_callback_incoming_video: type: object title: Incoming Video properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" media_name: type: string description: 'The name of the media file. ' media_size: type: string description: "The size of the media file in bytes. \n" media_type: type: string description: 'The type of media. For a video, it is set to "video". ' media_uri: type: string description: "The URI or URL where the media file is hosted or stored. \n" request_id: type: string description: 'The unique identifier for the original request or message. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - media_name - media_size - media_type - media_uri - request_id - session_id - timestamp - user_contact - username rcs_callback_incoming_location: type: object title: Incoming Location properties: request_id: type: string description: 'The unique identifier for the original request or message. ' user_contact: type: string description: 'The contact information of the user. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' bot_name: type: string description: 'The name of the bot. ' username: type: string description: 'The name of the user. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' event_type: type: string description: "The type of event or message. \n" latitude: type: number description: "A decimal number representing the latitude coordinate of the location shared by the user. \n" longitude: type: number description: 'A decimal number representing the longitude coordinate of the location shared by the user. ' required: - request_id - user_contact - timestamp - bot_name - username - session_id - event_type - latitude - longitude rcs_callback_incoming_suggaction: type: object title: Incoming Suggestion Action (URL/Dial) properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" request_id: type: string description: 'The unique identifier for the original request or message. ' response_postback: type: string description: 'The postback value associated with the suggestion action. ' response_text: type: string description: 'The text associated with the suggestion action. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' suggestion_type: type: string description: 'The type of suggestion used by the user. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - request_id - response_postback - response_text - session_id - suggestion_type - timestamp - user_contact - username rcs_callback_status_failed: type: object title: Status Failed properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" message_id: type: string description: "The unique identifier for the message that is being reported for its status. \n" message_status: type: string description: 'The status of the message. ' failure_reason: type: string description: 'The reason for the failure. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' extra: type: string description: 'Additional information or parameters related to the payment. ' username: type: string description: 'The name of the user. ' campaign_name: type: string description: "The name of the campaign. \n" campaign_id: type: string description: "The id for the campaign sent. \n" required: - bot_name - event_type - message_id - message_status - failure_reason - timestamp - user_contact - extra - username - campaign_name - campaign_id rcs_callback_fallback_whatsapp: type: object title: Fallback To Whatsapp properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" message_id: type: string description: "The unique identifier for the message that is being reported for its status. \n" message_status: type: string description: 'The status of the message. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' extra: type: string description: 'Additional information or parameters related to the payment. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - message_id - message_status - failure_reason - timestamp - user_contact - extra - username rcs_callback_incoming_suggestion_reply: type: object title: Incoming Suggestion Reply properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: 'The type of event or message. For a suggestion reply, it is set to "response". ' request_id: type: string description: 'The unique identifier for the original request or message. ' response_postback: type: string description: 'The postback value associated with the suggestion reply. ' response_text: type: string description: 'The text response provided by the user for the suggestion. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' suggestion_type: type: string description: "The type of suggestion used by the user. \n" timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - request_id - response_postback - response_text - session_id - suggestion_type - timestamp - user_contact - username rcs_callback_incoming_document: type: object title: Incoming Document properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" media_name: type: string description: 'The name of the media file. ' media_size: type: string description: "The size of the media file in bytes. \n" media_type: type: string description: 'The type of media. For a document, it is set to "document". ' media_uri: type: string description: "The URI or URL where the media file is hosted or stored. \n" request_id: type: string description: 'The unique identifier for the original request or message. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - media_name - media_size - media_type - media_uri - request_id - session_id - timestamp - user_contact - username rcs_callback_incoming_image: type: object title: Incoming Image properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" media_name: type: string description: 'The name of the media file. ' media_size: type: string description: 'The size of the media file in bytes. ' media_type: type: string description: 'The type of media. For an image, it is set to "image". ' media_uri: type: string description: 'The URI or URL where the media file is hosted or stored. ' request_id: type: string description: 'The unique identifier for the original request or message. ' session_id: type: string description: 'The session identifier for the conversation or interaction. It helps to associate multiple messages from the same user or session. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' username: type: string description: 'The name of the user. ' required: - bot_name - event_type - media_name - media_size - media_type - media_uri - request_id - session_id - timestamp - user_contact - username rcs_callback_status_read_delivered: type: object title: Status (Read/Delivered) properties: bot_name: type: string description: 'The name of the bot. ' event_type: type: string description: "The type of event or message. \n" message_id: type: string description: "The unique identifier for the message that is being reported for its status. \n" message_status: type: string description: 'The status of the message. ' timestamp: type: string description: 'The timestamp of when the message was received or sent. ' user_contact: type: string description: 'The contact information of the user. ' extra: type: string description: 'Additional information or parameters related to the payment. ' username: type: string description: 'The name of the user. ' campaign_name: type: string description: "The name of the campaign. \n" campaign_id: type: string description: "The id for the campaign sent. \n" required: - bot_name - event_type - message_id - message_status - timestamp - user_contact - extra - username - campaign_name - campaign_id securitySchemes: jwt: type: apiKey name: Authorization in: header