openapi: 3.1.0
info:
  title: MSV Service
  version: '1.0'
  description: |
    Service for creating notification and validation requests through channels such as WhatsApp, SMS, or Email.
    It also allows querying the status of previously submitted requests.
  contact:
    name: ''
    email: ''
    url: ''
  termsOfService: ''
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://msv-service.placetopay.com/
    description: Prod
paths:
  /api/login:
    post:
      summary: Login
      operationId: post-api-login
      responses:
        '200':
          description: Successful authentication; returns the access_token and secret_token
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: OK
                      reason: null
                      message: null
                      date: '2022-08-16T13:12:18+00:00'
                    access_token: 5d791fa9-91c2-401a-a20e-8e9569e5edec|gYs7WRqfd2NEgiJHOWbaXmyESa1JH4Gs98FDfXBE
                    secret_token: DYJKxUKzgzFaXK2UYkqOy6xd7X1suCnn
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: OK
                      reason:
                        type: string
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: 'null'
                      date:
                        type: string
                        format: date-time
                        description: Response date and time
                        example: '2022-08-16T13:12:18+00:00'
                  access_token:
                    type: string
                    description: User access token
                    example: 5d791fa9-91c2-401a-a20e-8e9569e5edec|gYs7WRqfd2NEgiJHOWbaXmyESa1JH4Gs98FDfXBE
                  secret_token:
                    type: string
                    description: User secret token
                    example: DYJKxUKzgzFaXK2UYkqOy6xd7X1suCnn
              examples:
                example-1:
                  value:
                    status:
                      status: OK
                      reason: null
                      message: null
                      date: '2022-08-16T13:12:18+00:00'
                    access_token: 5d791fa9-91c2-401a-a20e-8e9569e5edec|gYs7WRqfd2NEgiJHOWbaXmyESa1JH4Gs98FDfXBE
                    secret_token: DYJKxUKzgzFaXK2UYkqOy6xd7X1suCnn
        '401':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: These credentials do not match our records.
                      date: '2022-08-16T13:27:04+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type: string
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: These credentials do not match our records.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-16T13:27:04+00:00'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: These credentials do not match our records.
                      date: '2022-08-16T13:27:04+00:00'
        '422':
          description: The application data did not pass validation.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: The username field is required.
                      date: '2022-08-16T13:22:18+00:00'
                    errors:
                      username:
                        - The username field is required.
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type: string
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: The username field is required.
                      date:
                        type: string
                        description: Response date and time
                        example: '2022-08-16T13:22:18+00:00'
                  errors:
                    $ref: '#/components/schemas/ValidationErrors'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: The username field is required.
                      date: '2022-08-16T13:22:18+00:00'
                    errors:
                      username:
                        - The username field is required.
      description: Obtain a token to authenticate requests to the API.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              x-examples:
                example-1:
                  username: RestService
                  password: password
              required:
                - username
                - password
              properties:
                username:
                  type: string
                  description: Application username
                  example: RestService
                password:
                  type: string
                  description: User-defined password
                  example: password
            examples: {}
        description: ''
      parameters: []
  /api/validations:
    parameters: []
    post:
      summary: Validation
      operationId: postapi-request
      responses:
        '201':
          description: The validation request was created and the messages were sent.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: OK
                      reason: null
                      message: The message was sent successfully
                      date: '2022-08-12T15:44:17+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        enum:
                          - PENDING
                          - APPROVED
                          - REJECTED
                          - PARTIAL_EXPIRED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Transaction pending approval
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-08T17:23:49+00:00'
                  reference:
                    type: string
                    description: Identifier of the item to validate
                    example: '0122333444455555'
                  token:
                    type: string
                    description: Request identifier (8 hexadecimal characters)
                    example: d5d67dcb
                  kind:
                    type: string
                    description: Request classification
                    example: horus
        '400':
          description: It was not possible to deliver the message through one of the indicated channels.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: 'The message could not be sent via the channel: SMS'
                      date: '2022-08-08T17:23:49+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: 'The message could not be sent via the channel: SMS'
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-08T17:23:49+00:00'
        '401':
          description: The request is unauthenticated. Bearer token is missing, invalid, or expired.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Unauthenticated.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2026-08-13T15:10:55+00:00'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
        '422':
          description: The application data did not pass validation.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: The message field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      message:
                        - The message field is required.
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: The message field is required.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-12T14:50:01+00:00'
                  errors:
                    $ref: '#/components/schemas/ValidationErrors'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: The message field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      message:
                        - The message field is required.
      description: This service creates a validation request.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              x-examples:
                example-1:
                  locale: es
                  reference: '994887395'
                  message: this is a very long and generic message
                  kind: Horus
                  webhook_url: https://domain.com/
                  minutes_by_expire: 15
                  buttons:
                    approve: approved option
                    reject: reject option
                  channels:
                    sms:
                      phone_number: '+571234567890'
                      short_message: this is a short message used on sms channel
                    whatsapp:
                      phone_number: '+571234567890'
                      template:
                        name: msv_transaction
                        lang: en
                        parameters:
                          - Name
                          - Price
                          - Merchant
                          - '[URL_VALIDATION]'
                    email:
                      email: example@email.com
                      subject: an example subject for email
              required:
                - reference
                - message
                - webhook_url
                - channels
              properties:
                locale:
                  type: string
                  example: es
                  description: Defines the language to use in ISO 639-1 format
                  minLength: 2
                  maxLength: 2
                  enum:
                    - es
                    - en
                    - pt
                    - it
                reference:
                  type: string
                  description: Identifier of the item to validate
                  example: ref-12548
                  maxLength: 50
                message:
                  type: string
                  description: Message displayed in the email and in the approval view.
                kind:
                  type: string
                  description: Field used to classify a request
                  example: Horus
                  maxLength: 50
                webhook_url:
                  type: string
                  description: URL of your server where msv-service will send the result via POST when the user responds or when the request expires.
                  example: https://example-url.com/
                  maxLength: 255
                minutes_by_expire:
                  type: integer
                  example: 20
                  minimum: 1
                  maximum: 60
                  default: 30
                  description: Minutes the user has to respond. When expired, the request changes to PARTIAL_EXPIRED and the webhook is sent with that status (minimum 1, maximum 60).
                buttons:
                  type: object
                  description: Structure that defines the text for the approval and rejection options
                  minProperties: 2
                  maxProperties: 2
                  required:
                    - approve
                    - reject
                  properties:
                    approve:
                      type: string
                      description: Text shown for the approval option
                      example: Approve
                      default: Approve
                    reject:
                      type: string
                      description: Text shown for the rejection option
                      example: Reject
                      default: Reject
                channels:
                  $ref: '#/components/schemas/Channels'
            examples:
              Email:
                value:
                  locale: en
                  reference: ref-12548
                  message: Example Validation
                  kind: Horus
                  webhook_url: https://example-url.com/
                  minutes_by_expire: 10
                  buttons:
                    approve: Approve
                    reject: Reject
                  channels:
                    email:
                      email: john.wick@example.com
                      subject: Email subject
              Whatsapp:
                value:
                  locale: en
                  reference: ref-12548
                  message: Example Validation
                  kind: Horus
                  webhook_url: https://example-url.com/
                  minutes_by_expire: 10
                  buttons:
                    approve: yes, accept, approved
                    reject: no, reject, rejected
                  channels:
                    whatsapp:
                      phone_number: '+573124567890'
                      template:
                        name: msv_transaction
                        lang: en
                        parameters:
                          - Name
                          - Price
                          - Merchant
                          - '[URL_VALIDATION]'
              SMS:
                value:
                  locale: en
                  reference: ref-12548
                  message: Example Validation
                  kind: Horus
                  webhook_url: https://example-url.com/
                  minutes_by_expire: 10
                  buttons:
                    approve: Accept
                    reject: Reject
                  channels:
                    sms:
                      phone_number: '+573124567890'
                      short_message: SMS Message
              All:
                value:
                  locale: en
                  reference: ref-12548
                  message: Example Validation
                  kind: Horus
                  webhook_url: https://example-url.com/
                  minutes_by_expire: 20
                  buttons:
                    approve: yes, accept, approved
                    reject: no, reject, rejected
                  channels:
                    sms:
                      phone_number: '+573124567890'
                      short_message: SMS Message
                    whatsapp:
                      phone_number: '+573124567890'
                      template:
                        name: hello_world
                        lang: en_US
                        parameters:
                          - Name
                          - Price
                          - Merchant
                          - '[URL_VALIDATION]'
                    email:
                      email: john.wick@example.com
                      subject: Email subject
        description: ''
      parameters: []
      security:
        - Bearer: []
  /api/validation-query:
    post:
      summary: Validation query
      operationId: post-api-validation-query
      responses:
        '200':
          description: The validation request has been successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: APPROVED
                      message: Status validation is APPROVED
                      date: '2022-08-08T16:25:45+00:00'
                    token: d5d67dcb
                    reference: '0122333444455555'
                    kind: horus
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Validation status
                        enum:
                          - PENDING
                          - APPROVED
                          - REJECTED
                          - PARTIAL_EXPIRED
                        example: PENDING
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Status validation is PENDING
                      date:
                        type: string
                        description: Response date and time
                        example: '2022-08-16T15:06:36+00:00'
                        format: date-time
                  token:
                    type: string
                    description: Request identifier (8 hexadecimal characters)
                    example: d5d67dcb
                  reference:
                    type: string
                    description: Identifier of the item to validate
                    example: '0122333444455555'
                  kind:
                    type: string
                    description: Field used to classify a request
                    example: horus
        '401':
          description: The request is unauthenticated. Bearer token is missing, invalid, or expired.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Unauthenticated.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2026-08-13T15:10:55+00:00'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
        '404':
          description: The validation request was not found.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: UNKNOWN
                      reason: null
                      message: Make sure token is valid, validation request not found.
                      date: '2022-08-12T14:50:01+00:00'
                    token: d5d67dcb
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: UNKNOWN
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Make sure token is valid, validation request not found.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-12T14:50:01+00:00'
                  token:
                    type: string
                    description: Request identifier (8 hexadecimal characters)
                    example: d5d67dcb
        '422':
          description: The application data did not pass validation.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: The token field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      token:
                        - The token field is required.
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: The token field is required.
                      date:
                        type: string
                        description: Response date and time
                        example: '2022-08-12T14:50:01+00:00'
                  errors:
                    $ref: '#/components/schemas/ValidationErrors'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: The token field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      token:
                        - The token field is required.
      description: Query a previously created validation request.
      security:
        - Bearer: []
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  minLength: 8
                  example: d5d67dcb
                  description: Token returned by `/api/validations` upon creating the validation
                locale:
                  type: string
                  description: Define the language to use in ISO 639-1 format.
                  enum:
                    - es
                    - en
                    - pt
                    - it
                  example: es
              required:
                - token
  /api/notifications:
    parameters: []
    post:
      summary: Notification
      operationId: postapi-requests
      responses:
        '200':
          description: The message was sent successfully.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: OK
                      reason: null
                      message: The message was sent successfully
                      date: '2022-08-12T15:44:17+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: OK
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: The message was sent successfully
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2022-08-12T15:44:17+00:00'
              examples:
                OK:
                  value:
                    status:
                      status: OK
                      reason: null
                      message: The message was sent successfully
                      date: '2022-08-12T15:44:17+00:00'
        '400':
          description: It was not possible to deliver the message through one of the indicated channels.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: 'The message could not be sent via the channel: SMS'
                      date: '2022-08-12T14:50:01+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: 'The message could not be sent via the channel: SMS'
                      date:
                        type: string
                        format: date-time
                        description: Response date and time
                        example: '2022-08-12T14:50:01+00:00'
        '401':
          description: The request is unauthenticated. Bearer token is missing, invalid, or expired.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: Unauthenticated.
                      date:
                        type: string
                        description: Response date and time
                        format: date-time
                        example: '2026-08-13T15:10:55+00:00'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: Unauthenticated.
                      date: '2026-08-13T15:10:55+00:00'
        '422':
          description: The application data did not pass validation.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: null
                      message: The message field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      message:
                        - The message field is required.
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 'null'
                      message:
                        type: string
                        description: Response description
                        example: The message field is required.
                      date:
                        type: string
                        format: date-time
                        description: Response date and time
                        example: '2022-08-12T14:50:01+00:00'
                  errors:
                    $ref: '#/components/schemas/ValidationErrors'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: null
                      message: The message field is required.
                      date: '2022-08-12T14:50:01+00:00'
                    errors:
                      message:
                        - The message field is required.
        422 - Site_id query fails:
          description: The site_id query fails.
          content:
            application/json:
              schema:
                type: object
                x-examples:
                  example-1:
                    status:
                      status: FAILED
                      reason: 500
                      message: An unexpected error has occurred, please try again later
                      date: '2026-08-14T20:15:33+00:00'
                properties:
                  status:
                    type: object
                    properties:
                      status:
                        type: string
                        description: Response status
                        example: FAILED
                      reason:
                        type:
                          - string
                          - 'null'
                        description: Response code
                        example: 500
                      message:
                        type: string
                        description: Response description
                        example: An unexpected error has occurred, please try again later
                      date:
                        type: string
                        format: date-time
                        description: Response date and time
                        example: '2026-08-14T20:15:33+00:00'
              examples:
                example-1:
                  value:
                    status:
                      status: FAILED
                      reason: 500
                      message: An unexpected error has occurred, please try again later
                      date: '2026-08-14T20:15:33+00:00'
      description: This service creates a notification request.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              x-examples:
                example-1:
                  locale: es
                  reference: '994887395'
                  message: this is a very long and generic message
                  kind: Horus
                  webhook_url: https://domain.com/
                  minutes_by_expire: 15
                  buttons:
                    approve: approved option
                    reject: reject option
                  channels:
                    sms:
                      phone_number: '+571234567890'
                      short_message: this is a short message used on sms channel
                    whatsapp:
                      phone_number: '+571234567890'
                      template:
                        name: msv_transaction
                        lang: en
                        parameters:
                          - Name
                          - Price
                          - Merchant
                          - '[URL_VALIDATION]'
                    email:
                      email: example@email.com
                      subject: an example subject for email
              required:
                - message
                - channels
              properties:
                locale:
                  type: string
                  minLength: 2
                  maxLength: 2
                  enum:
                    - es
                    - en
                    - pt
                    - it
                  example: es
                  description: Defines the language to use in ISO 639-1 format
                message:
                  type: string
                  description: Message that will be displayed in the email.
                  example: this is a very long and generic message
                kind:
                  type: string
                  description: Field used to classify a request
                  example: Horus
                  maxLength: 50
                channels:
                  $ref: '#/components/schemas/Channels'
                site_id:
                  type: integer
                  x-stoplight:
                    id: 2c8tpihdr5e35
                  description: |
                    ID of the site associated with the tenant. Only applies when using SMS or WhatsApp channels and the tenant has SiteMiddleware configured; otherwise it is ignored.
                  example: 123
            examples:
              All:
                value:
                  locale: en
                  message: this is a very long and generic message
                  kind: Horus
                  channels:
                    whatsapp:
                      phone_number: '+573124567890'
                      template:
                        name: hello_world
                        lang: en_US
                        parameters:
                          - name
                    sms:
                      phone_number: '+573124567890'
                      short_message: sms message
                    email:
                      email: mail@test.com
                      subject: email subject
              Email:
                value:
                  locale: en
                  message: this is a very long and generic message
                  kind: Horus
                  channels:
                    email:
                      email: test@email.com
                      subject: Email subject
              Whatsapp:
                value:
                  locale: en
                  message: this is a very long and generic message
                  kind: Horus
                  channels:
                    whatsapp:
                      phone_number: '+573124567890'
                      template:
                        name: hello_world
                        lang: en_US
                        parameters:
                          - name
              SMS:
                value:
                  locale: en
                  message: this is a very long and generic message
                  kind: Horus
                  channels:
                    sms:
                      phone_number: '+573124567890'
                      short_message: sms message
        description: ''
      security:
        - Bearer: []
      parameters: []
components:
  schemas:
    ValidationErrors:
      type: object
      description: Error structure
      properties:
        key:
          type: array
          description: Field that did not pass validation
          items:
            type: string
    Channels:
      type: object
      description: Structure required to define the channel details to use
      properties:
        sms:
          type: object
          required:
            - phone_number
            - short_message
          properties:
            phone_number:
              type: string
              description: Phone number in E.164 format
              example: '+573124567890'
            short_message:
              type: string
              description: Text of the SMS. In a validation, the service adds the confirmation link at the end. Please be brief to avoid multiple segments.
        whatsapp:
          type: object
          required:
            - phone_number
            - template
          properties:
            phone_number:
              type: string
              description: Phone number in E.164 format
              example: '+573124567890'
            template:
              type: object
              description: WhatsApp message template
              required:
                - name
                - parameters
              properties:
                name:
                  type: string
                  example: hello_world
                lang:
                  type: string
                  example: en_US
                  description: Language of the template registered with Meta; if omitted, the request's locale is used.
                parameters:
                  type: array
                  description: |-
                    To define the position of the link in the template, use [URL_VALIDATION]. Example:

                    ["Name","Price","Merchant","[URL_VALIDATION]"]

                    Note: URL_VALIDATION is only useful for validations.
                  items:
                    type: string
        email:
          type: object
          required:
            - email
            - subject
          properties:
            email:
              type: string
              description: Email address
              format: email
              example: john.wick@example.com
            subject:
              type: string
              description: Email subject
              example: Email subject
  responses: {}
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
