openapi: 3.0.1 info: title: ABT Service Engine Order APIs version: "1.0" description: Order APIs available in the Service Engine for order validation and fulfillment. servers: - url: https://api.integratielaag.nl/v2 paths: /orders/validation: post: tags: - Order Validation v2 summary: Validate order. description: Validate order. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: { "purchaseDate": "2024-03-22", "customerProfileId": 1337, "languageId": 1, "billingAddressId": 1, "shippingAddressId": 1, "contents": [ { "productId": 1, "quantity": 5, "validFrom": "2024-03-22T09:00:00", "validUntil": null, "tokens": [ { "tokenTypeId": 1, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", "amount": 34, "ovpasNumber": "OV34567", "verificationCode": "A7H6", "personalAccountData": { "name": "Jan de Vries", "dateOfBirth": "01-01-1970", "photoReference": "DSC_0502.JPG", "fileType": "image/jpg", "challengeTypeId": 1, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, }, ], }, { "productId": 2, "quantity": 3, "validFrom": "2024-03-22T09:00:00", "validUntil": null, }, ], "customer": { "birthname": "Jan", "surname": "Vries", "prefix": "de", "emailAddress": "jandevries@outlook.com", "dateOfBirth": "1970-01-01", "addresses": [ { "addressTypeId": 1, "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: { "validContents": true, "purchaseDate": "2024-03-22", "customerProfileId": 1337, "languageId": 1, "billingAddressId": 1, "shippingAddressId": 1, "totalAmount": 121, "contents": [ { "productId": 1, "quantity": 5, "validFrom": "2024-03-22T09:00:00", "validUntil": null, "taxAmount": 21, "taxCode": "V21", "amountExclTax": 100, "amountInclTax": 121, "isRenewable": true, "nextDebitDate": "2024-04-22", "termAmountExclTax": 100, "termAmountInclTax": 121, "tokens": [ { "tokenTypeId": 1, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", "amount": 34, "ovpasNumber": "OV34567", "verificationCode": "A7H6", "personalAccountData": { "name": "Jan de Vries", "dateOfBirth": "01-01-1970", "photoReference": "DSC_0502.JPG", "fileType": "image/jpg", "challengeTypeId": 1, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, }, ], "additionalRemarks": [], "validationErrors": [ { "detail": "Startdate of this product should be at most 60 days in the future.", "pointer": "#/contents[0]/validFrom", }, { "detail": "Combination of product and token type is not valid.", "pointer": "#/contents[0]/tokens[0]/ovPayTokenId", }, ], }, { "productId": 2, "quantity": 3, "validFrom": "2024-03-22T09:00:00", "validUntil": null, "taxAmount": 21, "taxCode": "V21", "amountExclTax": 100, "amountInclTax": 121, "isRenewable": true, "nextDebitDate": "2024-04-22", "termAmountExclTax": 100, "termAmountInclTax": 121, }, ], "customer": { "birthname": "Jan", "surname": "Vries", "prefix": "de", "emailAddress": "jandevries@outlook.com", "dateOfBirth": "1970-01-01", "addresses": [ { "addressTypeId": 1, "street": "Kon. Julianaplein", "houseNumber": 10, "houseNumberSuffix": "a", "postalCode": "2595 AA", "city": "Den Haag", "country": "NL", }, ], "additionalRemarks": [ { "code": "PERSONAL_DATA_NEEDED", "parameter": "dateOfBirth", }, { "code": "PERSONAL_DATA_NEEDED", "parameter": "photo", }, { "code": "MANDATE_REQUIRED", "parameter": "directDebitMandateId", }, ], "validationErrors": [ { "detail": "Startdate of this product should be at most 60 days in the future.", "pointer": "#/contents[1]/validFrom", }, ], }, } /orders/{orderId}/fulfillment: post: tags: - Order Fulfillment v2 summary: Fulfill an order. description: Fulfill an order. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header required: true style: simple explode: false schema: type: string - name: orderId in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: { "orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", "customerProfileId": 1337, "totalAmount": 121, "languageId": 1, "billingAddressId": 1, "shippingAddressId": 1, "createdOn": "2024-03-22T09:00:00", "orderStatusId": 4, "orderLines": [ { "orderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f", "productId": 1, "productName": "HTM Maandkorting 20%", "productCode": "HTM-MND-20", "productDescription": "HTM Maandkorting 20%", "taxAmount": 21, "taxCode": "V21", "amountExclTax": 100, "amountInclTax": 121, "quantity": 1, "terms": [ "generalTermsAndConditions.pdf", "productTermsAndConditions.pdf", ], "createdOn": "2024-03-22T09:00:00", "validFrom": "2024-03-22T09:00:00", "validUntil": null, "orderLineStatusId": 4, "tokens": [ { "tokenTypeId": 1, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", "amount": 34, "ovpasNumber": "OV34567", "verificationCode": "A7H6", "personalAccountData": { "name": "Jan de Vries", "dateOfBirth": "01-01-1970", "photoReference": "DSC_0502.JPG", "fileType": "image/jpg", "challengeTypeId": 1, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, }, ], }, ], "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", }, ], "payPush": { "consumerIssuer": "ABN AMRO", "transactionId": "0000000000000001", "consumerName": "J. de Vries", "consumerIBAN": "NL44RABO0123456789", "consumerBIC": "RABONL2U", }, }, ], "customer": { "birthname": "Jan", "surname": "Vries", "prefix": "de", "emailAddress": "jandevries@outlook.com", "dateOfBirth": "1970-01-01", "addresses": [ { "addressTypeId": 1, "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": "a0ef57fa-395c-4a03-96e9-234c26dccea9", "orderNumber": "123456", } /orders/: post: tags: - Order Creation v2 (RFU) summary: Create a new order. description: Create a new order. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "201": description: Created /orders/{uuid}: patch: tags: - Order Creation v2 (RFU) summary: Update an existing orderline. description: Update an existing orderline. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "200": description: OK /orderlines/{uuid}: patch: tags: - Order Creation v2 (RFU) summary: Update an existing order. description: Update an existing order. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "200": description: OK /orders/{uuid}/payments: post: tags: - Order Creation v2 (RFU) summary: Add a payment to an existing order. description: Add a payment to an existing order. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "201": description: Created /payments/{uuid}: patch: tags: - Order Creation v2 (RFU) summary: Update a payment on an existing order. description: Update a payment on an existing order. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "200": description: OK /orders/{uuid}/customers: post: tags: - Order Creation v2 (RFU) summary: Add a customer to an existing order. description: Add a customer to an existing order. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "201": description: Created /customers/{uuid}: patch: tags: - Order Creation v2 (RFU) summary: Update a customer on an existing order. description: Update a customer on an existing order. parameters: - name: uuid in: path required: true style: simple explode: false schema: type: string example: a0ef57fa-395c-4a03-96e9-234c26dccea9 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" example: null responses: "200": description: OK 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"