openapi: 3.0.1
info:
  title: Elevate Reference Data API
  description: >
    ### Reference Data Management


    Where possible, Elevate will manage reference data internally via incoming
    feeds of reliable dialstring and charge group information

    However, for data sources where this is not possible (e.g. for
    proprietary/internal data) this can be managed externally via this API


    Where a usage product cannot be rated using the dialstring look up method to
    identify the dialled number, Elevate will rely on call-class

    to do this instead


    #### Entity model


    * One or many dialstrings map to one reference-data-source-charge-group

    * One or many call-classes map to one reference-data-source-charge-group

    * One or many reference-data-source-charge-groups map to one charge-group
    and one reference-data-source

    * One or many charge-groups map to one charge-group-category
  version: '1.12'
servers:
  - url: https://rest.elevatebilling.com/v1
tags:
  - name: reference-data-sources
    description: >-
      Manage sources of reference data - only manually maintained data sources
      can be updated via this endpoint
  - name: charge-groups
    description: Management of charge groups and charge group categories
  - name: reference-data-source-charge-groups
    description: Charge group and charge group category management by reference data source
  - name: call-classes
    description: Management of manually maintained call-class information
  - name: ignored-call-classes
    description: Management of manually maintained ignored-call-class information
  - name: ignored-service-ids
    description: Management of manually maintained ignored-service-ids information
  - name: dialstrings
    description: Management of manually maintained dialstrings information
  - name: tax-bands
    description: Tax-band management
  - name: currencies
    description: Currencies supported by the system
  - name: locales
    description: Locales supported by the system
  - name: currency-rates
    description: Management of the exchange rates between currencies
paths:
  /locales:
    get:
      tags:
        - locales
      summary: Get a list of locales
      operationId: getLocales
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Locale'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /locales/{localeId}:
    get:
      tags:
        - locales
      summary: Get a specific locales
      operationId: getLocale
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: localeId
          in: path
          description: Locale identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Locale found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Locale'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /currencies:
    get:
      tags:
        - currencies
      summary: Get a list of currencies
      operationId: getCurrencies
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by currency name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: code
          in: query
          description: Filter by currency code
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Currency'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /currency-rates:
    get:
      tags:
        - currency-rates
      summary: Get a list of currency rates
      operationId: getCurrencyRates
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: sourceCurrencyId
          in: query
          description: Filter by source currency id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: targetCurrencyId
          in: query
          description: Filter by target currency id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter by start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter by end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CurrencyRate'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    head:
      tags:
        - currency-rates
      summary: Count currency rates
      operationId: countCurrencyRates
      x-si-response-headers: true
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: sourceCurrencyId
          in: query
          description: Filter by source currency id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: targetCurrencyId
          in: query
          description: Filter by target currency id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter by start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter by end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          headers:
            X-Total-Count:
              schema:
                type: integer
                description: Total number of currency rates
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    post:
      tags:
        - currency-rates
      summary: Create a new currency rate that does not overlap with any existing rates
      operationId: createCurrencyRate
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: false
      security:
        - bearerAuth: []
      requestBody:
        description: New currency rate
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CurrencyRate'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyRate'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /currency-rates/{currencyRateId}:
    patch:
      tags:
        - currency-rates
      summary: Update a currency rate
      operationId: updateCurrencyRate
      x-si-json-patch: true
      x-si-allow-patch:
        - /sourceCurrencyId
        - /targetCurrencyId
        - /exchangeRate
        - /startDate
        - /endDate
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: currencyRateId
          in: path
          description: Currency rate identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: A set of JSONPatch operations to be performed
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchRequest'
            examples:
              ChangeRate:
                value:
                  - op: replace
                    path: /exchangeRate
                    value: 416.1234
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyRate'
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    get:
      tags:
        - currency-rates
      summary: Get a specific currency rate
      operationId: getCurrencyRate
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: currencyRateId
          in: path
          description: Currency rate identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Currency rate found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyRate'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    delete:
      tags:
        - currency-rates
      summary: Delete a currency rate
      description: Delete a currency rate
      operationId: deleteCurrencyRate
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: currencyRateId
          in: path
          description: Currency rate identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Success
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /reference-data-sources:
    get:
      tags:
        - reference-data-sources
      summary: Get a list of available reference data sources
      operationId: getReferenceDataSources
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: locale
          in: query
          description: Filter by locale id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: siMaintained
          in: query
          description: Filter by whether they are automatically or manually maintained
          schema:
            $ref: '#/components/schemas/BooleanFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReferenceDataSource'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /reference-data-sources/{reference_data_source_id}:
    get:
      tags:
        - reference-data-sources
      summary: Get a specific reference data source
      operationId: getReferenceDataSource
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: reference_data_source_id
          in: path
          description: Reference data source identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Reference data source found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSource'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /tax-bands:
    get:
      tags:
        - tax-bands
      summary: Get a list of tax bands
      description: Get a list of tax bands e.g. VAT
      operationId: getTaxBands
      x-si-permissions:
        - VIEW_VAT_BANDS
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: defaultBand
          in: query
          description: Filter to default Tax bands
          schema:
            $ref: '#/components/schemas/BooleanFilterParam'
          required: false
        - name: tNumber
          in: query
          description: Filter by T number
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TaxBand'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /tax-bands/{tax_band_id}:
    get:
      tags:
        - tax-bands
      summary: Get a specific tax band
      operationId: getTaxBand
      x-si-permissions:
        - VIEW_VAT_BANDS
      security:
        - bearerAuth: []
      parameters:
        - name: tax_band_id
          in: path
          description: Tax band identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Tax band found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxBand'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /charge-group-categories:
    get:
      tags:
        - charge-groups
      summary: Get a list of charge group categories
      operationId: getChargeGroupCategories
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter charge group categories based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter charge groups categories based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChargeGroupCategory'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /charge-group-categories/{charge_group_category_id}:
    get:
      tags:
        - charge-groups
      summary: Get a specific Charge Group Category
      operationId: getChargeGroupCategory
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: charge_group_category_id
          in: path
          description: Charge group Category identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Charge Group Category found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroupCategory'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /charge-groups:
    get:
      tags:
        - charge-groups
      summary: Get a list of charge-groups
      operationId: getChargeGroups
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: chargeGroupCategoryId
          in: query
          description: Filter by a particular charge group category id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter charge groups based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter charge groups based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    post:
      tags:
        - charge-groups
      summary: Create a new Charge Group
      operationId: createChargeGroup
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New Charge Group
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeGroup'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroup'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    head:
      tags:
        - charge-groups
      summary: Check if Charge Group exists
      operationId: checkChargeGroup
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: name
          in: query
          description: Check by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: chargeGroupCategoryId
          in: query
          description: Check by a particular charge group category id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Check for charge groups based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Check for charge groups based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /charge-groups/{charge_group_id}:
    get:
      tags:
        - charge-groups
      summary: Get a specific Charge Group
      operationId: getChargeGroup
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: charge_group_id
          in: path
          description: Charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Charge Group found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    put:
      tags:
        - charge-groups
      summary: Update a Charge Group
      operationId: updateChargeGroupPut
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: charge_group_id
          in: path
          description: Charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated Charge Group
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeGroup'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    delete:
      tags:
        - charge-groups
      summary: Delete Charge Group
      operationId: deleteChargeGroup
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: charge_group_id
          in: path
          description: Charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Success
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
    patch:
      tags:
        - charge-groups
      summary: Patch update Charge Group
      operationId: updateChargeGroupPatch
      x-si-json-patch: true
      x-si-allow-patch:
        - /name
        - /chargeGroupCategoryId
        - /type
        - /(start|end)Date
        - /requiresAccessCharge
        - /dontShowOnItemisation
        - /applicableForDrcVat
        - /applyUsageCap
        - /taxBandId
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: charge_group_id
          in: path
          description: Charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: A set of JSONPatch operations to be performed
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchRequest'
            examples:
              Rename:
                value:
                  - op: replace
                    path: /name
                    value: My Group
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeGroup'
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /reference-data-source-charge-groups:
    get:
      tags:
        - reference-data-source-charge-groups
      summary: Get a list of reference data source charge groups
      operationId: getReferenceDataSourceChargeGroups
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: name
          in: query
          description: Filter by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: chargeGroupId
          in: query
          description: >-
            Filter reference data source charge groups for a particular charge
            group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: referenceDataSourceId
          in: query
          description: >-
            Filter reference data source charge groups for a particular
            reference data source id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter reference data source charge groups based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter reference data source charge groups based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: siMaintained
          in: query
          description: Filter by whether they are automatically or manually maintained
          schema:
            $ref: '#/components/schemas/BooleanFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    post:
      tags:
        - reference-data-source-charge-groups
      summary: Create a new reference data source charge group
      operationId: createReferenceDataSourceChargeGroup
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New reference data source charge Group
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    head:
      tags:
        - reference-data-source-charge-groups
      summary: Check if reference data source charge group exists
      operationId: checkReferenceDataSourceChargeGroup
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: name
          in: query
          description: Check by name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: chargeGroupId
          in: query
          description: Check by a particular charge group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Check for reference data source charge groups based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Check for reference data source charge groups based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /reference-data-source-charge-groups/{reference_data_source_charge_group_id}:
    get:
      tags:
        - reference-data-source-charge-groups
      summary: Get a specific reference data source charge group
      operationId: getReferenceDataSourceChargeGroup
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: reference_data_source_charge_group_id
          in: path
          description: Reference data source charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Reference data source charge group found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    put:
      tags:
        - reference-data-source-charge-groups
      summary: Update a reference data source charge group
      operationId: updateReferenceDataSourceChargeGroupPut
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: reference_data_source_charge_group_id
          in: path
          description: Reference data source charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated reference data source charge group
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    delete:
      tags:
        - reference-data-source-charge-groups
      summary: Delete reference data source charge group
      operationId: deleteReferenceDataSourceChargeGroup
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: reference_data_source_charge_group_id
          in: path
          description: Reference data source charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Success
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
    patch:
      tags:
        - reference-data-source-charge-groups
      summary: Patch update reference data source charge group
      operationId: updateReferenceDataSourceChargeGroupPatch
      x-si-json-patch: true
      x-si-allow-patch:
        - /name
        - /code
        - /chargeGroupId
        - /referenceDataSourceId
        - /(start|end)Date
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: reference_data_source_charge_group_id
          in: path
          description: Reference data source charge group identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: A set of JSONPatch operations to be performed
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchRequest'
            examples:
              Rename:
                value:
                  - op: replace
                    path: /name
                    value: My Group
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceDataSourceChargeGroup'
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /call-classes:
    get:
      tags:
        - call-classes
      summary: Get a list of Call Classes
      operationId: getCallClasses
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: callClass
          in: query
          description: Filter by call class
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: referenceDataSourceChargeGroupId
          in: query
          description: Filter by a particular reference data source charge group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter call classes based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter call classes based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    post:
      tags:
        - call-classes
      summary: Create a new Call-Class
      operationId: createCallClass
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New Call Class
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallClass'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallClass'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    head:
      tags:
        - call-classes
      summary: Check if Call Class exists
      operationId: checkCallClass
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: callClass
          in: query
          description: Check by call class
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: referenceDataSourceChargeGroupId
          in: query
          description: Check by a particular reference data source charge group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Check for call class based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Check for call class based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /call-classes/{call_class_id}:
    get:
      tags:
        - call-classes
      summary: Get a specific Call Class
      operationId: getCallClass
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: call_class_id
          in: path
          description: Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Call Class found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    put:
      tags:
        - call-classes
      summary: Update a Call Class
      operationId: updateCallClassPut
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: call_class_id
          in: path
          description: Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated Call Class
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallClass'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    delete:
      tags:
        - call-classes
      summary: Delete Call Class
      operationId: deleteCallClass
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: call_class_id
          in: path
          description: Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Success
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
    patch:
      tags:
        - call-classes
      summary: Patch update Call Class
      operationId: updateCallClassPatch
      x-si-json-patch: true
      x-si-allow-patch:
        - /callClass
        - /referenceDataSourceChargeGroupId
        - /(start|end)Date
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: call_class_id
          in: path
          description: Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: A set of JSONPatch operations to be performed
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallClass'
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /dialstrings:
    get:
      tags:
        - dialstrings
      summary: Get a list of Dialstrings
      operationId: getDialstrings
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: dialstring
          in: query
          description: Filter by dialstring
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: referenceDataSourceChargeGroupId
          in: query
          description: Filter by a particular reference data source charge group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter dialstrings based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter dialstrings based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Dialstring'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    post:
      tags:
        - dialstrings
      summary: Create a new Dialstring
      operationId: createDialstring
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New Dialstring
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Dialstring'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dialstring'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dialstring'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    head:
      tags:
        - dialstrings
      summary: Check if Dialstring exists
      operationId: checkDialstring
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: dialstring
          in: query
          description: Check by dialstring
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: referenceDataSourceChargeGroupId
          in: query
          description: Check by a particular reference data source charge group id
          schema:
            $ref: '#/components/schemas/IdFilterParam'
          required: false
        - name: startDate
          in: query
          description: Check for dialstring based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Check for dialstring based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /dialstrings/{dialstring_id}:
    get:
      tags:
        - dialstrings
      summary: Get a specific dialstring
      operationId: getDialstring
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: dialstring_id
          in: path
          description: Dial string identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Dial string found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dialstring'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    put:
      tags:
        - dialstrings
      summary: Update a dialstring
      operationId: updateDialstringPut
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: dialstring_id
          in: path
          description: Dial string identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated dialstring
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Dialstring'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dialstring'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
    delete:
      tags:
        - dialstrings
      summary: Delete Dialstring
      operationId: deleteDialstring
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: dialstring_id
          in: path
          description: Dial string identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: Success
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
    patch:
      tags:
        - dialstrings
      summary: Patch update Dialstring
      operationId: updateDialstringPatch
      x-si-json-patch: true
      x-si-allow-patch:
        - /dialstring
        - /referenceDataSourceChargeGroupId
        - /(start|end)Date
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: dialstring_id
          in: path
          description: Dial string identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: A set of JSONPatch operations to be performed
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dialstring'
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
  /reference-data-summary/{referenceDataSummaryType}/{id}:
    get:
      tags:
        - reference-data-summaries
      summary: Get a reference data summaries
      operationId: getReferenceDataSummaries
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - name: referenceDataSummaryType
          in: path
          description: Reference Data Summary Type
          required: true
          schema:
            $ref: '#/components/schemas/ReferenceDataSummaryType'
        - name: id
          in: path
          description: Entity identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReferenceDataSummary'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
        '501':
          description: Not Implemented Yet
          content: {}
  /ignored-call-classes:
    get:
      tags:
        - ignored-call-classes
      summary: Get a list of Ignored Call Classes
      operationId: getIgnoredCallClasses
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: callClass
          in: query
          description: Filter by ignored call class based on its name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: startDate
          in: query
          description: Filter ignored call classes based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Filter ignored call classes based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: >-
            OK (the list of ignored call classes could be returned or empty
            list)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IgnoredCallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    post:
      tags:
        - ignored-call-classes
      summary: Create new Ignored Call Class
      operationId: createIgnoredCallClasses
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New Ignored Call Class
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IgnoredCallClass'
        required: true
      responses:
        '200':
          description: OK (Ignored Call Class was created)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredCallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    head:
      tags:
        - ignored-call-classes
      summary: Check if Ignored Call Class exists
      operationId: checkIgnoredCallClass
      x-si-response-headers: true
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: callClass
          in: query
          description: Check by ignored call class name
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
        - name: startDate
          in: query
          description: Check for ignored call class based on start date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
        - name: endDate
          in: query
          description: Check for ignored call class based on end date
          schema:
            $ref: '#/components/schemas/DateFilterParam'
          required: false
      responses:
        '200':
          description: OK
          content: {}
          headers:
            X-Total-Count:
              schema:
                type: integer
                description: Total number of call classes
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /ignored-call-classes/{ignored_call_class_id}:
    get:
      tags:
        - ignored-call-classes
      summary: Get a specific Ignored Call Class
      operationId: getIgnoredCallClass
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_call_class_id
          in: path
          description: Ignored Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: OK (Ignored Call Class found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredCallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    patch:
      tags:
        - ignored-call-classes
      summary: Update Ignored Call Class
      operationId: updateIgnoredCallClass
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_call_class_id
          in: path
          description: Ignored Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated  Ignored Call Class
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IgnoredCallClass'
        required: true
      responses:
        '200':
          description: OK (Ignored Call Class was updated)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredCallClass'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    delete:
      tags:
        - ignored-call-classes
      summary: Delete Ignored Call Class
      operationId: deleteIgnoredCallClass
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_call_class_id
          in: path
          description: Ignored Call Class identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: OK (Ignored Call Class was deleted)
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /ignored-service-ids:
    get:
      tags:
        - ignored-service-ids
      summary: Get a list of ignored service-ids
      operationId: getIgnoredServiceIds
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      x-si-filterable: true
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/sort'
        - $ref: '#/components/parameters/fields'
        - name: serviceId
          in: query
          description: Filter ignored service-ids based on its id
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
      responses:
        '200':
          description: OK (the result could be a list of records or empty list)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IgnoredServiceId'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    post:
      tags:
        - ignored-service-ids
      summary: Create new ignored service-id record
      operationId: createIgnoredServiceId
      x-si-permissions:
        - CREATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      requestBody:
        description: New ignored service-id record
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IgnoredServiceId'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredServiceId'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    head:
      tags:
        - ignored-service-ids
      summary: Check if ignored service-id record exists
      operationId: checkIgnoredServiceId
      x-si-response-headers: true
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: serviceId
          in: query
          description: Check by service-id
          schema:
            $ref: '#/components/schemas/StringFilterParam'
          required: false
      responses:
        '200':
          description: Exists
          content: {}
          headers:
            X-Total-Count:
              schema:
                type: integer
                description: Total number of ignored service ids
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
  /ignored-service-ids/{ignored_service_id_record_id}:
    get:
      tags:
        - ignored-service-ids
      summary: Get a specific ignored service-id record by its id
      operationId: getIgnoredServiceId
      x-si-permissions:
        - VIEW_REFERENCE_DATA_MANAGEMENT
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_service_id_record_id
          in: path
          description: Ignored service-id record identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: OK (Ignored service-id record found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredServiceId'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    patch:
      tags:
        - ignored-service-ids
      summary: Update Ignored Service Id
      operationId: updateIgnoredServiceId
      x-si-permissions:
        - UPDATE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_service_id_record_id
          in: path
          description: Ignored Service Id identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      requestBody:
        description: Updated Ignored Service Id
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IgnoredServiceId'
        required: true
      responses:
        '200':
          description: OK (Ignored Service Id was updated)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IgnoredServiceId'
        '400':
          description: Bad Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '412':
          description: Precondition Failed
          content: {}
        '500':
          description: Internal Server Error
          content: {}
    delete:
      tags:
        - ignored-service-ids
      summary: Delete Ignored Service Id
      operationId: deleteIgnoredServiceId
      x-si-permissions:
        - DELETE_REFERENCE_DATA_MANAGEMENT
      x-si-apply-impact-of-change: true
      security:
        - bearerAuth: []
      parameters:
        - name: ignored_service_id_record_id
          in: path
          description: Ignored Service Id identifier
          required: true
          schema:
            $ref: '#/components/schemas/IdParam'
      responses:
        '200':
          description: OK (Ignored Service Id was deleted)
          content: {}
        '400':
          description: Invalid Request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '403':
          description: Forbidden
          content: {}
        '404':
          description: Not Found
          content: {}
        '500':
          description: Internal Server Error
          content: {}
components:
  schemas:
    CurrencyRate:
      required:
        - sourceCurrencyId
        - targetCurrencyId
        - exchangeRate
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier of currency rate
          readOnly: true
          format: int64
          example: 1
        sourceCurrencyId:
          type: integer
          description: Identifier of currency that is being converted from
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        targetCurrencyId:
          type: integer
          description: Identifier of currency that is being converted to
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        exchangeRate:
          description: >-
            Exchange rate from source currency to target currency in major
            currency (e.g pounds/dollars/euros) unit. For example, from
            Argentina Peso to GBP is 446.2497
          type: number
          example: 446.2497
        startDate:
          description: Start date
          type: string
          format: date
        endDate:
          description: End date
          type: string
          format: date
    Currency:
      required:
        - name
        - code
        - majorCurrencyName
        - minorCurrencyName
      type: object
      properties:
        id:
          type: integer
          description: Internal identifier of currency
          readOnly: true
          format: int64
          example: 1
        name:
          type: string
          description: Currency name
          minLength: 1
          maxLength: 30
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        code:
          type: string
          description: Currency code
          minLength: 1
          maxLength: 3
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        majorCurrencyName:
          type: string
          description: Major currency name, e.g. pounds
          minLength: 1
          maxLength: 10
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        minorCurrencyName:
          type: string
          description: Minor currency name, e.g. pence
          minLength: 1
          maxLength: 10
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
    ChargeGroup:
      required:
        - name
        - chargeGroupCategoryId
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier of charge group
          readOnly: true
          format: int64
          example: 1
        name:
          type: string
          description: Charge group name
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        chargeGroupCategoryId:
          type: integer
          description: Identifier of category that this charge group belongs to
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        type:
          $ref: '#/components/schemas/ChargeGroupType'
        startDate:
          type: string
          format: date
          description: Date this charge group applies from
        endDate:
          type: string
          format: date
          description: Date this charge group applies to
        requiresAccessCharge:
          type: boolean
          description: Indicates that this charge group has an access charge
          default: false
        dontShowOnItemisation:
          type: boolean
          description: >-
            Indicator to control charges from this charge group showing on
            itemisation or not
          default: false
        applicableForDrcVat:
          type: boolean
          description: >-
            Indicates that charges in this charge group are applicable for VAT
            DRC (Domestic Reverse Charge)
          default: false
        applyUsageCap:
          type: boolean
          description: Indicator to control whether a usage cap should be applied or not
          default: false
        taxBandId:
          type: integer
          description: Identifier of tax band to apply for this charge group
          format: int64
          x-si-validation: '@ValidId'
          example: 1
    ChargeGroupType:
      type: string
      description: Type of charge group i.e. NATIONAL, LOCAL or GENERAL
      enum:
        - NATIONAL
        - LOCAL
        - GENERAL
    ChargeGroupCategory:
      required:
        - chargingUnitType
        - name
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier of charge group category
          readOnly: true
          format: int64
          example: 1
        name:
          type: string
          description: Charge group category name
          minLength: 1
          maxLength: 50
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        chargingUnitType:
          $ref: '#/components/schemas/ChargingUnitType'
        startDate:
          type: string
          format: date
          description: Date this charge group category applies from
        endDate:
          type: string
          format: date
          description: Date this charge group category applies to
    ChargingUnitType:
      type: string
      description: Charging unit i.e. duration or data (MB) or one off
      enum:
        - DURATION
        - MB
        - ONE_OFF
    CallClass:
      required:
        - callClass
        - referenceDataSourceChargeGroupId
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier of call class
          readOnly: true
          format: int64
          example: 1
        callClass:
          type: string
          description: Call class
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        referenceDataSourceChargeGroupId:
          type: integer
          description: >-
            Identifier of reference data source charge group that this call
            class relates to
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        startDate:
          type: string
          format: date
          description: Date this call class applies from
        endDate:
          type: string
          format: date
          description: Date this call class applies to
    ReferenceDataSource:
      required:
        - name
        - locale
        - siMaintained
      type: object
      properties:
        id:
          type: integer
          description: Internal identifier of reference data source
          readOnly: true
          format: int64
          example: 1
        name:
          type: string
          description: Reference data source name
          minLength: 1
          maxLength: 50
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        locale:
          $ref: '#/components/schemas/Locale'
        siMaintained:
          type: boolean
          description: >-
            Indicates if this reference data source can be managed externally
            (false) or only by Strategic Imperatives (true)
    ReferenceDataSourceChargeGroup:
      required:
        - name
        - code
        - chargeGroupId
        - referenceDataSourceId
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier of reference data source charge group
          readOnly: true
          format: int64
          example: 1
        name:
          type: string
          description: Name of the reference data source charge group
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        code:
          type: string
          description: Reference data source charge group code
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        chargeGroupId:
          type: integer
          description: Identifier of the linked charge group
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        referenceDataSourceId:
          type: integer
          description: Identifier of the linked reference data source
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        startDate:
          type: string
          format: date
          description: Date this reference data source charge group applies from
        endDate:
          type: string
          format: date
          description: Date this reference data source charge group applies to
    Dialstring:
      required:
        - dialstring
        - referenceDataSourceChargeGroupId
        - startDate
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: Internal identifier for dialstring
          readOnly: true
          format: int64
          example: 1
        dialstring:
          type: string
          description: Dialstring prefix
          minLength: 2
          maxLength: 15
          pattern: '[0-9]+'
        referenceDataSourceChargeGroupId:
          type: integer
          description: Identifier of the linked reference data source charge group
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        startDate:
          type: string
          format: date
          description: Date this dialstring applies from
        endDate:
          type: string
          format: date
          description: Date this dialstring applies to
    TaxBand:
      required:
        - name
        - code
        - defaultBand
      type: object
      properties:
        id:
          type: integer
          description: Internal identifier of tax band
          readOnly: true
          format: int64
          example: 1
        code:
          type: string
          description: >-
            Default tax code for this band e.g. T1 for standard UK rated
            transactions
          minLength: 1
          maxLength: 30
          pattern: T[0-9]+
        name:
          type: string
          description: Name of the tax band
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        defaultBand:
          type: boolean
          description: Specifies this is the default tax band to use
        usedForEtc:
          type: boolean
          description: Specifies this tax band is used for early termination charges
          default: false
    ReferenceDataSummary:
      type: object
      properties:
        chargeGroupId:
          type: integer
          description: Internal identifier of charge group
          readOnly: true
          format: int64
          example: 1
        chargeGroupName:
          type: string
          description: Charge group name
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        chargeGroupStartDate:
          type: string
          format: date
          description: Date this charge group applies from
        chargeGroupEndDate:
          type: string
          format: date
          description: Date this charge group applies to
        chargeGroupCategoryId:
          type: integer
          description: Internal identifier of charge group category
          readOnly: true
          format: int64
          example: 1
        chargeGroupCategoryName:
          type: string
          description: Charge group category name
          minLength: 1
          maxLength: 50
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        chargeGroupCategoryChargingUnitType:
          $ref: '#/components/schemas/ChargingUnitType'
        chargeGroupCategoryStartDate:
          type: string
          format: date
          description: Date this charge group category applies from
        chargeGroupCategoryEndDate:
          type: string
          format: date
          description: Date this charge group category applies to
        referenceDataSourceId:
          type: integer
          description: Internal identifier of reference data source
          readOnly: true
          format: int64
          example: 1
        referenceDataSourceName:
          type: string
          description: Reference data source name
          minLength: 1
          maxLength: 50
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        referenceDataSourceChargeGroupId:
          type: integer
          description: Internal identifier of reference data source charge group
          readOnly: true
          format: int64
          example: 1
        referenceDataSourceChargeGroupName:
          type: string
          description: Name of the reference data source charge group
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        referenceDataSourceChargeGroupStartDate:
          type: string
          format: date
          description: Date this reference data source charge group applies from
        referenceDataSourceChargeGroupEndDate:
          type: string
          format: date
          description: Date this reference data source charge group applies to
        callClassId:
          type: integer
          description: Internal identifier of call class
          readOnly: true
          format: int64
          example: 1
        callClass:
          type: string
          description: Call class
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
        callClassStartDate:
          type: string
          format: date
          description: Date this call class applies from
        callClassEndDate:
          type: string
          format: date
          description: Date this call class applies to
        dialstringId:
          type: integer
          description: Internal identifier for dialstring
          readOnly: true
          format: int64
          example: 1
        dialstring:
          type: string
          description: Dialstring prefix
          minLength: 2
          maxLength: 15
          pattern: '[0-9]+'
        dialstringStartDate:
          type: string
          format: date
          description: Date this dialstring applies from
        dialstringEndDate:
          type: string
          format: date
          description: Date this dialstring applies to
    ReferenceDataSummaryType:
      description: Reference data summary type
      type: string
      enum:
        - CALL_CLASS
        - DIALSTRING
        - CHARGE_GROUP
    IgnoredCallClass:
      required:
        - callClass
      type: object
      x-si-class-validation: |
        @After(first = "endDate", second = "startDate")
      properties:
        id:
          type: integer
          description: >-
            Internal identifier of ignored call class, it MAY be sent as part of
            a response but it will be ignored in case of the request
          readOnly: true
          format: int64
          example: 1
        callClass:
          type: string
          description: Ignored call class name
          minLength: 1
          maxLength: 255
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
          example: Call class name
        startDate:
          type: string
          format: date
          description: >-
            Date this ignored call class applies from. The value is today if it
            wasn't specified
        endDate:
          type: string
          format: date
          description: Date this ignored call class applies to
    IgnoredServiceId:
      required:
        - serviceId
      type: object
      properties:
        id:
          type: integer
          description: >-
            Internal identifier of new ignored service-id record, it MAY be sent
            as part of a response but it will be ignored in case of the request
          readOnly: true
          format: int64
          example: 1
        serviceId:
          type: string
          description: The service-id that is ignored
          minLength: 1
          maxLength: 50
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
          example: Service Id
    PageParam:
      description: Page of results to show
      minimum: 1
      type: integer
      format: int32
      example: 1
    ResultsPerPageParam:
      description: Results to return per page
      maximum: 1000
      minimum: 1
      type: integer
      format: int32
      example: 100
    SortParam:
      description: >-
        Comma-delimited list of the fields to sort by - defaults to ascending
        order, suffix :desc to change
      example: id,name | name:desc
      type: string
    FieldsParam:
      description: >-
        Comma-delimited list of the field(s) to return if only a subset is
        required
      example: id,name
      type: string
    CountryCode:
      description: ISO 3166 alpha-2 code representing country
      type: string
      minLength: 2
      maxLength: 2
      pattern: '[A-Z]{2}'
      example: GB
    Country:
      required:
        - code
        - name
      type: object
      properties:
        code:
          $ref: '#/components/schemas/CountryCode'
        name:
          type: string
          description: Name of country
          minLength: 1
          maxLength: 50
          example: United Kingdom
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
    CurrencyCode:
      description: ISO 4217 3-character currency code
      type: string
      minLength: 3
      maxLength: 3
      pattern: '[A-Z]{3}'
      example: GBP
    schemas-Currency:
      required:
        - code
        - symbol
        - majorCurrencyName
        - minorCurrencyName
        - majorCurrencyFormat
        - minorCurrencyFormat
        - salesTaxName
      type: object
      properties:
        id:
          type: integer
          description: Internal identifier for currency entry
          readOnly: true
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        code:
          $ref: '#/components/schemas/CurrencyCode'
        symbol:
          type: string
          description: Currency symbol
          minLength: 1
          maxLength: 1
        majorCurrencyName:
          type: string
          description: Name of major currency
          minLength: 1
          maxLength: 10
          pattern: '[a-zA-Z]+'
        minorCurrencyName:
          type: string
          description: Name of minor currency
          minLength: 1
          maxLength: 10
          pattern: '[a-zA-Z]+'
        majorCurrencyFormat:
          type: string
          description: Format to use when displaying major currency
          minLength: 1
          maxLength: 20
          pattern: '[a-zA-Z0-9\\p{L}\\s\\+\\/\\-\\._\\&amp;#=,:@()$£€]*'
        minorCurrencyFormat:
          type: string
          description: Format to use when displaying minor currency
          minLength: 1
          maxLength: 20
          pattern: '[a-zA-Z0-9\\p{L}\\s\\+\\/\\-\\._\\&amp;#=,:@()$£€]*'
        salesTaxName:
          type: string
          description: Name used for sales tax in this currency
          minLength: 1
          maxLength: 20
          pattern: '[\w\p{L}\s%£@&#='':;`’,|!_—–\(\)\\/\-\+\.\?\*\$]*'
    Locale:
      required:
        - country
        - currency
      type: object
      properties:
        id:
          type: integer
          description: Internal identifier for locale entry
          readOnly: true
          format: int64
          x-si-validation: '@ValidId'
          example: 1
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/schemas-Currency'
    IdParam:
      description: Identifier
      minimum: 1
      type: integer
      format: int64
      example: 1
    StringFilterParam:
      description: >-
        Filter by this string value where value can optionally be prefixed
        (in:|like:)
      example: xyz | in:x,y | like:xyz
      type: string
    IdFilterParam:
      description: Filter by this numeric id value
      example: '0'
      type: string
    DateFilterParam:
      description: >-
        Filter by this date value where value can optionally be prefixed
        (gt:|lt:|gtn:|gen:)
      example: yyyy-MM-dd | lt:yyyy-MM-dd | gt:yyyy-MM-dd | gtn:yyyy-MM-dd
      type: string
    PatchDocument:
      description: A JSONPatch document as defined by RFC 6902
      required:
        - op
        - path
      type: object
      properties:
        op:
          type: string
          description: The JSON Patch operation to be performed
          x-si-exclude: true
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
        path:
          type: string
          description: A JSON-Pointer
        value:
          type: object
          properties: {}
          description: The value to be used within the operations
        from:
          type: string
          description: A string containing a JSON Pointer value
    PatchRequest:
      type: array
      description: >-
        JSON Patch is a format for describing changes to a JSON document as
        specified in RFC 6902. Refer to [jsonpatch.com](http://jsonpatch.com/)
        for more information
      items:
        $ref: '#/components/schemas/PatchDocument'
    BooleanFilterParam:
      description: Filter by this boolean value (true or false)
      example: true | false
      type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  parameters:
    page:
      name: page
      in: query
      description: Page of results to show
      schema:
        $ref: '#/components/schemas/PageParam'
      required: true
    pageSize:
      name: pageSize
      description: Results to return per page
      in: query
      schema:
        $ref: '#/components/schemas/ResultsPerPageParam'
      required: true
    sort:
      name: sort
      in: query
      description: >-
        Comma-delimited list of the fields to sort by - defaults to ascending
        order, suffix :desc to change
      schema:
        $ref: '#/components/schemas/SortParam'
      required: false
    fields:
      name: fields
      in: query
      description: >-
        Comma-delimited list of the field(s) to return if only a subset is
        required
      schema:
        $ref: '#/components/schemas/FieldsParam'
      required: false
