From 343b74c038c3ccde5dd80a0fddf713ba47faf6df Mon Sep 17 00:00:00 2001 From: Mirjam Herald Date: Thu, 7 Aug 2025 16:20:15 +0200 Subject: [PATCH 1/7] updated specs --- .../orders/SE-orders-gboAgeProfile.yaml | 180 --- src/openapi/orders/service_engine_orders.yaml | 1158 ++++++----------- 2 files changed, 398 insertions(+), 940 deletions(-) delete mode 100644 src/openapi/orders/SE-orders-gboAgeProfile.yaml diff --git a/src/openapi/orders/SE-orders-gboAgeProfile.yaml b/src/openapi/orders/SE-orders-gboAgeProfile.yaml deleted file mode 100644 index 939ef57..0000000 --- a/src/openapi/orders/SE-orders-gboAgeProfile.yaml +++ /dev/null @@ -1,180 +0,0 @@ -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://services.acc.api.htm.nl/abt/touchpoint/2.0 -paths: - /orders/validation/gboAgeProfile: - get: - tags: - - ServiceEngine Order validation - summary: Get GBO age profile that is valid for the given input - description: |- - Only one age profile can be valid at any one time, so only one profile is returned. - parameters: - - name: productStartDate - in: query - required: true - description: Start date of product validity - schema: - type: string - format: date - example: 2025-03-20 - - name: birthDate - in: query - required: false - description: Birthdate of the OVpay-token holder - schema: - type: string - format: date - example: 2000-01-01 - - name: ovPayTokenId - in: query - required: false - description: ovPayTokenId of the customer's selected token - schema: - type: integer - example: 1 - - name: customerTokenId - in: query - required: false - description: customerTokenId of the customer's selected token - schema: - type: string - format: uuid - example: "4a2d2c9c-1e5d-4d8a-9c0a-6c0a6c0a6c0a" - - name: serviceReferenceId - in: query - required: false - description: serviceReferenceId of the customer's selected token - schema: - type: string - example: "NLOV1234567ABCDEFG" - - name: amount - in: query - required: false - description: amount belonging to the serviceReferenceId - schema: - type: integer - example: 100 - - name: ovpasNumber - in: query - required: false - description: OVpas number of the customer's selected token - schema: - type: string - example: "63AW974" - - name: verificationCode - in: query - required: false - description: verification code belonging to the OVpas number - schema: - type: string - example: 1A3C7D - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GboAgeProfileResponse" - - "400": - description: Bad request - content: - application/json: - schema: - $ref: "#/components/schemas/rfc9457Response" - examples: - Missing parameter(s): - summary: Missing parameter(s) - value: - { - "type": "https://www.htm.nl/api/v1/400Error", - "title": "Missing parameter(s)", - "detail": "At least one of the following parameters must be present: birthDate, ovPayTokenId, customerTokenId, (serviceReferenceId and amount), (ovpasNumber and verificationCode)", - "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", - "apiErrorCode": "htm.api.err.400.2", - } - Invalid date format: - summary: Invalid date format - value: - { - "type": "https://www.htm.nl/api/v1/400Error", - "title": "Invalid input", - "detail": "The given birthDate is not a valid Date format", - "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", - "apiErrorCode": "htm.api.err.400.3", - } - "404": - description: Not found - content: - application/json: - schema: - $ref: "#/components/schemas/rfc9457Response" - examples: - No birthdate present in PAD of OVpay token: - summary: No birthdate present in PAD of OVpay token - value: - { - "type": "https://www.htm.nl/api/v1/404Error", - "title": "Missing birthdate in PAD", - "detail": "There is no birthdate present in the PAD of the OVpay token, or there is no PAD present at all", - "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", - "apiErrorCode": "htm.api.err.404.1", - } -components: - schemas: - GboAgeProfileResponse: - type: object - required: - - gboAgeProfileId - - name - - ageFromInclusive - - ageToInclusive - properties: - gboAgeProfileId: - type: integer - example: 1 - name: - type: string - example: Kind (4 t/m 11 jaar) - ageFromInclusive: - type: integer - example: 4 - ageToInclusive: - type: integer - example: 11 - rfc9457Response: - type: object - properties: - type: - type: string - format: url - example: "https://www.htm.nl/api/v1/rfc9457Error" - title: - type: string - description: "Short summary of the error." - example: "The request is not valid." - detail: - type: string - description: "More detailed descriptionof the error." - example: "Some required parameters are missing." - instance: - type: string - description: "Unique identifier to correlate this specific error with logging in other applications." - example: "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c" - additionalProperty1: - type: string - description: "Example of an additional property value to be used for error reporting." - example: "additionalValue1" - additionalProperty2: - type: array - description: "Example of an additional property array to be used for error reporting." - items: - type: string - example: - - "additionalValue2-1" - - "additionalValue2-2" diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 3546a4c..3fac0ec 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -6,724 +6,6 @@ info: servers: - url: https://services.acc.api.htm.nl/abt/touchpoint/2.0 paths: - /orders/validation: - post: - tags: - - Order Validation v1 & v2 - summary: Validate order. - description: Validate order. - parameters: - - in: header - name: X-HTM-JWT-AUTH-HEADER - required: false - style: simple - explode: false - schema: - type: string - - in: header - name: Accept-version - required: false - style: simple - explode: false - schema: - type: string - example: "2.0" - description: The version of the API. - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - examples: - v2: - summary: Order validation v2 - description: Order validation v2 - value: - { - "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", - }, - ], - }, - } - v1: - summary: Order validation v1 - description: Order validation v1 - value: - [ - { - "ovPayTokenId": 2, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "productId": 2, - "startDate": "2024-03-22T09:00:00z", - "quantity": 1, - }, - { - "ovPayTokenId": 3, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 89, - "ovpasNumber": "OV34567", - "productId": 4, - "startDate": "2024-03-22T09:00:00z", - "quantity": 4, - }, - ] - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - examples: - v2: - summary: Order validation v2 - description: Order validation v2 - value: - { - "validContents": true, - "amountExclTax": 0, - "taxPercentage": 0, - "amountInclTax": 0, - "contents": - [ - { - "ovPayTokenId": 0, - "serviceReferenceId": "string", - "ovpasNumber": "string", - "productId": 0, - "quantity": 0, - "amountExclTax": 0, - "taxPercentage": 0, - "amountInclTax": 0, - "startDate": "string", - "endDate": "string", - "isRenewable": true, - "nextDebitDate": "string", - "termAmountExclTax": 0, - "termAmountInclTax": 0, - "additionalRemarks": - [{ "code": "string", "parameter": "string" }], - "validationErrors": - [{ "detail": "string", "pointer": "string" }], - }, - ], - } - v1: - summary: Order validation v1 - description: Order validation v1 - value: - { - "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 v1 & v2 - summary: Fulfill an order. - description: Fulfill an order. - parameters: - - in: header - name: X-HTM-JWT-AUTH-HEADER - required: false - style: simple - explode: false - schema: - type: string - - in: path - name: orderId - required: true - style: simple - explode: false - schema: - type: string - format: uuid - example: a0ef57fa-395c-4a03-96e9-234c26dccea9 - - in: header - name: Accept-version - required: false - style: simple - explode: false - schema: - type: string - example: "2.0" - description: The version of the API. - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - examples: - v2.2: - summary: Order fulfillment v2.2 - description: Order fulfillment v2.2 - value: - { - "externalOrderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "orderStatusId": 4, - "orderLines": - [ - { - "externalOrderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f", - "productId": 1, - "quantity": 1, - "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, - "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", - }, - ], - }, - } - v2: - summary: Order fulfillment v2 - description: Order fulfillment v2 - value: - { - "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", - }, - ], - }, - } - v1: - summary: Order fulfillment v1 - description: Order fulfillment v1 - value: - { - "customerProfileID": 123415, - "customerProfileData": { "dateOfBirth": "09-03-1989" }, - "personalAccountData": { "birthdate": "09-03-1989" }, - "directDebitMandate": - { - "consumerName": "J. de Tèster", - "consumerBic": "RABONL2U", - "consumerIban": "NL44RABO0123456789", - }, - "orderContents": - [ - { - "ovPayTokenId": 123, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 450, - "ovpasNumber": "63AW974", - "productId": 2, - "startDate": "2024-03-22T09:00:00Z", - "quantity": 1, - "orderlineId": "2d7fadc9-b64b-4516-9a7d-cf550f201372", - }, - { - "ovPayTokenId": 123, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 450, - "ovpasNumber": "63AW974", - "productId": 3, - "startDate": "2024-03-16T09:00:00Z", - "quantity": 1, - "orderlineId": "9d7fadc9-b64b-4516-9a7d-cf550f201378", - }, - ], - "orderStatus": "succeededPayment", - } - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - examples: - v1: - summary: Order fulfillment v1 - description: Order fulfillment v1 - value: {} - v2.2: - summary: Order fulfillment v2 - description: Order fulfillment v2 - value: - { - "orderId": "c73ff153-72e0-403f-a276-e86f544406f9", - "externalOrderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", - "orderNumber": "123456", - "customerProfileId": 1337, - "totalAmount": 121, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "orderStatusId": 4, - "orderLines": - [ - { - "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "externalOrderLineId": "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, - "paymentMethod": - { - "paymentMethodId": 1, - "name": "ideal", - "provider": "Buckaroo", - }, - "touchPoint": - { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailerId": 1001, - }, - "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", - }, - ], - }, - } - "400": - description: Bad request - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - example: - { - "type": "https://htm.nl/api/v1/probs/validationerror", - "title": "Your request is not valid.", - "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", - "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", - "errors": - [ - { - "detail": "Startdate of this product should be at most 60 days in the future.", - "pointer": "#/0/startDate", - "ovPayTokenId": 123, - "productId": 2, - }, - { - "detail": "Combination of product and token type is not valid.", - "pointer": "#/1/ovPayTokenId", - "ovPayTokenId": 123, - "productId": 3, - }, - ], - } /orders: parameters: - in: header @@ -807,7 +89,7 @@ paths: example: 7208e73e-87a6-46d9-bb6d-867ffc460c9b description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct. tags: - - Order Retrieval v1 & v2 + - Order Retrieval summary: Find orders. P1 description: Find orders. responses: @@ -1044,7 +326,7 @@ paths: } post: tags: - - Order Creation v2 + - Order Creation summary: Create a new order description: | Create a new order. This order can only contain the order itself, @@ -1499,7 +781,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). get: tags: - - Order Retrieval v1 & v2 + - Order Retrieval summary: Get a single order. P1 description: Get a single order. responses: @@ -1708,7 +990,7 @@ paths: } patch: tags: - - Order Creation v2 + - Order Creation summary: Update an existing order. description: Update an existing order. requestBody: @@ -1887,7 +1169,7 @@ paths: } delete: tags: - - Order Creation v2 + - Order Creation summary: Delete an existing order. description: Delete an existing order. responses: @@ -1933,8 +1215,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2 - summary: Add a new order line to an existing order. + - Order Creation + summary: Add a new order line to an existing order. P1 description: Add a new order line to an existing order. requestBody: content: @@ -1942,9 +1224,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Create order line v2.2 - description: Create order line v2.2 + v2.2.2: + summary: Create order line v2.2.2 product with childeren + description: Create order line v2.2.2 product with childeren value: { "externalOrderLineId": null, @@ -1966,6 +1248,15 @@ paths: }, ], } + v2.2.1: + summary: Create order line v2.2.1 with minimum requirements + description: Create order line v2.2.1 with minimum requirements + value: + { + "productId": 2, + "quantity": 1, + "createdOn": "2024-03-22T09:00:00" + } v1.2: summary: Create orderLine v1.2 description: Create orderLine v1.2 @@ -2024,7 +1315,206 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + v2.2.2: + summary: AddRemark chosen product is not a leaf node product + description: AddRemark for case where chosen product is not a leaf node product + value: + { + "validContents": false, + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatuses": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": + { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + }, + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "fikoArticleNumber": "6609", + "productDescription": "HTM Maandkorting 20%", + "taxCode": "V21", + "taxPercentage": 21.0000, + "taxAmount": 21, + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [ + { + "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "termsUrl": "generalTermsAndConditions.pdf", + }, + { + "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", + "termsUrl": "productTermsAndConditions.pdf", + }, + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "customerTokens": + [ + { + "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", + "tokenType": + { "tokenTypeId": 1, "name": "EMV" }, + "ovPayTokenId": 12, + "serviceReferenceId": null, + "amount": null, + "ovpasNumber": null, + "verificationCode": null, + "personalAccountData": null + }, + ], + "orderAccountingStatuses": [], + "validationResult": "preliminary", + "additionalRemarks": [ + { + "code": "PRODUCT_CHOICE_REQUIRED", + "parameter": "orderline.productId", + } + ], + "validationErrors": [], + }, + ], + "payments": [], + "orderCustomers": null + } + v2.2.1: + summary: Create order line v2.2.1 with minimum requirements + description: AddRemark for case where chosen product requires personal account data birthdate + value: + { + "validContents": false, + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatuses": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": + { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + }, + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "fikoArticleNumber": "6609", + "productDescription": "HTM Maandkorting 20%", + "taxCode": "V21", + "taxPercentage": 21.0000, + "taxAmount": 21, + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [ + { + "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "termsUrl": "generalTermsAndConditions.pdf", + }, + { + "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", + "termsUrl": "productTermsAndConditions.pdf", + }, + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "customerTokens": + [ + { + "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", + "tokenType": + { "tokenTypeId": 1, "name": "EMV" }, + "ovPayTokenId": 12, + "serviceReferenceId": null, + "amount": null, + "ovpasNumber": null, + "verificationCode": null, + "personalAccountData": null + }, + ], + "orderAccountingStatuses": [], + "validationResult": "preliminary", + "additionalRemarks": [ + { + "code": "PERSONALACCOUNTDATA_BIRTHDATE_REQUIRED", + "parameter": "personalaccountdata.birthdate", + }, + { + "code": "TOKEN_REQUIRED", + "parameter": "customerToken", + }, + { + "code": "VALIDFROM_REQUIRED", + "parameter": "orderline.validFrom", + } + ], + "validationErrors": [], + }, + ], + "payments": [], + "orderCustomers": null + } value: { "validContents": false, @@ -2227,15 +1717,25 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2 - summary: Update an existing order line. - description: Update an existing order line. + - Order Creation + summary: Update an existing order line. P1 + description: Update an existing order line. P1 requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: + v2.3: + summary: Update order line v2.3 + description: Update order line v2.3 + value: + { + "productId": 21, + "quantity": 1, + "validFrom": "2024-03-25T09:00:00", + "validUntil": null, + } v2.2: summary: Update order line v2.2 description: Update order line v2.2 @@ -2307,7 +1807,7 @@ paths: { "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", "externalOrderLineId": null, - "productId": 112, + "productId": 21, "productName": "HTM Regio Vrij - HL65 - Voltarief", "fikoArticleNumber": "6609", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65", @@ -2491,7 +1991,7 @@ paths: } delete: tags: - - Order Creation v2 + - Order Creation summary: Delete an existing order line. description: Delete an existing order line. responses: @@ -2582,8 +2082,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2 - summary: Add a customer token to an orderLine. P1 + - Order Creation + summary: Add a customer token to an orderLine. description: Add a customer token to an orderLine requestBody: content: @@ -2621,7 +2121,7 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - examples: + examples: v2.2: value: { @@ -2735,8 +2235,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2 - summary: Update a customer token. P1 + - Order Creation + summary: Update a customer token. description: Update a customer token requestBody: content: @@ -2746,7 +2246,7 @@ paths: examples: v2.2: summary: Update a customer token v2.2 - description: Update a customer tokenv2.2 + description: Update a customer token v2.2 value: { "tokenTypeId": 1, @@ -2847,8 +2347,8 @@ paths: } delete: tags: - - Order Creation v2 - summary: Delete a customer token from an orderline. P1 + - Order Creation + summary: Delete a customer token from an orderline. description: Delete a customer token from an orderline responses: "200": @@ -2958,8 +2458,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2 - summary: Add personal account data to a customer token. P1 + - Order Creation + summary: Add personal account data to a customer token. description: Add personal account data to a customer token requestBody: content: @@ -3101,8 +2601,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2 - summary: Update personal account data. P2 + - Order Creation + summary: Update personal account data. description: Update personal account data requestBody: content: @@ -3228,8 +2728,8 @@ paths: } delete: tags: - - Order Creation v2 - summary: Delete personal account data. P2 + - Order Creation + summary: Delete personal account data. description: Delete personal account data responses: "200": @@ -3347,7 +2847,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2 + - Order Creation summary: Add a payment to an existing order. description: Add a payment to an existing order. requestBody: @@ -3633,9 +3133,9 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2 - summary: Update a payment on an existing order. - description: Update a payment on an existing order. + - Order Creation + summary: Update a payment on an existing order. P2 + description: Update a payment on an existing order. P2 requestBody: content: application/json: @@ -3655,8 +3155,8 @@ paths: "createdOn": "2024-03-22T09:00:00", "statusCode": "190", "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessful", + "statusSubCode": null, + "statusSubDescription": null, }, ], "mandateInput": @@ -4101,7 +3601,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2 + - Order Creation summary: Add a customer to an existing order. description: Add a customer to an existing order. requestBody: @@ -4311,7 +3811,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation v2 + - Order Creation summary: Update a customer on an existing order. description: Update a customer on an existing order. requestBody: @@ -4497,7 +3997,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation v2 + - Order Creation summary: Create a customer address for an existing order. description: Create a customer address for an existing order. requestBody: @@ -4688,7 +4188,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation v2 + - Order Creation summary: Update a customer address for an existing order. description: Update a customer address for an existing order. requestBody: @@ -4849,7 +4349,7 @@ paths: } delete: tags: - - Order Creation v2 + - Order Creation summary: Delete an existing order address. description: Delete an existing order address. parameters: @@ -4965,12 +4465,130 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Fulfill v2 + - Order Fulfill summary: Fulfill an order without creating or updating the order as a resource. description: Fulfill an order without creating or updating the order as a resource. responses: "200": description: OK + /orders/validation/gboAgeProfile: + get: + tags: + - Order validation + summary: Get GBO age profile that is valid for the given input. P2 + description: |- + Only one age profile can be valid at any one time, so only one profile is returned. + parameters: + - name: productStartDate + in: query + required: true + description: Start date of product validity + schema: + type: string + format: date + example: 2025-03-20 + - name: birthDate + in: query + required: false + description: Birthdate of the OVpay-token holder + schema: + type: string + format: date + example: 2000-01-01 + - name: ovPayTokenId + in: query + required: false + description: ovPayTokenId of the customer's selected token + schema: + type: integer + example: 1 + - name: customerTokenId + in: query + required: false + description: customerTokenId of the customer's selected token + schema: + type: string + format: uuid + example: "4a2d2c9c-1e5d-4d8a-9c0a-6c0a6c0a6c0a" + - name: serviceReferenceId + in: query + required: false + description: serviceReferenceId of the customer's selected token + schema: + type: string + example: "NLOV1234567ABCDEFG" + - name: amount + in: query + required: false + description: amount belonging to the serviceReferenceId + schema: + type: integer + example: 100 + - name: ovpasNumber + in: query + required: false + description: OVpas number of the customer's selected token + schema: + type: string + example: "63AW974" + - name: verificationCode + in: query + required: false + description: verification code belonging to the OVpas number + schema: + type: string + example: 1A3C7D + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GboAgeProfileResponse" + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/rfc9457" + examples: + Missing parameter(s): + summary: Missing parameter(s) + value: + { + "type": "https://www.htm.nl/api/v1/400Error", + "title": "Missing parameter(s)", + "detail": "At least one of the following parameters must be present: birthDate, ovPayTokenId, customerTokenId, (serviceReferenceId and amount), (ovpasNumber and verificationCode)", + "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", + "apiErrorCode": "htm.api.err.400.2", + } + Invalid date format: + summary: Invalid date format + value: + { + "type": "https://www.htm.nl/api/v1/400Error", + "title": "Invalid input", + "detail": "The given birthDate is not a valid Date format", + "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", + "apiErrorCode": "htm.api.err.400.3", + } + "404": + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/rfc9457" + examples: + No birthdate present in PAD of OVpay token: + summary: No birthdate present in PAD of OVpay token + value: + { + "type": "https://www.htm.nl/api/v1/404Error", + "title": "Missing birthdate in PAD", + "detail": "There is no birthdate present in the PAD of the OVpay token, or there is no PAD present at all", + "instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c", + "apiErrorCode": "htm.api.err.404.1", + } components: securitySchemes: bearerToken: @@ -5006,3 +4624,23 @@ components: example: - "/account/12345" - "/account/67890" + GboAgeProfileResponse: + type: object + required: + - gboAgeProfileId + - name + - ageFromInclusive + - ageToInclusive + properties: + gboAgeProfileId: + type: integer + example: 1 + name: + type: string + example: Kind (4 t/m 11 jaar) + ageFromInclusive: + type: integer + example: 4 + ageToInclusive: + type: integer + example: 11 \ No newline at end of file From 5e79d30c7ca28cca229e2afa25602678625d7f6d Mon Sep 17 00:00:00 2001 From: Mirjam Herald Date: Thu, 7 Aug 2025 17:32:44 +0200 Subject: [PATCH 2/7] derp --- src/openapi/orders/service_engine_orders.yaml | 152 ------------------ 1 file changed, 152 deletions(-) diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 3fac0ec..8c7fe26 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -1514,158 +1514,6 @@ paths: ], "payments": [], "orderCustomers": null - } - value: - { - "validContents": false, - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "externalOrderId": null, - "orderNumber": "ORD-123456", - "customerProfileId": 1337, - "totalAmount": 121, - "touchPoint": - { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailerId": 1001, - }, - "language": - { - "languageId": 1, - "name": "Nederlands", - "iso639Code": "nl-NL", - "ietfCode": "nl", - }, - "createdOn": "2024-03-22T09:00:00", - "lastUpdatedOn": "2024-03-22T09:00:00", - "order_OrderStatuses": - [ - { - "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", - "orderStatus": - { "orderStatusId": 1, "name": "concept" }, - "createdOn": "2024-03-22T09:00:00", - "description": "Order is aangemaakt", - }, - ], - "orderLines": - [ - { - "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "externalOrderLineId": null, - "productId": 1, - "productName": "HTM Maandkorting 20%", - "fikoArticleNumber": "6609", - "productDescription": "HTM Maandkorting 20%", - "taxCode": "V21", - "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "orderLineTerms": - [ - { - "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "termsUrl": "generalTermsAndConditions.pdf", - }, - { - "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", - "termsUrl": "productTermsAndConditions.pdf", - }, - ], - "createdOn": "2024-03-22T09:00:00", - "validFrom": "2024-03-22T09:00:00", - "validUntil": null, - "orderLineStatus": - { "orderLineStatusId": 1, "name": "pending" }, - "customerTokens": - [ - { - "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", - "tokenTypeId": 1, - "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": [], - "validationResult": "preliminary", - "additionalRemarks": - [ - { - "code": "MANDATE_REQUIRED", - "parameter": "directDebitMandateId", - }, - ], - "validationErrors": [], - }, - { - "orderLineId": "2cb04b38-e9a8-465a-a273-261c55a21b71", - "externalOrderLineId": null, - "productId": 2, - "productName": "HTM Maandkorting 40%", - "fikoArticleNumber": "6610", - "productDescription": "HTM Maandkorting 40%", - "taxCode": "V21", - "taxPercentage": 21.0000, - "taxAmount": 42, - "amountExclTax": 200, - "amountInclTax": 242, - "quantity": 1, - "orderLineTerms": - [ - { - "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "termsUrl": "generalTermsAndConditions.pdf", - }, - { - "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", - "termsUrl": "productTermsAndConditions.pdf", - }, - ], - "createdOn": "2024-03-22T09:00:00", - "validFrom": "2024-03-22T09:00:00", - "validUntil": null, - "orderLineStatus": - { "orderLineStatusId": 1, "name": "pending" }, - "customerTokens": - [ - { - "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", - "tokenTypeId": 1, - "ovPayTokenId": 4, - "serviceReferenceId": null, - "amount": null, - "ovpasNumber": null, - "verificationCode": null, - "personalAccountData": null, - }, - ], - "orderAccountingStatuses": [], - "validationResult": "valid", - "additionalRemarks": [], - "validationErrors": [], - }, - ], - "payments": [], - "orderCustomer": null, } v1.2: value: From ba8a31c94fd53dee389c7319556eeb4a2c921f52 Mon Sep 17 00:00:00 2001 From: Mirjam Herald Date: Thu, 7 Aug 2025 17:34:45 +0200 Subject: [PATCH 3/7] derp --- src/openapi/orders/service_engine_orders.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 8c7fe26..d06bd0b 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -1514,7 +1514,7 @@ paths: ], "payments": [], "orderCustomers": null - } + } v1.2: value: { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } From 207c6961a8d889b53cf54df3d5ca9fc8528b408c Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Wed, 26 Nov 2025 15:17:58 +0100 Subject: [PATCH 4/7] OVPAY-1946 - Updated bulk endpoints. --- src/openapi/fiko/fiko-crud.yaml | 129 ++++++++------------------------ 1 file changed, 31 insertions(+), 98 deletions(-) diff --git a/src/openapi/fiko/fiko-crud.yaml b/src/openapi/fiko/fiko-crud.yaml index c4309bf..09d09c8 100644 --- a/src/openapi/fiko/fiko-crud.yaml +++ b/src/openapi/fiko/fiko-crud.yaml @@ -2979,10 +2979,10 @@ paths: - default: [] x-auth-type: Application & Application User x-throttling-tier: Unlimited - /transactionitems/reject: - post: - summary: Reject transaction items to source in bulk. - description: Reject transaction items to source in bulk. + /transactionitems/bulk: + patch: + summary: Patch transaction items in bulk. + description: Patch transaction items in bulk. tags: - Bulk processing v2.2 requestBody: @@ -2992,14 +2992,22 @@ paths: schema: $ref: "#/components/schemas/TransactionItemsBulkRequestBody" examples: - List of transaction item ids to reject: - summary: List of transaction item ids to reject to source - description: List of transaction item ids to reject to source. + List of transactions items to reject: + summary: List of transaction items to reject to source + description: List of transaction items to reject to source in bulk. value: - transactionItemIds: - - afce35b2-1dff-4ace-98d0-4b9ac405c87d - - b1c4f8e7-3f4e-4d2a-9c6e-2f5e6d7c8b9a - - c2d5e6f7-4g5h-5i6j-0k1l-3m4n5o6p7q8r + - transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 + status: returned to src + - transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 + status: returned to src + List of transactions items to return: + summary: List of transaction items to return to transaction database + description: List of transaction items to return to transaction database in bulk. + value: + - transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5 + status: returned to trx-db + - transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61 + status: returned to trx-db responses: "202": description: Accepted @@ -3058,85 +3066,6 @@ paths: - default: [] x-auth-type: Application & Application User x-throttling-tier: Unlimited - /transactionitems/return: - post: - summary: Return transaction items to trx db in bulk. - description: Return transaction items to trx db in bulk. - tags: - - Bulk processing v2.2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionItemsBulkRequestBody" - examples: - List of transaction item ids to reject: - summary: List of transaction item ids to return to trx db - description: List of transaction item ids to return to trx db. - value: - transactionItemIds: - - afce35b2-1dff-4ace-98d0-4b9ac405c87d - - b1c4f8e7-3f4e-4d2a-9c6e-2f5e6d7c8b9a - - c2d5e6f7-4g5h-5i6j-0k1l-3m4n5o6p7q8r - responses: - "202": - description: Accepted - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionItemsPostResponseBody" - examples: - Array of transaction items accepted: - summary: Array of transaction item ids accepted - description: | - The array of transaction item ids was accepted successfully. - The transaction items will be processed asynchronously. - In the response body the consumer will find information on how to retrieve the processing status. - value: - startTime: 2025-02-14T05:32:47.0672237Z - status: Running - clientTrackingId: 08584620957189579629541919368CU00 - callbackurl: https://api.integratielaag.nl/transactionitems/return/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c - retryAfter: 10 - security: - - default: [] - x-auth-type: Application & Application User - x-throttling-tier: Unlimited - /transactionitems/responsestatus/return/{clientTrackingId}: - get: - tags: - - Bulk processing v2.2 - summary: Get the status of the transaction item bulk return. - description: Get the status of the asynchronous transaction item bulk return. - parameters: - - in: path - name: clientTrackingId - schema: - type: string - required: true - description: The clientTrackingId of the transaction item bulk return. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionItemsReturnResponseStatusGetResponseBody" - examples: - Batch successfully processed: - summary: Batch successfully processed - description: | - Body of a batch of transaction items that was successfully returned to trx db. - A number of transaction items were returned to trx db. - value: - summary: - returned: 15 - total: 15 - security: - - default: [] - x-auth-type: Application & Application User - x-throttling-tier: Unlimited components: securitySchemes: default: @@ -4960,16 +4889,20 @@ components: type: string example: fee907dd-e59d-44f5-a63b-bbdec38f79b7 TransactionItemsBulkRequestBody: - type: object - properties: - transactionItemIds: - type: array - items: + type: array + items: + type: object + properties: + transactionItemId: type: string format: uuid - example: 1ad109d3-fd7d-4b6f-872b-220d492f385f - required: - - transactionItemIds + example: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 + status: + type: string + example: returned to src + required: + - transactionItemId + - status TransactionItemsRejectResponseStatusGetResponseBody: type: object properties: From 361d194bc46db142e9914c18054d7c86b35cebe0 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Wed, 26 Nov 2025 15:23:18 +0100 Subject: [PATCH 5/7] OVPAY-1946 - Updated bulk responsestatus endpoints. --- src/openapi/fiko/fiko-crud.yaml | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/openapi/fiko/fiko-crud.yaml b/src/openapi/fiko/fiko-crud.yaml index 09d09c8..fe3fa91 100644 --- a/src/openapi/fiko/fiko-crud.yaml +++ b/src/openapi/fiko/fiko-crud.yaml @@ -3026,32 +3026,32 @@ paths: startTime: 2025-02-14T05:32:47.0672237Z status: Running clientTrackingId: 08584620957189579629541919368CU00 - callbackurl: https://api.integratielaag.nl/transactionitems/reject/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c + callbackurl: https://api.integratielaag.nl/transactionitems/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c retryAfter: 10 security: - default: [] x-auth-type: Application & Application User x-throttling-tier: Unlimited - /transactionitems/responsestatus/reject/{clientTrackingId}: + /transactionitems/bulk/responsestatus/{clientTrackingId}: get: tags: - Bulk processing v2.2 - summary: Get the status of the transaction item bulk reject. - description: Get the status of the asynchronous transaction item bulk reject. + summary: Get the status of the transaction item bulk patch. + description: Get the status of the asynchronous transaction item bulk patch. parameters: - in: path name: clientTrackingId schema: type: string required: true - description: The clientTrackingId of the transaction item bulk reject. + description: The clientTrackingId of the transaction item bulk patch. responses: "200": description: OK content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsRejectResponseStatusGetResponseBody" + $ref: "#/components/schemas/TransactionItemsBulkResponseStatusGetResponseBody" examples: Batch successfully processed: summary: Batch successfully processed @@ -4903,7 +4903,7 @@ components: required: - transactionItemId - status - TransactionItemsRejectResponseStatusGetResponseBody: + TransactionItemsBulkResponseStatusGetResponseBody: type: object properties: summary: @@ -4920,23 +4920,6 @@ components: - total required: - summary - TransactionItemsReturnResponseStatusGetResponseBody: - type: object - properties: - summary: - type: object - properties: - returned: - type: integer - example: 3 - total: - type: integer - example: 3 - required: - - returned - - total - required: - - summary rfc9457: type: object properties: From bfa400820f09d510a85cb791ffbd430ff74cee62 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Thu, 27 Nov 2025 09:42:35 +0100 Subject: [PATCH 6/7] OVPAY-2103 - Added batch endpoints for bulk patch processing failures. --- src/openapi/fiko/fiko-crud.yaml | 160 +++++++++++++++++++++++--------- 1 file changed, 117 insertions(+), 43 deletions(-) diff --git a/src/openapi/fiko/fiko-crud.yaml b/src/openapi/fiko/fiko-crud.yaml index fe3fa91..1500486 100644 --- a/src/openapi/fiko/fiko-crud.yaml +++ b/src/openapi/fiko/fiko-crud.yaml @@ -228,7 +228,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsPostRequestBody" + $ref: "#/components/schemas/TransactionItemsBulkRequestBody" examples: Add single transaction item: summary: Add single transaction item @@ -285,7 +285,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsPostResponseBody" + $ref: "#/components/schemas/BulkResponseBody" examples: Array of transaction items accepted: summary: Array of transaction items accepted @@ -381,7 +381,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsResponseStatusGetResponseBody" + $ref: "#/components/schemas/GetResponseStatus" examples: Batch successfully processed: summary: Batch successfully processed @@ -2996,6 +2996,7 @@ paths: summary: List of transaction items to reject to source description: List of transaction items to reject to source in bulk. value: + transactionItems: - transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 status: returned to src - transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 @@ -3004,6 +3005,7 @@ paths: summary: List of transaction items to return to transaction database description: List of transaction items to return to transaction database in bulk. value: + transactionItems: - transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5 status: returned to trx-db - transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61 @@ -3014,12 +3016,12 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsPostResponseBody" + $ref: "#/components/schemas/BulkResponseBody" examples: Array of transaction items accepted: - summary: Array of transaction item ids accepted + summary: Array of transaction items accepted description: | - The array of transaction item ids was accepted successfully. + The array of transaction items was accepted successfully. The transaction items will be processed asynchronously. In the response body the consumer will find information on how to retrieve the processing status. value: @@ -3051,16 +3053,98 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionItemsBulkResponseStatusGetResponseBody" + $ref: "#/components/schemas/GetResponseStatus" examples: Batch successfully processed: summary: Batch successfully processed description: | - Body of a batch of transaction items that was successfully rejected. - A number of transaction items were rejected. + Body of a batch of transaction items that was successfully patched. + A number of transaction items were patched. value: summary: - rejected: 15 + created: 0 + updated: 15 + total: 15 + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /processingfailures/bulk: + patch: + summary: Patch processing failures in bulk. + description: Patch processing failures in bulk. + tags: + - Bulk processing v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ProcessingFailuresBulkRequestBody" + examples: + List of processing failures to resolve: + summary: List of processing failures to resolve + description: List of processing failures to resolve in bulk. + value: + processingFailures: + - processingFailureId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 + resolved: true + - processingFailureId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 + resolved: true + responses: + "202": + description: Accepted + content: + application/json: + schema: + $ref: "#/components/schemas/BulkResponseBody" + examples: + Array of processing failures accepted: + summary: Array of processing failures accepted + description: | + The array of processing failures was accepted successfully. + The processing failures will be processed asynchronously. + In the response body the consumer will find information on how to retrieve the processing status. + value: + startTime: 2025-02-14T05:32:47.0672237Z + status: Running + clientTrackingId: 08584620957189579629541919368CU00 + callbackurl: https://api.integratielaag.nl/processingfailures/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c + retryAfter: 10 + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /processingfailures/bulk/responsestatus/{clientTrackingId}: + get: + tags: + - Bulk processing v2.2 + summary: Get the status of the processing failures bulk patch. + description: Get the status of the asynchronous processing failures bulk patch. + parameters: + - in: path + name: clientTrackingId + schema: + type: string + required: true + description: The clientTrackingId of the processing failures bulk patch. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetResponseStatus" + examples: + Batch successfully processed: + summary: Batch successfully processed + description: | + Body of a batch of processing failures that was successfully patched. + A number of processing failures were patched. + value: + summary: + created: 0 + updated: 15 total: 15 security: - default: [] @@ -3178,7 +3262,7 @@ components: - occurredOn - type - status - TransactionItemsPostRequestBody: + TransactionItemsBulkRequestBody: type: object properties: transactionItems: @@ -3186,6 +3270,10 @@ components: items: type: object properties: + transactionItemId: + type: string + format: uuid + example: afce35b2-1dff-4ace-98d0-4b9ac405c87d transactionType: type: string enum: @@ -3245,7 +3333,7 @@ components: - amountTax - occurredOn - type - TransactionItemsPostResponseBody: + BulkResponseBody: type: object properties: startTime: @@ -4831,7 +4919,7 @@ components: required: - concessionId - name - TransactionItemsResponseStatusGetResponseBody: + GetResponseStatus: type: object properties: summary: @@ -4888,38 +4976,24 @@ components: transactionLineId: type: string example: fee907dd-e59d-44f5-a63b-bbdec38f79b7 - TransactionItemsBulkRequestBody: - type: array - items: - type: object - properties: - transactionItemId: - type: string - format: uuid - example: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 - status: - type: string - example: returned to src - required: - - transactionItemId - - status - TransactionItemsBulkResponseStatusGetResponseBody: + ProcessingFailuresBulkRequestBody: type: object properties: - summary: - type: object - properties: - rejected: - type: integer - example: 3 - total: - type: integer - example: 3 - required: - - rejected - - total - required: - - summary + processingFailures: + type: array + items: + type: object + properties: + processingFailureId:: + type: string + format: uuid + example: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 + resolved: + type: boolean + example: true + required: + - transactionItemId + - resolved rfc9457: type: object properties: From 403b33652284b3d33f7fe0722e66cd201fb6843e Mon Sep 17 00:00:00 2001 From: Max Martens Date: Thu, 27 Nov 2025 13:22:09 +0100 Subject: [PATCH 7/7] Rename HATEOAS for transfer to "transfer_token" to be in line with actual SE implementation --- src/openapi/customers/SE-customers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openapi/customers/SE-customers.yaml b/src/openapi/customers/SE-customers.yaml index 3c8d039..0f75322 100644 --- a/src/openapi/customers/SE-customers.yaml +++ b/src/openapi/customers/SE-customers.yaml @@ -2403,7 +2403,7 @@ paths: }, "_links": { - "transfer": + "transfer_token": { "href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer", "method": "POST",