openapi: "3.0.3"
info:
  title: ABT Orders CRUD APIs
  version: "1.0"
  description: CRUD APIs for ABT Orders database. These are NOT the functional APIs from Service Engine.
servers:
  - url: https://api.integratielaag.nl/v1  
paths:
  /orders:
    get:
      tags:
        - Order
      summary: P1. Find orders.
      description: Find orders.
      servers:      
        - url: https://api.integratielaag.nl/v1  
      parameters:
        - in: query
          name: externalOrderId
          schema:
            type: string
            example: EXT001
          required: false
          description: The order id in the external system.
        - in: query
          name: orderNumber
          schema:
            type: string
            example: ORD123456
          required: false
          description: The human readable number of the order.
        - in: query
          name: customerProfileId
          schema:
            type: integer
            example: 42
          required: false
          description: The technical id of the customer related to the order.
        - in: query
          name: totalAmount
          schema:
            type: integer
            example: 112
          required: false
          description: The total amount of the order.
        - in: query
          name: touchPointId
          schema:
            type: integer
            example: 1
          required: false
          description: The id of the touch point where the order was initiated.
        - in: query
          name: languageId
          schema:
            type: integer
            example: 1
          required: false
          description: The id of the language in which the order was created.      
        - in: query
          name: createdBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the order should have been created.
        - in: query
          name: createdAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the order should have been created.
        - in: query
          name: updatedBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the order should have been updated.
        - in: query
          name: updatedAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the order should have been updated.
        - in: query
          name: orderStatusId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orders":
                    [
                      {
                        "orderId": "afce35b2-1dff-4ace-98d0-4b9ac405c87d",
                        "externalOrderId": "bac3958b-804a-43e3-b5f7-0b0fffaae5b7",
                        "orderNumber": "123456",
                        "customerProfileId": 1337,
                        "totalAmount": 121,
                        "touchPoint":{
                          "touchPointId": 1,
                          "name": "Perplex"
                        },
                        "language":
                          {
                            "languageId": 1,
                            "name": "Nederlands",
                            "iso639Code": "nl-NL",
                            "ietfCode": "nl",
                          },
                        "createdOn": "2024-03-22T09:00:00",
                        "lastUpdatedOn": "2024-03-22T09:00:00",
                        "order_OrderStatus":
                          [
                            {
                              "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f",
                              "orderStatus":
                                { "orderStatusId": 4, "name": "paid" },
                              "createdOn": "2024-03-22T09:00:00",
                              "description": "Order succesvol betaald",
                            },
                            {
                              "order_orderStatusId": "2b9b7943-3a74-4f2e-ad65-012b62c80821",
                              "orderStatus":
                                {
                                  "orderStatusId": 3,
                                  "name": "pendingPayment",
                                },
                              "createdOn": "2024-03-22T08:55:00",
                              "description": "Betaling in behandeling",
                            },
                          ],
                        "orderLines":
                          [
                            {
                              "orderLineId": "7a7a9d1a-3fc8-4058-a28b-082860aaa311",
                              "externalOrderLineId": "f5fddff0-7fbd-4285-bccb-e584f431ea69",
                              "productId": 1,
                              "productName": "HTM Maandkorting 20%",
                              "fikoArticleNumber": "FIKO-1234",
                              "productDescription": "HTM Maandkorting 20%",
                              "taxAmount": 21,
                              "taxCode": "V21",
                              "taxPercentage": 21,
                              "amountExclTax": 100,
                              "amountInclTax": 121,
                              "quantity": 1,
                              "orderLineTerms":
                                [
                                  {
                                    "orderLineTermsId": "fe354db7-12ad-4fc1-bc63-a704c4e0d91e",
                                    "termsUrl": "generalTermsAndConditions.pdf",
                                  },
                                ],
                              "validFrom": "2024-03-22T09:00:00",
                              "validUntil": "2025-03-22T09:00:00",
                              "orderLineStatus":
                                { "orderLineStatusId": 4, "name": "delivered" },
                              "createdOn": "2024-03-22T09:00:00",
                              "lastUpdatedOn": "2024-03-22T09:00:00",
                              "customerTokens":
                                [
                                  {
                                    "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
                                    "tokenType":
                                      { "tokenTypeId": 1, "name": "EMV" },

                                    "ovPayTokenId": 1,
                                    "serviceReferenceId": "NLOV1234567ABCDEFG",
                                    "amount": 34,
                                    "ovpasNumber": "OV34567",
                                    "verificationCode": "A7H6",
                                    "personalAccountData":
                                      {
                                        "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
                                        "name": "Jan de Vries",
                                        "birthdate": "01-01-1970",
                                        "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                                        "challengeType":
                                          {
                                            "challengeTypeId": 1,
                                            "name": "email",
                                          },
                                        "oneTimePassword": "H5Iiz3JTaQeIV8p",
                                      },
                                  },
                                ],
                              "orderAccountingStatuses":
                                [
                                  {
                                    "orderAccountingStatusId": "7c5118d0-8535-4464-9239-83a7ba8fd2db",
                                    "accountingStatus":
                                      {
                                        "accountingStatusId": 1,
                                        "name": "open",
                                      },
                                    "createdOn": "2024-03-22T09:00:00",
                                    "description": "Financiele transactie voor de FIKO.",
                                  },
                                ],
                            },
                          ],
                        "payments":
                          [
                            {
                              "paymentId": "3ba4a3c7-0803-4214-800b-365851b8903d",
                              "createdOn": "2024-03-22T09:00:00",
                              "amountDebit": 121,
                              "paymentMethod":
                                {
                                  "paymentMethodId": 1,
                                  "name": "ideal",
                                  "provider": "Buckaroo",
                                },
                              "touchPoint":{
                                "touchPointId": 1,
                                "name": "Perplex"
                              },
                              "isRefund": false,
                              "htmPaymentReference": "HTM-1234",
                              "pspPaymentReference": "Buckaroo-1234",
                              "paymentStatuses":
                                [
                                  {
                                    "paymentStatusId": 1,
                                    "createdOn": "2024-03-22T09:00:00",
                                    "statusCode": "190",
                                    "statusDescription": "Success",
                                    "statusSubCode": "S001",
                                    "statusSubDescription": "PaymentSuccessFul",
                                  },
                                ],
                              "mandateInput":
                                {
                                  "mandateInputId": "0a875e67-dc9f-4825-a030-d732a2adbfbc",
                                  "directDebitMandateType":
                                    {
                                      "directDebitMandateTypeId": 1,
                                      "name": "import",
                                    },
                                  "createdOn": "2024-03-22T09:00:00",
                                  "bic": "RABONL2U",
                                  "iban": "NL44RABO0123456789",
                                  "ascription": "J. de Vries",
                                  "place": "Den Haag",
                                },
                            },
                          ],
                        "orderCustomer":
                          {
                            "orderCustomerId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
                            "birthname": "Jan",
                            "surname": "Vries",
                            "prefix": "de",
                            "emailAddress": "jandevries@outlook.com",
                            "dateOfBirth": "1970-01-01",
                            "orderCustomerAddresses":
                              [
                                {
                                  "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
                                  "addressType":
                                    { "addressTypeId": 3, "name": "Billing" },
                                  "street": "Kon. Julianaplein",
                                  "houseNumber": 10,
                                  "houseNumberSuffix": "a",
                                  "postalCode": "2595 AA",
                                  "city": "Den Haag",
                                  "country": "NL",
                                },
                              ],
                          },
                      },
                    ],
                  "href": null,
                }
    post:
      tags:
        - Order
      summary: P1. Create a new order.
      description: Create a new order.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "externalOrderId": "bac3958b-804a-43e3-b5f7-0b0fffaae5b7",
                "customerProfileId": 1337,
                "totalAmount": 121,
                "touchPointId": 1,
                "languageId": 1,
                "createdOn": "2024-03-22T09:00:00",
                "order_OrderStatus":
                  [
                    {
                      "orderStatusId": 4,
                      "createdOn": "2024-03-22T09:00:00",
                      "description": "Order succesvol betaald",
                    },
                    {
                      "orderStatusId": 3,
                      "createdOn": "2024-03-22T08:55:00",
                      "description": "Betaling in behandeling",
                    },
                  ],
                "orderLines":
                  [
                    {
                      "externalOrderLineId": "f5fddff0-7fbd-4285-bccb-e584f431ea69",
                      "productId": 1,
                      "productName": "HTM Maandkorting 20%",
                      "fikoArticleNumber": "FIKO-1234",
                      "productDescription": "HTM Maandkorting 20%",
                      "taxAmount": 21,
                      "taxCode": "V21",
                      "taxPercentage": 21,
                      "amountExclTax": 100,
                      "amountInclTax": 121,
                      "quantity": 1,
                      "orderLineTerms":
                        [{ "termsUrl": "generalTermsAndConditions.pdf" }],
                      "validFrom": "2024-03-22T09:00:00",
                      "validUntil": "2025-03-22T09:00:00",
                      "orderLineStatusId": 4,
                      "createdOn": "2024-03-22T09:00:00",
                      "customerTokens":
                        [
                          {
                            "tokenTypeId": 1,
                            "ovPayTokenId": 1,
                            "serviceReferenceId": "NLOV1234567ABCDEFG",
                            "amount": 34,
                            "ovpasNumber": "OV34567",
                            "verificationCode": "A7H6",
                            "personalAccountData":
                              {
                                "name": "Jan de Vries",
                                "birthdate": "01-01-1970",
                                "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                                "challengeTypeId": 1,
                                "oneTimePassword": "H5Iiz3JTaQeIV8p",
                              }
                          },
                        ],
                      "orderAccountingStatuses":
                        [
                          {
                            "accountingStatusId": 1,
                            "createdOn": "2024-03-22T09:00:00",
                            "description": "Financiele transactie voor de FIKO.",
                          },
                        ],
                    },
                  ],
                "payments":
                  [
                    {
                      "createdOn": "2024-03-22T09:00:00",
                      "amountDebit": 121,
                      "paymentMethodId": 1,
                      "touchPointId": 1,
                      "isRefund": false,
                      "htmPaymentReference": "HTM-1234",
                      "pspPaymentReference": "Buckaroo-1234",
                      "paymentStatuses":
                        [
                          {
                            "createdOn": "2024-03-22T09:00:00",
                            "statusCode": "190",
                            "statusDescription": "Success",
                            "statusSubCode": "S001",
                            "statusSubDescription": "PaymentSuccessFul",
                          },
                        ],
                      "mandateInput":
                        {
                          "directDebitMandateTypeId": 1,
                          "createdOn": "2024-03-22T09:00:00",
                          "bic": "RABONL2U",
                          "iban": "NL44RABO0123456789",
                          "ascription": "J. de Vries",
                          "place": "Den Haag",
                        },
                    },
                  ],
                "orderCustomer":
                  {
                    "birthname": "Jan",
                    "surname": "Vries",
                    "prefix": "de",
                    "emailAddress": "jandevries@outlook.com",
                    "dateOfBirth": "1970-01-01",
                    "orderCustomerAddresses":
                      [
                        {
                          "addressTypeId": 3,
                          "street": "Kon. Julianaplein",
                          "houseNumber": 10,
                          "houseNumberSuffix": "a",
                          "postalCode": "2595 AA",
                          "city": "Den Haag",
                          "country": "NL",
                        },
                      ],
                  },
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orderId": "afce35b2-1dff-4ace-98d0-4b9ac405c87d",
                  "orderNumber": "ORD123456",
                }
  /orders/{orderId}:
    parameters:
      - in: path
        name: orderId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the order to process.
    get:
      summary: P1. Get a single order.
      description: Get a single order.
      tags:
        - Order
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orderId": "afce35b2-1dff-4ace-98d0-4b9ac405c87d",
                  "externalOrderId": "f5fddff0-7fbd-4285-bccb-e584f431ea69",
                  "orderNumber": "123456",
                  "customerProfileId": 1337,
                  "totalAmount": 121,
                  "touchPoint":{
                    "touchPointId": 1,
                    "name": "Perplex"
                   },
                  "language":
                    {
                      "languageId": 1,
                      "name": "Nederlands",
                      "iso639Code": "nl-NL",
                      "ietfCode": "nl",
                    },
                  "createdOn": "2024-03-22T09:00:00",
                  "lastUpdatedOn": "2024-03-22T09:00:00",
                  "order_OrderStatus":
                    [
                      {
                        "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f",
                        "orderStatus": { "orderStatusId": 4, "name": "paid" },
                        "createdOn": "2024-03-22T09:00:00",
                        "description": "Order succesvol betaald",
                      },
                      {
                        "order_orderStatusId": "2b9b7943-3a74-4f2e-ad65-012b62c80821",
                        "orderStatus":
                          { "orderStatusId": 3, "name": "pendingPayment" },
                        "createdOn": "2024-03-22T08:55:00",
                        "description": "Betaling in behandeling",
                      },
                    ],
                  "orderLines":
                    [
                      {
                        "orderLineId": "7a7a9d1a-3fc8-4058-a28b-082860aaa311",
                        "externalOrderLineId": "f5fddff0-7fbd-4285-bccb-e584f431ea69",
                        "productId": 1,
                        "productName": "HTM Maandkorting 20%",
                        "fikoArticleNumber": "FIKO-1234",
                        "productDescription": "HTM Maandkorting 20%",
                        "taxAmount": 21,
                        "taxCode": "V21",
                        "taxPercentage": 21,
                        "amountExclTax": 100,
                        "amountInclTax": 121,
                        "quantity": 1,
                        "orderLineTerms":
                          [
                            {
                              "orderLineTermsId": "fe354db7-12ad-4fc1-bc63-a704c4e0d91e",
                              "termsUrl": "generalTermsAndConditions.pdf",
                            },
                          ],
                        "validFrom": "2024-03-22T09:00:00",
                        "validUntil": "2025-03-22T09:00:00",
                        "orderLineStatus":
                          { "orderLineStatusId": 4, "name": "delivered" },
                        "createdOn": "2024-03-22T09:00:00",
                        "lastUpdatedOn": "2024-03-22T09:00:00",
                        "customerTokens":
                          [
                            {
                              "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
                              "tokenType": { "tokenTypeId": 1, "name": "EMV" },

                              "ovPayTokenId": 1,
                              "serviceReferenceId": "NLOV1234567ABCDEFG",
                              "amount": 34,
                              "ovpasNumber": "OV34567",
                              "verificationCode": "A7H6",
                              "personalAccountData":
                                {
                                  "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
                                  "name": "Jan de Vries",
                                  "birthdate": "01-01-1970",
                                  "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,                         
                                  "challengeType":
                                    { "challengeTypeId": 1, "name": "email" },
                                  "oneTimePassword": "H5Iiz3JTaQeIV8p",
                                },
                            },
                          ],
                        "orderAccountingStatuses":
                          [
                            {
                              "orderAccountingStatusId": "7c5118d0-8535-4464-9239-83a7ba8fd2db",
                              "accountingStatus":
                                { "accountingStatusId": 1, "name": "open" },
                              "createdOn": "2024-03-22T09:00:00",
                              "description": "Financiele transactie voor de FIKO.",
                            },
                          ],
                      },
                    ],
                  "payments":
                    [
                      {
                        "paymentId": "3ba4a3c7-0803-4214-800b-365851b8903d",
                        "createdOn": "2024-03-22T09:00:00",
                        "amountDebit": 121,
                        "paymentMethod":
                          {
                            "paymentMethodId": 1,
                            "name": "ideal",
                            "provider": "Buckaroo",
                          },
                        "touchPoint":{
                          "touchPointId": 1,
                          "name": "Perplex"
                        },
                        "isRefund": false,
                        "htmPaymentReference": "HTM-1234",
                        "pspPaymentReference": "Buckaroo-1234",
                        "paymentStatuses":
                          [
                            {
                              "paymentStatusId": 1,
                              "createdOn": "2024-03-22T09:00:00",
                              "statusCode": "190",
                              "statusDescription": "Success",
                              "statusSubCode": "S001",
                              "statusSubDescription": "PaymentSuccessFul",
                            },
                          ],
                        "mandateInput":
                          {
                            "mandateInputId": "0a875e67-dc9f-4825-a030-d732a2adbfbc",
                            "directDebitMandateType":
                              {
                                "directDebitMandateTypeId": 1,
                                "name": "import",
                              },
                            "createdOn": "2024-03-22T09:00:00",
                            "bic": "RABONL2U",
                            "iban": "NL44RABO0123456789",
                            "ascription": "J. de Vries",
                            "place": "Den Haag",
                          },
                      },
                    ],
                  "orderCustomer":
                    {
                      "orderCustomerId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
                      "birthname": "Jan",
                      "surname": "Vries",
                      "prefix": "de",
                      "emailAddress": "jandevries@outlook.com",
                      "dateOfBirth": "1970-01-01",
                      "orderCustomerAddresses":
                        [
                          {
                            "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
                            "addressType":
                              { "addressTypeId": 3, "name": "Billing" },
                            "street": "Kon. Julianaplein",
                            "houseNumber": 10,
                            "houseNumberSuffix": "a",
                            "postalCode": "2595 AA",
                            "city": "Den Haag",
                            "country": "NL",
                          },
                        ],
                    },
                }
    patch:
      summary: P1. Update an order.
      description: Update an order.
      tags:
        - Order
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "customerProfileId": 1337,
                "totalAmount": 121,
                "languageId": 1,
                "lastUpdatedOn": "2024-03-22T09:00:00",
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "orderId": "afce35b2-1dff-4ace-98d0-4b9ac405c87d" }
    delete:
      summary: RFU. Delete an order.
      description: Delete an order.
      tags:
        - Order
      responses:
        "200":
          description: OK
  /orders/{orderId}/statuses:
    parameters:
      - in: path
        name: orderId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the order to process.
    post:
      summary: P1. Add an order status.
      description: Add an order status.
      tags:
        - Order
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "orderStatusId": 1,
                "createdOn": "2024-03-22T09:00:00",
                "description": "Order verzonden",
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "order_orderStatusId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
                }
  /orders/{orderId}/orderlines:
    parameters:
      - in: path
        name: orderId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the order to process.
    post:
      summary: P1. Add a single order line to an order.
      description: Add a single order line to an order.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "externalOrderLineId": "f5fddff0-7fbd-4285-bccb-e584f431ea69",
                "productId": 1,
                "productName": "HTM Maandkorting 20%",
                "fikoArticleNumber": "FIKO-1234",
                "productDescription": "HTM Maandkorting 20%",
                "taxAmount": 21,
                "taxCode": "V21",
                "taxPercentage": 21,
                "amountExclTax": 100,
                "amountInclTax": 121,
                "quantity": 1,
                "orderLineTerms":
                  [{ "termsUrl": "generalTermsAndConditions.pdf" }],
                "validFrom": "2024-03-22T09:00:00",
                "validUntil": "2025-03-22T09:00:00",
                "orderLineStatusId": 4,
                "createdOn": "2024-03-22T09:00:00",
                "customerTokens":
                  [
                    {
                      "tokenTypeId": 1,
                      "ovPayTokenId": 1,
                      "serviceReferenceId": "NLOV1234567ABCDEFG",
                      "amount": 34,
                      "ovpasNumber": "OV34567",
                      "verificationCode": "A7H6",
                      "personalAccountData":
                        {
                          "birthdate": "01-01-1970"
                        },
                    },
                  ],
                "orderAccountingStatuses":
                  [
                    {
                      "accountingStatusId": 1,
                      "createdOn": "2024-03-22T09:00:00",
                      "description": "Financiele transactie voor de FIKO.",
                    },
                  ],
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "orderLineId": "1e441d7d-50d6-4006-aca7-5e87e2f218df" }
  /orders/{orderId}/payments:
    parameters:
      - in: path
        name: orderId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the order to process.
    post:
      summary: P2. Add a payment to an order.
      description: Add a payment to an order.
      tags:
        - Payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "createdOn": "2024-03-22T09:00:00",
                "amountDebit": 121,
                "paymentMethodId": 1,
                "touchPointId": 1,
                "isRefund": false,
                "htmPaymentReference": "HTM-1234",
                "pspPaymentReference": "Buckaroo-1234",
                "paymentStatuses":
                  [
                    {
                      "createdOn": "2024-03-22T09:00:00",
                      "statusCode": "190",
                      "statusDescription": "Success",
                      "statusSubCode": "S001",
                      "statusSubDescription": "PaymentSuccessFul",
                    },
                  ],
                "mandateInput":
                  {
                    "directDebitMandateTypeId": 1,
                    "createdOn": "2024-03-22T09:00:00",
                    "bic": "RABONL2U",
                    "iban": "NL44RABO0123456789",
                    "ascription": "J. de Vries",
                    "place": "Den Haag",
                  },
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "paymentId": "dfae0f6f-95f0-4eac-ab1a-36ffe1f31aac" }
  /orders/{orderId}/ordercustomers:
    parameters:
      - in: path
        name: orderId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the order to process.
    post:
      summary: P3. Add a customer to an order.
      description: Add a customer to an order.
      tags:
        - Customer
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "birthname": "Jan",
                "surname": "Vries",
                "prefix": "de",
                "emailAddress": "jandevries@outlook.com",
                "dateOfBirth": "1970-01-01",
                "orderCustomerAddresses":
                  [
                    {
                      "addressTypeId": 3,
                      "street": "Kon. Julianaplein",
                      "houseNumber": 10,
                      "houseNumberSuffix": "a",
                      "postalCode": "2595 AA",
                      "city": "Den Haag",
                      "country": "NL",
                    },
                  ],
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                { "orderCustomerId": "9c9ae71f-7de9-49f9-b676-b0fe103f6286" }
  /orderlines:
    get:
      summary: P1. Find order lines.
      description: Find order lines.
      tags:
        - Order Line
      parameters:
        - in: query
          name: orderLineId
          schema:
            type: string
            format: uuid
            example: 4ea492ff-8ffc-4a4e-901e-59f05e854285
          required: false
          description: The id of the order line.
        - in: query
          name: externalOrderLineId
          schema:
            type: string
            format: uuid
            example: 4e333615-6ecd-4b68-a4f8-4f66f6af9be1
          required: false
          description: The id of the order line in the external system.
        - in: query
          name: productId
          schema:
            type: integer
            example: 42
          required: false
          description: The technical id of the product.
        - in: query
          name: productName
          schema:
            type: string
            example: HTM Maandkorting 20%
          required: false
          description: The name of the product.
        - in: query
          name: fikoArticleNumber
          schema:
            type: string
            example: FIKO-1234
          required: false
          description: The code of the product.
        - in: query
          name: taxAmount
          schema:
            type: integer
            example: 21
          required: false
          description: The amount of tax calculated.
        - in: query
          name: taxCode
          schema:
            type: string
            format: uuid
            example: "V21"
          required: false
          description: The tax code.
        - in: query
          name: taxPercentage
          schema:
            type: string
            format: uuid
            example: 21
          required: false
          description: The tax percentage.
        - in: query
          name: amountExclTax
          schema:
            type: integer
            example: 100
          required: false
          description: The amount of the order line before taxes.
        - in: query
          name: amountInclTax
          schema:
            type: integer
            example: 121
          required: false
          description: The amount of the order line after taxes.
        - in: query
          name: quantity
          schema:
            type: integer
            example: 1
          required: false
          description: The quantity of products for this order line.
        - in: query
          name: termsUrl
          schema:
            type: string
            example: generalTermsAndConditions.pdf
          required: false
          description: The terms of conditions that apply on this order line.
        - in: query
          name: validFrom
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp from which the ordered product is valid.
        - in: query
          name: validUntil
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp from which the ordered product is valid.
        - in: query
          name: orderLineStatusId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on possible order line statuses. 1 = pending, 3 = delivered, 4 = cancelled, 5 = refunded, 7 = shipped.
        - in: query
          name: createdBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the order line should have been created.
        - in: query
          name: createdAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the order line should have been created.
        - in: query
          name: updatedBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the order line should have been updated.
        - in: query
          name: updatedAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the order line should have been updated.
        - in: query
          name: accountingStatusId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on current account statuses. 1 = open, 2 = sent, 3 = received, 4 = rejected.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "orderLineId": "7a7a9d1a-3fc8-4058-a28b-082860aaa311",
                    "orderId": "7ec1c3ae-0112-4aaf-adb9-c2436234fec6",
                    "externalOrderLineId": "4e333615-6ecd-4b68-a4f8-4f66f6af9be1",
                    "productId": 1,
                    "productName": "HTM Maandkorting 20%",
                    "fikoArticleNumber": "FIKO-1234",
                    "productDescription": "HTM Maandkorting 20%",
                    "taxAmount": 21,
                    "taxCode": "V21",
                    "taxPercentage": 21,
                    "amountExclTax": 100,
                    "amountInclTax": 121,
                    "quantity": 1,
                    "orderLineTerms":
                      [
                        {
                          "orderLineTermsId": "fe354db7-12ad-4fc1-bc63-a704c4e0d91e",
                          "termsUrl": "generalTermsAndConditions.pdf",
                        },
                      ],
                    "validFrom": "2024-03-22T09:00:00",
                    "validUntil": "2025-03-22T09:00:00",
                    "orderLineStatus":
                      { "orderLineStatusId": 4, "name": "delivered" },
                    "createdOn": "2024-03-22T09:00:00",
                    "lastUpdatedOn": "2024-03-22T09:00:00",
                    "customerTokens":
                      [
                        {
                          "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
                          "tokenType": { "tokenTypeId": 1, "name": "EMV" },
                          "ovPayTokenId": 1,
                          "serviceReferenceId": "NLOV1234567ABCDEFG",
                          "amount": 34,
                          "ovpasNumber": "OV34567",
                          "verificationCode": "A7H6",
                          "personalAccountData":
                            {
                              "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
                              "name": "Jan de Vries",
                              "birthdate": "01-01-1970",
                              "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                              "challengeType":
                                { "challengeTypeId": 1, "name": "email" },
                              "oneTimePassword": "H5Iiz3JTaQeIV8p",
                            },
                        },
                      ],
                    "orderAccountingStatuses":
                      [
                        {
                          "orderAccountingStatusId": "7c5118d0-8535-4464-9239-83a7ba8fd2db",
                          "accountingStatus":
                            { "accountingStatusId": 1, "name": "open" },
                          "createdOn": "2024-03-22T09:00:00",
                          "description": "Financiele transactie voor de FIKO.",
                        },
                      ],
                  },
                ]
  /orderlines/{orderLineId}:
    parameters:
      - in: path
        name: orderLineId
        schema:
          type: string
          format: uuid
          example: 39d37066-c59d-4807-8ae5-45c249e28d68
        required: true
        description: The id of the order line to process.
    patch:
      summary: P1. Update an order line.
      description: Update an order line.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "taxAmount": 21,
                "taxCode": "V21",
                "taxPercentage": 21,
                "amountExclTax": 100,
                "amountInclTax": 121,
                "quantity": 1,
                "validFrom": "2024-03-22T09:00:00",
                "validUntil": "2025-03-22T09:00:00",
                "orderLineStatusId": 1,
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "orderLineId": "ee82686a-a9f6-4888-b336-8e2aab6f4e13" }
    delete:
      summary: RFU. Delete an order line.
      description: Delete an order line.
      tags:
        - Order Line
      responses:
        "200":
          description: OK
  /orderlines/{orderLineId}/accountingstatuses:
    parameters:
      - in: path
        name: orderLineId
        schema:
          type: string
          format: uuid
          example: 9ff2e034-ed4f-44d5-8f6c-d703bd4df332
        required: true
        description: The id of the order line to process.
    post:
      summary: P4. Add an accounting status to an order line.
      description: Add an accounting status to an order line.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "accountingStatusId": 1,
                "createdOn": "2024-03-22T09:00:00",
                "description": "Financiele transactie voor de FIKO.",
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orderAccountingStatusId": "60dbd8a7-0a22-40b5-9c53-1bc9aaf1a1ae",
                }
  /orderlines/{orderLineId}/customertokens:
    parameters:
      - in: path
        name: orderLineId
        schema:
          type: string
          format: uuid
          example: 9ff2e034-ed4f-44d5-8f6c-d703bd4df332
        required: true
        description: The id of the order line to process.
    post:
      summary: P3. Add a customer token to an order line.
      description: Add acustomer token to an order line.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "tokenTypeId": 1,
                "ovPayTokenId": 1,
                "serviceReferenceId": "NLOV1234567ABCDEFG",
                "amount": 34,
                "ovpasNumber": "OV34567",
                "verificationCode": "A7H6",
                "personalAccountData":
                  {                   
                    "birthdate": "01-01-1970",
                  }
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                { "customerTokenId": "eeec597c-36c4-41b2-aeeb-ab5c32f2365d" }
  /customertokens:
    get:
      summary: P3. Find customer tokens.
      description: Find customer tokens.
      tags:
        - Order Line
      parameters:
        - in: query
          name: customerTokenId
          schema:
            type: string
            format: uuid
            example: 74c07b9e-5979-4fcc-b98c-4f0be456838c
          required: false
          description: The id of the customer token.
        - in: query
          name: orderLineId
          schema:
            type: string
            format: uuid
            example: 4ea492ff-8ffc-4a4e-901e-59f05e854285
          required: false
          description: The id of the order line.
        - in: query
          name: tokenTypeId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on possible token types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital.
        - in: query
          name: ovPayTokenId
          schema:
            type: integer
            example: 42
          required: false
          description: The id of the OVpay token.
        - in: query
          name: serviceReferenceId
          schema:
            type: string
            example: NLOV1234567ABCDEFG
          required: false
          description: Service reference id of the token.
        - in: query
          name: amount
          schema:
            type: integer
            example: 131
          required: false
          description: The amount corresponding to the SRID.
        - in: query
          name: ovpasNumber
          schema:
            type: string
            example: 63AW974
          required: false
          description: Number of the OVpas.
        - in: query
          name: verificationCode
          schema:
            type: string
            example: 8ZY2
          required: false
          description: Verification code corresponding to the OVpas.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
                    "orderId": "95454803-68fb-4735-a9b5-1251cdece3cd",
                    "orderLineId": "9b0d28a2-46ce-4e74-9cf5-497a5b91e86b",
                    "tokenType": { "tokenTypeId": 1, "name": "EMV" },
                    "ovPayTokenId": 1,
                    "serviceReferenceId": "NLOV1234567ABCDEFG",
                    "amount": 34,
                    "ovpasNumber": "OV34567",
                    "verificationCode": "A7H6",
                    "personalAccountData":
                      {
                        "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
                        "name": "Jan de Vries",
                        "birthdate": "01-01-1970",
                        "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                        "challengeType":
                          { "challengeTypeId": 1, "name": "email" },
                        "oneTimePassword": "H5Iiz3JTaQeIV8p",
                      },
                  },
                ]
  /customertokens/{customerTokenId}:
    parameters:
      - in: path
        name: customerTokenId
        schema:
          type: string
          format: uuid
          example: 510194ef-0038-45ef-94c7-262df93ef1d7
        required: true
        description: The id of the customer token.
    patch:
      summary: P3. Update a customer token.
      description: Update a customer token.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "tokenTypeId": 1,
                "ovPayTokenId": 1,
                "serviceReferenceId": "NLOV1234567ABCDEFG",
                "amount": 34,
                "ovpasNumber": "OV34567",
                "verificationCode": "A7H6",
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                { "customerTokenId": "0aedb483-2477-4720-aee6-7abcd016843b" }
    delete:
      summary: P1. Delete a customer token.
      description: Delete a customer token.
      tags:
        - Order Line
      responses:
        "200":
          description: OK
  /customertokens/{customerTokenId}/personalaccountdata:
    parameters:
      - in: path
        name: customerTokenId
        schema:
          type: string
          format: uuid
          example: 510194ef-0038-45ef-94c7-262df93ef1d7
        required: true
        description: The id of the customer token.
    post:
      summary: P3. Add personal account data to token.
      description: Add personal account data to token.
      tags:
        - Order Line
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            examples:
              birthdate PersonalAccountData:
                summary: PersonalAccountData birthdate
                description: Only record birthdate PersonalAccountData
                value:
                  {
                    "birthdate": "01-01-1970"
                  }              
              name PersonalAccountData:
                summary: PersonalAccountData name
                description: Only record name PersonalAccountData
                value:
                  {
                    "name": "Jan de Vries"
                  }
              photo PersonalAccountData:
                summary: PersonalAccountData photo
                description: Only record photo in PersonalAccountData
                value:
                  {
                    "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                  }
              full PersonalAccountData:
                summary: PersonalAccountData full
                description: Fill the entire record for PersonalAccountData
                value:
                  {
                    "name": "Jan de Vries",
                    "birthdate": "01-01-1970",
                    "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                    "challengeTypeId": 1,
                    "oneTimePassword": "H5Iiz3JTaQeIV8p",
                  }
              existing PersonalAccountData:
                summary: PersonalAccountData already exists for customerToken
                description: PersonalAccountData already exists for customerToken
                value:
                  {
                    "name": "Jan de Vries",
                    "birthdate": "01-01-1970",
                    "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                    "challengeTypeId": 1,
                    "oneTimePassword": "H5Iiz3JTaQeIV8p",
                  }
      responses:
        "201":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                { "personalAccountDataId": "0aedb483-2477-4720-aee6-7abcd016843b" }        
        "405":
          description: Method not allowed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              examples:
                   existing PersonalAccountData:
                    summary: PersonalAccountData already exists for customerToken
                    description: PersonalAccountData already exists for customerToken
                    value:
                      {
                        "code": "405",
                        "type": "string",
                        "message": "Method not allowed",
                        "description": "PersonalAccountData resource already exists for customerToken with customerTokenId:510194ef-0038-45ef-94c7-262df93ef1d7"
                      }                      
  /personalaccountdata:
    get:
      summary: P5. Find personal account data.
      description: Find customer tokens.
      tags:
        - Order Line
      parameters:
        - in: query
          name: personalAccountDataId
          schema:
            type: string
            format: uuid
            example: 0743969c-4e4c-4123-bd45-0366f7add029
          required: false
          description: The id of the personal account data.
        - in: query
          name: customerTokenId
          schema:
            type: string
            format: uuid
            example: 9935456d-45e5-419a-91c0-5deb85119f2b
          required: false
          description: The id of the customer token.
        - in: query
          name: name
          schema:
            type: string
            example: J. de Vries
          required: false
          description: The name of the customer.
        - in: query
          name: birthdate
          schema:
            type: string
            format: date
            example: 1970-01-01
          required: false
          description: The date of birth of the customer.
        - in: query
          name: photo
          schema:
            type: string
            example: data:image/png;base64,[encoded data, 29368 characters]
          required: false
          description: A reference to the customer photo.
        - in: query
          name: challengeTypeId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on possible challenge types. 1 = email, 2 = sms.
        - in: query
          name: oneTimePassword
          schema:
            type: string
            example: "H5Iiz3JTaQeIV8p"
          explode: false
          required: false
          description: Filter on possible challenge types. 1 = email, 2 = sms.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
                    "customerTokenId": "7252ad91-3a4b-4ab4-b529-ec78a39a49b2",
                    "orderLineId": "858e31b9-67f0-46ca-bf88-91a382b9c079",
                    "orderId": "858e31b9-67f0-46ca-bf88-91a382b9c079",
                    "name": "Jan de Vries",
                    "birthdate": "01-01-1970",
                    "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                    "challengeType": { "challengeTypeId": 1, "name": "email" },
                    "oneTimePassword": "H5Iiz3JTaQeIV8p",
                  },
                ]
  /personalaccountdata/{personalAccountDataId}:
    parameters:
      - in: path
        name: personalAccountDataId
        schema:
          type: string
          format: uuid
          example: e4e0d37d-d01e-4633-b849-87113ed207bd
        required: true
        description: The id of the personal account data.
    patch:
      summary: P5. Update personal account data.
      description: Update personal account data.
      tags:
        - Order Line
      requestBody:
        content:
          application/jso"n:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
                "challengeTypeId": 1,
                "oneTimePassword": "H5Iiz3JTaQeIV8p",
                "name": "Jan Pad",
                "birthdate": "1992-04-20"
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "personalAccountDataId": "47041fde-7044-42e6-9ab5-091c05ce32f5",
                }
    delete:
      summary: P5. Delete personal account data.
      description: Delete personal account data.
      tags:
        - Order Line
      responses:
        "200":
          description: Ok
  /payments:
    get:
      summary: P2. Find payments.
      description: Find payments.
      tags:
        - Payment
      parameters:
        - in: query
          name: paymentId
          schema:
            type: string
            format: uuid
            example: 4ea492ff-8ffc-4a4e-901e-59f05e854285
          required: false
          description: The id of the payment.
        - in: query
          name: orderId
          schema:
            type: string
            format: uuid
            example: 292e5f86-cefc-4224-9506-d204ed3a426f
          required: false
          description: The id of the order where the payment belongs to.
        - in: query
          name: createdBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the payment should have been created.
        - in: query
          name: createdAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the payment should have been created.
        - in: query
          name: amountDebit
          schema:
            type: integer
            example: 100
          required: false
          description: The amount of debit to pay.
        - in: query
          name: paymentMethodId
          schema:
            type: integer
            example: 1
          required: false
          description: The technical id of the payment method used to pay.
        - in: query
          name: touchPointId
          schema:
            type: integer
            example: 1
          required: false
          description: The id of the touch point where the payment was initiated.
        - in: query
          name: isRefund
          schema:
            type: boolean
            example: false
          required: false
          description: If the payment concerns a refund or not.
        - in: query
          name: htmPaymentReference
          schema:
            type: string
            example: HTM-1234
          required: false
          description: The payment reference on HTM side.
        - in: query
          name: pspPaymentReference
          schema:
            type: string
            example: Buckaroo-1234
          required: false
          description: The payment reference on PSP side.
        - in: query
          name: paymentStatusCode
          schema:
            type: string
            example: 190
          required: false
          description: The current status of the payment.
        - in: query
          name: paymentStatusSubCode
          schema:
            type: string
            example: S001
          required: false
          description: The current substatus of the payment.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "paymentId": "3ba4a3c7-0803-4214-800b-365851b8903d",
                    "orderId": "afa89108-3e40-44ac-8bea-7c7f0f2d4006",
                    "createdOn": "2024-03-22T09:00:00",
                    "amountDebit": 121,
                    "paymentMethod":
                      {
                        "paymentMethodId": 1,
                        "name": "ideal",
                        "provider": "Buckaroo",
                      },
                    "touchPoint":{
                      "touchPointId": 1,
                      "name": "Perplex"
                     },
                    "isRefund": false,
                    "htmPaymentReference": "HTM-1234",
                    "pspPaymentReference": "Buckaroo-1234",
                    "paymentStatuses":
                      [
                        {
                          "paymentStatusId": 1,
                          "createdOn": "2024-03-22T09:00:00",
                          "statusCode": "190",
                          "statusDescription": "Success",
                          "statusSubCode": "S001",
                          "statusSubDescription": "PaymentSuccessFul",
                        },
                      ],
                    "mandateInput":
                      {
                        "mandateInputId": "0a875e67-dc9f-4825-a030-d732a2adbfbc",
                        "directDebitMandateType":
                          { "directDebitMandateTypeId": 1, "name": "import" },
                        "createdOn": "2024-03-22T09:00:00",
                        "bic": "RABONL2U",
                        "iban": "NL44RABO0123456789",
                        "ascription": "J. de Vries",
                        "place": "Den Haag",
                      },
                  },
                ]
  /payments/{paymentId}:
    parameters:
      - in: path
        name: paymentId
        schema:
          type: string
          format: uuid
          example: fd09f3c5-35d9-4a1b-a98b-e46addb663f2
        required: true
        description: The id of the payment to process.
    patch:
      summary: P2. Update a payment.
      description: Update a payment.
      tags:
        - Payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "htmPaymentReference": "HTM-1234",
                "pspPaymentReference": "Buckaroo-1234",
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "paymentId": "dbbc3913-414e-4528-9c95-6c11a11e04ac" }
  /payments/{paymentId}/paymentstatuses:
    parameters:
      - in: path
        name: paymentId
        schema:
          type: string
          format: uuid
          example: 4c7f67bd-175e-472b-86e8-f7b388754dce
        required: true
        description: The id of the payment to process.
    post:
      summary: P2. Add a payment status.
      description: Add a payment status.
      tags:
        - Payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "createdOn": "2024-03-22T09:00:00",
                "statusCode": "190",
                "statusDescription": "Success",
                "statusSubCode": "S001",
                "statusSubDescription": "PaymentSuccessFul",
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "paymentId": "f3919c07-8fa1-4ff4-a4a6-8f99106b9129",
                  "paymentStatusId": 2,
                }
  /mandateinputs:
    get:
      summary: P2. Find mandate inputs.
      description: Find mandate inputs.
      tags:
        - Payment
      parameters:
        - in: query
          name: mandateInputId
          schema:
            type: string
            format: uuid
            example: 3448e3a7-8e66-4563-ae4f-2d3ec13ca97d
          required: false
          description: The id of the mandate input.
        - in: query
          name: paymentId
          schema:
            type: string
            format: uuid
            example: 24b6300a-1d43-4ed4-8b5f-034f6471c9cb
          required: false
          description: The id of the payment.
        - in: query
          name: directDebitMandateTypeId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on possible types of mandates. 1 = import, 2 = invite, 3 = paper.
        - in: query
          name: createdBefore
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp before which the mandate input should have been created.
        - in: query
          name: createdAfter
          schema:
            type: string
            format: date-time
            example: 2024-03-22T09:00:00
          required: false
          description: Timestamp after which the mandate input should have been created.
        - in: query
          name: bic
          schema:
            type: string
            example: BUNQNL2A
          required: false
          description: The BIC of the mandate input.
        - in: query
          name: iban
          schema:
            type: string
            example: NL15BUNQ0417164300
          required: false
          description: The IBAN of the mandate input.
        - in: query
          name: ascription
          schema:
            type: string
            example: J. de Vries
          required: false
          description: The ascription of the mandate input.
        - in: query
          name: place
          schema:
            type: string
            example: Den Haag
          required: false
          description: The place where the mandate was signed.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "mandateInputId": "0a875e67-dc9f-4825-a030-d732a2adbfbc",
                    "paymentId": "4a7ee6ec-d218-49b7-a5bf-0107945767ee",
                    "orderId": "afa89108-3e40-44ac-8bea-7c7f0f2d4006",
                    "directDebitMandateType":
                      { "directDebitMandateTypeId": 1, "name": "import" },
                    "createdOn": "2024-03-22T09:00:00",
                    "bic": "RABONL2U",
                    "iban": "NL44RABO0123456789",
                    "ascription": "J. de Vries",
                    "place": "Den Haag",
                  },
                ]
  /payments/{paymentId}/mandateinputs:
    parameters:
      - in: path
        name: paymentId
        schema:
          type: string
          format: uuid
          example: fd09f3c5-35d9-4a1b-a98b-e46addb663f2
        required: true
        description: The id of the payment to process.
    post:
      summary: P2. Create a mandateInput.
      description: Create a mandateInput..
      tags:
        - Payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                    "directDebitMandateTypeId": 1,
                    "createdOn": "2024-03-22T09:00:00",
                    "bic": "RABONL2U",
                    "iban": "NL44RABO0123456789",
                    "ascription": "J. de Vries",
                    "place": "Den Haag",
              }
      responses:
        "201":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: { "mandateInputId": "dbbc3913-414e-4528-9c95-6c11a11e04ac" }
  /mandateinputs/{mandateInputId}:
    parameters:
      - in: path
        name: mandateInputId
        schema:
          type: string
          format: uuid
          example: 279dfaf5-b744-4d66-964a-d8c0a5c05809
        required: true
        description: The id of the mandate input to process.
    delete:
      summary: P2. Delete a mandate input.
      description: Delete a mandate input.
      tags:
        - Payment
      responses:
        "200":
          description: Ok
  /ordercustomers:
    get:
      summary: P3. Find customers on an order.
      description: Find customers on an order.
      tags:
        - Customer
      parameters:
        - in: query
          name: orderCustomerId
          schema:
            type: string
            format: uuid
            example: 0743969c-4e4c-4123-bd45-0366f7add029
          required: false
          description: The id of the customer on the order.
        - in: query
          name: orderId
          schema:
            type: string
            format: uuid
            example: 9935456d-45e5-419a-91c0-5deb85119f2b
          required: false
          description: The id of order.
        - in: query
          name: birthname
          schema:
            type: string
            example: Jan
          required: false
          description: The birth name of the customer.
        - in: query
          name: surname
          schema:
            type: string
            example: Vries
          required: false
          description: The surname of the customer.
        - in: query
          name: prefix
          schema:
            type: string
            example: de
          required: false
          description: The prefix of the customer.
        - in: query
          name: emailAddress
          schema:
            type: string
            example: jandevries@outlook.com
          required: false
          description: The email address of the customer.
        - in: query
          name: dateOfBirth
          schema:
            type: string
            format: date
            example: 1970-01-01
          required: false
          description: The date of birth of the customer.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "orderCustomerId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
                    "orderId": "f59e4769-53a0-4156-8991-6f9119ba629f",
                    "birthname": "Jan",
                    "surname": "Vries",
                    "prefix": "de",
                    "emailAddress": "jandevries@outlook.com",
                    "dateOfBirth": "1970-01-01",
                    "orderCustomerAddresses":
                      [
                        {
                          "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
                          "addressType":
                            { "addressTypeId": 3, "name": "Billing" },
                          "street": "Kon. Julianaplein",
                          "houseNumber": 10,
                          "houseNumberSuffix": "a",
                          "postalCode": "2595 AA",
                          "city": "Den Haag",
                          "country": "NL",
                        },
                      ],
                  },
                ]
  /ordercustomers/{orderCustomerId}:
    parameters:
      - in: path
        name: orderCustomerId
        schema:
          type: string
          format: uuid
          example: 4edbfe64-7858-44f0-b262-2bbb7e1af4a4
        required: true
        description: The id of the customer.
    patch:
      summary: P3. Update a customer on an order.
      description: Update a customer on an order.
      tags:
        - Customer
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "birthname": "Jan",
                "surname": "Vries",
                "prefix": "de",
                "emailAddress": "jandevries@outlook.com",
                "dateOfBirth": "1970-01-01",
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                { "orderCustomerId": "bcf2896d-1ff4-4c5a-ad57-db12fd3c94e7" }
  /ordercustomers/{orderCustomerId}/ordercustomeraddresses:
    parameters:
      - in: path
        name: orderCustomerId
        schema:
          type: string
          format: uuid
          example: d1dd439b-6072-4b97-89c9-724268865b93
        required: true
        description: The id of the customer on the order.
    post:
      summary: P3. Add an addresses to a customer of the order.
      description: Add an addresses to a customer of the order.
      tags:
        - Customer
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "addressTypeId": 3,
                "street": "Kon. Julianaplein",
                "houseNumber": 10,
                "houseNumberSuffix": "a",
                "postalCode": "2595 AA",
                "city": "Den Haag",
                "country": "NL",
              }
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orderCustomerAddressId": "9c9ae71f-7de9-49f9-b676-b0fe103f6286",
                }
  /ordercustomeraddresses:
    get:
      summary: P3. Find addresses of a customer on an order.
      description: Find addresses of a customer on an order.
      tags:
        - Customer
      parameters:
        - in: query
          name: orderCustomerAddressId
          schema:
            type: string
            format: uuid
            example: 0743969c-4e4c-4123-bd45-0366f7add029
          required: false
          description: The id of the addresses of a customer on the order.
        - in: query
          name: orderCustomerId
          schema:
            type: string
            format: uuid
            example: 9935456d-45e5-419a-91c0-5deb85119f2b
          required: false
          description: The id of the customer on the order.
        - in: query
          name: addressTypeId
          schema:
            type: array
            items:
              type: integer
          explode: false
          required: false
          description: Filter on possible types of addresses. 1 = Shipping, 3 = Billing.
        - in: query
          name: street
          schema:
            type: string
            example: Kon. Julianaplein
          required: false
          description: The street of the address.
        - in: query
          name: houseNumber
          schema:
            type: integer
            example: 10
          required: false
          description: The house number of the address.
        - in: query
          name: houseNumberSuffix
          schema:
            type: string
            example: A
          required: false
          description: The suffix of the house number.
        - in: query
          name: postalCode
          schema:
            type: string
            example: 2595 AA
          required: false
          description: The postal code of the address.
        - in: query
          name: city
          schema:
            type: string
            example: Den Haag
          required: false
          description: The city of the address.
        - in: query
          name: country
          schema:
            type: string
            example: NL
          required: false
          description: The country of the address.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                [
                  {
                    "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
                    "orderCustomerId": "540d8b7a-d626-443f-8f99-c24398604d7a",
                    "orderId": "73cca95a-81d1-468f-a8bf-99b36367001a",
                    "addressType": { "addressTypeId": 3, "name": "Billing" },
                    "street": "Kon. Julianaplein",
                    "houseNumber": 10,
                    "houseNumberSuffix": "a",
                    "postalCode": "2595 AA",
                    "city": "Den Haag",
                    "country": "NL",
                  },
                ]
  /ordercustomeraddresses/{orderCustomerAddressId}:
    parameters:
      - in: path
        name: orderCustomerAddressId
        schema:
          type: string
          format: uuid
          example: 4edbfe64-7858-44f0-b262-2bbb7e1af4a4
        required: true
        description: The id of the customer address.
    patch:
      summary: P3. Update an address of a customer on an order.
      description: Update an address of a customer on an order.
      tags:
        - Customer
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/unavailable"
            example:
              {
                "addressTypeId": 1,
                "street": "Kon. Julianaplein",
                "houseNumber": 10,
                "houseNumberSuffix": "a",
                "postalCode": "2595 AA",
                "city": "Den Haag",
                "country": "NL",
              }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example:
                {
                  "orderCustomerAddressId": "d5005529-d4f2-4552-a5b8-477dab7836ec",
                }
    delete:
      summary: P3. Delete an address of a customer on an order.
      description: Delete an address of a customer on an order.
      tags:
        - Customer
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/unavailable"
              example: {}
components:
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    unavailable:
      type: object
    rfc9457:
      type: object
      properties:
        type:
          type: string
          format: url
          example: https://example.com/probs/out-of-credit
        title:
          type: string
          example: You do not have enough credit.
        detail:
          type: string
          example: Your current balance is 30, but that costs 50.
        instance:
          type: string
          example: /account/12345/msgs/abc
        balance:
          type: string
          example: 30
        accounts:
          type: array
          items:
            type: string
            example:
              - /account/12345
              - /account/67890
