openapi: 3.0.0
info:
  version: v1
  title: Messages API
paths:
  /messages/v1/accounts/{accountId}/messagechannels:
    get:
      tags:
      - Channels
      summary: Gets available channels.
      operationId: Channels_GetChannelsAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageChannel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageChannel'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageChannel'
  /messages/v1/accounts/{accountId}/channels:
    get:
      tags:
      - Channels
      summary: Gets available channels.
      operationId: Channels_GetChannelTypesAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiChannelInfo'
            text/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiChannelInfo'
            text/xml:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiChannelInfo'
  /messages/v1/accounts/{accountId}/messages:
    get:
      tags:
      - Messages
      summary: Gets campaigns paged.
      operationId: Messages_GetMessagesAsync
      parameters:
      - name: accountId
        in: path
        description: The account id.
        required: true
        schema:
          type: string
          format: uuid
      - name: status
        in: query
        description: Message status id.
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: orderby
        in: query
        description: "Column names (date, price, recipients, name) to order messages. add desc to\r\norder desc (ex: date\
          \ desc)"
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: includePreview
        in: query
        description: If true returns the preview as well
        required: false
        schema:
          type: boolean
      - name: isArchived
        in: query
        description: Used to get archived results
        required: false
        schema:
          type: boolean
      - name: skip
        in: query
        description: The skip.
        required: false
        schema:
          type: integer
          format: int32
      - name: take
        in: query
        description: The take.
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
    post:
      tags:
      - Messages
      summary: Adds a campaign.
      operationId: Messages_AddMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiMessageRequest2'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
    delete:
      tags:
      - Messages
      summary: Deletes multiple campaigns.
      operationId: Messages_DeleteMessagesAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageIds
        in: query
        description: The identifier.
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
            format: uuid
      responses:
        '204':
          description: NoContent
  /messages/v1/accounts/{accountId}/messages/test:
    post:
      tags:
      - Messages
      summary: Sends a test campaign.
      operationId: Messages_SendTestMessageOnTheFlyAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiTestMessageRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiTestMessageRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiTestMessageRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiTestMessageRequest'
        description: The Message.
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/accounts/{accountId}/messages/cost:
    post:
      tags:
      - Messages
      summary: Gets cost estimation for specified campaign
      operationId: Messages_CalculateMessageCostAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiMessageRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
  /messages/v1/accounts/{accountId}/messages/{messageId}/cancel:
    post:
      tags:
      - Messages
      summary: Cancels a campaign.
      operationId: Messages_CancelMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/accounts/{accountId}/messages/{messageId}:
    get:
      tags:
      - Messages
      summary: Gets a campaign by id.
      operationId: Messages_GetMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      - name: includePreview
        in: query
        description: If true gets the preview as well.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
    put:
      tags:
      - Messages
      summary: Updates a campaign.
      operationId: Messages_UpdateMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      - name: versioned
        in: query
        description: If true message version will be checked before updates
        required: false
        schema:
          type: boolean
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiMessageRequest2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
    delete:
      tags:
      - Messages
      summary: Deletes a campaign.
      operationId: Messages_DeleteMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: NoContent
  /messages/v1/accounts/{accountId}/messages/{messageId}/export:
    get:
      tags:
      - Messages
      summary: Export CSV based on message status
      operationId: Messages_ExportRecipientsCsvAsync
      parameters:
      - name: accountId
        in: path
        description: The account guid.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The message id.
        required: true
        schema:
          type: string
          format: uuid
      - name: status
        in: query
        description: Status of the message can only be delivered, undelivered, converted, unconverted or all.
        required: false
        schema:
          type: string
      - name: fields
        in: query
        description: Custom fields to export
        required: false
        explode: true
        schema:
          type: array
          items:
            type: integer
            format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
            text/json:
              schema:
                type: object
            text/xml:
              schema:
                type: object
  /messages/v1/accounts/{accountId}/messages/{messageId}/export/addressbook:
    get:
      tags:
      - Messages
      summary: Export to Addressbook based on message status
      operationId: Messages_ExportRecipientsToAddressbookAsync
      parameters:
      - name: accountId
        in: path
        description: The account guid.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The message id.
        required: true
        schema:
          type: string
          format: uuid
      - name: status
        in: query
        description: Status of the message can only be delivered, undelivered, converted, unconverted or all.
        required: false
        schema:
          type: string
      - name: exportId
        in: query
        description: The export id.
        required: false
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiExportStatus'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiExportStatus'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiExportStatus'
  /messages/v1/accounts/{accountId}/messages/preview:
    post:
      tags:
      - Messages
      summary: Gets preview for specified campaign
      operationId: Messages_GenerateMessagePreviewAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: previewCode
        in: query
        description: The country or language code for preview
        required: false
        schema:
          type: string
      - name: numberOfPreviews
        in: query
        description: Number of previews to generate, default is 5
        required: false
        schema:
          type: integer
          format: int32
      - name: useFieldNames
        in: query
        description: Uses field names instead of sample data
        required: false
        schema:
          type: boolean
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiMessageRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessagePreview'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessagePreview'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessagePreview'
  /messages/v1/accounts/{accountId}/messages/{messageId}/cost:
    get:
      tags:
      - Messages
      summary: Gets cost estimation for specified campaign
      operationId: Messages_GetMessageCostAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The group ids to fetch
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCost'
  /messages/v1/accounts/{accountId}/messages/{messageId}/preview:
    get:
      tags:
      - Messages
      summary: Gets preview for specified campaign
      operationId: Messages_GetMessagePreviewAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The group ids to fetch
        required: true
        schema:
          type: string
          format: uuid
      - name: countryCode
        in: query
        description: The country code
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
            text/json:
              schema:
                type: array
                items:
                  type: string
            text/xml:
              schema:
                type: array
                items:
                  type: string
  /messages/v1/accounts/{accountId}/messages/count:
    get:
      tags:
      - Messages
      summary: Gets campaign counts per status.
      operationId: Messages_GetMessageCountAsync
      parameters:
      - name: accountId
        in: path
        description: The account id.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCount'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCount'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageCount'
  /messages/v1/accounts/{accountId}/messages/{messageId}/status:
    get:
      tags:
      - Messages
      summary: Provides diagnostic info about campaign
      operationId: Messages_GetMessageStatusAsync
      parameters:
      - name: accountId
        in: path
        description: The account guid.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The message id.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
            text/json:
              schema:
                type: object
                additionalProperties:
                  type: string
            text/xml:
              schema:
                type: object
                additionalProperties:
                  type: string
      deprecated: true
  /messages/v1/accounts/{accountId}/messages/{messageId}/pause:
    post:
      tags:
      - Messages
      summary: Pause sending a campaign.
      operationId: Messages_PauseMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/accounts/{accountId}/messages/{messageId}/resume:
    post:
      tags:
      - Messages
      summary: Resume sending a campaign.
      operationId: Messages_ResumeMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/accounts/{accountId}/messages/search/{term}:
    get:
      tags:
      - Messages
      summary: Search campaigns with specified terms.
      operationId: Messages_SearchMessagesAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: term
        in: path
        description: The search terms
        required: true
        schema:
          type: string
      - name: statuses
        in: query
        description: The message status terms
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: isArchived
        in: query
        description: The message is archived
        required: false
        schema:
          type: boolean
      - name: skip
        in: query
        description: The skip.
        required: false
        schema:
          type: integer
          format: int32
      - name: take
        in: query
        description: The take.
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/accounts/{accountId}/messages/{messageId}/test:
    post:
      tags:
      - Messages
      summary: Sends a test campaign.
      operationId: Messages_SendTestMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/xml:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          application/x-www-form-urlencoded:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
        description: The test message recipients.
        required: true
      responses:
        '200':
          description: OK
  /messages/v1/accounts/{accountId}/messages/{messageId}/tags:
    get:
      tags:
      - Messages
      summary: Returns array of data tag ids used in a campaign.
      operationId: Messages_GetMessageDataTagsAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  format: int32
                  type: integer
            text/json:
              schema:
                type: array
                items:
                  format: int32
                  type: integer
            text/xml:
              schema:
                type: array
                items:
                  format: int32
                  type: integer
  /messages/v1/accounts/{accountId}/messages/{messageId}/trigger:
    post:
      tags:
      - Messages
      summary: Sends a triggered campaign.
      operationId: Messages_SendTriggeredMessageAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/xml:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          application/x-www-form-urlencoded:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
        description: The triggered message recipients.
        required: true
      responses:
        '200':
          description: OK
  /messages/v1/accounts/{accountId}/senders:
    get:
      tags:
      - Senders
      summary: Gets senders.
      operationId: Senders_GetSendersAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
    post:
      tags:
      - Senders
      summary: Adds a Sender.
      operationId: Senders_AddSenderAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiSenderPresetRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
  /messages/v1/accounts/{accountId}/senders/{senderId}:
    put:
      tags:
      - Senders
      summary: Updates a Sender.
      operationId: Senders_UpdateSenderAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: senderId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiSenderPresetRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetResponse'
    delete:
      tags:
      - Senders
      summary: Deletes a Sender.
      operationId: Senders_DeleteSenderAsync
      parameters:
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: senderId
        in: path
        description: The identifier.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: NoContent
  /shadow/messages/v1/tokens/{productToken}/accounts/{accountId}/messages:
    post:
      tags:
      - ShadowToken
      summary: Adds a campaign.
      operationId: ShadowToken_AddMessageUsingProductTokenAsync
      parameters:
      - name: productToken
        in: path
        description: The product token.
        required: true
        schema:
          type: string
          format: uuid
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/CM.Platform.Messages.Models.ApiMessageRequest2'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageResponse'
  /messages/v1/tokens/{productToken}/accounts/{accountId}/messages/{messageId}/trigger:
    post:
      tags:
      - ShadowToken
      summary: Triggers a campaign using product token.
      operationId: ShadowToken_TriggerMessageUsingProductTokenAsync
      parameters:
      - name: productToken
        in: path
        description: The product token.
        required: true
        schema:
          type: string
          format: uuid
      - name: accountId
        in: path
        description: The accountId.
        required: true
        schema:
          type: string
          format: uuid
      - name: messageId
        in: path
        description: The Message id.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          text/xml:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
          application/x-www-form-urlencoded:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
        description: The recipients.
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                format: int32
                type: integer
            text/json:
              schema:
                format: int32
                type: integer
            text/xml:
              schema:
                format: int32
                type: integer
  /messages/v1/status:
    post:
      tags:
      - Status
      summary: Processes Status Reports.
      operationId: Status_ProcessStatusReportsAsync
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiStatusReport'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiStatusReport'
          text/xml:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiStatusReport'
          application/x-www-form-urlencoded:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiStatusReport'
        description: Status Reports
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                format: int32
                type: integer
            text/json:
              schema:
                format: int32
                type: integer
            text/xml:
              schema:
                format: int32
                type: integer
      deprecated: true
servers:
- url: https://api.cm.com
components:
  requestBodies:
    CM.Platform.Messages.Models.ApiSenderPresetRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetRequest'
        text/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetRequest'
        text/xml:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetRequest'
        application/x-www-form-urlencoded:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSenderPresetRequest'
      description: The sender.
      required: true
    CM.Platform.Messages.Models.ApiMessageRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        text/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        text/xml:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        application/x-www-form-urlencoded:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
      description: The message object
      required: true
    CM.Platform.Messages.Models.ApiMessageRequest2:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        text/json:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        text/xml:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        application/x-www-form-urlencoded:
          schema:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
      description: The Message.
      required: true
  schemas:
    CM.Platform.Messages.Models.ApiMessageChannel:
      type: object
      properties:
        profileImage:
          type: string
        id:
          type: string
        allowImages:
          type: boolean
        name:
          type: string
        phoneNumber:
          type: string
        whatsAppRequestId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        requestId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        type:
          type: string
    CM.Platform.Messages.Models.ApiChannelInfo:
      type: object
      properties:
        disabled:
          type: boolean
        name:
          type: string
        options:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiChannelOptions'
        type:
          type: string
    CM.Platform.Messages.Models.ApiChannelOptions:
      type: object
      properties:
        allowImages:
          type: boolean
        allowTemplates:
          type: boolean
        requestId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        appKey:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
    CM.Platform.Messages.Models.ApiMessageRequest:
      type: object
      properties:
        isArchived:
          type: boolean
        body:
          type: string
        channels:
          type: array
          items:
            type: string
        countrySpecificSenders:
          type: object
          additionalProperties:
            type: string
        grouping:
          type: string
        ignoreUnsubscribes:
          type: boolean
        name:
          type: string
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
        recurrence:
          type: string
        content:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.Conversation'
        scheduledAtUtc:
          format: date-time
          type: string
        senderPreset:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        senders:
          type: array
          items:
            type: string
        spread:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSpreadSettings'
        status:
          type: string
        tariff:
          format: int32
          type: integer
        modifiedAtUtc:
          format: date-time
          type: string
        updatedAtUtc:
          type: string
    CM.Platform.Messages.Models.ApiRecipient:
      type: object
      properties:
        contact:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        data:
          type: object
          additionalProperties:
            type: string
        group:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        msisdn:
          type: string
        pushId:
          type: string
    CM.Platform.Messages.Models.Conversation:
      type: object
      properties:
        media:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.Media'
        whatsAppTemplate:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.WhatsAppTemplate'
        text:
          type: string
        header:
          type: string
        footer:
          type: string
        suggestions:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.Suggestion'
    CM.Platform.Messages.Models.ApiSpreadSettings:
      type: object
      properties:
        durationMinutes:
          format: int32
          type: integer
        timeFrames:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiTimeFrame'
        until:
          format: date-time
          type: string
    CM.Platform.Messages.Models.Media:
      type: object
      properties:
        mediaName:
          type: string
        mediaUri:
          type: string
        mimeType:
          type: string
        mediaType:
          type: string
    CM.Platform.Messages.Models.WhatsAppTemplate:
      type: object
      properties:
        templateId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        languageCode:
          type: string
        components:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.WATemplateComponent'
    CM.Platform.Messages.Models.Suggestion:
      type: object
      properties:
        type:
          enum:
          - OpenUrl
          - CalendarEvent
          - Dial
          - ViewLocation
          - Reply
          - OpenAppPage
          type: string
        label:
          type: string
        phoneNumber:
          type: string
        postbackdata:
          type: string
        url:
          type: string
        viewLocation:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.Viewlocation'
    CM.Platform.Messages.Models.ApiTimeFrame:
      type: object
      properties:
        days:
          type: array
          items:
            type: string
        startTime:
          type: string
        endTime:
          type: string
    CM.Platform.Messages.Models.WATemplateComponent:
      type: object
      properties:
        index:
          type: string
        type:
          type: string
        subType:
          type: string
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.WATemplateComponentParameter'
    CM.Platform.Messages.Models.Viewlocation:
      type: object
      properties:
        latitude:
          type: string
        longitude:
          type: string
        label:
          type: string
    CM.Platform.Messages.Models.WATemplateComponentParameter:
      type: object
      properties:
        type:
          type: string
        media:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.Media'
        text:
          type: string
    CM.Platform.Messages.Models.ApiMessageResponse:
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        isStatsComplete:
          type: boolean
        isArchived:
          type: boolean
        analytics:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageAnalytics'
        preview:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessagePreview'
        body:
          type: string
        channels:
          type: array
          items:
            type: string
        countrySpecificSenders:
          type: object
          additionalProperties:
            type: string
        grouping:
          type: string
        ignoreUnsubscribes:
          type: boolean
        name:
          type: string
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
        recurrence:
          type: string
        content:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.Conversation'
        scheduledAtUtc:
          format: date-time
          type: string
        senderPreset:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        senders:
          type: array
          items:
            type: string
        spread:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiSpreadSettings'
        status:
          type: string
        tariff:
          format: int32
          type: integer
        modifiedAtUtc:
          format: date-time
          type: string
        createdAtUtc:
          format: date-time
          type: string
        createdBy:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        updatedAtUtc:
          type: string
    CM.Platform.Messages.Models.ApiMessageAnalytics:
      type: object
      properties:
        accepted:
          format: int32
          type: integer
        converted:
          format: int32
          type: integer
        countryErrorStats:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiCountryErrorStats'
        countryStats:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiCountryStats'
        deduplicated:
          format: int32
          type: integer
        delivered:
          format: int32
          type: integer
        deliveryTime:
          format: double
          type: number
        dispatched:
          format: int32
          type: integer
        euroPrice:
          format: double
          type: number
        failed:
          format: int32
          type: integer
        localCurrency:
          type: string
        localPrice:
          format: double
          type: number
        messages:
          format: int32
          type: integer
        optedOut:
          format: int32
          type: integer
        isRead:
          format: int32
          type: integer
        optOutReceived:
          format: int32
          type: integer
        recipients:
          format: int32
          type: integer
        test:
          format: int32
          type: integer
        updatedAtUtc:
          format: date-time
          type: string
    CM.Platform.Messages.Models.ApiMessagePreview:
      type: object
      properties:
        previews:
          type: array
          items:
            type: string
        footerPreview:
          type: string
        mediaPreviews:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.Media'
        titlePreviews:
          type: array
          items:
            type: string
        suggestionsPreview:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessagePreviewSuggestion'
        previewCode:
          type: string
        profileImage:
          type: string
        sender:
          type: string
        recipientsPerCountry:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipientsPerCountry'
        languages:
          type: array
          items:
            type: string
    CM.Platform.Messages.Models.ApiCountryErrorStats:
      type: object
      properties:
        country:
          type: string
        count:
          format: int32
          type: integer
        errorCode:
          format: int32
          type: integer
    CM.Platform.Messages.Models.ApiCountryStats:
      type: object
      properties:
        country:
          type: string
        accepted:
          format: int32
          type: integer
        converted:
          format: int32
          type: integer
        delivered:
          format: int32
          type: integer
        deliveryTime:
          format: double
          type: number
        dispatched:
          format: int32
          type: integer
        failed:
          format: int32
          type: integer
        messages:
          format: int32
          type: integer
        optedOut:
          format: int32
          type: integer
        optOutReceived:
          format: int32
          type: integer
        isRead:
          format: int32
          type: integer
        recipients:
          format: int32
          type: integer
    CM.Platform.Messages.Models.ApiMessagePreviewSuggestion:
      type: object
      properties:
        type:
          type: string
        content:
          type: string
    CM.Platform.Messages.Models.ApiRecipientsPerCountry:
      type: object
      properties:
        count:
          format: int32
          type: integer
        countryCode:
          type: string
    CM.Platform.Messages.Models.ApiTestMessageRequest:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiMessageRequest'
        testRecipients:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiRecipient'
    CM.Platform.Messages.Models.ApiMessageCost:
      type: object
      properties:
        minNumberOfPartsPerRecipient:
          format: int32
          type: integer
        maxNumberOfPartsPerRecipient:
          format: int32
          type: integer
        charsLeft:
          format: int32
          type: integer
        charsToRemove:
          format: int32
          type: integer
        countryCosts:
          type: array
          items:
            $ref: '#/components/schemas/CM.Platform.Messages.Models.ApiCountryCost'
        currency:
          type: string
        isMultipart:
          type: boolean
        messageCount:
          format: int32
          type: integer
        minDeliveryTime:
          format: int32
          type: integer
        recipientCount:
          format: int32
          type: integer
        totalCost:
          format: double
          type: number
        hasUnicode:
          type: boolean
        hasTags:
          type: boolean
    CM.Platform.Messages.Models.ApiCountryCost:
      type: object
      properties:
        cost:
          format: double
          type: number
        countryCode:
          type: string
        isMultipart:
          type: boolean
        messageCount:
          format: int32
          type: integer
        recipientCount:
          format: int32
          type: integer
    CM.Platform.Messages.Models.ApiExportStatus:
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        isComplete:
          type: boolean
        groupId:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
    CM.Platform.Messages.Models.ApiMessageCount:
      type: object
      properties:
        draft:
          format: int32
          type: integer
        template:
          format: int32
          type: integer
        scheduled:
          format: int32
          type: integer
        sent:
          format: int32
          type: integer
        archived:
          format: int32
          type: integer
        triggered:
          format: int32
          type: integer
    CM.Platform.Messages.Models.ApiSenderPresetRequest:
      type: object
      properties:
        isFavorite:
          type: boolean
        name:
          type: string
        senders:
          type: object
          additionalProperties:
            type: string
    CM.Platform.Messages.Models.ApiSenderPresetResponse:
      type: object
      properties:
        id:
          format: uuid
          type: string
          example: 00000000-0000-0000-0000-000000000000
        isFavorite:
          type: boolean
        name:
          type: string
        senders:
          type: object
          additionalProperties:
            type: string
    CM.Platform.Messages.Models.ApiStatusReport:
      type: object
      properties:
        Account:
          format: int32
          type: integer
        AdditionalInfo:
          type: string
        Converted:
          format: date-time
          type: string
        Customer:
          format: int32
          type: integer
        CustomGrouping:
          type: string
        CustomGrouping2:
          type: string
        CustomGrouping3:
          type: string
        Description:
          type: string
        ExternalReference:
          type: string
        LastRetry:
          format: date-time
          type: string
        LastUpdated:
          format: date-time
          type: string
        Parts:
          format: int32
          type: integer
        Priority:
          format: int32
          type: integer
        OptedOut:
          format: date-time
          type: string
        ReadByRecipient:
          format: date-time
          type: string
        Recipient:
          type: string
        Reference:
          format: int32
          type: integer
        RetryCost:
          format: double
          type: number
        SentToOperator:
          format: date-time
          type: string
        StandardError:
          format: int32
          type: integer
        Status:
          enum:
          - Accepted
          - Rejected
          - Delivered
          - Failed
          - Overdue
          - AcceptedByGateWay
          - RejectedByGateWay
          type: string
        Ticket:
          type: string
