openapi: 3.0.0
info:
  title: "Documentation de l'API SMSlink Pacific"
  description: "SMSlink Pacific est un service d'envoi de SMS en Nouvelle-Calédonie et Polynésie Française qui couvre différents cas d'utilisation professionnels : ✅ Campagnes marketing. ✅ Alertes, SMS transactionnels. ✅ Authentification à deux facteurs. "
  contact:
    name: 'API Support'
    url: 'https://smslink.pro/developpeurs'
    email: christophe@smslink.pro
  version: 2.12.0
  x-logo:
    url: 'https://api.smslink.pro/logo-green.png'
servers:
  -
    url: 'https://api.smslink.pro'
paths:
  /api/health:
    get:
      tags:
        - Health
      summary: 'Heath check'
      operationId: 2b8d29d3d9e6a923a415ee50a43d49c6
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'health check'
                  object:
                    properties:
                      finished_at:
                        type: string
                        example: '2023-11-28T11:19:14Z'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Health'
                    type: object
                type: object
  /api/service/otp/generate:
    post:
      tags:
        - 'OTP – MFA – Double Authentification'
      summary: 'Send a One Time Password. by SMS. The property sender is an optional field, default is NC Verif.'
      operationId: e45542125bcbed1d4e15a7a99cd7e909
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                sender:
                  type: string
                  example: 'NC Verif'
                phone_number:
                  type: integer
                  example: '687123456'
                text:
                  type: string
                  example: "Bonjour, voici votre code d'activation : {code} il expirera à {hh:mm}"
                allow_digits:
                  type: boolean
                  example: 'true'
                allow_upper_case:
                  type: boolean
                  example: 'false'
                allow_lower_case:
                  type: boolean
                  example: 'false'
                allow_special_chars:
                  type: boolean
                  example: 'false'
                max_wrong_attempts:
                  type: integer
                  example: 1
                recipient_ip:
                  type: string
                  example: 202.22.233.32
              type: object
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'OTP - MFA'
                  object:
                    properties:
                      message:
                        type: string
                        example: '<br>Status=0<br>MsgId=86735380<br>NbSMS=1<br>'
                      otp_request_token:
                        type: string
                        example: ea791b60-4cc4-4f19-b1c6-1da45ad52ef0
                      status:
                        type: integer
                        example: 200
                    type: object
                type: object
        429:
          description: 'Too Many Attemps'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottleRequestsException'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/service/otp/validate:
    post:
      tags:
        - 'OTP – MFA – Double Authentification'
      summary: 'Validate a One Time Password.'
      operationId: 3679ab1d19394a28fe1b5c711489d804
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                phone_number:
                  type: integer
                  example: 687123456
                code:
                  type: integer
                  example: 4774
              type: object
            examples:
              validate_with_phhone:
                summary: 'Validate With Phone Number'
                value:
                  phone_number: 687123456
                  code: 1234
              validate_with_token:
                summary: 'Validate With Token'
                value:
                  otp_request_token: ea791b60-4cc4-4f19-b1c6-1da45ad52ef0
                  code: 1234
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: success
                type: object
        429:
          description: 'Too Many Attemps'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottleRequestsException'
        422:
          description: 'Wrong OTP code'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OTPValidateUnprocessableEntity'
        420:
          description: 'Too Much Attempts'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OTPValidateTooMuchAttemps'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/service/otp/log:
    get:
      tags:
        - 'OTP – MFA – Double Authentification'
      summary: 'Get OTP logs + tracking logs. Logs are destroyed after 14 days.'
      operationId: 611a1d8efc5ecfb14adc4197d24dc54d
      parameters:
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/OTPCodeLogFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'OTP - MFA Logs'
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/OTPCodeLog'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/service/otp/tracking-log:
    get:
      tags:
        - 'OTP – MFA – Double Authentification'
      summary: 'Get OTP tracking logs. Tracking Logs are destroyed after 14 days.'
      operationId: ac3d5f024206176b5d9706100689a9c0
      parameters:
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignShippingTrackingLogsFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'OTP - MFA Tracking Logs'
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/TrackingLog'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/contact:
    get:
      tags:
        - Contact
      summary: 'Get contacts.'
      operationId: 0ce7a7beb5fe07a9ac6f191a9beeb4ed
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/ContactFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: contacts
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '87'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Contact'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    post:
      tags:
        - Contact
      summary: 'Create multiple contacts at once.'
      operationId: 556b84f384422939a9db51e60685798a
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                contacts:
                  type: array
                  items:
                    properties:
                      phone_number:
                        type: integer
                        example: 687778833
                      email:
                        type: string
                        example: foo@example.nc
                      first_name:
                        type: string
                        example: Jean-Pierre
                      last_name:
                        type: string
                        example: Monlatin
                      param_1:
                        type: string
                        example: 'param 1'
                      param_2:
                        type: string
                        example: 'param 2'
                      param_3:
                        type: string
                        example: 'param 3'
                      param_4:
                        type: string
                        example: 'param 4'
                    type: object
              type: object
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Store contacts in progress.'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    delete:
      tags:
        - Contact
      summary: 'Delete multiple contacts at once.'
      operationId: a76b5a53776dbfb3a037c334d3a5ea96
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                phone_numbers:
                  type: array
                  items:
                    type: integer
                    example: 687778833
                  example:
                    - 687123456
                    - 687785236
                    - 687725236
              type: object
      responses:
        202:
          description: Accepted.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Delete contacts in progress.'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/contact/{id}':
    get:
      tags:
        - Contact
      summary: 'Get a contact by id or phone_number'
      operationId: 438fccbf43000278006fcf21d9f0d411
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
              - phone_number
        -
          name: id
          in: path
          description: Identifier
          required: true
          schema:
            type: string
          examples:
            id:
              summary: id
              value: '25632'
            phone_number:
              summary: phone_number
              value: '687123456'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: contact
                  object:
                    $ref: '#/components/schemas/Contact'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    put:
      tags:
        - Contact
      summary: 'Update a contact by id or phone_number.'
      operationId: 1933419564a36858346fa03625485a5f
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
              - phone_number
        -
          name: id
          in: path
          description: Identifier
          required: true
          schema:
            type: string
          examples:
            id:
              summary: id
              value: '25632'
            phone_number:
              summary: phone_number
              value: '687123456'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                phone_number:
                  type: integer
                  example: 687123456
                email:
                  type: string
                  example: foo@foo.com
                first_name:
                  type: string
                  example: Maude
                last_name:
                  type: string
                  example: Zarella
                param_1:
                  type: string
                  example: foo
                param_2:
                  type: string
                  example: foo
                param_3:
                  type: string
                  example: foo
                param_4:
                  type: string
                  example: foo
              type: object
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/contact/{id}/contact-list':
    put:
      tags:
        - Contact
      summary: 'Synchronize contacts lists attached to a contact by id or phone_number.'
      operationId: 74dcd929bcd910d35ccb1f2f0984782c
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
              - phone_number
        -
          name: id
          in: path
          description: Identifier
          required: true
          schema:
            type: string
          examples:
            id:
              summary: id
              value: '25632'
            phone_number:
              summary: phone_number
              value: '687123456'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                contacts_lists:
                  type: array
                  items:
                    type: integer
                    example: 1
                  example:
                    - 1
                    - 2
                    - 8
              type: object
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/contact/count:
    get:
      tags:
        - Contact
      summary: 'Count contacts.'
      operationId: e7643904ade3a2cd31569b81092941f5
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: Filters.
          required: false
          schema:
            $ref: '#/components/schemas/CountFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: contacts
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/contact-list:
    get:
      tags:
        - 'Contact List'
      summary: 'Get contact lists.'
      operationId: 1d6992252a6e0b3defa7ac15f4ec4b26
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/ContactListFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'contact lists'
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '87'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/ContactList'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    post:
      tags:
        - 'Contact List'
      summary: 'Create a contact list.'
      operationId: 6eb75475e16a7426fd7ee8218c805d0c
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  type: string
                  example: Prospects
              type: object
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: contact-list
                  object:
                    $ref: '#/components/schemas/ContactList'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/contact-list/count:
    get:
      tags:
        - 'Contact List'
      summary: 'Count contact lists.'
      operationId: aaf0154099f4a595a8bc1a2f12241648
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: Filters.
          required: false
          schema:
            $ref: '#/components/schemas/CountFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'contact lists'
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/contact-list/{id}':
    get:
      tags:
        - 'Contact List'
      summary: 'Get a contact list by id.'
      operationId: 26d19a5f4192faacf7578dbf2933671c
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'contact list'
                  object:
                    $ref: '#/components/schemas/ContactList'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    put:
      tags:
        - 'Contact List'
      summary: 'Update a contact list.'
      operationId: 0791a043b02e0b3a8c7a038ae3da23be
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  type: string
                  example: Prospects
              type: object
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    delete:
      tags:
        - 'Contact List'
      summary: 'Delete a contact list.'
      operationId: 3c09ea50bc040153a568b76ab0ad3d3a
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/contact-list/{id}/empty':
    post:
      tags:
        - 'Contact List'
      summary: 'Empty a contact list by id.'
      operationId: f182a4db28b73a8c018b359329284afb
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/contact-list/{id}/contact':
    get:
      tags:
        - 'Contact List'
      summary: 'Get contact list contacts.'
      operationId: bdb340f14868299cf3e64019cf1ecdb7
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/ContactFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: contacts
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '87'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Contact'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    post:
      tags:
        - 'Contact List'
      summary: 'Add multiple contacts at once to contact list.'
      operationId: 422c0fbfeb16690e4d912179cb6c0d0b
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      requestBody:
        content:
          application/json:
            schema:
              properties:
                contacts:
                  type: array
                  items:
                    properties:
                      phone_number:
                        type: integer
                        example: 687778833
                      email:
                        type: string
                        example: foo@example.nc
                      first_name:
                        type: string
                        example: Jean-Pierre
                      last_name:
                        type: string
                        example: Monlatin
                      blocklisted:
                        type: boolean
                        example: true
                    type: object
              type: object
      responses:
        202:
          description: Accepted.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Store contacts in contacts lists in progress.'
                type: object
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/settings:
    get:
      tags:
        - Settings
      summary: 'Get API settings. @see https://regex101.com/r/d5J0g9/1 to test if a phone_number is in our the numbering plan ( object.sms.phone_number.pattern ). '
      operationId: c1d332d3ae669023a9032d497722c30e
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: settings
                  object:
                    $ref: '#/components/schemas/Settings'
                type: object
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/sms-campaign/character-counter:
    get:
      tags:
        - 'SMS Campaign'
      summary: 'The character-counter can tell you many things about a text message, such as the number of characters, type of characters used, text message encoding and more.'
      operationId: fed79f0dd9c13ee84bb2414ec68898dc
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: message
          in: query
          required: true
          schema:
            type: string
            example: "👍 Longtemps, je me suis couché de bonne heure  est l'incipit de Du côté de chez Swann, premier tome du roman À la recherche du temps perdu de l'écrivain"
        -
          name: auto_optimize_text
          in: query
          required: true
          schema:
            type: integer
            enum:
              - 0
              - 1
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: character-counter
                  object:
                    $ref: '#/components/schemas/CharacterCounter'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/sms-campaign:
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Get SMS campaigns.'
      operationId: c679de2819574e02e423941bd6b93a70
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaigns
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/SMSCampaign'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    post:
      tags:
        - 'SMS Campaign'
      summary: 'Create a SMS Campaign.'
      operationId: ebb1ad504c2b504e927270227e3db105
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  type: string
                  example: 'Ma Campagne test'
                sender:
                  type: string
                  example: SMSlink
                text:
                  type: string
                  example: 'Ma Campagne test 🙂'
                auto_optimize_text:
                  type: boolean
                  example: false
                auto_remove_blocklisted_numbers:
                  type: boolean
                  example: 'false'
                purpose:
                  type: string
                  example: push
                send_at:
                  type: string
                  example: '2023-06-25T14:42:30'
                test:
                  type: boolean
                  example: false
                recipients:
                  type: array
                  items:
                    $ref: '#/components/schemas/Contact'
                  example:
                    -
                      phone_number: 687123456
                      first_name: Jean-Pierre
                      last_name: Monlatin
                    -
                      phone_number: 687112233
                      first_name: Zarella
                      last_name: Maude
              type: object
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Store recipients in progress.'
                  object:
                    $ref: '#/components/schemas/SMSCampaign'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/sms-campaign/count:
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Count SMS campaigns.'
      operationId: 62854399c960342a051ca1bf4c399d70
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: filters
          in: query
          description: Filters.
          required: false
          schema:
            $ref: '#/components/schemas/CountFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaigns
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '1'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/sms-campaign/push:
    post:
      tags:
        - 'SMS Campaign'
      summary: "Need to send a simple message now? That store shortcut doesn't require send_at, purpose and auto_optimize_text parameters. The date_send will be equal to now if not provided. The auto_optimize_text will be equal to false if not provided."
      operationId: 289ebd141aa83c27082729b25ee1c793
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      requestBody:
        content:
          application/json:
            schema:
              properties:
                sender:
                  type: string
                  example: SMSlink
                text:
                  type: string
                  example: Alerte
                recipients:
                  type: array
                  items:
                    $ref: '#/components/schemas/Contact'
                  example:
                    -
                      phone_number: 687123456
              type: object
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Store recipients in progress.'
                  object:
                    properties:
                      id:
                        type: integer
                        example: 1
                      client_id:
                        type: integer
                        example: 1
                      title:
                        type: string
                        example: Alerte
                      sender:
                        type: string
                        example: SMSlink
                      text:
                        type: string
                        example: Alerte
                      auto_optimize_text:
                        type: boolean
                        example: false
                      auto_remove_blocklisted_numbers:
                        type: boolean
                        example: 'false'
                      purpose:
                        type: string
                        example: push
                      send_at:
                        type: string
                        example: '2023-06-25T14:42:30Z'
                      sent_at:
                        type: string
                        example: null
                      sent_status:
                        type: integer
                        example: 3
                      estimated_sms:
                        type: integer
                        example: 1
                      test:
                        type: boolean
                        example: false
                      created_at:
                        type: string
                        example: '2023-06-22T17:51:20Z'
                      updated_at:
                        type: string
                        example: '2023-06-22T17:51:20Z'
                      recipients_count:
                        type: integer
                        example: 1
                      percent_delivery:
                        type: integer
                        example: 0
                      sent_sms:
                        type: integer
                        example: 0
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Get a SMS Campaign by id.'
      operationId: 39d02e98da6c28148b3e69347b0b008a
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign
                  object:
                    $ref: '#/components/schemas/SMSCampaign'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    put:
      tags:
        - 'SMS Campaign'
      summary: 'Update a SMS Campaign by id.'
      operationId: 7759878f0224e2220efccb40c197be97
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  type: string
                  example: 'Ma Campagne test'
                sender:
                  type: string
                  example: SMSlink
                text:
                  type: string
                  example: 'Ce SMS est un message TEST 🙂'
                auto_optimize_text:
                  type: boolean
                  example: false
                auto_remove_blocklisted_numbers:
                  type: boolean
                  example: 'false'
                purpose:
                  type: string
                  example: push
                send_at:
                  type: string
                  example: '2023-06-25T14:42:30Z'
                recipients:
                  type: array
                  items:
                    $ref: '#/components/schemas/Contact'
                  example:
                    -
                      phone_number: 687123456
                      first_name: Jean-Pierre
                      last_name: Monlatin
                    -
                      phone_number: 687112233
                      first_name: Zarella
                      last_name: Maude
              type: object
      responses:
        202:
          description: Accepted
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Update in progress.'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
    delete:
      tags:
        - 'SMS Campaign'
      summary: 'Delete a SMS Campaign.'
      operationId: 889d28080620683f1aec3bfad6467b98
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        204:
          description: 'Successful operation'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/cancel':
    post:
      tags:
        - 'SMS Campaign'
      summary: 'Cancel a SMS Campaign.'
      operationId: 87691b0cb8b73537d3b21d3c17244e9b
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign
                  object:
                    $ref: '#/components/schemas/SMSCampaign'
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/log':
    get:
      tags:
        - 'SMS Campaign'
      summary: "Get SMS Campaign logs. Logs are dropped from database after 14 days.  Logs are powered by request's response from OPT-NC Platform."
      operationId: d8b4d0571a61b7681e99f17ba03f57d9
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignLogFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign-logs
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '2'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/SMSCampaignLog'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/report/download':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Get SMS Campaign data + Campaign logs + Tracking logs zipped in one file. The file is available 24 hours after send at date, and it will be definitively destroyed from our server after 90 days (3 months).  The Accept header control what that endpoint returns. If the header requests "json", that would return the file information, but if the header requests "application/octet-stream", that would return the file itself.'
      operationId: 4d906fc5dec9b371f171ff1a5cb24cd4
      parameters:
        -
          name: Accept
          in: header
          description: 'Download representation.'
          required: true
          schema:
            type: string
            enum:
              - application/json
              - application/octet-stream
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'sms-campaign-logs download file metadata'
                  object:
                    properties:
                      basename:
                        type: string
                        example: sms-campaign__1__2024-04-29.zip
                      download:
                        properties:
                          endpoint:
                            type: string
                            example: 'https://api.smslink.pro/api/sms-campaign/1/log/export?by=id'
                          headers:
                            type: array
                            items:
                              $ref: '#/components/schemas/Header'
                        type: object
                      extension:
                        type: string
                        example: zip
                      filename:
                        type: string
                        example: sms-campaign__1__2024-04-29
                      size:
                        type: integer
                        example: 2292
                    type: object
                type: object
        404:
          description: 'Not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundHttpException'
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/tracking-log':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Get SMS Campaign TrackingLogs. Tracking logs are dropped from database after 14 days . See /api/settings endpoint for tracking_status code meaning. Tracking logs are powered by OPT-NC Platform.'
      operationId: 94e5567d8feb69ee6730e058846640c1
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignShippingTrackingLogsFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign-tracking-logs
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '2'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/TrackingLog'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/tracking-log/count':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Count SMS Campaign TrackingLogs '
      operationId: 6fd9b1dea3ba035a46d86b0fc6e99a3e
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignShippingTrackingLogsFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign-tracking-logs
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '2'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/last-tracking-log':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Get SMS Campaign TrackingLogs filtered on only last tracking status for each DA. Tracking logs are dropped from database after 14 days . See /api/settings endpoint for tracking_status code meaning. Tracking logs are powered by OPT-NC Platform.'
      operationId: 01332d16a28161054e791c9571231465
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignShippingTrackingLogsFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign-tracking-logs
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '2'
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/TrackingLog'
                      start:
                        type: integer
                        example: '0'
                      length:
                        type: integer
                        example: '25'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  '/api/sms-campaign/{id}/last-tracking-log/count':
    get:
      tags:
        - 'SMS Campaign'
      summary: 'Count SMS Campaign last TrackingLogs'
      operationId: 126580bd8bc54bdc9a9b5b184a01ce12
      parameters:
        -
          name: by
          in: query
          description: 'Identifier type.'
          required: true
          schema:
            type: string
            enum:
              - id
        -
          name: id
          in: path
          description: Identifier.
          required: true
          schema:
            type: integer
            example: 1
        -
          name: filters
          in: query
          description: 'Offset, Limit and filters. Set length=0 to get all rows without pagination'
          required: false
          schema:
            $ref: '#/components/schemas/SMSCampaignShippingTrackingLogsFilters'
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: sms-campaign-tracking-logs
                  object:
                    properties:
                      totalCount:
                        type: integer
                        example: '2'
                    type: object
                type: object
        422:
          description: 'Error: Unprocessable Entity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
  /api/user/me:
    get:
      tags:
        - User
      summary: Myself.
      operationId: 86672f338650f654994f925ae0f8c3c1
      parameters:
        -
          name: Accept-Language
          in: header
          description: 'Set language parameter'
          required: false
          schema:
            type: string
            enum:
              - en-US
              - fr-FR
      responses:
        200:
          description: 'Successful operation'
          content:
            application/json:
              schema:
                properties:
                  object:
                    $ref: '#/components/schemas/User'
                type: object
        403:
          description: 'Error: Access Denied'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedHttpException'
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthenticated'
      security:
        -
          BearerAuth: []
components:
  schemas:
    AccessDeniedHttpException:
      properties:
        message:
          type: string
          example: 'Invalid scope(s) provided.'
      type: object
    NotFoundHttpException:
      properties:
        message:
          type: string
          example: 'Resource not found.'
      type: object
    ThrottleRequestsException:
      properties:
        message:
          type: string
          example: 'Too Many Attempts.'
      type: object
    UnprocessableEntity:
      properties:
        message:
          type: string
          example: 'Request validation error.'
        errors:
          properties:
            foo:
              type: string
              example: 'The foo field is required.'
          type: object
      type: object
    OTPValidateUnprocessableEntity:
      properties:
        message:
          type: string
          example: 'Wrong OTP code.'
      type: object
    OTPValidateTooMuchAttemps:
      properties:
        message:
          type: string
          example: 'Too much attemps.'
      type: object
    Unauthenticated:
      properties:
        message:
          type: string
          example: Unauthenticated.
      type: object
    Health:
      properties:
        name:
          type: string
          example: Database
        label:
          type: string
          example: Database
        notification_message:
          type: string
          example: ''
        short_summary:
          type: string
          example: Ok
        status:
          type: string
          example: ok
      type: object
    OTPPolicy:
      properties:
        text:
          type: string
          example: "Bonjour, voici votre code d'activation : {code} il expirera à {hh:mm}"
        code_length:
          type: integer
          example: 4
        allow_digits:
          type: boolean
          example: true
        allow_upper_case:
          type: boolean
          example: false
        allow_lower_case:
          type: boolean
          example: false
        allow_special_chars:
          type: boolean
          example: false
        validity_period:
          type: integer
          example: 3600
        max_wrong_attempts:
          type: integer
          example: 3
        recipient_ip:
          type: string
          example: 202.22.233.32
      type: object
    Client:
      properties:
        id:
          type: integer
          example: 1
        user_id:
          type: string
          example: 1d0366de-8875-47a4-a677-44f23bc0df65
        firstname:
          type: string
          example: Jean-Pierre
        lastname:
          type: string
          example: Monlatin
        company:
          type: string
          example: 'La maison de la tronçonneuse'
        website:
          type: string
          example: 'https://www.chainsaw.nc'
        address:
          type: string
          example: '11 rue du guide \n BP 568'
        zipcode:
          type: integer
          example: 98800
        state:
          type: string
          example: PS
        city:
          type: string
          example: Nouméa
        timezone:
          type: string
          example: Pacific/Noumea
        country_code:
          type: string
          example: NC
        credits:
          type: integer
          example: 20
        scheduled_credits:
          type: integer
          example: 0
        threshold_credits:
          type: integer
          example: 1000
        sms_sent:
          type: integer
          example: 225660
        otp_policy:
          $ref: '#/components/schemas/OTPPolicy'
        campaign_marketing:
          type: boolean
          example: true
        campaign_push:
          type: boolean
          example: true
        otp:
          type: boolean
          example: true
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        deleted_at:
          type: string
          example: '2023-06-22T17:51:20Z'
      type: object
    CharacterCounter:
      properties:
        encoding:
          type: string
          example: GSM_7BIT
        length:
          type: integer
          example: 151
        per_message:
          type: integer
          example: 160
        remaining:
          type: integer
          example: 9
        messages:
          type: integer
          example: 1
        character_set:
          type: string
          example: GSM
        message:
          type: string
          example: "Longtemps, je me suis couché de bonne heure  est l'incipit de Du coté de chez Swann, premier tome du roman A la recherche du temps perdu de l'écrivain"
        pristine:
          properties:
            encoding:
              type: string
              example: UTF16
            length:
              type: integer
              example: 153
            per_message:
              type: integer
              example: 67
            remaining:
              type: integer
              example: 48
            messages:
              type: integer
              example: 3
            character_set:
              type: string
              example: Unicode
            message:
              type: string
              example: "👍 Longtemps, je me suis couché de bonne heure  est l'incipit de Du côté de chez Swann, premier tome du roman À la recherche du temps perdu de l'écrivain"
          type: object
      type: object
    ShippingLog:
      properties:
        id:
          type: integer
          example: 1
        shipping_status:
          type: integer
          example: 10000
        SOA:
          type: string
          example: CHAINSAW
        DA:
          type: integer
          example: 687123456
        sender_id:
          type: integer
          example: 50
        sender_app_id:
          type: integer
          example: 201
        msg_id:
          type: integer
          example: 15663322
        msg_type:
          type: integer
          example: 0
        msg_sub_type:
          type: integer
          example: 2
        msg_application_ref:
          type: string
          example: API_SMSING
        time_created:
          type: string
          example: '2023-06-22T17:51:20Z'
        time_shipped:
          type: string
          example: '2023-06-22T17:51:20Z'
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
      type: object
    TrackingLog:
      properties:
        id:
          type: integer
          example: 1
        tracking_status:
          type: integer
          example: 20000
        SOA:
          type: string
          example: CHAINSAW
        DA:
          type: integer
          example: 687123456
        sender_id:
          type: integer
          example: 50
        sender_app_id:
          type: integer
          example: 201
        msg_id:
          type: integer
          example: 15663322
        msg_type:
          type: integer
          example: 0
        msg_sub_type:
          type: integer
          example: 2
        msg_application_ref:
          type: string
          example: API_SMSING
        time_created:
          type: string
          example: '2023-06-22T17:51:20Z'
        time_last_track:
          type: string
          example: '2023-06-22T17:51:20Z'
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
      type: object
    Header:
      properties:
        name:
          type: string
          example: Accept
        value:
          type: string
          example: application/octet-stream
      type: object
    SMSCampaignLog:
      properties:
        id:
          type: integer
          example: 1
        body:
          type: string
          example: '<html>\n<head>\n<title>HTTP Connect 2.0</title>\n</head>\n<body>\n\nStatus=0<br>\nMsgId=214905195<br>\nNbSMS=1<br>\nMessage successfully sent.<br>\n\n</body>\n</html>\n'
        mmg_msg_id:
          type: integer
          example: 214905195
        mmg_nb_sms:
          type: integer
          example: 1
        mmg_status:
          type: integer
          example: 0
        status:
          type: integer
          example: 200
        phone_number:
          type: integer
          example: 687123456
        calling_code:
          type: integer
          example: 687
        country_code:
          type: string
          example: NC
        SOA:
          type: integer
          example: SMSlink
        SOA_phone_number:
          type: string
          example: 1251
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        tracking_logs:
          type: array
          items:
            $ref: '#/components/schemas/TrackingLog'
      type: object
    OTPCodeLog:
      properties:
        id:
          type: integer
          example: 1
        client_id:
          type: integer
          example: 123
        body:
          type: string
          example: '<html>\n<head>\n<title>HTTP Connect 2.0</title>\n</head>\n<body>\n\nStatus=0<br>\nMsgId=214905195<br>\nNbSMS=1<br>\nMessage successfully sent.<br>\n\n</body>\n</html>\n'
        mmg_msg_id:
          type: integer
          example: 214905195
        mmg_nb_sms:
          type: integer
          example: 1
        mmg_status:
          type: integer
          example: 0
        status:
          type: integer
          example: 200
        phone_number:
          type: integer
          example: 687123456
        calling_code:
          type: integer
          example: 687
        country_code:
          type: string
          example: NC
        SOA:
          type: integer
          example: SMSlink
        SOA_phone_number:
          type: string
          example: 1251
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        tracking_logs:
          type: array
          items:
            $ref: '#/components/schemas/TrackingLog'
      type: object
    OTPCodeLogFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    -
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: phone_number
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '%123456%'
                                operator:
                                  type: string
                                  example: like
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    SMSCampaignLogFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    -
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: status
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: integer
                                  example: 200
                                operator:
                                  type: string
                                  example: '='
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    SMSCampaignShippingTrackingLogsFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    -
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: tracking_status
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: integer
                                  example: 20000
                                operator:
                                  type: string
                                  example: '='
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    CountFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              columns:
                type: array
                items:
                  properties:
                    1:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: created_at
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '2023-05-22T00:00:00Z'
                                operator:
                                  type: string
                                  example: '>'
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    ContactList:
      properties:
        id:
          type: integer
          example: 123
        title:
          type: string
          example: Prospects
        contacts_total:
          type: integer
          example: 2
        contacts_optin_total:
          type: integer
          example: 1
        contacts_optout_total:
          type: integer
          example: 1
        updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
      type: object
    Contact:
      properties:
        id:
          type: integer
          example: 54564
        client_id:
          type: integer
          example: 1223
        phone_number:
          type: integer
          example: 687123456
        first_name:
          type: string
          example: Jean-Pierre
        last_name:
          type: string
          example: Monlatin
        email:
          type: string
          example: jpm@foo.nc
        param_1:
          type: string
          example: 'param 1'
        param_2:
          type: string
          example: 'param 2'
        param_3:
          type: string
          example: 'param 3'
        param_4:
          type: string
          example: 'param 4'
        blocklisted:
          type: boolean
          example: false
        calling_code:
          type: integer
          example: 687
        country_code:
          type: string
          example: NC
        optin_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        optin_way:
          type: string
          example: import
        optout_way:
          type: string
          example: optout_short_url
        contact_list:
          type: array
          items:
            properties:
              id:
                type: integer
              title:
                type: integer
            type: object
          example:
            -
              id: 5
              title: Clients
            -
              id: 6
              title: Prospects
      type: object
    SMSCampaign:
      properties:
        archived_at:
          type: string
          example: '2023-09-22T17:51:20Z'
        auto_optimize_text:
          type: boolean
          example: false
        auto_remove_blocklisted_numbers:
          type: boolean
          example: 'false'
        client_id:
          type: integer
          example: 1
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        estimated_sms:
          type: integer
          example: 2
        id:
          type: integer
          example: 1
        log_destroyed_at:
          type: string
          example: '2023-12-22T17:51:20Z'
        optouts_count:
          type: integer
          example: 2
        percent_delivery:
          type: integer
          example: 100
        purpose:
          type: string
          example: push
        recipients_count:
          type: integer
          example: 2
        send_at:
          type: string
          example: '2023-06-25T14:42:30Z'
        sent_status:
          type: integer
          example: 3
        sender:
          type: string
          example: SMSlink
        sent_at:
          type: string
          example: '2023-06-22T17:52:20Z'
        sent_sms:
          type: integer
          example: 2
        text:
          type: string
          example: 'Ce SMS est un message TEST 🙂'
        title:
          type: string
          example: 'Ma Campagne test'
        test:
          type: boolean
          example: false
        updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
      type: object
    SMSCampaignFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    1:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: send_at
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '2023-05-22T00:00:00Z'
                                operator:
                                  type: string
                                  example: '>'
                              type: object
                              format: query
                        type: object
                        format: query
                    2:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: send_at
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '2023-06-22T00:00:00Z'
                                operator:
                                  type: string
                                  example: '<'
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    ContactFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    1:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: phone_number
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: integer
                                  example: 687123456
                                operator:
                                  type: string
                                  example: '='
                              type: object
                              format: query
                        type: object
                        format: query
                    2:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: first_name
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '%Vahi%'
                                operator:
                                  type: string
                                  example: like
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    ContactListFilters:
      properties:
        filters:
          type: array
          items:
            properties:
              start:
                type: integer
                example: 0
              length:
                type: integer
                example: 25
              columns:
                type: array
                items:
                  properties:
                    1:
                      type: array
                      items:
                        properties:
                          name:
                            type: string
                            example: title
                          search:
                            type: array
                            items:
                              properties:
                                value:
                                  type: string
                                  example: '%pro%'
                                operator:
                                  type: string
                                  example: ilike
                              type: object
                              format: query
                        type: object
                        format: query
                  type: object
                  format: query
            type: object
            format: query
      type: object
    Settings:
      properties:
        sms:
          properties:
            phone_number:
              properties:
                pattern:
                  type: string
                  example: '/^(6875[0-4]|5[0-4]|6877[0-9]|7[0-9]|6878[0-7]|8[0-7]|68789|89|6879[0-9]|9[0-9])\d{4}$/'
              type: object
            contact:
              properties:
                optin_way:
                  properties:
                    import:
                      type: integer
                      example: Import
                    webform:
                      type: string
                      example: Webform
                  type: object
                optout_way:
                  properties:
                    smslink_user:
                      type: integer
                      example: 'SMSLink user'
                    webform:
                      type: string
                      example: Webform
                    STOP-SMS.pro:
                      type: string
                      example: 'http://STOP-SMS.pro'
                  type: object
              type: object
            sms-campaign:
              properties:
                sender:
                  type: string
                  example: SMSlink
                purpose:
                  type: array
                  items:
                    type: string
                  example:
                    - push
                    - marketing
                stop:
                  properties:
                    url:
                      type: string
                      example: 'http://STOP-SMS.pro/xxxxx'
                    slug:
                      type: string
                      example: xxxxx
                    lifetime:
                      properties:
                        duration:
                          type: integer
                          example: 7
                        format:
                          type: string
                          example: days
                      type: object
                  type: object
                tags:
                  type: array
                  items:
                    type: string
                  example:
                    - first_name
                    - last_name
                    - email
                    - param_1
                    - param_2
                    - param_3
                    - param_4
                send_at:
                  properties:
                    hour:
                      properties:
                        min:
                          type: string
                          example: '07:00'
                        max:
                          type: string
                          example: '19:00'
                      type: object
                    day:
                      type: array
                      items:
                        type: integer
                      example:
                        - 1
                        - 2
                        - 3
                        - 4
                        - 5
                        - 6
                    forbidden:
                      type: array
                      items:
                        type: string
                      example:
                        - '2023-01-01'
                        - '2023-04-10'
                        - '2023-05-01'
                        - '2023-05-08'
                        - '2023-05-18'
                        - '2023-05-29'
                        - '2023-07-14'
                        - '2023-08-15'
                        - '2023-09-24'
                        - '2023-11-01'
                        - '2023-11-11'
                        - '2023-12-25'
                  type: object
                send_status:
                  properties:
                    -1:
                      type: string
                      example: Draft
                    0:
                      type: string
                      example: Draft
                    1:
                      type: string
                      example: Scheduled
                    2:
                      type: string
                      example: 'In Progress'
                    3:
                      type: string
                      example: Sent
                    4:
                      type: string
                      example: 'Processing recipients'
                    5:
                      type: string
                      example: 'Processing recipients done'
                    6:
                      type: string
                      example: 'Unknown sender'
                    7:
                      type: string
                      example: Cancelled
                    8:
                      type: string
                      example: 'Not enough funds'
                  type: object
                tracking_status:
                  properties:
                    20000:
                      type: string
                      example: Delivered
                    20001:
                      type: string
                      example: 'Absent subscriber'
                    20002:
                      type: string
                      example: Barred
                    20003:
                      type: string
                      example: 'Carried subscriber'
                    20004:
                      type: string
                      example: Deferred
                    20005:
                      type: string
                      example: Deleted
                    20006:
                      type: string
                      example: Detached
                    20007:
                      type: string
                      example: Duplicated
                    20008:
                      type: string
                      example: Expired
                    20009:
                      type: string
                      example: Failure
                    20010:
                      type: string
                      example: Forwarded
                    20011:
                      type: string
                      example: Illegal
                    20012:
                      type: string
                      example: 'Invalid field'
                    20013:
                      type: string
                      example: 'Invalid message format'
                    20014:
                      type: string
                      example: 'Mobile application error'
                    20015:
                      type: string
                      example: 'No response'
                    20016:
                      type: string
                      example: 'Not supported'
                    20017:
                      type: string
                      example: 'Not provided'
                    20018:
                      type: string
                      example: 'Protocol error'
                    20019:
                      type: string
                      example: Purged
                    20020:
                      type: string
                      example: Read
                    20021:
                      type: string
                      example: Rejected
                    20022:
                      type: string
                      example: Retrieved
                    20023:
                      type: string
                      example: 'Server message error'
                    20024:
                      type: string
                      example: 'System error'
                    20025:
                      type: string
                      example: Undeliverable
                    20026:
                      type: string
                      example: 'Unknown subscriber'
                    20027:
                      type: string
                      example: Unregistered
                    20028:
                      type: string
                      example: Unrocognized
                    20029:
                      type: string
                      example: Incomplete
                    20030:
                      type: string
                      example: 'Receipt timeout'
                    21029:
                      type: string
                      example: Congestion
                    21030:
                      type: string
                      example: 'In process'
                    21031:
                      type: string
                      example: Intermediate
                    21032:
                      type: string
                      example: 'Network error'
                    21033:
                      type: string
                      example: 'Rejected transcient'
                    21034:
                      type: string
                      example: 'Temporary not available'
                    21035:
                      type: string
                      example: 'Transient absent subscriber'
                  type: object
              type: object
          type: object
      type: object
    User:
      properties:
        id:
          type: string
          example: 1d0366de-8875-47a4-a677-44f23bc0df65
        email:
          type: string
          example: contact@chainsaw.nc
        phone:
          type: integer
          example: 687123456
        calling_code:
          type: integer
          example: 687
        country_code:
          type: string
          example: NC
        email_verified_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        password_updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        created_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        updated_at:
          type: string
          example: '2023-06-22T17:51:20Z'
        client:
          $ref: '#/components/schemas/Client'
        roles:
          type: array
          items:
            type: string
          example:
            - client
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      description: 'Login to my.smslink.pro to get a Personal Access Token'
      bearerFormat: JWT
      scheme: bearer
tags:
  -
    name: Health
    description: Health
  -
    name: 'OTP – MFA – Double Authentification'
    description: 'OTP – MFA – Double Authentification'
  -
    name: Contact
    description: Contact
  -
    name: 'Contact List'
    description: 'Contact List'
  -
    name: Settings
    description: Settings
  -
    name: 'SMS Campaign'
    description: 'SMS Campaign'
  -
    name: User
    description: User
