openapi: 3.2.0 info: title: Vibes RCS Business Messaging API version: 0.0.0 servers: - url: https://rbm.us.vibes.com/connectCustomers description: Regional endpoint security: - OAuth2Auth: - https://rbm.vibes.com/rbm.agents tags: - name: RCS Business Messaging paths: /{connect_customer_key}/capabilities/{msisdn}: get: tags: - RCS Business Messaging operationId: Get Mobile Device Capabilities summary: Check for RCS capabilities description: 'Get the Vibes RCS-related capabilities of a user device. ' responses: '200': description: The request has succeeded. A payload with the specific capabilities will be returned. content: application/json: schema: $ref: '#/components/schemas/Capabilities' '403': description: Forbidden agent. The `agentId` is either not valid, or it has not deployed on the provider. '404': description: Target phone number does not support RBM. If your agent is not yet launched, note that this will be returned if the MDN is not a tester for the agent. '422': description: Unprocessable entity. Specific data errors have occurred in the request. Additional details will be available in the content of the error.

Example - Invalid Phone Number. The phone number is not a valid mobile number, or is on a unsupported carrier. '429': description: Quota exceeded. You've either exceeded the number of calls allowed, or a downstream server is busy. Please try your request again later. parameters: - in: path name: connect_customer_key description: Your unique customer key. required: true schema: type: string - in: path name: msisdn description: Target device's phone number in E.164 format. required: true schema: type: string example: '+16125551234' - in: query name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. required: true schema: type: string explode: false - in: query name: carrierCode description: Optional carrier code to target a specific carrier for the capabilities lookup. required: false schema: type: string /{connect_customer_key}/agentMessages/{msisdn}: post: tags: - RCS Business Messaging operationId: Send Agent Message summary: Send an RCS message description: Sends a message from an RBM agent to a mobile device. The message can contain text, rich card, and suggestions. The message can also be revoked between the time that it is sent and the time that it is delivered.

See some example RCS message payloads here. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentMessage' responses: '200': description: The message has been queued for delivery. A webhook will be sent to the agent when the message is delivered to the mobile device. content: application/json: schema: $ref: '#/components/schemas/AgentMessage' '403': description: Forbidden agent. The `agentId` is either not valid, or it has not deployed on the provider. '422': description: Unprocessable entity. Specific data errors have occurred in the request. Additional details will be available in the content of the error.

Example - Invalid Phone Number. The phone number is not a valid mobile number, or is on a unsupported carrier. '429': description: Quota exceeded. You've either exceeded the number of calls allowed, or a downstream server is busy. Please try your request again later. parameters: - in: path name: connect_customer_key description: Your unique customer key. required: true schema: type: string - in: path name: msisdn description: Target device's phone number in E.164 format. required: true schema: type: string example: '+15555555555' - in: query name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. required: true schema: type: string explode: false - in: query name: messageId description: An alphanumeric 36-character UUID identifying the message. You can set this to whatever UUID you like, but if it is left blank, it will be filled in by the system. schema: type: string explode: false /{connect_customer_key}/agentEvents/{msisdn}: post: tags: - RCS Business Messaging operationId: Send Agent Event summary: Send an RCS event description: Sends an event from a Vibes customer RBM agent to a user.

Agent events include read receipts or "typing" notifications. If Vibes RBM can't reach the user, the Vibes RBM platform returns `404 NOT_FOUND`. Unlike agent messages, agent events cannot be revoked after sending. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentEvent' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/AgentEvent' '403': description: Forbidden agent. The `agentId` is either not valid, or it has not deployed on the provider. '422': description: Unprocessable entity. Specific data errors have occurred in the request. Additional details will be available in the content of the error.

Example - Invalid Phone Number. The phone number is not a valid mobile number, or is on a unsupported carrier. '429': description: Quota exceeded. You've either exceeded the number of calls allowed, or a downstream server is busy. Please try your request again later. parameters: - in: path name: connect_customer_key description: Your unique customer key. required: true schema: type: string - in: path name: msisdn description: Target device's phone number in E.164 format. required: true schema: type: string example: '+15555555555' - in: query name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. required: true schema: type: string explode: false - in: query name: eventId description: An alphanumeric string identifying the event. You can set this to whatever you like, but if it is left blank, it will be filled in by the system. schema: type: string explode: false /{connect_customer_key}/agentMessages/{msisdn}/{messageId}: delete: tags: - RCS Business Messaging operationId: Revoke Agent Message summary: Revoke an RCS message description: 'Revoke a message that has been sent to a mobile device, if the message has not already been delivered. ' responses: '200': description: The request was successful. Note that this does not mean the message has been revoked. A webhook will be sent to the agent if the message was revoked. '403': description: Forbidden agent. The `agentId` is either not valid, or it has not deployed on the provider. '422': description: Unprocessable entity. Specific data errors have occurred in the request. Additional details will be available in the content of the error.

Example - Invalid Phone Number. The phone number is not a valid mobile number, or is on a unsupported carrier. '429': description: Quota exceeded. You've either exceeded the number of calls allowed, or a downstream server is busy. Please try your request again later. parameters: - in: path name: connect_customer_key description: Your unique customer key. required: true schema: type: string - in: path name: msisdn description: Target device's phone number in E.164 format. required: true schema: type: string example: '+15555555555' - in: path name: messageId description: The alphanumeric 36-character UUID identifying the message. required: true schema: type: string - in: query name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. required: true schema: type: string explode: false /{connect_customer_key}/testers/{msisdn}: post: tags: - RCS Business Messaging operationId: Invite Agent Tester summary: Invite an agent tester description: Invite a mobile device to become a tester of an agent. The device must have RCS capabilities to become a tester. When a phone number is a registered tester, they are able to receive RCS messages from an agent, even if that agent is not yet launched. responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Tester' '403': description: Forbidden agent. The `agentId` is either not valid, or it has not deployed on the provider. '422': description: Unprocessable entity. Specific data errors have occurred in the request. Additional details will be available in the content of the error.

Example - Invalid Phone Number. The phone number is not a valid mobile number, or is on a unsupported carrier. '429': description: Client error parameters: - in: path name: connect_customer_key description: Your unique customer key. required: true schema: type: string - in: path name: msisdn description: Phone number in E.164 format of device you are inviting to be an agent tester. required: true schema: type: string example: '+16125551234' - in: query name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. required: true schema: type: string explode: false get: tags: - RCS Business Messaging summary: Get the invite status of a tester device operationId: getTester parameters: - name: connect_customer_key in: path required: true schema: type: string - name: msisdn in: path required: true schema: type: string - name: agentId in: query required: true schema: type: string responses: '200': description: Returned invite status of a tester device. content: application/json: schema: $ref: '#/components/schemas/Tester' '400': description: Bad request. Note that connect_customer_key, msisdn, and agentId are all required. '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/ApiError' '403': description: Authorization error. content: application/json: schema: $ref: '#/components/schemas/ApiError' delete: tags: - RCS Business Messaging summary: Delete a tester device operationId: deleteTester parameters: - name: connect_customer_key in: path required: true schema: type: string - name: msisdn in: path required: true schema: type: string - name: agentId in: query required: true schema: type: string responses: '200': description: Deleted a tester device. content: application/json: schema: type: string description: Empty object. example: {} '400': description: Bad request. Note that connect_customer_key, msisdn, and agentId are all required. '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/ApiError' '403': description: Authorization error. content: application/json: schema: $ref: '#/components/schemas/ApiError' /{connect_customer_key}/testers: get: tags: - RCS Business Messaging summary: List the invite statuses of tester devices operationId: listTesters parameters: - name: connect_customer_key description: Your unique customer key. in: path required: true schema: type: string - name: agentId description: Alphanumeric string identifying your agent. To get your agentId, speak to your Vibes business rep. in: query required: true schema: type: string responses: '200': description: Returned invite statuses of tester devices for an agent. content: application/json: schema: type: array items: $ref: '#/components/schemas/Tester' '400': description: Bad request. Note that connect_customer_key, msisdn, and agentId are all required. '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/ApiError' '403': description: Authorization error. content: application/json: schema: $ref: '#/components/schemas/ApiError' components: schemas: AgentMessage: type: object required: - contentMessage properties: name: type: string description: Do not set this field. It will be populated by the API when the operation returns. readOnly: true sendTime: type: string description: Do not set this field. It will be populated by the API when the operation returns. readOnly: true contentMessage: $ref: '#/components/schemas/AgentContentMessage' description: The content of the agent message. messageTrafficType: $ref: '#/components/schemas/MessageTrafficType' description: Optional. The message traffic type. default: MESSAGE_TRAFFIC_TYPE_UNSPECIFIED richMessageClassification: $ref: '#/components/schemas/RichMessageClassification' readOnly: true totalPayloadSizeBytes: type: string format: int64 description: Output only. The total payload size of the message in bytes. readOnly: true carrier: type: string description: Output only. The carrier information that the user's phone number belongs to, according to Google RCS backends. readOnly: true expireTime: type: string description: Optional. Timestamp in UTC when this message will be considered expired. example: '2024-09-03T15:01:23.000Z' ttl: type: string description: Optional. Time in seconds the message will live before it is automatically revoked. example: '3.5' WebviewViewMode: type: string description: If URL is opened in integrated webview, specify view mode. Default is full view. enum: - WEBVIEW_VIEW_MODE_UNSPECIFIED - FULL - HALF - TALL AgentEvent: type: object properties: name: type: string description: Do not set this field. It will be populated by the API when the operation returns. eventType: $ref: '#/components/schemas/AgentEventType' messageId: type: string description: If you are sending a read receipt event, the alphanumeric identifier of the message the read receipt is associated with. sendTime: type: string description: Do not set this field. It will be populated by the API when the operation returns. required: - eventType ApiError: type: object properties: error: type: string RichMessageClassification: type: object description: Output only. Classifies the message according to the US billing model. properties: classificationType: $ref: '#/components/schemas/RichMessageClassificationType' description: Specifies the message's classification for billing purposes under the US billing model. segmentCount: type: integer format: int32 description: The number of 160-byte segments for the message's text, always rounded up. Calculated from the total UTF-8 byte length of the text content only; data from suggested replies or actions is excluded. SuggestedReply: type: object title: A suggested reply, which users can tap to send the text reply back to the agent. properties: text: type: string description: Required. Text of the suggested reply. maxLength: 25 postbackData: type: string description: Required. The base64-encoded payload that the agent receives in a user event when the user taps the suggested reply. Maximum CardOrientation: type: string enum: - CARD_ORIENTATION_UNSPECIFIED - HORIZONTAL - VERTICAL Feature: type: string enum: - FEATURE_UNSPECIFIED - RICHCARD_STANDALONE - RICHCARD_CAROUSEL - ACTION_CREATE_CALENDAR_EVENT - ACTION_DIAL - ACTION_OPEN_URL - ACTION_SHARE_LOCATION - ACTION_VIEW_LOCATION ThumbnailImageAlignment: type: string description: Alignment of image preview for standalone cards with horizontal layout. enum: - THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED - LEFT - RIGHT UploadedRbmFile: type: object description: A file that has been uploaded to the RCS Business Messaging platform. properties: fileName: type: string description: The name of the file, as provided by the RBM platform when the file is uploaded. readOnly: true thumbnailName: type: string description: The name of the thumbnail associated with the file, as provided by the RBM platform when the file is uploaded. readOnly: true ViewLocationAction: type: object description: Opens the device's default map app and selects the specified location or searches around the device's location given an agent-specified query. properties: label: type: string description: Optional. Text label of the location opened. latLong: description: Required. $ref: '#/components/schemas/LatLng' query: type: string description: Optional, only supported on Android Messages clients. Rather than specify a lat_long, a query string. For default map apps that support search functionality, tapping this suggested action results in a location search centered around the user's current location.

If the query is sufficiently specific, it select any location in the world. For instance, setting the query string to "Growing Tree Bank" will show all Growing Tree Bank locations in the device's vicinity. Setting the query string to "1600 Amphitheater Parkway, Mountain View, CA 94043" will select that specific address, regardless of the user's location. CardWidth: type: string enum: - CARD_WIDTH_UNSPECIFIED - SMALL - MEDIUM MessageTrafficType: type: string enum: - MESSAGE_TRAFFIC_TYPE_UNSPECIFIED - AUTHENTICATION - TRANSACTION - PROMOTION - SERVICEREQUEST - ACKNOWLEDGEMENT AgentContentMessage: type: object description: The content of the agent message. properties: text: type: string description: The body text of your message. contentInfo: description: Information about a file, including the URL of the file and the URL of the file’s thumbnail. The Vibes RBM platform serves content from a cache, but an agent can force the Vibes RBM platform to fetch a new version of the content and refresh the cache. $ref: '#/components/schemas/ContentInfo' suggestions: type: array description: Provide end users with suggested actions or responses. items: $ref: '#/components/schemas/Suggestion' maxItems: 11 uploadedRbmFile: $ref: '#/components/schemas/UploadedRbmFile' description: A file that was uploaded to the RCS Business Messaging platform. richCard: $ref: '#/components/schemas/RichCard' CardContent: type: object description: Each rich card must have at least one of title, description, or media. properties: title: type: string maxLength: 200 description: Title on the rich card. description: type: string maxLength: 500 description: Description text on the rich card. media: $ref: '#/components/schemas/Media' suggestions: type: array items: $ref: '#/components/schemas/Suggestion' maxItems: 10 CreateCalendarEventAction: type: object properties: startTime: type: string description: Required. Event start time. endTime: type: string description: Required. Event end time. title: type: string maxLength: 100 description: Required. Event title. description: type: string maxLength: 500 description: Optional. Event description. MediaHeight: type: string enum: - HEIGHT_UNSPECIFIED - SHORT - MEDIUM - TALL ContentInfo: type: object properties: fileUrl: type: string description: Publicly reachable URL of the file. The Vibes RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL. Recommended maximum file size of 100 MB. thumbnailUrl: type: string description: For image, audio and video files only. Publicly reachable URL of the thumbnail. Maximum size of 100 kB. If you don't provide a thumbnail URL, the Vibes RBM platform displays a blank placeholder thumbnail until the user's device downloads the file. Depending on the user's setting, the file may not download automatically and may require the user to tap a download button. Recommended maximum file size of 100 kB. forceRefresh: type: boolean description: Default is false. If true, the Vibes RBM platform fetches the file and thumbnail from the specified URLs, even if the platform has cached copies of the file (and/or of the thumbnail). RichCard: type: object properties: carouselCard: description: A carousel of rich cards. $ref: '#/components/schemas/CarouselCard' standaloneCard: description: A single rich card. $ref: '#/components/schemas/StandaloneCard' Media: type: object properties: height: $ref: '#/components/schemas/MediaHeight' description: The height of the media. Applies only to standalone and carousel cards with vertical orientation. contentInfo: $ref: '#/components/schemas/ContentInfo' description: Information about a file, including the URL of the file and the URL of the file's thumbnail. uploadedRbmFile: $ref: '#/components/schemas/UploadedRbmFile' description: A file that was uploaded to the RCS Business Messaging platform. LatLng: type: object properties: latitude: type: number longitude: type: number AgentEventType: type: string enum: - TYPE_UNSPECIFIED - IS_TYPING - READ Suggestion: type: object title: Add a suggested reply or action properties: reply: title: Suggested reply $ref: '#/components/schemas/SuggestedReply' action: title: Suggested action $ref: '#/components/schemas/SuggestedAction' SuggestedAction: type: object properties: text: type: string maxLength: 25 description: Required. Text label of suggested action. postbackData: type: string maxLength: 2048 description: Required. Base64-encoded payload that will be sent to the agent in the user event that results when the user taps the suggested action. Maximum 2048 characters. fallbackUrl: type: string maxLength: 2048 description: Optional. URL that will open in a new window if a mobile device doesn't support a suggested action. dialAction: description: Opens the device's default phone app with the specified phone number filled in. $ref: '#/components/schemas/DialAction' viewLocationAction: description: Opens the device's default map app and selects the specified location or searches around the device's location given an agent-specified query. $ref: '#/components/schemas/ViewLocationAction' createCalendarEventAction: description: Opens the device's default calendar app and creates a new calendar event prefilled with the event data. $ref: '#/components/schemas/CreateCalendarEventAction' openUrlAction: description: Opens the specified URL. $ref: '#/components/schemas/OpenUrlAction' shareLocationAction: description: Shares the device's location with the agent. $ref: '#/components/schemas/ShareLocationAction' RichMessageClassificationType: type: string enum: - RICH_MESSAGE_CLASSIFICATION_TYPE_UNSPECIFIED - RICH_MESSAGE - RICH_MEDIA_MESSAGE - SUGGESTED_ACTION_CLICK OpenUrlApplication: type: string description: What app the URL will open in - browser or integrated webview window. enum: - OPEN_URL_APPLICATION_UNSPECIFIED - WEBVIEW - BROWSER DialAction: type: object properties: phoneNumber: type: string description: Required. Phone number to dial, in E.164 format. example: '+15555555555' TesterInviteStatus: type: string enum: - INVITE_STATUS_UNSPECIFIED - PENDING - ACCEPTED - DECLINED StandaloneCard: type: object properties: cardOrientation: description: Orientation of the card. $ref: '#/components/schemas/CardOrientation' thumbnailImageAlignment: description: Alignment of image preview for standalone cards with horizontal layout. $ref: '#/components/schemas/ThumbnailImageAlignment' cardContent: $ref: '#/components/schemas/CardContent' ShareLocationAction: type: object OpenUrlAction: type: object properties: url: type: string maxLength: 2048 description: Required. application: description: What app the URL will open in - browser or integrated webview window. $ref: '#/components/schemas/OpenUrlApplication' webviewViewMode: description: If URL is opened in integrated webview, specify view mode. Default is full view. $ref: '#/components/schemas/WebviewViewMode' description: type: string Tester: type: object properties: agentId: type: string description: The ID of an agent. inviteStatus: allOf: - $ref: '#/components/schemas/TesterInviteStatus' description: Output only. The status of the invitation. Returned by the platform. readOnly: true name: type: string description: Output only. The unique identifier of the tester. readOnly: true phoneNumber: type: string description: The phone number of the tester in E.164 format. required: - phoneNumber Capabilities: type: object required: - features properties: carrier: type: string description: Output only. The carrier information that the user's phone number belongs to, according to Google RCS backends. features: type: array description: List of Vibes RBM features that this device supports. items: $ref: '#/components/schemas/Feature' CarouselCard: type: object description: A carousel of rich cards. properties: cardWidth: $ref: '#/components/schemas/CardWidth' description: The width of the cards in the carousel. cardContents: type: array items: $ref: '#/components/schemas/CardContent' maxItems: 10 securitySchemes: OAuth2Auth: type: oauth2 flows: clientCredentials: tokenUrl: https://vibes-rbm-prd.auth.us-west-2.amazoncognito.com/oauth2/token scopes: https://rbm.vibes.com/rbm.agents: '' x-readme: explorer-enabled: true proxy-enabled: true