Listrak SMS REST API

Handle SMS subscriber and list management, short code management, and send transactional SMS messages to mobile subscribers.

OpenAPI Specification

listrak-sms-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: v1
  title: Listrak SMS REST API
  description: "# Introduction\r\nWelcome to the Listrak SMS <a href='https://en.wikipedia.org/wiki/Representational_state_transfer'>REST\
    \ API</a>!\r\n\r\nOur API allows developers to integrate with Listrak's application.\
    \ It enables the seamless automation of a broad set of functionality, ranging\
    \ from basic tasks to complex processes.\r\n\r\nWe aim to provide comprehensive\
    \ documentation coverage of our API's capabilities. Each resource and method is\
    \ described in detail with implementation notes, descriptions of parameters, headers,\
    \ return values, and code samples to aid in development.\r\n\n# Versioning\r\n\
    \r\nThe API version is denoted in the URI. This API's base URI is:\r\n\r\n`https://api.listrak.com/sms/v1`\r\
    \n\r\n<br />\r\n\r\nThe API version will be incremented if breaking changes are\
    \ introduced. Breaking changes may include:\r\n\r\n- Addition of required headers,\
    \ parameters, or model fields to a current route\r\n- Alterations that would result\
    \ in currently valid requests failing, or performing unexpectedly\r\n\r\n<br />\r\
    \n\r\nChanges that are not considered breaking may include:\r\n\r\n- Addition\
    \ of new model fields\r\n- Addition of new routes\r\n- Addition of new response\
    \ headers\r\n- Any alteration to a route that is marked as <span class=\"inDev\"\
    >In Development</span>\r\n# Usage\r\n\r\n## External Libraries\r\n\r\nThe C# code\
    \ examples featured on this site require the following packages:\r\n\r\n- <a href=\"\
    https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/\">Microsoft.AspNet.WebApi.Client</a>\r\
    \n- <a href=\"https://www.nuget.org/packages/Newtonsoft.Json/\">Newtonsoft.Json</a>\r\
    \n\r\nThe Php code examples require the following package:\r\n- <a href=\"http://docs.guzzlephp.org/en/stable/#\"\
    >Guzzle 6</a>\n# Integration Setup\r\nTo enable API access, **you must create\
    \ an _Integration_** on the _Integrations_ page. In the Listrak application left\
    \ menu, go to: Integrations &rarr; Integration Management.\r\n\r\nPlease specify\
    \ integration type `SMS` for your integration.\r\n\r\nMake sure to securely store\
    \ a copy of your _Client ID_ and _Client Secret_. These values will be needed\
    \ to authenticate with the API. For your security, the _Client Secret_ cannot\
    \ be retrieved if it is lost.\r\n\n# Status Codes\r\n\r\n| Status Code | Status\
    \ | Description |\r\n|-|-|-|\r\n| 200 | OK | The request succeeded. |\r\n| 201\
    \ | Created | A new resource has been created. |\r\n| 400 | Bad Request | Your\
    \ request is malformed or invalid. |\r\n| 401 | Unauthorized | Authentication\
    \ is required. |\r\n| 404 | Not Found | The resource does not exist. |\r\n| 405\
    \ | Method Not Allowed | The route does not support the requested method. |\r\n\
    | 415 | Unsupported Media Type | Please use a `Content-Type` of `application/json`.\
    \ |\r\n| 500 | Internal Server Error | An unexpected error occurred. Our development\
    \ team has been notified. |\r\n\n# Error Codes\r\n## General\r\n| Error Code |\
    \ Possible Causes |\r\n|-|-|\r\n| ERROR_INVALID_CREDENTIALS | Invalid client credentials,\
    \ inactive integration, unauthorized IP address |\r\n| ERROR_INVALID_LIST_ID |\
    \ `listId` is not a `listId` that exists or the `listId` does not exist on the\
    \ `senderCodeId` supplied |\r\n| ERROR_INVALID_PARAMETER | Null or invalid value\
    \ for a parameter, non-unique value for a parameter (if the property is required\
    \ to be unique for all resources in the collection) |\r\n| ERROR_INVALID_PHONE_NUMBER\
    \ | `phoneNumber` is in an invalid format |\r\n| ERROR_LIST_INACTIVE | The list\
    \ is in an inactive state based off of the `listId` provided |\r\n| ERROR_MALFORMED_REQUEST_BODY\
    \ | Invalid JSON body was supplied |\r\n| ERROR_RESOURCE_DEPENDENCY | Trying to\
    \ delete a resource that is in use |\r\n| ERROR_SENDER_CODE_DISABLED | The sender\
    \ code is in a disabled state based off of the `senderCodeId` provided |\r\n|\
    \ ERROR_UNABLE_TO_LOCATE_RESOURCE | Valid route was supplied with invalid resource\
    \ IDs |\r\n| ERROR_UNAUTHORIZED | Invalid access token, inactive integration,\
    \ insufficient access level, unauthorized IP address |\r\n| ERROR_UNHANDLED_EXCEPTION\
    \ | Unexpected error during execution of the request |\r\n| ERROR_UNKNOWN_ROUTE\
    \ | Invalid route was supplied |\r\n| ERROR_UNSAFE_ROUTE | Invalid character was\
    \ supplied in the route ('&' outside of query string, '<', '>', etc.) |\r\n| ERROR_UNSUPPORTED_CONTENT_TYPE\
    \ | Invalid `Content-Type` header was supplied (must be `application/json`), missing\
    \ `Content-Type` header |\r\n| ERROR_UNSUPPORTED_METHOD | Valid route supplied\
    \ with an invalid HTTP method |\r\n| ERROR_UNSUPPORTED_PROTOCOL | Request was\
    \ not made over HTTPS |\r\n\r\n## Contact\r\n| Error Code | Possible Causes |\r\
    \n|-|-|\r\n| ERROR_BANNED_PHONE_NUMBER | `phoneNumber` is banned from sender code\
    \ on update, subscription, or sms send calls |\r\n| ERROR_BIRTHDAY_FIELD_NULL\
    \ | `birthday` field does not have correct null value provided |\r\n| ERROR_INVALID_EMAIL_ADDRESS\
    \ | `emailAddress` is in an invalid format |\r\n| ERROR_INVALID_SEGMENTATION_FIELD_ID\
    \ | `segmentationFieldID` is not one that exists on the sender code |\r\n| ERROR_PENDING_PHONE_NUMBER\
    \ | `phoneNumber` is in pending double opt-in state on `listID` provided |\r\n\
    | ERROR_PHONE_NUMBER_FOUND | `phoneNumber` already exists on create |\r\n| ERROR_PHONE_NUMBER_NOT_FOUND\
    \ | `phoneNumber` not created before updating |\r\n| ERROR_PHONE_NUMBER_NOT_SUBSCRIBED\
    \ | `phoneNumber` is not subscribed to listID provided |\r\n| ERROR_PHONE_NUMBER_SUSPENDED\
    \ | `phoneNumber` has had its service temporarily suspended and cannot be sent\
    \ messages |\r\n| ERROR_SEGMENTATION_FIELD_DISABLED | profile field is in a disabled\
    \ or purged state |\r\n| ERROR_SEGMENTATION_MAX_LENGTH | profile field value is\
    \ too big for the profile field |\r\n| ERROR_SUBSCRIBED_PHONE_NUMBER | phoneNumber\
    \ already is subscribed to the `listID` provided |\r\n\r\n## Transactional Message\r\
    \n| Error Code | Possible Causes |\r\n|-|-|\r\n| ERROR_TRANSACTIONAL_MESSAGE_CONTENT_COUPON_CODE\
    \ | transactional message content cannot have coupon code tags in it |\r\n| ERROR_TRANSACTIONAL_MESSAGE_EMPTY_MESSAGE\
    \ | transactional message content is empty even after filling in profile tags\
    \ |\r\n| ERROR_TRANSACTIONAL_MESSAGE_NOT_FOUND | `transactionalMessageID` provided\
    \ does not exist on the `listID` provided |\r\n\n# Parameters\r\n## Route Parameters\r\
    \n\r\nResource identifiers are specified in the route. For example, in the route\
    \ `/Resource/{resourceId}`, `resourceId` is a route parameter. In this example,\
    \ if you wish to interact with Resource #123, its route would be `/Resource/123`.\r\
    \n\r\n## Query Parameters\r\n\r\nSome routes support additional query parameters;\
    \ for example, some resources support query parameters relating to paging. Supported\
    \ query parameters are described in their respective documentation areas.\r\n\r\
    \n## Request Body\r\n\r\nRequest bodies are required for most `POST` and `PUT`\
    \ requests. Please use a `Content-Type` of `application/json` and provide a JSON\
    \ object in your request body.\n"
  x-logo:
    url: /SMS/Resources/Images/Logo.png
paths:
  /v1/ShortCode/{senderCodeId}/Broadcast/Immediate:
    post:
      operationId: BroadcastMessage_PostImmediateBroadcast
      summary: Immediate Broadcast
      description: "Immediately send an SMS broadcast message to all subscribed contacts\
        \ on an SMS List. \r\nIf a segmentation field id is included, the message\
        \ will only be sent to the contacts that have the custom checkbox field checked.\r\
        \nThe provided title will be used for reporting purposes to identify a particular\
        \ SMS broadcast message."
      tags:
      - BroadcastMessage
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceCreated'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/definitions/BroadcastMessage'
  /v1/ShortCode/{senderCodeId}/PhoneList/{phoneListId}/Contact:
    get:
      operationId: Contact_GetContactCollection
      summary: Get Contact Collection
      description: Returns all contacts that exist on a specific SMS list by optout
        status.
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneListId
        in: path
        description: Identifier used to locate the SMS List.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: optedOut
        in: query
        description: Determines the status of contacts on the resulting data. The
          default value is `false`.
        required: false
        schema:
          type: boolean
      - name: cursor
        in: query
        description: Value indicating the page of data that's being retrieved. The
          default value is `Start`.
        required: false
        schema:
          type: string
      - name: count
        in: query
        description: Number of data members to be displayed per page. The default
          value is `1000` and the maximum value is `5000`.
        required: false
        schema:
          type: string
      - name: startSubscribeDate
        in: query
        description: Start date that's being used to filter the data members. This
          applies to subscribe date.
        required: false
        schema:
          type: string
      - name: endSubscribeDate
        in: query
        description: End date that's being used to filter the data members. This applies
          to subscribe date.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/CollectionPaged[SMSContact]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
    post:
      operationId: Contact_PostContactListResource
      summary: Create Contact
      description: "Creates and subscribes a new contact for a phone number if the\
        \ contact does not already exist on the sender code.\r\nThis call will create\
        \ a record of the contact as well as subscribe the contact to the list that\
        \ was passed in the route.\r\nChanges to segmentation fields apply to the\
        \ contact across all sender codes."
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneListId
        in: path
        description: Identifier for the SMS List that the contact will be created
          on.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceCreated'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/definitions/SMSContact'
  /v1/ShortCode/{senderCodeId}/Contact/{phoneNumber}:
    get:
      operationId: Contact_GetContactResource
      summary: Get Contact
      description: Returns a contact for a phone number. The response does not include
        a list id. This call will only return the system and custom profile fields
        for a contact along with the opted out status.
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneNumber
        in: path
        description: Phone number for contact.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Resource[SMSContactSubscriptionDetails]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/Contact:
    put:
      operationId: Contact_PutContactResource
      summary: Update Contact
      description: "Updates a contact's information for a phone number. \r\nThis call\
        \ will update the system fields, custom profile fields, and the opt-out status\
        \ of a contact.\r\nIt is only possible to opt out a contact using this call;\
        \ not opting them in to the sender code. \r\nIf a contact is opted out, it\
        \ is still possible to update the contacts system and custom profile fields.\r\
        \nChanges to segmentation fields apply to the contact across all sender codes."
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceUpdated'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/definitions/SMSContact'
  /v1/ShortCode/{senderCodeId}/OptOut:
    get:
      operationId: Contact_GetOptOuts
      summary: Get Sender Code Opt-Outs
      description: Returns all contacts that have been opted-out for a specific SMS
        Sender Code
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: cursor
        in: query
        description: Value indicating the page of data that's being retrieved. The
          default value is `Start`.
        required: false
        schema:
          type: string
      - name: count
        in: query
        description: Number of data members to be displayed per page. The default
          value is `1000` and the maximum value is `5000`.
        required: false
        schema:
          type: string
      - name: startDate
        in: query
        description: Start date that's being used to filter the data members. This
          applies to opt-out date.
        required: false
        schema:
          type: string
      - name: endDate
        in: query
        description: End date that's being used to filter the data members. This applies
          to opt-out date.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Collection[OptOutContact]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/ContactImport:
    post:
      operationId: Contact_PostImportFileResource
      summary: Start a Contact Update Import
      description: Creates and starts a new update import for the specified sender
        code. HTTP request body lengths of up to 250 MB are permitted. Because the
        `fileStream` field must be encoded in Base64, and because the remainder of
        the JSON payload is counted against the 250 MB limit, the effective maximum
        import file size is approximately 185 MB (195,000,000 bytes); therefore, only
        attempt to import files up to 185 MB (195,000,000 bytes) in size.
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to locate the sender code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceCreated'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/definitions/ImportContactFile'
  /v1/ShortCode/{senderCodeId}/ContactImport/{importFileId}:
    get:
      operationId: Contact_GetImportFileResource
      summary: Get a Contact Import
      description: Retrieves the specified Contact import.
      tags:
      - Contact
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to locate the sender code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: importFileId
        in: path
        description: Identifier used to locate the import file.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Resource[ImportContactFileStatus]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/Contact/{phoneNumber}/PhoneList:
    get:
      operationId: ContactListSubscription_GetContactListCollection
      summary: Get Contact List Collection
      description: Retrieve a collection of SMS Lists that a contact belongs to along
        with subscription status.
      tags:
      - ContactListSubscription
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneNumber
        in: path
        description: Phone number to idenify contact to retrieve data.
        required: true
        schema:
          type: string
      - name: cursor
        in: query
        description: Value indicating the page of data that's being retrieved. The
          default value is `Start`.
        required: false
        schema:
          type: string
      - name: count
        in: query
        description: Number of data members to be displayed per page. The default
          value is `1000` and the maximum value is `5000`.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Collection[ContactListSubscription]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/Contact/{phoneNumber}/PhoneList/{phoneListId}:
    post:
      operationId: ContactListSubscription_PostContactListSubscription
      summary: Subscribe Contact
      description: Subscribes a contact to an SMS list. This will only subscribe contacts
        that already exist on the sender code. If the contact does not already exist
        on the sender code, please use the Create Contact call to create and subscribe
        the contact.
      tags:
      - ContactListSubscription
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneNumber
        in: path
        description: Phone number to identify contact to subscribe.
        required: true
        schema:
          type: string
      - name: phoneListId
        in: path
        description: Identifier to determine which SMS List to subscribe contact.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceCreated'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/ContactUnsubscribe/{phoneNumber}/PhoneList/{phoneListId}:
    delete:
      operationId: ContactListSubscription_DeleteUnsubscribeContactListSubscription
      summary: Unsubscribe Contact
      description: Unsubscribes a contact from an SMS List. This will only unsubscribe
        contacts that already exist on the Sender Code, and exist on the SMS List.
      tags:
      - ContactListSubscription
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneNumber
        in: path
        description: Phone number to identify contact to unsubscribe.
        required: true
        schema:
          type: string
      - name: phoneListId
        in: path
        description: Identifier to determine which SMS List to unsubscribe contact.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/ResourceDeleted'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/PhoneList:
    get:
      operationId: PhoneList_GetListCollection
      summary: Get collection of SMS Lists
      description: Retrieve a collection of SMS Lists for a sender code by list status.
      tags:
      - PhoneList
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: status
        in: query
        description: Status of list types to retrieve.  The default value is `active`.  Options
          are `active` or `inactive`
        required: false
        schema:
          type: string
      - name: cursor
        in: query
        description: Value indicating the page of data that's being retrieved. The
          default value is `Start`.
        required: false
        schema:
          type: string
      - name: count
        in: query
        description: Number of data members to be displayed per page. The default
          value is `1000` and the maximum value is `5000`.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Collection[PhoneList]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/PhoneList/{phoneListId}:
    get:
      operationId: PhoneList_GetListResource
      summary: Get SMS List
      description: Retrieve a single SMS List by List Id.
      tags:
      - PhoneList
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: phoneListId
        in: path
        description: Identifier used to specify SMS List.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/PhoneList'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/{senderCodeId}/SegmentationField/{segmentationFieldId}:
    get:
      operationId: Segmentation_GetPhoneAttribute
      summary: Get a Profile Field
      description: Returns the specified profile field.
      tags:
      - Segmentation
      parameters:
      - name: senderCodeId
        in: path
        description: Identifier used to specify the Sender Code.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      - name: segmentationFieldId
        in: path
        description: Identifier used to locate the profile field.
        required: true
        format: int32
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/definitions/Resource[PhoneAttribute]'
        '400':
          description: BadRequest
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/definitions/Error'
      security:
      - OAuth 2: []
  /v1/ShortCode/

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/listrak/refs/heads/main/openapi/listrak-sms-openapi.yml