openapi: 3.0.1
info:
  title: ABTCustomers
  version: '1.0'
servers:
  - url: https://services.acc.api.htm.nl/abt/abtcustomers/1.0
security:
  - default: []
tags:
  - name: ABTCustomers
  - name: ABTCustomersSelfService
  - name: ABTCustomersFinancials
  - name: ABTCustomersFinancialsSelfService
paths:
  /customers/{customerNumber}/financials/directdebitmandates/{directDebitMandateId}:
    patch:
      tags:
        - ABTCustomersFinancials
      summary: Modify direct debit mandate information for a customer profile.
      description: Modify direct debit mandate for a customer profile.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: directDebitMandateId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/directDebitMandatePatch'
            examples:
              updateFullDirectDebitMandate:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference
                    mandateState: SIGNED
              updateDirectDebitMandateType:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
              updateBillingInformationId:
                value:
                  directDebitMandate:
                    billingInformationId: 2
              updateMandateReference:
                value:
                  directDebitMandate:
                    mandateReference: Updated Reference
              updateMandateState:
                value:
                  directDebitMandate:
                    mandateState: PREPARED
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/patchCustomerProfileCustomerNumberResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /customers/{customerNumber}/financials/billinginformation/{billingInformationId}:
    patch:
      tags:
        - ABTCustomersFinancials
      summary: Modify billing information for a customer profile.
      description: Modify billing information for a customer profile.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: billingInformationId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/billingInformationPatch'
            examples:
              updateFullBillingInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    bic: ING
                    ascription: Dit is een Test
                    alias: Alias Test               
              updateIban:
                value:
                  billingInformation:
                    iban: '0987654321'
              updateBic:
                value:
                  billingInformation:
                    bic: DEUT
              updateAscription:
                value:
                  billingInformation:
                    ascription: Updated Ascription
              updateAlias:
                value:
                  billingInformation:
                    alias: Updated Alias
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/patchCustomerProfileCustomerNumberResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /customers/{customerNumber}/financials/billinginformation:
    post:
      tags:
        - ABTCustomersFinancials
      summary: Create billing information for a customer profile.
      description: Create billing information for a customer profile.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/billingInformationPost'
            examples:
              fullFinancialInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    bic: ING
                    ascription: Dit is een Test
                    alias: Alias Test 
              minimumBillingInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    ascription: Dit is een Test
                    alias: Alias Test    
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/postCustomerProfileBillingInformationResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /customers/{customerNumber}/financials/directdebitmandates:
    post:
      tags:
        - ABTCustomersFinancials
      summary: Create direct debit mandate for a customer profile.
      description: Create direct debit mandate for a customer profile.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/directDebitMandatePost'
            examples:
              fullFinancialInformation:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference
              minimumdirectDebitMandate:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/postCustomerProfileDirectDebitMandateResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /customers/{customerNumber}/financials:
    get:
      tags:
        - ABTCustomersFinancials
      summary: Search for customer profile financial information
      description: 'search for a customer profile in the ABT database with query parameters '
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '200':
          description: Successful retrieved a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfileFinancials'
              examples:
                fullFinancialInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation:
                      - billingInformationId: 1
                        iban: '1234567890'
                        bic: ING
                        ascription: Dit is een Test
                        alias: Alias Test                        
                        created: "2024-06-02T15:03:460"
                      - billingInformationId: 2
                        iban: '0987654321'
                        bic: null
                        ascription: Dit is een Test
                        alias: Alias Test                        
                        created: "2024-06-02T15:03:460"
                    directDebitMandate:
                      - directDebitMandateId: 1
                        directDebitMandateTypeName: PIN Transaction
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference
                        mandateState: SIGNED
                        updateTimestamp: '2024-01-01T00:00:00.000'
                      - directDebitMandateId: 2
                        directDebitMandateTypeName: Paper Contract
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference
                        mandateState: CANCELLED
                        updateTimestamp: '2024-01-01T00:00:00.000'
                missingBillingInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation: []
                    directDebitMandate:
                      - directDebitMandateId: 1
                        directDebitMandateTypeName: PIN transaction
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference                        
                        updateTimestamp: '1900-01-01T00:00:00.000'
                      - directDebitMandateId: 2
                        directDebitMandateTypeName: Paper Contract
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference                        
                        updateTimestamp: '1900-01-01T00:00:00.000'
                missingDebitMandateInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation:
                      - billingInformationId: 1
                        iban: '1234567890'
                        bic: ING
                        ascription: Dit is een Test
                        alias: Alias Test                        
                        created: "2024-06-02T15:03:460"
                      - billingInformationId: 2
                        iban: '0987654321'
                        bic: null                       
                        ascription: Dit is een Test
                        alias: Alias Test                        
                        created: "2024-06-02T15:03:460"
                    directDebitMandate: []
                minimumFinancialInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation: []
                    directDebitMandate: []
        '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
  /selfservice/customers/{customerNumber}/financials/directdebitmandates/{directDebitMandateId}:
    patch:
      tags:
        - ABTCustomersFinancialsSelfService
      summary: Modify direct debit mandate information for a customer profile.
      description: Modify direct debit mandate for a customer profile.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: directDebitMandateId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/directDebitMandatePatch'
            examples:
              updateFullDirectDebitMandate:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference
                    mandateState: SIGNED
              updateDirectDebitMandateType:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1                 
              updateBillingInformationId:
                value:
                  directDebitMandate:
                    billingInformationId: 2
              updateMandateReference:
                value:
                  directDebitMandate:
                    mandateReference: Updated Reference
              updateMandateState:
                value:
                  directDebitMandate:
                    mandateState: PREPARED
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/patchCustomerProfileCustomerNumberResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /selfservice/customers/{customerNumber}/financials/billinginformation/{billingInformationId}:
    patch:
      tags:
        - ABTCustomersFinancialsSelfService
      summary: Modify billing information for a customer profile.
      description: Modify billing information for a customer profile.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: billingInformationId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/billingInformationPatch'
            examples:
              updateFullBillingInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    bic: ING
                    ascription: Dit is een Test
                    alias: Alias Test 
              updateIban:
                value:
                  billingInformation:
                    iban: '0987654321'
              updateBic:
                value:
                  billingInformation:
                    bic: DEUT
              updateAscription:
                value:
                  billingInformation:
                    ascription: Updated Ascription
              updateAlias:
                value:
                  billingInformation:
                    alias: Updated Alias
              updateBillingAddressId:
                value:
                  billingInformation:
                    billingAddressId: 3
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/patchCustomerProfileCustomerNumberResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /selfservice/customers/{customerNumber}/financials/billinginformation:
    post:
      tags:
        - ABTCustomersFinancialsSelfService
      summary: Create billing information for a customer profile.
      description: Create billing information for a customer profile.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/billingInformationPost'
            examples:
              fullFinancialInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    bic: ING
                    ascription: Dit is een Test
                    alias: Alias Test
                    billingAddressId: 2
              minimumBillingInformation:
                value:
                  billingInformation:
                    iban: '1234567890'
                    ascription: Dit is een Test
                    alias: Alias Test
                    billingAddressId: 2
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/postCustomerProfileBillingInformationResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /selfservice/customers/{customerNumber}/financials/directdebitmandates:
    post:
      tags:
        - ABTCustomersFinancialsSelfService
      summary: Create direct debit mandate for a customer profile.
      description: Create direct debit mandate for a customer profile.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/directDebitMandatePost'
            examples:
              fullFinancialInformation:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference 
              minimumdirectDebitMandate:
                value:
                  directDebitMandate:
                    directDebitMandateTypeId: 1
                    billingInformationId: 1
                    mandateReference: Dit is een test Reference  
        required: true
      responses:
        '201':
          description: Successful created financial information for a customer profile.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/postCustomerProfileDirectDebitMandateResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '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
  /selfservice/customers/{customerNumber}/financials:
    get:
      tags:
        - ABTCustomersFinancialsSelfService
      summary: Search for customer profile financial information
      description: 'search for a customer profile in the ABT database with query parameters '
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '200':
          description: Successful retrieved a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfileFinancials'
              examples:
                fullFinancialInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation:
                      - billingInformationId: 1
                        iban: '1234567890'
                        bic: ING
                        ascription: Dit is een Test
                        alias: Alias Test
                        billingAddressId: 2
                        created: '2024-01-01T00:00:00.000'
                      - billingInformationId: 2
                        iban: '0987654321'
                        bic: null
                        ascription: Dit is een Test
                        alias: Alias Test
                        billingAddressId: 3
                        created: '2024-01-01T00:00:00.000'
                    directDebitMandate:
                      - directDebitMandateId: 1
                        directDebitMandateTypeName: PIN transaction
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference
                        mandateState: SIGNED
                        updateTimestamp: '2024-01-01T00:00:00.000'
                      - directDebitMandateId: 2
                        directDebitMandateTypeName: Paper Contract
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference
                        mandateState: CANCELLED
                        updateTimestamp: '2024-01-01T00:00:00.000'
                missingBillingInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation: []
                    directDebitMandate:
                      - directDebitMandateId: 1
                        directDebitMandateTypeName: PIN transaction
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference                        
                        updateTimestamp: '1900-01-01T00:00:00.000'
                      - directDebitMandateId: 2
                        directDebitMandateTypeName: Paper Contract
                        billingInformationId: 1
                        created: '1900-01-01T00:00:00.000'
                        mandateReference: Dit is een test Reference                        
                        updateTimestamp: '1900-01-01T00:00:00.000'
                missingDebitMandateInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation:
                      - billingInformationId: 1
                        iban: '1234567890'
                        bic: ING
                        ascription: Dit is een Test
                        alias: Alias Test                        
                        created: "2024-06-02T15:03:460"
                      - billingInformationId: 2
                        iban: '0987654321'
                        bic: null
                        ascription: Dit is een Test
                        alias: Alias Test
                        created: "2024-06-02T15:03:460"
                    directDebitMandate: []
                minimumFinancialInformation:
                  value:
                    customerNumber: 1000003
                    billingInformation: []
                    directDebitMandate: []
        '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
  /customers/list:
    get:
      tags:
        - ABTCustomers
      summary: Search for customer profile list
      description: >-
        search for a customer profile list in the ABT database with query
        parameters 
      parameters:
        - name: customerProfileId
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: customerNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: emailAddress
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: chipCardNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: ovPasNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: phoneNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: phoneCountryCode
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressStreet
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressHouseNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: addressHouseNumberSuffix
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressPostalCode
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressCity
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressCountry
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: birthname
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: surname
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: dateOfBirth
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: customerStatus
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description: Successful retrieved a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfileList'
              examples:
                fullCustomerProfile:
                  value:
                    Entries:
                      - customerProfileId: 1
                        customerNumber: 1000001
                        debtorNumber: TEST001
                        debtorStateId: 1
                        vascustomerNumber: CST005
                        customerPreference:
                          languageId: 1
                        customerStatus:
                          - name: active
                            fromInclusive: '2022-08-04 15:01:00.000'
                            toInclusive: '2022-08-05 15:01:00.000'
                          - name: blocked
                            fromInclusive: '2022-08-05 15:01:00.000'
                            toInclusive: null
                        person:
                          birthname: Pieter
                          surname: De valen
                          prefix: dhr
                          suffix: De
                          dateOfBirth: '2002-10-29'
                          emailAddress: TEST@HTM.NL
                          address:
                            - addressId: 1
                              street: mystreet
                              houseNumber: 1
                              houseNumberSuffix: null
                              postalCode: 0000AA
                              city: Den Haag
                              country: NL
                              addressType: Billing
                            - addressId: 2
                              street: mystreet 33
                              houseNumber: 1
                              houseNumberSuffix: null
                              postalCode: 4455CA
                              city: Den BOSCH
                              country: NL
                              addressType: Shipping
                          phone:
                            - phoneId: 1
                              number: '3112345678'
                              countryCode: NL
                              phoneType: TestNaam
                              isPreferred: true
                            - phoneId: 2
                              number: '333225588'
                              countryCode: ES
                              phoneType: TestNaam
                              isPreferred: false
                          ovChipCard:
                            - ovChipCardId: 1
                              chipCardNumber: 1234123412341234
                              validUntil: '2023-01-01'
                              alias: alias
                            - ovChipCardId: 2
                              chipCardNumber: 1234123412341235
                              validUntil: '2025-01-01'
                              alias: alias
                          ovPayToken:
                            - ovPayTokenId: 126
                              tokenTypeId: 1
                              xTat: twioq73033
                              xBot: hjihwqui27
                              alias: alias
                              lastDigits: '5678'
                              ovpasNumber: OV34567
                              tokenStatusId: 1
                              expirationDate: '2025-04-20T17:05:52.000+02:00'
                              replacedByTokenId: 1
                            - ovPayTokenId: 127
                              tokenTypeId: 1
                              xTat: hhe2830283
                              xBot: jdhd828033
                              alias: alias
                              lastDigits: '5674'
                              ovpasNumber: OV34568
                              tokenStatusId: 1
                              expirationDate: '2024-04-20T17:05:52.000+02:00'
                              replacedByTokenId: 2
                          audit:
                            - auditTrailId: 1
                              customerProfileId: 1
                              action: insert
                              user: user
                              timestamp: '2023-10-20T17:05:52.000+02:00'
                              correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
                      - customerNumber: 1000002
                        debtorNumber: TEST001
                        debtorStateId: 1
                        vascustomerNumber: CST005
                        customerPreference:
                          languageId: 1
                        customerStatus:
                          - name: active
                            fromInclusive: '2022-08-04 15:01:00.000'
                            toInclusive: '2022-08-05 15:01:00.000'
                          - name: blocked
                            fromInclusive: '2022-08-05 15:01:00.000'
                            toInclusive: null
                        person:
                          birthname: Pieter
                          surname: De valen
                          prefix: dhr
                          suffix: De
                          dateOfBirth: '2002-10-29'
                          emailAddress: TEST@HTM.NL
                          address:
                            - addressId: 1
                              street: mystreet
                              houseNumber: 1
                              houseNumberSuffix: null
                              postalCode: 0000AA
                              city: Den Haag
                              country: NL
                              addressType: Billing
                            - addressId: 2
                              street: mystreet 33
                              houseNumber: 1
                              houseNumberSuffix: null
                              postalCode: 4455CA
                              city: Den BOSCH
                              country: NL
                              addressType: Shipping
                          phone:
                            - phoneId: 1
                              number: '3112345678'
                              countryCode: NL
                              phoneType: TestNaam
                              isPreferred: true
                            - phoneId: 2
                              number: '333225588'
                              countryCode: ES
                              phoneType: TestNaam
                              isPreferred: false
                          ovChipCard:
                            - ovChipCardId: 1
                              chipCardNumber: 1234123412341234
                              validUntil: '2023-01-01'
                              alias: alias
                            - ovChipCardId: 2
                              chipCardNumber: 1234123412341235
                              validUntil: '2025-01-01'
                              alias: alias
                          ovPayToken:
                            - ovPayTokenId: 126
                              tokenTypeId: 1
                              xTat: twioq73033
                              xBot: hjihwqui27
                              alias: alias
                              lastDigits: '5678'
                              ovpasNumber: OV34567
                              tokenStatusId: 1
                              expirationDate: '2025-04-20T17:05:52.000+02:00'
                              replacedByTokenId: 1
                            - ovPayTokenId: 127
                              tokenTypeId: 1
                              xTat: hhe2830283
                              xBot: jdhd828033
                              alias: alias
                              lastDigits: '5674'
                              ovpasNumber: OV34568
                              tokenStatusId: 1
                              expirationDate: '2024-04-20T17:05:52.000+02:00'
                              replacedByTokenId: 2
                          audit:
                            - auditTrailId: 1
                              customerProfileId: 1
                              action: insert
                              user: user
                              timestamp: '2023-10-20T17:05:52.000+02:00'
                              correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
                    href: null
                minimumCustomerProfile:
                  value:
                    Entries:
                      - customerNumber: 1000008
                        debtorNumber: null
                        debtorStateId: null
                        vascustomerNumber: null
                        customerPreference:
                          languageId: null
                        customerStatus:
                          - name: active
                            fromInclusive: '2022-08-04 15:01:00.000'
                            toInclusive: null
                        person:
                          birthname: null
                          surname: null
                          prefix: null
                          suffix: null
                          dateOfBirth: null
                          emailAddress: TEST@TEST1.NL
                          address: []
                          phone: []
                        ovChipCard: []
                        ovPayToken: []
                        audit: []
                missingPersonDetailsCustomerProfile:
                  value:
                    Entries:
                      - emailAddress: TEST04@HTM.NL
                        customerNumber: 1000005
                        debtorNumber: TEST004
                        debtorStateId: 1
                        vascustomerNumber: CST005
                        customerPreference:
                          languageId: 1
                        customerStatus:
                          - name: inactive
                            fromInclusive: '2022-08-04 15:01:00.000'
                            toInclusive: null
                        person:
                          birthname: Sophie
                          surname: Haardenburg
                          prefix: Mw
                          suffix: null
                          dateOfBirth: 1955-09-05+01:00
                          emailAddress: TEST@TEST1.NL
                          address: []
                          phone: []
                        ovChipCard:
                          - ovChipCardId: 1
                            chipCardNumber: 1234123412341234
                            validUntil: '2023-01-01'
                            alias: alias
                          - ovChipCardId: 2
                            chipCardNumber: 1234123412341235
                            validUntil: '2025-01-01'
                            alias: alias
                        ovPayToken:
                          - ovPayTokenId: 126
                            tokenTypeId: 1
                            xTat: twioq73033
                            xBot: hjihwqui27
                            alias: alias
                            lastDigits: '5678'
                            ovpasNumber: OV34567
                            tokenStatusId: 1
                            expirationDate: '2025-04-20T17:05:52.000+02:00'
                            replacedByTokenId: 1
                          - ovPayTokenId: 127
                            tokenTypeId: 1
                            xTat: hhe2830283
                            xBot: jdhd828033
                            alias: alias
                            lastDigits: '5674'
                            ovpasNumber: OV34568
                            tokenStatusId: 1
                            expirationDate: '2024-04-20T17:05:52.000+02:00'
                            replacedByTokenId: 2
                        audit:
                          - auditTrailId: 1
                            customerProfileId: 1
                            action: insert
                            user: user
                            timestamp: '2023-10-20T17:05:52.000+02:00'
                            correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
        '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
  /customers:
    get:
      tags:
        - ABTCustomers
      summary: Search for customer profile
      description: 'search for a customer profile in the ABT database with query parameters '
      parameters:
        - name: customerProfileId
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: customerNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: emailAddress
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: chipCardNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: ovPasNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: phoneNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: phoneCountryCode
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressStreet
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressHouseNumber
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: number
        - name: addressHouseNumberSuffix
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressPostalCode
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressCity
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: addressCountry
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: birthname
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: surname
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: dateOfBirth
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: customerStatus
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description: Successful retrieved a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfile'
              examples:
                fullCustomerProfile:
                  value:
                    customerProfileId: 1
                    customerNumber: 1000001
                    debtorNumber: TEST001
                    vascustomerNumber: CST005
                    debtorStateId: 1
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: active
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: '2022-08-05 15:01:00.000'
                      - name: blocked
                        fromInclusive: '2022-08-05 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: Pieter
                      surname: De valen
                      prefix: dhr
                      suffix: De
                      dateOfBirth: '2002-10-29'
                      emailAddress: TEST@HTM.NL
                      address:
                        - addressId: 1
                          street: mystreet
                          houseNumber: 1
                          houseNumberSuffix: null
                          postalCode: 0000AA
                          city: Den Haag
                          country: NL
                          addressType: Billing
                        - addressId: 2
                          street: mystreet 33
                          houseNumber: 1
                          houseNumberSuffix: null
                          postalCode: 4455CA
                          city: Den BOSCH
                          country: NL
                          addressType: Shipping
                      phone:
                        - phoneId: 1
                          number: '3112345678'
                          countryCode: NL
                          phoneType: TestNaam
                          isPreferred: true
                        - phoneId: 2
                          number: '333225588'
                          countryCode: ES
                          phoneType: TestNaam
                          isPreferred: false
                      ovChipCard:
                        - ovChipCardId: 1
                          chipCardNumber: 1234123412341234
                          validUntil: '2023-01-01'
                          alias: alias
                        - ovChipCardId: 2
                          chipCardNumber: 1234123412341235
                          validUntil: '2025-01-01'
                          alias: alias
                      ovPayToken:
                        - ovPayTokenId: 126
                          tokenTypeId: 1
                          xTat: twioq73033
                          xBot: hjihwqui27
                          alias: alias
                          lastDigits: '5678'
                          ovpasNumber: OV34567
                          tokenStatusId: 1
                          expirationDate: '2025-04-20T17:05:52.000+02:00'
                          replacedByTokenId: 1
                        - ovPayTokenId: 127
                          tokenTypeId: 1
                          xTat: hhe2830283
                          xBot: jdhd828033
                          alias: alias
                          lastDigits: '5674'
                          ovpasNumber: OV34568
                          tokenStatusId: 1
                          expirationDate: '2024-04-20T17:05:52.000+02:00'
                          replacedByTokenId: 2
                      audit:
                        - auditTrailId: 1
                          customerProfileId: 1
                          action: insert
                          user: user
                          timestamp: '2023-10-20T17:05:52.000+02:00'
                          correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
                minimumCustomerProfile:
                  value:
                    customerNumber: 1000008
                    debtorNumber: null
                    debtorStateId: null
                    vascustomerNumber: null
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: active
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: null
                      surname: null
                      prefix: null
                      suffix: null
                      dateOfBirth: null
                      emailAddress: TEST@TEST1.NL
                      address: []
                      phone: []
                    ovChipCard: []
                    ovPayToken: []
                    audit: []
                missingPersonDetailsCustomerProfile:
                  value:
                    emailAddress: TEST04@HTM.NL
                    customerNumber: 1000005
                    debtorNumber: TEST004
                    debtorStateId: 1
                    vascustomerNumber: CST008
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: inactive
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: Sophie
                      surname: Haardenburg
                      prefix: Mw
                      suffix: null
                      dateOfBirth: '1955-09-05'
                      emailAddress: TEST@TEST1.NL
                      address: []
                      phone: []
                    ovChipCard:
                      - ovChipCardId: 1
                        chipCardNumber: 1234123412341234
                        validUntil: '2023-01-01'
                        alias: alias
                      - ovChipCardId: 2
                        chipCardNumber: 1234123412341235
                        validUntil: '2025-01-01'
                        alias: alias
                    ovPayToken:
                      - ovPayTokenId: 126
                        tokenTypeId: 1
                        xTat: twioq73033
                        xBot: hjihwqui27
                        alias: alias
                        lastDigits: '5678'
                        ovpasNumber: OV34567
                        tokenStatusId: 1
                        expirationDate: '2025-04-20T17:05:52.000+02:00'
                        replacedByTokenId: 1
                      - ovPayTokenId: 127
                        tokenTypeId: 1
                        xTat: hhe2830283
                        xBot: jdhd828033
                        alias: alias
                        lastDigits: '5674'
                        ovpasNumber: OV34568
                        tokenStatusId: 1
                        expirationDate: '2024-04-20T17:05:52.000+02:00'
                        replacedByTokenId: 2
                    audit:
                      - auditTrailId: 1
                        customerProfileId: 1
                        action: insert
                        user: user
                        timestamp: '2023-10-20T17:05:52.000+02:00'
                        correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
        '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:
        - ABTCustomers
      summary: Create a customer profile
      description: >-
        Create a customer profile in the ABT database with status ACTIVE and
        debtorStatus Inactive with a start date based on the timestamp of this
        post call. 

          - Requested format for postal code:
            - 0000AA
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postCustomerProfile'
            examples:
              minimumProfile:
                value: {}
              basicCustomerProfile:
                value:
                  debtorStatusId: 2
                  person:
                    birthname: Jan
                    surname: Jansen
                    emailAddress: j.jansen@hatseflats.nl
              fullCustomerProfile:
                value:
                  customerPreference:
                    languageId: 1
                  debtorStatusId: 2
                  person:
                    birthname: Jan
                    surname: Jansen
                    prefix: dhr
                    suffix: jr
                    dateOfBirth: '1970-01-01'
                    emailAddress: j.jansen@hatseflats.nl
                    addresses:
                      - street: Laan van Meerdervoort
                        houseNumber: 5
                        houseNumberSuffix: B
                        postalCode: 2500AA
                        city: Den Haag
                        country: NL
                        addressTypeId: 1
                      - street: Beeklaan
                        houseNumber: 30
                        houseNumberSuffix: B
                        postalCode: 2500AA
                        city: Den Haag
                        country: NL
                        addressTypeId: 2
                    phones:
                      - number: '6123456789'
                        countryCode: '0031'
                        phoneTypeId: 1
                        isPreferred: true
                      - number: '7012345678'
                        countryCode: '0031'
                        phoneTypeId: 2
                        isPreferred: false
        required: true
      responses:
        '201':
          description: Successful created a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidPostalCodeFormatForAddressCountryNLError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter for country validation (NL).
                    description: >-
                      ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match
                      input string \"2500 AA\
                MissingRequiredParameterError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      object has missing required properties
                      ([\"addressTypeId\"])
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"id\
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
              examples:
                emailAddressAlreadyPresent:
                  value:
                    code: '409'
                    type: Conflict
                    message: emailAddress already exists.
                    description: ''
        '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
  /customers/{customerNumber}/customerpreferences:
    patch:
      tags:
        - ABTCustomers
      summary: Modify customer preference elements
      description: Modify customer preference fields
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchCustomerPreferences'
            examples:
              PatchCustomerPreferences:
                value:
                  customerPreference:
                    languageId: 2
      responses:
        '202':
          description: Successful modified the customer preferences
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchCustomerPreferencesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"languageId\   
                InvalidReferenceIdError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request: Update Or Delete failed as conflicted with
                      foreign Key constraint  'languageId'
        '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
  /customers/{customerNumber}:
    patch:
      tags:
        - ABTCustomers
      summary: Modify customer profile elements
      description: Modify customer profile fields
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchCustomerProfile'
            examples:
              PatchCustomerProfile:
                value:
                  debtorStatusId: 2
      responses:
        '202':
          description: Successful modified the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchCustomerProfileResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"debtorStatusId\    
        '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
  /customers/{customerNumber}/ovchipcards:
    post:
      tags:
        - ABTCustomers
      summary: Create a new OV chipcard for a customerProfile.
      description: Create a new OV chipcard in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postOvChipCard'
            examples:
              postNewOvChipCard:
                value:
                  ovChipCard:
                    chipCardNumber: 1234123412341234
                    validUntil: '2024-01-01'
                    alias: alias
      responses:
        '201':
          description: Successful created an OV chipcard
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileOvChipCardResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                chipCardNumberInvalidTooSmall:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      numeric instance is lower than the required minimum
                      (minimum: 1000000000000000, found: 999999999999999)
                chipCardNumberInvalidTooLarge:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      numeric instance is greater than the required maximum
                      (maximum: 9999999999999999, found: 10000000000000000)
        '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
  /customers/{customerNumber}/ovchipcards/{ovChipCardId}:
    delete:
      tags:
        - ABTCustomers
      summary: Delete a OV chipcard for a customerProfile.
      description: Delete a OV chipcard in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovChipCardId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
  /customers/{customerNumber}/ovpaytokens:
    get:
      tags:
        - ABTCustomers
      summary: Get a OV paytoken for a customerProfile.
      description: Get a new OV paytoken in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: integer
        - name: xbot
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: xtat
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
        - name: ovPasNumber
          in: query
          required: false
          style: form
          explode: false
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved an OVPay token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfileOvPayTokenResponse'
        '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:
        - ABTCustomers
      summary: Create a new OV paytoken for a customerProfile.
      description: Create a new OV paytoken in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postOvPayToken'
            examples:
              postNewOvPayTokenCard:
                value:
                  ovPayToken:
                    tokenTypeId: 2
                    xTat: twioq73033
                    xBot: hjihwqui27
                    alias: alias
                    lastDigits: '5678'
                    ovpasNumber: OV34567
                    tokenStatusId: 2
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
                    replacedByTokenId: 1
      responses:
        '201':
          description: Successful created an OVPay token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileOvPayTokenResponse'
        '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
  /customers/{customerNumber}/statuses:
    post:
      tags:
        - ABTCustomers
      summary: Create a new customer status for a customerProfile.
      description: >-
        Create a new customer status for a customerProfile. The call will do the
        following in the given order: a new status will be created with
        fromInclusive equal to the time of the call. ToInclusive in the old, now
        historic, status will also be set equal to the time of the call, deeming
        it 'not currently active'.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postCustomerStatus'
            examples:
              postNewStatus:
                value:
                  customerStatus:
                    name: blocked
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/defaultCustomerProfileResponse'
        '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'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/422Response'
        '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
  /customers/{customerNumber}/persons:
    patch:
      tags:
        - ABTCustomers
      summary: Partial update customer person details
      description: Partial update a customer person details in the ABT database
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchPerson'
            examples:
              updatePerson:
                value:
                  person:
                    birthname: Jan
                    surname: Jansen
                    prefix: dhr
                    suffix: jr
                    dateOfBirth: '1970-01-01'
                    emailAddress: TEST@TEST1.NL
              updatePersonBirthname:
                value:
                  person:
                    birthname: Jan
              updatePersonSurname:
                value:
                  person:
                    surname: Jansen
              updatePersonPrefix:
                value:
                  person:
                    prefix: dhr
              updatePersonSuffix:
                value:
                  person:
                    suffix: jr
              updatePersonDateOfBirth:
                value:
                  person:
                    dateOfBirth: '1970-01-01'
              updatePersonEmailAddress:
                value:
                  person:
                    emailAddress: TEST@TEST1.NL
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/defaultCustomerProfileResponse'
        '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
  /customers/{customerNumber}/ovpaytokens/{ovPayTokenId}:
    delete:
      tags:
        - ABTCustomers
      summary: Delete a OV PayToken for a customerProfile.
      description: Delete a OV PayToken in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomers
      summary: Partial update customer ovpaytokens
      description: Partial update of a customer ovpaytokens in the ABT database
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchOvPayToken'
            examples:
              updateOvPayTokens:
                value:
                  ovPayToken:
                    tokenTypeId: 2
                    xTat: twioq73033
                    xBot: hjihwqui27
                    alias: alias
                    lastDigits: '5678'
                    ovpasNumber: OV34567
                    tokenStatusId: 2
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
                    replacedByTokenId: 1
              updateOvPayTokenTypeId:
                value:
                  ovPayToken:
                    tokenTypeId: 2
              updateOvPayTokenXTat:
                value:
                  ovPayToken:
                    xTat: twioq73033
              updateOvPayTokenXBot:
                value:
                  ovPayToken:
                    xBot: hjihwqui27
              updateOvPayTokenAlias:
                value:
                  ovPayToken:
                    alias: alias
              updateOvPayTokenLastDigits:
                value:
                  ovPayToken:
                    lastDigits: '5678'
              updateOvPayTokenOvpasNumber:
                value:
                  ovPayToken:
                    ovpasNumber: OV34567
              updateOvPayTokenStatusId:
                value:
                  ovPayToken:
                    tokenStatusId: 1
              updateOvPayTokenExpirationDate:
                value:
                  ovPayToken:
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
              updateOvPayTokenReplacedByTokenId:
                value:
                  ovPayToken:
                    replacedByTokenId: 1
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/defaultCustomerProfileResponse'
        '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
  /customers/{customerNumber}/addresses:
    post:
      tags:
        - ABTCustomers
      summary: Create a single customer address
      description: Create a single customer address in the ABT database
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postAddress'
            examples:
              addFullAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    houseNumberSuffix: B
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 1
              addMinimumAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 1
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileAddressResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidPostalCodeFormatForAddressCountryNLError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter for country validation (NL).
                    description: >-
                      ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match
                      input string \"2500 AA\
                MissingRequiredParameterError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      object has missing required properties
                      ([\"addressTypeId\"])
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"id\
        '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
  /customers/{customerNumber}/phones:
    post:
      tags:
        - ABTCustomers
      summary: Create a single customer phonenumber
      description: Create a single customer phonenumber in the ABT database
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postPhone'
            examples:
              addPhone:
                value:
                  phone:
                    number: '06123456789'
                    countryCode: '0031'
                    phoneTypeId: 1
                    isPreferred: true
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfilePhoneResponse'
        '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
  /customers/{customerNumber}/addresses/{addressId}:
    delete:
      tags:
        - ABTCustomers
      summary: Delete a customer address
      description: Delete a customer address from the ABT database
      parameters:
        - name: addressId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomers
      summary: Partial update customer addresses
      description: Partial update a customer address in the ABT database
      parameters:
        - name: addressId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchAddress'
            examples:
              updateAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    houseNumberSuffix: B
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 2
              updateStreet:
                value:
                  address:
                    street: Nieuwe Parklaan
              updateHouseNumber:
                value:
                  address:
                    houseNumber: 10
              updateHouseNumberSuffix:
                value:
                  address:
                    houseNumberSuffix: C
              updatePostalCode:
                value:
                  address:
                    postalCode: 2597LG
              updateCity:
                value:
                  address:
                    city: Amsterdam
              updateCountry:
                value:
                  address:
                    country: UK
              updateAddressTypeId:
                value:
                  address:
                    addressTypeId: 1
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/addressPatchOKResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidPostalCodeFormatForAddressCountryNLError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter for country validation (NL).
                    description: >-
                      ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match
                      input string \"2500 AA\
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"id\                
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
        '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
  /customers/{customerNumber}/phones/{phoneId}:
    delete:
      tags:
        - ABTCustomers
      summary: Delete a customer phone
      description: Delete a customer phone from the ABT database
      parameters:
        - name: phoneId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomers
      summary: Partial update customer phones
      description: Partial update a customer phone in the ABT database
      parameters:
        - name: phoneId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchPhone'
            examples:
              updatePhone:
                value:
                  phone:
                    number: '06123456789'
                    countryCode: '0031'
                    phoneTypeId: 2
                    isPreferred: true
              updatePhoneNumber:
                value:
                  phone:
                    number: '06987654321'
              updateCountryCode:
                value:
                  phone:
                    countryCode: '0044'
              updatePhoneTypeId:
                value:
                  phone:
                    phoneTypeId: 2
              updateisPreferred:
                value:
                  phone:
                    isPreferred: true
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/phonePatchOKResponse'
        '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'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
        '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
  /selfservice/customers:
    get:
      tags:
        - ABTCustomersSelfService
      summary: Search for customer profile
      description: Search for a customer profile based on the sub element from JWT
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
      responses:
        '200':
          description: Successful retrieved a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getCustomerProfile'
              examples:
                fullCustomerProfile:
                  value:
                    customerNumber: 1000001
                    debtorNumber: TEST001
                    vascustomerNumber: CST005
                    debtorStateId: 1
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: active
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: '2022-08-05 15:01:00.000'
                      - name: blocked
                        fromInclusive: '2022-08-05 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: Pieter
                      surname: De valen
                      prefix: dhr
                      suffix: De
                      dateOfBirth: '2002-10-29'
                      emailAddress: TEST@HTM.NL
                      address:
                        - addressId: 1
                          street: mystreet
                          houseNumber: 1
                          houseNumberSuffix: null
                          postalCode: 0000AA
                          city: Den Haag
                          country: NL
                          addressType: Billing
                        - addressId: 2
                          street: mystreet 33
                          houseNumber: 1
                          houseNumberSuffix: null
                          postalCode: 4455CA
                          city: Den BOSCH
                          country: NL
                          addressType: Shipping
                      phone:
                        - phoneId: 1
                          number: '3112345678'
                          countryCode: NL
                          phoneType: TestNaam
                          isPreferred: true
                        - phoneId: 2
                          number: '333225588'
                          countryCode: ES
                          phoneType: TestNaam
                          isPreferred: false
                      ovChipCard:
                        - ovChipCardId: 1
                          chipCardNumber: 1234123412341234
                          validUntil: '2023-01-01'
                          alias: alias
                        - ovChipCardId: 2
                          chipCardNumber: 1234123412341235
                          validUntil: '2025-01-01'
                          alias: alias
                      ovPayToken:
                        - ovPayTokenId: 126
                          tokenTypeId: 1
                          xTat: twioq73033
                          xBot: hjihwqui27
                          alias: alias
                          lastDigits: '5678'
                          ovpasNumber: OV34567
                          tokenStatusId: 1
                          expirationDate: '2025-04-20T17:05:52.000+02:00'
                          replacedByTokenId: 1
                        - ovPayTokenId: 127
                          tokenTypeId: 1
                          xTat: hhe2830283
                          xBot: jdhd828033
                          alias: alias
                          lastDigits: '5674'
                          ovpasNumber: OV34568
                          tokenStatusId: 1
                          expirationDate: '2024-04-20T17:05:52.000+02:00'
                          replacedByTokenId: 2
                      audit:
                        - auditTrailId: 1
                          customerProfileId: 1
                          action: insert
                          user: user
                          timestamp: '2023-10-20T17:05:52.000+02:00'
                          correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
                minimumCustomerProfile:
                  value:
                    customerNumber: 1000008
                    debtorNumber: null
                    debtorStateId: null
                    vascustomerNumber: null
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: active
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: null
                      surname: null
                      prefix: null
                      suffix: null
                      dateOfBirth: null
                      emailAddress: TEST@TEST1.NL
                      address: []
                      phone: []
                    ovChipCard: []
                    ovPayToken: []
                    audit: []
                missingPersonDetailsCustomerProfile:
                  value:
                    emailAddress: TEST04@HTM.NL
                    customerNumber: 1000005
                    debtorNumber: TEST004
                    debtorStateId: 1
                    vascustomerNumber: CST008
                    customerPreference:
                      languageId: 1
                    customerStatus:
                      - name: inactive
                        fromInclusive: '2022-08-04 15:01:00.000'
                        toInclusive: null
                    person:
                      birthname: Sophie
                      surname: Haardenburg
                      prefix: Mw
                      suffix: null
                      dateOfBirth: '1955-09-05'
                      emailAddress: TEST@TEST1.NL
                      address: []
                      phone: []
                    ovChipCard:
                      - ovChipCardId: 1
                        chipCardNumber: 1234123412341234
                        validUntil: '2023-01-01'
                        alias: alias
                      - ovChipCardId: 2
                        chipCardNumber: 1234123412341235
                        validUntil: '2025-01-01'
                        alias: alias
                    ovPayToken:
                      - ovPayTokenId: 126
                        tokenTypeId: 1
                        xTat: twioq73033
                        xBot: hjihwqui27
                        alias: alias
                        lastDigits: '5678'
                        ovpasNumber: OV34567
                        tokenStatusId: 1
                        expirationDate: '2025-04-20T17:05:52.000+02:00'
                        replacedByTokenId: 1
                      - ovPayTokenId: 127
                        tokenTypeId: 1
                        xTat: hhe2830283
                        xBot: jdhd828033
                        alias: alias
                        lastDigits: '5674'
                        ovpasNumber: OV34568
                        tokenStatusId: 1
                        expirationDate: '2024-04-20T17:05:52.000+02:00'
                        replacedByTokenId: 2
                    audit:
                      - auditTrailId: 1
                        customerProfileId: 1
                        action: insert
                        user: user
                        timestamp: '2023-10-20T17:05:52.000+02:00'
                        correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
        '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:
        - ABTCustomersSelfService
      summary: Create for customer profile
      description: Create a customer profile based on the sub element from JWT
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postCustomerProfile'
            examples:
              minimumProfile:
                value: {}
              basicCustomerProfile:
                value:
                  debtorStatusId: 2
                  person:
                    birthname: Jan
                    surname: Jansen
                    emailAddress: j.jansen@hatseflats.nl
              fullCustomerProfile:
                value:
                  customerPreference:
                    languageId: 1
                  debtorStatusId: 2
                  person:
                    birthname: Jan
                    surname: Jansen
                    prefix: dhr
                    suffix: jr
                    dateOfBirth: '1970-01-01'
                    emailAddress: j.jansen@hatseflats.nl
                    addresses:
                      - street: Laan van Meerdervoort
                        houseNumber: 5
                        houseNumberSuffix: B
                        postalCode: 2500AA
                        city: Den Haag
                        country: NL
                        addressTypeId: 1
                      - street: Beeklaan
                        houseNumber: 30
                        houseNumberSuffix: B
                        postalCode: 2500AA
                        city: Den Haag
                        country: NL
                        addressTypeId: 2
                    phones:
                      - number: '6123456789'
                        countryCode: '0031'
                        phoneTypeId: 1
                        isPreferred: true
                      - number: '7012345678'
                        countryCode: '0031'
                        phoneTypeId: 2
                        isPreferred: false
        required: true
      responses:
        '201':
          description: Successful created a customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
              examples:
                emailAddressAlreadyPresent:
                  value:
                    code: '409'
                    type: Conflict
                    message: emailAddress already exists.
                    description: ''
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Response'
      security:
        - default: []
      x-auth-type: Application & Application User
  /selfservice/customers/{customerNumber}:
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Modify customer profile elements
      description: Modify customer profile fields
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchCustomerProfile'
            examples:
              PatchCustomerProfile:
                value:
                  debtorStatusId: 2
      responses:
        '202':
          description: Successful modified the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchCustomerProfileResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"debtorStatusId\   
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /selfservice/customers/{customerNumber}/customerpreferences:
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Modify customer preference elements
      description: Modify customer preference fields
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchCustomerPreferences'
            examples:
              PatchCustomerPreferences:
                value:
                  customerPreference:
                    languageId: 2
      responses:
        '202':
          description: Successful modified the customer preferences
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/patchCustomerPreferencesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"languageId\    
        '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
  /selfservice/customers/{customerNumber}/ovchipcards:
    post:
      tags:
        - ABTCustomersSelfService
      summary: Create a new OV chipcard for a customerProfile.
      description: Create a new OV chipcard in the database for a given customer.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postOvChipCard'
            examples:
              postNewOvChipCard:
                value:
                  ovChipCard:
                    chipCardNumber: 1234123412341234
                    validUntil: '2024-01-01'
                    alias: alias
      responses:
        '201':
          description: Successful created an OV chipcard
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileOvChipCardResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                chipCardNumberInvalidTooSmall:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      numeric instance is lower than the required minimum
                      (minimum: 1000000000000000, found: 999999999999999)
                chipCardNumberInvalidTooLarge:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      numeric instance is greater than the required maximum
                      (maximum: 9999999999999999, found: 10000000000000000)
        '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
  /selfservice/customers/{customerNumber}/ovchipcards/{ovChipCardId}:
    delete:
      tags:
        - ABTCustomersSelfService
      summary: Delete a OV chipcard for a customerProfile.
      description: Delete a OV chipcard in the database for a given customer.
      parameters:
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovChipCardId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
  /selfservice/customers/{customerNumber}/ovpaytokens:
    post:
      tags:
        - ABTCustomersSelfService
      summary: Create a new OV paytoken for a customerProfile.
      description: Create a new OV paytoken in the database for a given customer.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postOvPayToken'
            examples:
              postNewOvPayTokenCard:
                value:
                  ovPayToken:
                    tokenTypeId: 2
                    xTat: twioq73033
                    xBot: hjihwqui27
                    alias: alias
                    lastDigits: '5678'
                    ovpasNumber: OV34567
                    tokenStatusId: 2
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
                    replacedByTokenId: 1
      responses:
        '201':
          description: Successful created an OV paytoken
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileOvPayTokenResponse'
        '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
  /selfservice/customers/{customerNumber}/statuses:
    post:
      tags:
        - ABTCustomersSelfService
      summary: Create a new customer status for a customerProfile.
      description: >-
        Create a new customer status for a customerProfile. The call will do the
        following in the given order: a new status will be created with
        fromInclusive equal to the time of the call. ToInclusive in the old, now
        historic, status will also be set equal to the time of the call, deeming
        it 'not currently active'.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postCustomerStatus'
            examples:
              postNewStatus:
                value:
                  customerStatus:
                    name: blocked
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse'
        '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'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/422Response'
        '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
  /selfservice/customers/{customerNumber}/persons:
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Partial update customer person details
      description: Partial update a customer person details in the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchPerson'
            examples:
              updatePerson:
                value:
                  person:
                    birthname: Jan
                    surname: Jansen
                    prefix: dhr
                    suffix: jr
                    dateOfBirth: '1970-01-01'
                    emailAddress: TEST@TEST1.NL
              updatePersonBirthname:
                value:
                  person:
                    birthname: Jan
              updatePersonSurname:
                value:
                  person:
                    surname: Jansen
              updatePersonPrefix:
                value:
                  person:
                    prefix: dhr
              updatePersonSuffix:
                value:
                  person:
                    suffix: jr
              updatePersonDateOfBirth:
                value:
                  person:
                    dateOfBirth: '1970-01-01'
              updatePersonEmailAddress:
                value:
                  person:
                    emailAddress: TEST@TEST1.NL
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/defaultCustomerProfileResponse'
        '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
  /selfservice/customers/{customerNumber}/ovpaytokens/{ovPayTokenId}:
    delete:
      tags:
        - ABTCustomersSelfService
      summary: Delete a OV PayToken for a customerProfile.
      description: Delete a OV PayToken in the database for a given customer.
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Partial update customer ovpaytokens
      description: Partial update of a customer ovpaytokens in the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: ovPayTokenId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchOvPayToken'
            examples:
              updateOvPayTokens:
                value:
                  ovPayToken:
                    tokenTypeId: 2
                    xTat: twioq73033
                    xBot: hjihwqui27
                    alias: alias
                    lastDigits: '5678'
                    ovpasNumber: OV34567
                    tokenStatusId: 2
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
                    replacedByTokenId: 1
              updateOvPayTokenTypeId:
                value:
                  ovPayToken:
                    tokenTypeId: 2
              updateOvPayTokenXTat:
                value:
                  ovPayToken:
                    xTat: twioq73033
              updateOvPayTokenXBot:
                value:
                  ovPayToken:
                    xBot: hjihwqui27
              updateOvPayTokenAlias:
                value:
                  ovPayToken:
                    alias: alias
              updateOvPayTokenLastDigits:
                value:
                  ovPayToken:
                    lastDigits: '5678'
              updateOvPayTokenOvpasNumber:
                value:
                  ovPayToken:
                    ovpasNumber: OV34567
              updateOvPayTokenStatusId:
                value:
                  ovPayToken:
                    tokenStatusId: 1
              updateOvPayTokenExpirationDate:
                value:
                  ovPayToken:
                    expirationDate: '2025-04-20T17:05:52.000+02:00'
              updateOvPayTokenReplacedByTokenId:
                value:
                  ovPayToken:
                    replacedByTokenId: 1
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/defaultCustomerProfileResponse'
        '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
  /selfservice/customers/{customerNumber}/addresses:
    post:
      tags:
        - ABTCustomersSelfService
      summary: Create a single customer address
      description: Create a single customer address in the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postAddress'
            examples:
              addFullAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    houseNumberSuffix: B
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 1
              addMinimumAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 1
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfileAddressResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidPostalCodeFormatForAddressCountryNLError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter for country validation (NL).
                    description: >-
                      ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match
                      input string \"2500 AA\
                MissingRequiredParameterError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      object has missing required properties
                      ([\"addressTypeId\"])
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"id\
        '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
  /selfservice/customers/{customerNumber}/phones:
    post:
      tags:
        - ABTCustomersSelfService
      summary: Create a single customer phonenumber
      description: Create a single customer phonenumber in the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postPhone'
            examples:
              addPhone:
                value:
                  phone:
                    number: '06123456789'
                    countryCode: '0031'
                    phoneTypeId: 1
                    isPreferred: true
      responses:
        '201':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/postCustomerProfilePhoneResponse'
        '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
  /selfservice/customers/{customerNumber}/addresses/{addressId}:
    delete:
      tags:
        - ABTCustomersSelfService
      summary: Delete a customer address
      description: Delete a customer address from the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: addressId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Partial update customer addresses
      description: Partial update a customer address in the ABT database
      parameters:
        - name: addressId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchAddress'
            examples:
              updateAddress:
                value:
                  address:
                    street: Laan van Meerdervoort
                    houseNumber: 5
                    houseNumberSuffix: B
                    postalCode: 2500AA
                    city: Den Haag
                    country: NL
                    addressTypeId: 2
              updateStreet:
                value:
                  address:
                    street: Nieuwe Parklaan
              updateHouseNumber:
                value:
                  address:
                    houseNumber: 10
              updateHouseNumberSuffix:
                value:
                  address:
                    houseNumberSuffix: C
              updatePostalCode:
                value:
                  address:
                    postalCode: 2597LG
              updateCity:
                value:
                  address:
                    city: Amsterdam
              updateCountry:
                value:
                  address:
                    country: UK
              updateAddressTypeId:
                value:
                  address:
                    addressTypeId: 1
              updateIsPreferred:
                value:
                  address:
                    isPreferred: false
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/addressPatchOKResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Response'
              examples:
                InvalidPostalCodeFormatForAddressCountryNLError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter for country validation (NL).
                    description: >-
                      ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match
                      input string \"2500 AA\
                InvalidDataTypeError:
                  value:
                    code: '400'
                    type: Bad Request - Input parameters
                    message: Invalid input parameter.
                    description: >-
                      Bad Request - please verify the value for the following
                      field \"id\
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Response'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Response'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
        '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
  /selfservice/customers/{customerNumber}/phones/{phoneId}:
    delete:
      tags:
        - ABTCustomersSelfService
      summary: Delete a customer phone
      description: Delete a customer phone from the ABT database
      parameters:
        - name: X-HTM-JWT-AUTH-HEADER
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: phoneId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      responses:
        '202':
          description: Deleted record successfully
        '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
    patch:
      tags:
        - ABTCustomersSelfService
      summary: Partial update customer phones
      description: Partial update a customer phone in the ABT database
      parameters:
        - name: phoneId
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
        - name: customerNumber
          in: path
          required: true
          style: simple
          explode: false
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchPhone'
            examples:
              updatePhone:
                value:
                  phone:
                    number: '06123456789'
                    countryCode: '0031'
                    phoneTypeId: 2
                    isPreferred: true
              updatePhoneNumber:
                value:
                  phone:
                    number: '06987654321'
              updateCountryCode:
                value:
                  phone:
                    countryCode: '0044'
              updatePhoneTypeId:
                value:
                  phone:
                    phoneTypeId: 2
              updateisPreferred:
                value:
                  phone:
                    isPreferred: true
      responses:
        '202':
          description: Successful updated the customer profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/phonePatchOKResponse'
        '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'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Response'
        '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:
    audit:
      type: object
      properties:
        auditTrailId:
          type: integer
        customerProfileId:
          type: integer
        action:
          type: string
        user:
          type: string
        timestamp:
          type: string
          format: datetime
        correlationId:
          type: string
    ovPayToken:
      type: object
      properties:
        ovPayTokenId:
          type: integer
        tokenTypeId:
          type: integer
        xTat:
          type: string
        xBot:
          type: string
        alias:
          type: string
        lastDigits:
          type: integer
        ovpasNumber:
          type: string
        tokenStatusId:
          type: integer
        expirationDate:
          type: string
        replacedByTokenId:
          type: integer
    getOvChipCard:
      type: object
      properties:
        ovChipCardId:
          type: integer
        chipCardNumber:
          type: integer
        validUntil:
          type: string
          format: date
        alias:
          type: string
    getCustomerStatus:
      type: object
      properties:
        name:
          type: string
        fromInclusive:
          type: string
          format: date
        toInclusive:
          type: string
          format: date
    getPerson:
      type: object
      properties:
        birthname:
          type: string
        surname:
          type: string
        prefix:
          type: string
        suffix:
          type: string
        dateOfBirth:
          type: string
          format: date
        emailAddress:
          type: string
          format: email
        address:
          type: array
          items:
            $ref: '#/components/schemas/getAddress'
        phone:
          type: array
          items:
            $ref: '#/components/schemas/getPhone'
    getAddress:
      type: object
      properties:
        addressId:
          type: integer
        street:
          type: string
        houseNumber:
          type: integer
        houseNumberSuffix:
          type: string
        postalCode:
          type: string
        city:
          type: string
        country:
          type: string
        addressType:
          type: string
    getPhone:
      type: object
      properties:
        phoneId:
          type: integer
        number:
          type: string
        countryCode:
          type: string
        phoneType:
          type: string
        isPreferred:
          type: boolean
    getCustomerPreference:
      type: object
      properties:
        languageId:
          type: integer
    getCustomerProfileList:
      type: object
      properties:
        Entries:
          type: array
          items:
            $ref: '#/components/schemas/getCustomerProfile'
    getCustomerProfile:
      type: object
      properties:
        customerNumber:
          type: integer
        debtorNumber:
          type: integer
        debtorStateId:
          type: integer
        vascustomerNumber:
          type: integer
        customerPreference:
          $ref: '#/components/schemas/getCustomerPreference'
        customerStatus:
          type: array
          items:
            $ref: '#/components/schemas/getCustomerStatus'
        person:
          $ref: '#/components/schemas/getPerson'
        ovChipCard:
          type: array
          items:
            $ref: '#/components/schemas/getOvChipCard'
        ovPayToken:
          type: array
          items:
            $ref: '#/components/schemas/ovPayToken'
        audit:
          type: array
          items:
            $ref: '#/components/schemas/audit'
    directDebitMandatePostEntity:
      required:
        - billingInformationId
        - created
        - directDebitMandateTypeName
        - mandateReference
      type: object
      properties:
        directDebitMandateTypeName:
          type: string
        billingInformationId:
          type: integer
        mandateReference:
          type: string
    directDebitMandatePost:
      type: object
      properties:
        directDebitMandate:
          $ref: '#/components/schemas/directDebitMandatePostEntity'
    directDebitMandatePatchEntity:
      type: object
      properties:
        directDebitMandateTypeName:
          type: string
        billingInformationId:
          type: integer
        mandateReference:
          type: string
        mandateState:
          type: string
          enum:
            - SIGNED
            - CANCELLED
            - PREPARED
    directDebitMandatePatch:
      type: object
      properties:
        directDebitMandate:
          $ref: '#/components/schemas/directDebitMandatePatchEntity'
    directDebitMandateGETEntity:
      type: object
      properties:
        directDebitMandateId:
          type: integer
        directDebitMandateTypeId:
          type: integer
        billingInformationId:
          type: integer
        created:
          type: string
        mandateReference:
          type: string
        mandateState:
          type: string
        updateTimestamp:
          type: string
    billingInformationGETEntity:
      required:
        - alias
        - ascription
        - bic
        - billingInformationId
        - iban
        - created
      type: object
      properties:
        billingInformationId:
          type: integer
        iban:
          type: string
        bic:
          type: string
        ascription:
          type: string
        alias:
          type: string
        created:
          type: string
    billingInformationPostEntity:
      required:
        - alias
        - ascription
        - billingAddressId
        - iban
      type: object
      properties:
        iban:
          type: string
        bic:
          type: string
        ascription:
          type: string
        alias:
          type: string
        created:
          type: string
    billingInformationPost:
      type: object
      properties:
        billingInformation:
          $ref: '#/components/schemas/billingInformationPostEntity'
    billingInformationPatchEntity:
      type: object
      properties:
        iban:
          type: string
        bic:
          type: string
        ascription:
          type: string
        alias:
          type: string
    billingInformationPatch:
      type: object
      properties:
        billingInformation:
          $ref: '#/components/schemas/billingInformationPatchEntity'
    getCustomerProfileFinancials:
      type: object
      properties:
        customerNumber:
          type: integer
        billingInformation:
          type: array
          items:
            $ref: '#/components/schemas/billingInformationGETEntity'
        directDebitMandate:
          type: array
          items:
            $ref: '#/components/schemas/directDebitMandateGETEntity'
    customerPreferencesEntity:
      type: object
      properties:
        languageId:
          type: string
    postCustomerProfile:
      type: object
      properties:
        debtorStatusId:
          type: integer
        customerPreference:
          $ref: '#/components/schemas/customerPreferencesEntity'
        person:
          $ref: '#/components/schemas/personEntity'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/addressPostEntity'
        phones:
          type: array
          items:
            $ref: '#/components/schemas/phonePostEntity'
    postCustomerStatusEntity:
      type: object
      properties:
        name:
          type: string
    postCustomerStatus:
      type: object
      properties:
        customerStatus:
          $ref: '#/components/schemas/postCustomerStatusEntity'
    postOvChipCardEntity:
      required:
        - chipCardNumber
      type: object
      properties:
        chipCardNumber:
          type: integer
        validUntil:
          type: string
          format: date
        alias:
          type: string
    patchCustomerProfile:
      type: object
      properties:
        debtorStatusId:
          type: integer
    patchCustomerPreferencesEntity:
      type: object
      properties:
        languageId:
          type: string
    patchCustomerPreferences:
      type: object
      properties:
        customerPreference:
          $ref: '#/components/schemas/patchCustomerPreferencesEntity'
    postOvChipCard:
      type: object
      properties:
        ovChipCard:
          $ref: '#/components/schemas/postOvChipCardEntity'
    postOvPayToken:
      required:
        - alias
        - lastDigits
        - tokenTypeId
        - xBot
        - xTat
      type: object
      properties:
        ovPayToken:
          type: object
          properties:
            tokenTypeId:
              type: string
            xTat:
              type: string
            xBot:
              type: string
            alias:
              type: string
            lastDigits:
              type: integer
            ovpasNumber:
              type: string
            tokenStatusId:
              type: integer
            expirationDate:
              type: string
            replacedByTokenId:
              type: integer
    ovPayTokenEntity:
      type: object
      properties:
        tokenTypeId:
          type: string
        xTat:
          type: string
        xBot:
          type: string
        alias:
          type: string
        lastDigits:
          type: integer
        ovpasNumber:
          type: string
        tokenStatusId:
          type: integer
        expirationDate:
          type: string
        replacedByTokenId:
          type: integer
    patchOvPayToken:
      type: object
      properties:
        ovPayToken:
          $ref: '#/components/schemas/ovPayTokenEntity'
    patchPerson:
      type: object
      properties:
        person:
          $ref: '#/components/schemas/personEntity'
    patchAddress:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/addressPatchEntity'
    patchPhone:
      type: object
      properties:
        phone:
          $ref: '#/components/schemas/phonePatchEntity'
    postAddress:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/addressPostEntity'
    postPhone:
      type: object
      properties:
        phone:
          $ref: '#/components/schemas/phonePostEntity'
    personEntity:
      type: object
      properties:
        birthname:
          type: string
        surname:
          type: string
        prefix:
          type: string
        suffix:
          type: string
        dateOfBirth:
          type: string
          format: date
        emailAddress:
          type: string
    addressPostEntity:
      required:
        - addressTypeId
        - city
        - country
        - houseNumber
        - postalCode
        - street
      type: object
      properties:
        street:
          type: string
        houseNumber:
          type: integer
        houseNumberSuffix:
          type: string
        postalCode:
          type: string
        city:
          type: string
        country:
          type: string
        addressTypeId:
          type: integer
    addressPatchEntity:
      type: object
      properties:
        street:
          type: string
        houseNumber:
          type: integer
        houseNumberSuffix:
          type: string
        postalCode:
          type: string
        city:
          type: string
        country:
          type: string
        addressTypeId:
          type: integer
    phonePostEntity:
      required:
        - countryCode
        - number
        - phoneTypeId
      type: object
      properties:
        number:
          type: string
        countryCode:
          type: string
        phoneTypeId:
          type: integer
        isPreferred:
          type: boolean
    phonePatchEntity:
      type: object
      properties:
        number:
          type: string
        countryCode:
          type: string
        phoneTypeId:
          type: integer
        isPreferred:
          type: boolean
    defaultCustomerProfileResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
    phonePatchOKResponse:
      type: object
      properties:
        id:
          type: integer
          example: 1
    addressPatchOKResponse:
      type: object
      properties:
        id:
          type: integer
          example: 1
    postCustomerProfileCustomerNumberResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
    postCustomerProfileAddressResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
        addressId:
          type: integer
          example: 1
    postCustomerProfilePhoneResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
        phoneId:
          type: integer
          example: 1
    postCustomerProfileBillingInformationResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
        billingInformationId:
          type: integer
          example: 1
    postCustomerProfileDirectDebitMandateResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
        directDebitMandateId:
          type: integer
          example: 1
    postCustomerProfileOvChipCardResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
        ovChipCardId:
          type: integer
          example: 1
    patchCustomerProfileResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
    patchCustomerPreferencesResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
    ovPayTokenGetEntity:
      type: object
      properties:
        ovPayTokenId:
          type: integer
          example: 1
        tokenTypeId:
          type: integer
          example: 1
        xTat:
          type: string
          example: 0044831b-8e80c-4f82-r989a-8d85ee1996
        xBot:
          type: string
          example: 0044831b-8e80c-4f82-r989a-8d85ee1996
        lastDigits:
          type: string
          example: '0001'
        ovpasNumber:
          type: integer
          example: 1
        alias:
          type: string
          example: alias
        tokenStatusId:
          type: integer
        expirationDate:
          type: string
        replacedByTokenId:
          type: integer
    getCustomerProfileOvPayTokenResponse:
      type: object
      properties:
        ovPayToken:
          type: array
          items:
            $ref: '#/components/schemas/ovPayTokenGetEntity'
    postCustomerProfileOvPayTokenResponse:
      type: object
      properties:
        ovPaytoken:
          type: object
          example: 10000001
        ovPayTokenId:
          type: integer
          example: 1
    patchCustomerProfileCustomerNumberResponse:
      type: object
      properties:
        customerNumber:
          type: integer
          example: 10000001
    400Response:
      type: object
      properties:
        code:
          type: string
          example: '400'
        type:
          type: string
        message:
          type: string
          example: Bad Request
        description:
          type: string
          example: >-
            'Bad Request: Input parameters missing! Please fill in at least 1
            valid input parameter.
    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.
    409Response:
      type: object
      properties:
        code:
          type: string
          example: '409'
        type:
          type: string
          example: Conflict
        message:
          type: string
          example: Entry already exists
        description:
          type: string
    422Response:
      type: object
      properties:
        code:
          type: string
          example: '422'
        type:
          type: string
          example: Unprocessable entity
        message:
          type: string
          example: >-
            Forbidden state transition requested! From Active to Cleared not
            allowed.
        description:
          type: string
    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.acc.api.htm.nl/authorize
          scopes: {}
