From 7173bd3727cf77cea0f0fef35f646031435759f4 Mon Sep 17 00:00:00 2001 From: Max Martens Date: Mon, 1 Jun 2026 11:17:22 +0200 Subject: [PATCH] Finished JSON schema and all 3 relevant examples for TP vouchers OpenAPI spec (will also update vouchers supplier OpenAPI spec soon) --- src/openapi/products/SE-vouchers-TP.yaml | 125 ++++++++++++++++++++++- 1 file changed, 122 insertions(+), 3 deletions(-) diff --git a/src/openapi/products/SE-vouchers-TP.yaml b/src/openapi/products/SE-vouchers-TP.yaml index ef6ba2f..ebd38f3 100644 --- a/src/openapi/products/SE-vouchers-TP.yaml +++ b/src/openapi/products/SE-vouchers-TP.yaml @@ -28,7 +28,126 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/issuedVoucherResponse" + $ref: "#/components/schemas/issuedVoucherResponse" + examples: + Voucher that grants a voucher-only product for free: + summary: Voucher that grants a voucher-only product for free + description: |- + Voucher that grants a product (that can onlu be acquired via a voucher) for free. + In this case, the voucher has an amountInclTax of 0. If the requiredProduct has a + non-zero sellingPrice (amountInclTax), the difference between sellingPrice and + voucher amountInclTax represents the granted discount. If the requiredProduct has + a sellingPrice of 0, no "discount" is shown; just the voucher's amountInclTax. + value: + { + "issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90", + "voucherCode": "HTM-A7J-128-PYT", + "fromInclusive": "2024-10-04T00:00:00.000", + "untilInclusive": "2024-11-04T00:00:00.000", + "voucherStatus": { "voucherStatusId": 2, "name": "issued" }, + "product": + { + "productId": 263, + "productName": "Voucher Ooievaarspas-product AOW", + "productDescription": "Voucher voor AOW-ers in Den Haag met een Ooievaarspas, die ingewisseld kan worden voor het product \"Ooievaarspas voor AOW-ers in Den Haag\"", + "amountInclTax": 0, + "requiredProducts": + [ + { + "productId": 982, + "productName": "Ooievaarspas voor AOW-ers in Den Haag", + "productDescription": "Vrij reizen bij HTM voor Haagse AOW-gerechtigden met een Ooievaarspas.", + "_links": + { + "get_details": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/982", + "method": "GET", + }, + }, + }, + ] + }, + "mandatoryCustomerDataItems": + [ + { + "mandatoryCustomerDataItemId": 8, + "customerDataItem": "padBirthDate" + } + ] + } + Voucher that grants a hybrid product for a reduced price: + summary: Voucher that grants a hybrid product for a reduced price + description: |- + Voucher that grants a hybrid product (that can be acquired via voucher or via ordinary order flow) + for a reduced price. In this case, the voucher has an amountInclTax > 0, which dictates the (modified) + total amount that needs to be paid for said product. If the requiredProduct has a + non-zero sellingPrice (amountInclTax), the difference between sellingPrice and + voucher amountInclTax represents the granted discount. If the requiredProduct has + a sellingPrice of 0, no "discount" is shown; just the voucher's amountInclTax./ + Specifically, in this example, the product "HTM 20% Korting" can be purchased for 1 euro instead of 5 euro. + value: + { + "issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90", + "voucherCode": "HTM-A7J-128-PYT", + "fromInclusive": "2024-10-04T00:00:00.000", + "untilInclusive": "2024-11-04T00:00:00.000", + "voucherStatus": { "voucherStatusId": 2, "name": "issued" }, + "product": + { + "productId": 264, + "productName": "Kortingsvoucher HTM 20% Korting ", + "productDescription": "Voucher waarmee het product \"HTM 20% Korting\" voor een lagere prijs kan worden aangeschaft.", + "amountInclTax": 100, + "requiredProducts": + [ + { + "productId": 984, + "productName": "HTM 20% Korting", + "productDescription": "Reis met 20% korting op je betaalpas bij HTM.", + "productCategory": + { + "productCategoryId": 1, + "isTravelProduct": true, + "name": "Kortingsabonnement", + }, + "amountInclTax": 500, + "_links": + { + "get_details": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/984", + "method": "GET", + }, + }, + }, + ] + }, + "mandatoryCustomerDataItems": [] + } + Voucher that grants a discount for a whole order: + summary: Voucher that grants a discount for a whole order + description: |- + Voucher that grants a discount for a whole order. In this case, no requiredProduct is specified, and + the voucher has an amountInclTax < 0. The (negative) amountInclTax dictates the value of the voucher, + that is subtracted from the total order value as a discount (with a minimum order total of 0). + value: + { + "issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90", + "voucherCode": "HTM-A7J-128-PYT", + "fromInclusive": "2024-10-04T00:00:00.000", + "untilInclusive": "2024-11-04T00:00:00.000", + "voucherStatus": { "voucherStatusId": 2, "name": "issued" }, + "product": + { + "productId": 265, + "productName": "Voucher 10 euro korting", + "productDescription": "Voucher die10 euro korting geeft op je gehele winkelmand.", + "amountInclTax": -1000, + "requiredProducts": [] + }, + "mandatoryCustomerDataItems": [] + } "403": description: Forbidden content: @@ -161,8 +280,8 @@ components: type: integer description: |- When combined with a requiredProduct, the (positive or zero) amountInclTax dictates - the total amount that needs to be paid for said product. When the requiredProduct has - a sellingPrice > 0, the difference between sellingPrice and voucher amountInclTax + the (modified) total amount that needs to be paid for said product. When the requiredProduct + has a sellingPrice > 0, the difference between sellingPrice and voucher amountInclTax represents the granted discount. When not combined with a required product, the (negative) amountInclTax dictates the value of the voucher, that is subtracted from the total order value as a discount