openapi: 3.0.1
info:
  title: ABTCustomerReference
  version: '1.0'
servers:
  - url: https://services.acc.api.htm.nl/abt/customerreference/1.0
security:
  - default: []
tags:
  - name: ABTCustomerReference
paths:
  /directdebitmandatetype:
    get:
      tags:
        - ABTCustomerReference
      summary: List of direct debit mandate types
      description: gives list of direct debit mandate types
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of direct debit mandate types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/directDebitMandateTypes'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /phonetype:
    get:
      tags:
        - ABTCustomerReference
      summary: List of phone types
      description: gives list of phone types
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of phoneTypes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/phoneTypes'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    post:
      tags:
        - ABTCustomerReference
      summary: Create a phone type
      description: Create a phone type with a specific value
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/phoneType'
        required: true
      responses:
        '201':
          description: Successful created a new phone type
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 1
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /phonetype/{phoneTypeId}:
    put:
      tags:
        - ABTCustomerReference
      summary: Update a phone type
      description: Update an existing phone type with a specific value
      parameters:
        - name: phoneTypeId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
            format: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/phoneType'
        required: true
      responses:
        '202':
          description: Successful updated an existing a phone type
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 1
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      tags:
        - ABTCustomerReference
      summary: Remove a phone type
      description: Remove an existing phone type with a specific value
      parameters:
        - name: phoneTypeId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
            format: integer
      responses:
        '202':
          description: Successful removed a phone type
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/404ResponseId'
                  - $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /addresstype:
    get:
      tags:
        - ABTCustomerReference
      summary: List of address types
      description: gives list of address types
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of addressTypes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/addressTypes'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /customerstatus:
    get:
      tags:
        - ABTCustomerReference
      summary: List of customer status
      description: gives list of customer status
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of customer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/customerStatus'
              example:
                Entries:
                  - customerStatusId: 1
                    name: Inactive
                  - customerStatusId: 2
                    name: Active
                  - customerStatusId: 3
                    name: Blocked
                  - customerStatusId: 4
                    name: Frozen
                  - customerStatusId: 5
                    name: Cleared
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /tokentype:
    get:
      tags:
        - ABTCustomerReference
      summary: List of token types
      description: gives list of token types
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of customer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tokenType'
              example:
                Entries:
                  - tokenTypeId: 1
                    name: Debit card
                  - tokenTypeId: 2
                    name: Credit card
                  - tokenTypeId: 3
                    name: OVPas physical
                  - tokenTypeId: 4
                    name: OVPas digital
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /customerreferences:
    get:
      tags:
        - ABTCustomerReference
      summary: List of all possible customer reference values
      description: gives list of all possible customer reference values availbale
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of all possible customer reference values
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/customerReferences'
              example:
                Entries:
                  phoneTypes:
                    - name: Mobiel
                      id: 1
                    - name: Thuis
                      id: 2
                    - name: Ouders
                      id: 3
                    - name: Bewindvoerder
                      id: 4
                    - name: Home
                      id: 5
                    - name: Mobile
                      id: 6
                    - name: Work
                      id: 7
                    - name: Noodtelefoon
                      id: 8
                  addressTypes:
                    - name: Shipping
                      id: 1
                    - name: Billing
                      id: 2
                  customerStatuses:
                    - name: Inactive
                      id: 1
                    - name: Active
                      id: 2
                    - name: Blocked
                      id: 3
                    - name: Frozen
                      id: 4
                    - name: Cleared
                      id: 5
                  tokenTypes:
                    - name: EMV
                      id: 1
                    - name: OVPas physical
                      id: 2
                    - name: OVPas digital
                      id: 3
                  directDebitMandateTypes:
                    - name: Paper Contract
                      id: 1
                    - name: PIN transaction
                      id: 2
                    - name: SEPA eMandate
                      id: 3
                    - name: Digital signature
                      id: 4
                    - name: IDEAL transaction
                      id: 5
                  tokenStatuses:
                    - name: Expired
                      id: 1
                    - name: Active
                      id: 2
                    - name: Replaced
                      id: 3
                    - name: Inactive
                      id: 4
                    - name: Suspended
                      id: 5
                    - name: Removed by customer
                      id: 6
                  debtorStatuses:
                    - name: Inactive
                      id: 1
                    - name: Active
                      id: 2
                  languages:
                    - id: 1
                      name: Nederlands
                      ietfCode: nl-Nl
                      iso639Code: nl
                    - id: 2
                      name: English
                      ietfCode: en-US
                      iso639Code: en
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /tokenstatus:
    get:
      tags:
        - ABTCustomerReference
      summary: List of all token status
      description: gives list of all token statuses
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of customer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/language'
              example:
                Entries:
                  - tokenStatusId: 1
                    name: Expired
                  - tokenStatusId: 2
                    name: Active
                  - tokenStatusId: 3
                    name: Replaced
                  - tokenStatusId: 4
                    name: Inactive
                  - tokenStatusId: 5
                    name: Suspended
                  - tokenStatusId: 6
                    name: Removed by customer
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /language:
    get:
      tags:
        - ABTCustomerReference
      summary: List of all languages
      description: gives list of all languages
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of languages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/language'
              example:
                Entries:
                  - languageId: 1
                    name: Expired
                    ietfCode: nl-NL
                    iso639Code: nl
                  - languageId: 2
                    name: Expired
                    ietfCode: en-US
                    iso639Code: en
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /debtorstatus:
    get:
      tags:
        - ABTCustomerReference
      summary: List of all debtorstatuses
      description: gives list of all debtorstatuses
      parameters: []
      responses:
        '200':
          description: Successful retrieved list of debtorstatuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tokenStatus'
              example:
                Entries:
                  - debtorStatusId: 1
                    name: Inactive
                  - debtorStatusId: 2
                    name: Active
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
components:
  schemas:
    directDebitMandateTypeList:
      type: array
      items:
        properties:
          directDebitMandateTypeId:
            type: integer
            example: 1
          name:
            type: string
            example: name
    directDebitMandateType:
      properties:
        name:
          type: string
          example: name
        id:
          type: integer
          example: 1
    directDebitMandateTypes:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/directDebitMandateTypeList'
    phoneType:
      properties:
        name:
          type: string
          example: name
    phoneTypeIdList:
      type: array
      items:
        properties:
          phoneTypeId:
            type: integer
            example: 123
          name:
            type: string
            example: name
    phoneTypes:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/phoneTypeIdList'
    addressType:
      properties:
        name:
          type: string
          example: name
    addressTypeIdList:
      type: array
      items:
        properties:
          addressTypeId:
            type: integer
            example: 123
          name:
            type: string
            example: name
    addressTypes:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/addressTypeIdList'
    customerStatuses:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/customerStatusIdList'
    customerStatusIdList:
      type: array
      items:
        properties:
          customerStatusId:
            type: integer
          name:
            type: string
    customerStatus:
      properties:
        name:
          type: string
          example: name
    tokenTypes:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/customerStatusIdList'
    tokenTypeIdList:
      type: array
      items:
        properties:
          tokenTypeId:
            type: integer
          name:
            type: string
    tokenType:
      properties:
        name:
          type: string
          example: name
    tokenStatuses:
      type: object
      properties:
        Entries:
          $ref: '#/components/schemas/customerStatusIdList'
    tokenStatusIdList:
      type: array
      items:
        properties:
          tokenStatusId:
            type: integer
          name:
            type: string
    tokenStatus:
      properties:
        tokenStatusId:
          type: integer
          example: 1
        name:
          type: string
          example: name
    debtorStatus:
      properties:
        debtorStatusId:
          type: integer
          example: 1
        name:
          type: string
          example: name
    language:
      properties:
        languageId:
          type: integer
          example: 1
        name:
          type: string
          example: name
        ietfCode:
          type: string
          example: nl-NL
        iso639Code:
          type: string
          example: nl
    customerReferences:
      type: object
      properties:
        Entries:
          oneOf:
            - $ref: '#/components/schemas/addressType'
            - $ref: '#/components/schemas/phoneType'
            - $ref: '#/components/schemas/customerStatus'
            - $ref: '#/components/schemas/tokenType'
            - $ref: '#/components/schemas/directDebitMandateType'
            - $ref: '#/components/schemas/tokenStatus'
    400Response:
      type: object
      properties:
        code:
          type: string
          example: '400'
        type:
          type: string
        message:
          type: string
          example: Bad Request
        description:
          type: string
          example: '''2023-02-01 00:00:00'' is not a valid Datetime'
    401Response:
      type: object
      properties:
        code:
          type: string
          example: '900901'
        type:
          type: string
        message:
          type: string
          example: Invalid Credentials
        description:
          type: string
          example: >-
            Invalid Credentials. Make sure you have provided the correct
            security credentials
    404Response:
      type: object
      properties:
        code:
          type: string
          example: '404'
        type:
          type: string
          example: Status report
        message:
          type: string
          example: Not Found
        description:
          type: string
          example: The requested resource is not available.
    404ResponseId:
      type: object
      properties:
        error:
          type: string
          example: 'No record found for id: 5'
    500Response:
      type: object
      properties:
        code:
          type: string
          example: '500'
        type:
          type: string
        message:
          type: string
          example: Internal Server Error
        description:
          type: string
  securitySchemes:
    default:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://services.dev.api.htm.nl/authorize
          scopes: {}
