openapi: 3.0.3
info:
  title: Brand Registration
  description: |
    This API provides the ability to associate calling party numbers to be associated with a human-readable string that is to be displayed to the callee on their device screen instead of the calling number.

    # Introduction

    Consumers of this API can associate calling party numbers with a human-readable string that is to be displayed to the callee on their device screen instead of the calling number. This allows the callee to recognize the caller even if the calling party number is not registered in the callee's device and increases the likelihood of the call being answered.

    Brand Registration API could be useful in scenarios such as:
    - Telesales
    - Customer Support
    - Outreach efforts of NGOs.
    - Calls placed by authorities or government institutions for official matters.

    # Relevant terms and definitions
    * **phoneNumber** and **phoneNumberAlternate**: A pair of E.164 numbers representing the caller. Depending on the caller's networks access setup , only phoneNumber or both phoneNumber & phoneNumberAlternate may be used to uniquely identify the caller. The values typically correspond to parameters used in telecom signalling protocols, e.g. PAI and FROM headers in SIP.
    * **displayName**: A human-readable string that is to be displayed to the callee on their device screen instead of the calling number.
    * **customerId** : A string to represent the owner of the displayName, e.g. a commercial brand or an institution.
    * **verifyCallerAction**: An instruction applied during actual call setup. Indicates the action to be taken by the service provider if the authenticity of the caller cannot be established using VerifiedCaller API capabilities.
    # API Functionality

    The API exposes the following endpoints/operations:

    - `/registrations` :
      - **POST** operation creates a new registration and returns a registration identifier
    - `/registrations/{registrationId}` :
      - **PUT** operation updates an existing registration identified by the registrationId in the brand registration service
      - **GET** operation reads an existing registration identified by the registrationId from the brand registration service
      - **DEL** operation deletes an existing registration identified by the registrationId from the brand registration service

    # Authorization and authentication

    The "Camara Security and Interoperability Profile" provides details of how an API consumer requests an access token. Please refer to Identity and Consent Management (https://github.com/camaraproject/IdentityAndConsentManagement/) for the released version of the profile.

    The specific authorization flows to be used will be agreed upon during the onboarding process, happening between the API consumer and the API provider, taking into account the declared purpose for accessing the API, whilst also being subject to the prevailing legal framework dictated by local legislation.

    In cases where personal data is processed by the API and users can exercise their rights through mechanisms such as opt-in and/or opt-out, the use of three-legged access tokens is mandatory. This ensures that the API remains in compliance with privacy regulations, upholding the principles of transparency and user-centric privacy-by-design.

    # Additional CAMARA error responses

    The list of error codes in this API specification is not exhaustive. Therefore the API specification may not document some non-mandatory error statuses as indicated in `CAMARA API Design Guide`.

    Please refer to the `CAMARA_common.yaml` of the Commonalities Release associated to this API version for a complete list of error responses. The applicable Commonalities Release can be identified in the `API Readiness Checklist` document associated to this API version.

    As a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible error response if it is explicitly documented in the API.

    # Further info and support

    (FAQs will be added in a later version of the documentation)
  version: "0.1"

        
servers:

  - url: https://api-sandbox.vf-dmp.engineering.vodafone.com
    description: "Sandbox"
  - url: https://api.vf-dmp.engineering.vodafone.com
    description: "Production"

tags:
  - name: Create Brand registration
    description: Create Brand Registration Information for a Calling Party
  - name: Update Brand registration
    description: Update Existing Brand Registration Information for a Calling Party
  - name: Read Brand registration
    description: Read Existing Brand Registration Information for a Calling Party
  - name: Delete Brand registration
    description: Delete Existing Brand Registration Information for a Calling Party
paths:
  /brand-registration/v0.1/registrations:
    post:
      tags:
        - Create Brand registration
      summary: Register new brand information in the service platform
      description: Register new brand information with optional call verification request.
      operationId: createRegistration
      parameters:
        - $ref: '#/components/parameters/x-correlator'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrUpdateRegistrationRequest'
            examples:
              INPUT_SINGLE_PHONE_NUMBER:
                summary: Device identified by phoneNumber
                description: Create a registration for a device, identified by a phone number
                value:
                  phoneNumber: "+441234567889"
                  terminatingCountryCode: 44
                  displayName: "Company X Calling"
                  customerId: "Customer1"
                  verifyCallerAction: "DO_NOT_BRAND"
              INPUT_TWO_PHONE_NUMBERS:
                summary: Device identified by phoneNumber & phoneNumberAlternate
                description: Create a registration for a device, identified by a phone number & phone number alternate
                value:
                  phoneNumber: "+441234567889"
                  phoneNumberAlternate: "+441234567890"
                  terminatingCountryCode: 44
                  displayName: "Company Y Calling"
                  customerId: "Customer2"
                  verifyCallerAction: "DO_NOT_BRAND"

      responses:
        '201':
          $ref: '#/components/responses/SuccessfulRecord'
        '400':
          $ref: '#/components/responses/Generic400'
        '401':
          $ref: '#/components/responses/Generic401'
        '403':
          $ref: '#/components/responses/Generic403'
        '404':
          $ref: '#/components/responses/Create404'
        '409':
          $ref: '#/components/responses/Generic409'
        '422':
          $ref: '#/components/responses/CreateOrUpdateRegistrationUnprocessableEntity422'
        '429':
          $ref: '#/components/responses/Generic429'
        '500':
          $ref: '#/components/responses/Generic500'
        '503':
          $ref: '#/components/responses/Generic503'

      security:
        - oAuthSample:
            - brand-registration:create
  /brand-registration/v0.1/registrations/{registrationId}:
    get:
      tags:
        - Read Brand registration
      summary: Read an existing brand registration from the service platform
      description: Read an existing brand registration from the service platform
      operationId: readRegistration
      parameters:
        - $ref: '#/components/parameters/x-correlator'
        - description: Unique identifier of an existing brand registration
          in: path
          name: registrationId
          required: true
          schema:
            type: string
          example: "262e33e7-4722-4c3b-a358-52b00137b0da"
      responses:
        '200':
          $ref: '#/components/responses/SuccessfulRecord'
        '400':
          $ref: '#/components/responses/Generic400'
        '401':
          $ref: '#/components/responses/Generic401'
        '403':
          $ref: '#/components/responses/Generic403'
        '404':
          $ref: '#/components/responses/Generic404'
        '429':
          $ref: '#/components/responses/Generic429'
        '500':
          $ref: '#/components/responses/Generic500'
        '503':
          $ref: '#/components/responses/Generic503'

      security:
        - oAuthSample:
            - brand-registration:read
    delete:
      tags:
        - Delete Brand registration
      summary: Delete an existing brand registration from the service platform
      description: Delete an existing brand registration from the service platform
      operationId: deleteRegistration
      parameters:
        - $ref: '#/components/parameters/x-correlator'
        - description: Unique identifier of an existing brand registration
          in: path
          name: registrationId
          required: true
          schema:
            type: string
          example: "262e33e7-4722-4c3b-a358-52b00137b0da"
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/Generic400'
        '401':
          $ref: '#/components/responses/Generic401'
        '403':
          $ref: '#/components/responses/Generic403'
        '404':
          $ref: '#/components/responses/Generic404'
        '429':
          $ref: '#/components/responses/Generic429'
        '500':
          $ref: '#/components/responses/Generic500'
        '503':
          $ref: '#/components/responses/Generic503'

      security:
          - oAuthSample:
            - brand-registration:delete
    put:
      tags:
        - Update Brand registration
      summary: Update an existing brand registration in the service platform
      description: Update an existing brand registration
      operationId: updateRegistration
      parameters:
        - $ref: '#/components/parameters/x-correlator'
        - description: Unique identifier of an existing brand registration
          in: path
          name: registrationId
          required: true
          schema:
            type: string
          example: "262e33e7-4722-4c3b-a358-52b00137b0da"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrUpdateRegistrationRequest'
            examples:
              INPUT_SINGLE_PHONE_NUMBER:
                summary: Device identified by phoneNumber
                description: Update registration for a device, identified by a phone number
                value:
                  phoneNumber: "+441234567889"
                  terminatingCountryCode: 44
                  displayName: "Company X Calling"
                  customerId: "Customer1"
                  verifyCallerAction: "DO_NOT_BRAND"
              INPUT_TWO_PHONE_NUMBERS:
                summary: Device identified by phoneNumber & phoneNumberAlternate
                description: Update registration for a device, identified by a phone number & phone number alternate
                value:
                  phoneNumber: "+441234567889"
                  phoneNumberAlternate: "+441234567890"
                  terminatingCountryCode: 44
                  displayName: "Company Y Calling"
                  customerId: "Customer2"
                  verifyCallerAction: "DO_NOT_BRAND"

      responses:
        '200':
          $ref: '#/components/responses/SuccessfulRecord'
        '400':
          $ref: '#/components/responses/Generic400'
        '401':
          $ref: '#/components/responses/Generic401'
        '403':
          $ref: '#/components/responses/Generic403'
        '404':
          $ref: '#/components/responses/Update404'
        '409':
          $ref: '#/components/responses/Generic409'
        '422':
          $ref: '#/components/responses/CreateOrUpdateRegistrationUnprocessableEntity422'
        '429':
          $ref: '#/components/responses/Generic429'
        '500':
          $ref: '#/components/responses/Generic500'
        '503':
          $ref: '#/components/responses/Generic503'

      security:
        - oAuthSample:
            - brand-registration:update

  /brand-registration/v0.1/ping:
    get:
      tags:
      - Monitoring
      summary: ping operation
      description: This operation returns if the API is alive
      operationId: healthcheckPing
      # x-openapi-router-controller: app.controllers.admins_controller
      security:
        - oAuthSample:
            - brand-registration
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      responses:
        "200":
          description: ping information returned in the result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PongInfo'
        '400':
          $ref: '#/components/responses/Generic400'
        '401':
          $ref: '#/components/responses/Generic401'
        '403':
          $ref: '#/components/responses/Generic403'


  # /brand-registration/v0.1/status:
  #   get:
  #     tags:
  #     - Monitoring
  #     summary: Status operation
  #     description: This operation returns if the API is working E2E
  #     operationId: healthcheckStatus
  #     # x-openapi-router-controller: app.controllers.admins_controller
  #     security:
  #       - oAuthSample:
  #           - brand-registration
  #     parameters:
  #     - $ref: '#/components/parameters/x-correlator'
  #     responses:
  #       "200":
  #         description: ping information returned in the result
  #         content:
  #           application/json:
  #             schema:
  #               $ref: '#/components/schemas/StatusInfo'
  #       '400':
  #         $ref: '#/components/responses/Generic400'
  #       '401':
  #         $ref: '#/components/responses/Generic401'
  #       '403':
  #         $ref: '#/components/responses/Generic403'


components:
  # securitySchemes:
  #   openId:
  #     description: OpenID Connect authentication
  #     type: openIdConnect
  #     openIdConnectUrl: https://example.com/.well-known/openid-configuration
  
  securitySchemes:
    oAuthSample:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '/oauth2/v1/token'
          scopes:
            brand-registration:update: ""
            brand-registration:delete: ""
            brand-registration:read: ""
            brand-registration:create: ""
            brand-registration: ""
            
  parameters:
    x-correlator:
      name: x-correlator
      in: header
      description: Correlation id for the different services
      schema:
        $ref: "#/components/schemas/XCorrelator"
  headers:
    x-correlator:
      description: Correlation id for the different services
      schema:
        $ref: "#/components/schemas/XCorrelator"
  schemas:
  
    PongInfo:
      description: Pong response object in return to a ping request
      type: object
      required:
        - suffix
        - client
        - startTime
        - endTime
        - responseTime
        - message
      properties:
        suffix:
          type: string
          description: Operation URI Path
          enum:
          - "/ping"
          example: "/ping"
        client:
          type: string
          description: Origin IP that request the operation
          example: "35.191.14.51"
          format: ipv4
        startTime:
          type: string
          description: Start time of the request in date-time format
          example: "2024-02-08T14:42:20.675Z"
          format: date-time
        endTime:
          type: string
          description: End time of the operation
          example: "2024-02-08T14:42:20.687Z"
          format: date-time
        responseTime:
          type: integer
          description: Time in miliseconds between startTime and endTime
          example: 12
        message:
          type: string
          description: Response message for the PING, that allways will be PONG
          example: PONG
          enum:
          - "PONG"
          
    StatusInfo:
      description: Status response object
      type: object
      required:
        - status
      properties:
        status:
          type: string
          description: The status of the API, that returns if the API is working E2E
          example: OK
          enum:
          - OK
          - KO
    XCorrelator:
      type: string
      pattern: ^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$
      example: "b4333c46-49c0-4f62-80d7-f0ef930f1c46"
    PhoneNumber:
      description: A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'.
      type: string
      pattern: '^\+[1-9][0-9]{4,14}$'
      example: "+441234567889"

    RegistrationId:
      type: string
      format: uuid
      description: Unique identifier of a registration created in the Branded Calling Platform as a result of the POST operation.
      example: "262e33e7-4722-4c3b-a358-52b00137b0da"

    CustomerId:
      type: string
      description: Unique customer identifier for a brand
      example: "Customer1"

    DisplayName:
      type: string
      maxLength: 32
      description: Brand information that will be displayed for the calling party
      example: "Company X Call Center"

    VerifyCallerAction:
      type: string
      description: >-
        Indicates if Antispoofing feature is enabled for the A-party, if enabled what action to take in case antispoofing check fails. Absence of parameter means feature not enabled.
      example: "DO_NOT_BRAND"
      enum:
        - "BLOCK_UNVERIFIED"
        - "DO_NOT_BRAND"

    TerminatingCountryCode:
      type: integer
      description: Country Code of the called number in E.164 format
      example: 44

    CampaignName:
      type: string
      description: Logical name to group a set of calling party numbers under a brand for a specific purpose, e.g. special charging
      example: "Company X New Year Sales"

    CreateOrUpdateRegistrationRequest:
      type: object
      description: "Request object to create or update (replace) a brand registration"
      required:
        - "phoneNumber"
        - "displayName"
        - "terminatingCountryCode"
      properties:
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        phoneNumberAlternate:
          $ref: '#/components/schemas/PhoneNumber'
        displayName:
          $ref: '#/components/schemas/DisplayName'
        customerId:
          $ref: '#/components/schemas/CustomerId'
        verifyCallerAction:
          $ref: '#/components/schemas/VerifyCallerAction'
        terminatingCountryCode:
          $ref: '#/components/schemas/TerminatingCountryCode'
        campaignName:
          $ref: '#/components/schemas/CampaignName'

    RegistrationRecord:
      type: object
      description: "Object to represent a single brand registration in the service platform"
      required:
        - "registrationId"
        - "phoneNumber"
        - "displayName"
        - "terminatingCountryCode"
      properties:
        registrationId:
          $ref: '#/components/schemas/RegistrationId'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        phoneNumberAlternate:
          $ref: '#/components/schemas/PhoneNumber'
        displayName:
          $ref: '#/components/schemas/DisplayName'
        customerId:
          $ref: '#/components/schemas/CustomerId'
        verifyCallerAction:
          $ref: '#/components/schemas/VerifyCallerAction'
        terminatingCountryCode:
          $ref: '#/components/schemas/TerminatingCountryCode'
        campaignName:
          $ref: '#/components/schemas/CampaignName'

    ErrorInfo:
      description: Common schema for errors
      type: object
      required:
        - status
        - code
        - message
      properties:
        status:
          type: integer
          description: HTTP status code returned along with this error response
        code:
          type: string
          description: Code given to this error
        message:
          type: string
          description: Detailed error description

  responses:
    SuccessfulRecord:
      description: Success response with a brand registration record
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegistrationRecord'
          examples:
            RECORD_SINGLE_PHONE_NUMBER:
              summary: Device identified by phoneNumber
              description: Registration for a device, identified by a phone number
              value:
                registrationId: "262e33e7-4722-4c3b-a358-52b00137b0da"
                phoneNumber: "+441234567889"
                terminatingCountryCode: 44
                displayName: "Company X Calling"
                customerId: "Customer1"
                verifyCallerAction: "DO_NOT_BRAND"
            RECORD_TWO_PHONE_NUMBERS:
              summary: Device identified by phoneNumber & phoneNumberAlternate
              description: A registration for a device, identified by both a phone number and a phone number alternate
              value:
                registrationId: "262e33e7-4722-4c3b-a358-52b00137b0da"
                phoneNumber: "+441234567889"
                phoneNumberAlternate: "+441234567890"
                terminatingCountryCode: 44
                displayName: "Company Y Calling"
                customerId: "Customer2"
                verifyCallerAction: "DO_NOT_BRAND"
    204NoContent:
      description: Successful response with no content
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
    Generic400:
      description: Bad Request
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 400
                  code:
                    enum:
                      - INVALID_ARGUMENT
          examples:
            GENERIC_400_INVALID_ARGUMENT:
              summary: Invalid argument
              description: Invalid Argument. Generic Syntax Exception
              value:
                status: 400
                code: INVALID_ARGUMENT
                message: Client specified an invalid argument, request body or query param.
    Generic401:
      description: Unauthorized
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 401
                  code:
                    enum:
                      - UNAUTHENTICATED
          examples:
            GENERIC_401_UNAUTHENTICATED:
              summary: Unauthenticated
              description: Request cannot be authenticated
              value:
                status: 401
                code: UNAUTHENTICATED
                message: Request not authenticated due to missing, invalid, or expired credentials.
    Generic403:
      description: Forbidden
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 403
                  code:
                    enum:
                      - PERMISSION_DENIED
          examples:
            GENERIC_403_PERMISSION_DENIED:
              summary: Permission denied
              description: Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security
              value:
                status: 403
                code: PERMISSION_DENIED
                message: Client does not have sufficient permissions to perform this action.
    Create404:
      description: Not found
      headers:
        x-correlator:
          $ref: '#/components/headers/x-correlator'
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 404
                  code:
                    enum:
                      - NOT_FOUND
                      - GENERIC_404_IDENTIFIER_NOT_FOUND
          examples:
            GENERIC_404_NOT_FOUND:
              summary: Generic Not Found
              description: Resource is not found
              value:
                status: 404
                code: NOT_FOUND
                message: "{{resource}} is not found"
            DEVICE_NOT_FOUND:
              summary: Device not found
              description: The device is not known to the service provider
              value:
                status: 404
                code: GENERIC_404_IDENTIFIER_NOT_FOUND
                message: 'The device is not known to the service provider'
    Update404:
      description: Not found
      headers:
        x-correlator:
          $ref: '#/components/headers/x-correlator'
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 404
                  code:
                    enum:
                      - NOT_FOUND
                      - BRAND_REGISTRATION.REGISTRATION_NOT_FOUND
                      - GENERIC_404_IDENTIFIER_NOT_FOUND
          examples:
            GENERIC_404_NOT_FOUND:
              summary: Generic Not Found
              description: Resource is not found
              value:
                status: 404
                code: NOT_FOUND
                message: "{{resource}} is not found"
            BRAND_REGISTRATION_404_REGISTRATION_NOT_FOUND:
              summary: Registration not found
              description: The brand registration service is not able to identify the registration
              value:
                status: 404
                code: BRAND_REGISTRATION.REGISTRATION_NOT_FOUND
                message: 'The brand registration service is not able to identify an existing registration'
            DEVICE_NOT_FOUND:
              summary: Device not found
              description: The device is not known to the service provider
              value:
                status: 404
                code: GENERIC_404_IDENTIFIER_NOT_FOUND
                message: 'The device is not known to the service provider'
    Generic404:
      description: Not found
      headers:
        x-correlator:
          $ref: '#/components/headers/x-correlator'
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 404
                  code:
                    enum:
                      - NOT_FOUND
                      - BRAND_REGISTRATION.REGISTRATION_NOT_FOUND
          examples:
            GENERIC_404_NOT_FOUND:
              summary: Generic Not Found
              description: Resource is not found
              value:
                status: 404
                code: NOT_FOUND
                message: "{{resource}} is not found"
            BRAND_REGISTRATION_404_REGISTRATION_NOT_FOUND:
              summary: Registration not found
              description: The brand registration service is not able to identify the registration
              value:
                status: 404
                code: BRAND_REGISTRATION.REGISTRATION_NOT_FOUND
                message: 'The brand registration service is not able to identify an existing registration'
    Generic409:
      description: Conflict
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 409
                  code:
                    enum:
                      - CONFLICT
          examples:
            GENERIC_409_CONFLICT:
              summary: Conflict
              description: Requested operation conflicts with existing data in the service platform
              value:
                status: 409
                code: CONFLICT
                message: Requested operation conflicts with existing data in the service platform
    CreateOrUpdateRegistrationUnprocessableEntity422:
      description: Unprocessable Content
      headers:
        x-correlator:
          $ref: '#/components/headers/x-correlator'
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/ErrorInfo"
              - type: object
                properties:
                  status:
                    enum:
                      - 422
                  code:
                    enum:
                      - IDENTIFIER_MISMATCH
                      - SERVICE_NOT_APPLICABLE
                      - MISSING_IDENTIFIER
                      - UNSUPPORTED_IDENTIFIER
                      - UNNECESSARY_IDENTIFIER
          examples:
            GENERIC_422_IDENTIFIER_MISMATCH:
              summary: Identifier mismatch
              description: Inconsistency between identifiers not pointing to the same device
              value:
                status: 422
                code: IDENTIFIER_MISMATCH
                message: Provided identifiers are not consistent.
            GENERIC_422_SERVICE_NOT_APPLICABLE:
              summary: Service not applicable
              description: Service not applicable for the provided identifier
              value:
                status: 422
                code: SERVICE_NOT_APPLICABLE
                message: The service is not available for the provided identifier.
            GENERIC_422_MISSING_IDENTIFIER:
              summary: Missing identifier
              description: An identifier is not included in the request and the device identification cannot be derived from the 3-legged access token
              value:
                status: 422
                code: MISSING_IDENTIFIER
                message: The device cannot be identified.
            GENERIC_422_UNSUPPORTED_IDENTIFIER:
              summary: Unsupported identifier
              description: None of the provided identifiers is supported by the implementation
              value:
                status: 422
                code: UNSUPPORTED_IDENTIFIER
                message: The identifier provided is not supported.
            GENERIC_422_UNNECESSARY_IDENTIFIER:
              summary: Unnecessary identifier
              description: An explicit identifier is provided when a device or phone number has already been identified from the access token
              value:
                status: 422
                code: UNNECESSARY_IDENTIFIER
                message: The device is already identified by the access token.
    Generic429:
      description: Too Many Requests
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorInfo"
          examples:
            GENERIC_429_QUOTA_EXCEEDED:
              description: Request is rejected due to exceeding a business quota limit
              value:
                status: 429
                code: QUOTA_EXCEEDED
                message: Either out of resource quota or reaching rate limiting.
            GENERIC_429_TOO_MANY_REQUESTS:
              description: API Server request limit is overpassed
              value:
                status: 429
                code: TOO_MANY_REQUESTS
                message: Either out of resource quota or reaching rate limiting.
    Generic500:
      description: Internal server error
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorInfo"
          examples:
            GENERIC_500_INTERNAL:
              summary: Generic Internal
              description: Problem in Server side. Regular Server Exception
              value:
                status: 500
                code: INTERNAL
                message: "Internal server error"
    Generic503:
      description: Service unavailable
      headers:
        x-correlator:
          $ref: "#/components/headers/x-correlator"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorInfo"
          examples:
            GENERIC_503_UNAVAILABLE:
              summary: Generic Unavailable
              description: Service is not available. Temporary situation usually related to maintenance process in the server side
              value:
                status: 503
                code: UNAVAILABLE
                message: "Service unavailable"