From 87f19f756b6194558c49bb4e53c8b15fdc7a6a98 Mon Sep 17 00:00:00 2001 From: Max Martens Date: Tue, 17 Jun 2025 12:12:48 +0200 Subject: [PATCH 1/2] Update for datamodel v2.5, Fix version in SE/TP to reflect reality --- src/openapi/products/SE-products-SE.yaml | 21 +++++++++------------ src/openapi/products/SE-products-TP.yaml | 21 +++++++++------------ src/openapi/products/products-crud.yaml | 16 ++-------------- 3 files changed, 20 insertions(+), 38 deletions(-) diff --git a/src/openapi/products/SE-products-SE.yaml b/src/openapi/products/SE-products-SE.yaml index 85046b8..0de3d63 100644 --- a/src/openapi/products/SE-products-SE.yaml +++ b/src/openapi/products/SE-products-SE.yaml @@ -6,7 +6,7 @@ info: To be used by touchpoints to get information about HTM products they are allowed to see and/or sell. version: "1.0" servers: - - url: https://api.integratielaag.nl/abt/abtserviceengine/2.0 + - url: https://api.integratielaag.nl/abt/abtserviceengine/1.0 tags: - name: ServiceEngine Products description: |- @@ -70,7 +70,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/99", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/99", "method": "GET", }, }, @@ -103,7 +103,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/2", "method": "GET", }, }, @@ -136,7 +136,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/2", "method": "GET", }, }, @@ -169,7 +169,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/49", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/49", "method": "GET", }, }, @@ -202,7 +202,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/126", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/126", "method": "GET", }, }, @@ -235,7 +235,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/2", "method": "GET", }, }, @@ -259,7 +259,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/4", + "href": "https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/4", "method": "GET", }, }, @@ -2181,7 +2181,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/abtserviceengine/2.0/products/1 + example: https://api.integratielaag.nl/abt/abtserviceengine/1.0/products/1 method: type: string example: GET @@ -2191,10 +2191,7 @@ components: required: - productId - productOwner - - isRenewable - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness properties: productId: type: integer diff --git a/src/openapi/products/SE-products-TP.yaml b/src/openapi/products/SE-products-TP.yaml index 89851a4..1bf9558 100644 --- a/src/openapi/products/SE-products-TP.yaml +++ b/src/openapi/products/SE-products-TP.yaml @@ -6,7 +6,7 @@ info: To be used by touchpoints to get information about HTM products they are allowed to see and/or sell. version: "1.0" servers: - - url: https://api.integratielaag.nl/abt/touchpoint/2.0 + - url: https://api.integratielaag.nl/abt/touchpoint/1.0 tags: - name: ServiceEngine Products description: |- @@ -70,7 +70,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/99", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/99", "method": "GET", }, }, @@ -103,7 +103,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/2", "method": "GET", }, }, @@ -136,7 +136,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/2", "method": "GET", }, }, @@ -169,7 +169,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/49", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/49", "method": "GET", }, }, @@ -202,7 +202,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/126", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/126", "method": "GET", }, }, @@ -235,7 +235,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/2", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/2", "method": "GET", }, }, @@ -259,7 +259,7 @@ paths: { "get_details": { - "href": "https://api.integratielaag.nl/abt/touchpoint/2.0/products/4", + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/4", "method": "GET", }, }, @@ -2181,7 +2181,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/touchpoint/2.0/products/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/products/1 method: type: string example: GET @@ -2191,10 +2191,7 @@ components: required: - productId - productOwner - - isRenewable - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness properties: productId: type: integer diff --git a/src/openapi/products/products-crud.yaml b/src/openapi/products/products-crud.yaml index 493e49e..d91131a 100644 --- a/src/openapi/products/products-crud.yaml +++ b/src/openapi/products/products-crud.yaml @@ -2,7 +2,7 @@ openapi: 3.0.1 info: title: ABTProducts description: >- - CRUD APIs for HTM products (based on the new domainmodel v2.4). Internal use + CRUD APIs for HTM products (based on the new domainmodel v2.5). Internal use only; external touchpoints can get read-only, filtered access via the HTM Service Engine, using a different endpoint. version: '1.0' @@ -325,10 +325,7 @@ paths: value: { "productOwnerId": 1, - "isRenewable": false, - "isSellableAtHtm": false, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false + "isSellableAtHtm": false } postGboProduct: summary: Add new GBO product (non-renewable) @@ -2159,10 +2156,7 @@ components: required: - productId - productOwner - - isRenewable - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness properties: productId: type: integer @@ -2506,10 +2500,7 @@ components: CreateProductRequest: required: - productOwnerId - - isRenewable - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness type: object properties: parentProductId: @@ -2872,10 +2863,7 @@ components: UpdateProductRequest: required: - productOwnerId - - isRenewable - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness type: object properties: parentProductId: -- 2.45.2 From 8e5522524c8ddf12564d063eba0dfe98869d2b5f Mon Sep 17 00:00:00 2001 From: Max Martens Date: Wed, 18 Jun 2025 20:59:30 +0200 Subject: [PATCH 2/2] Add two new attributes isValid and isArchived (only in CRUD, SE/TP will never get those attributes in response); update to correct Regio Vrij gboPackageTemplateIds --- src/openapi/products/SE-products-SE.yaml | 12 +-- src/openapi/products/SE-products-TP.yaml | 12 +-- src/openapi/products/products-crud.yaml | 130 +++++++++++++++++++++-- 3 files changed, 132 insertions(+), 22 deletions(-) diff --git a/src/openapi/products/SE-products-SE.yaml b/src/openapi/products/SE-products-SE.yaml index 0de3d63..06ba8cc 100644 --- a/src/openapi/products/SE-products-SE.yaml +++ b/src/openapi/products/SE-products-SE.yaml @@ -929,7 +929,7 @@ paths: "productId": 109, "parentProductId": 49, "fikoArticleNumber": "1234", - "gboPackageTemplateId": null, + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1095,7 +1095,7 @@ paths: "productId": 114, "parentProductId": 109, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33629", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Voltarief - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1261,7 +1261,7 @@ paths: "productId": 115, "parentProductId": 109, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1422,7 +1422,7 @@ paths: "productId": 116, "parentProductId": 115, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - Losse Maand- HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1586,7 +1586,7 @@ paths: "productId": 117, "parentProductId": 115, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - Doorlopend abonnement- HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1754,7 +1754,7 @@ paths: "productId": 112, "parentProductId": 49, "fikoArticleNumber": "1234", - "gboPackageTemplateId": null, + "gboPackageTemplateId": "33618", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - HL65", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65", diff --git a/src/openapi/products/SE-products-TP.yaml b/src/openapi/products/SE-products-TP.yaml index 1bf9558..a9fa5de 100644 --- a/src/openapi/products/SE-products-TP.yaml +++ b/src/openapi/products/SE-products-TP.yaml @@ -929,7 +929,7 @@ paths: "productId": 109, "parentProductId": 49, "fikoArticleNumber": "1234", - "gboPackageTemplateId": null, + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1095,7 +1095,7 @@ paths: "productId": 114, "parentProductId": 109, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33629", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Voltarief - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1261,7 +1261,7 @@ paths: "productId": 115, "parentProductId": 109, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1422,7 +1422,7 @@ paths: "productId": 116, "parentProductId": 115, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - Losse Maand- HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1586,7 +1586,7 @@ paths: "productId": 117, "parentProductId": 115, "fikoArticleNumber": "1234", - "gboPackageTemplateId": "33630", + "gboPackageTemplateId": "33615", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - Reductietarief - Doorlopend abonnement- HL62", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62", @@ -1754,7 +1754,7 @@ paths: "productId": 112, "parentProductId": 49, "fikoArticleNumber": "1234", - "gboPackageTemplateId": null, + "gboPackageTemplateId": "33618", "tapConnectProductCode": null, "productName": "HTM Regio Vrij - HL65", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65", diff --git a/src/openapi/products/products-crud.yaml b/src/openapi/products/products-crud.yaml index d91131a..3afaaa7 100644 --- a/src/openapi/products/products-crud.yaml +++ b/src/openapi/products/products-crud.yaml @@ -23,6 +23,7 @@ paths: Get a list of all HTM products that refer to a given parentProductId (or without parent, if not specified), without any other filters. \ Only a few details are returned per product - use the `GET /products/{productId}` endpoint to get more details. \ + Two attributes are only returned if no touchpoint HTTP header is present: `isValid` and `isArchived`. \ In the examples, it can be seen that (when a touchpoint HTTP header is present) only products that have active sellingPeriods for touchpoints within the same retailer as the calling retailer are returned. \ @@ -52,14 +53,46 @@ paths: { "Entries": [] } - getListOneProductNoSellingPeriodsNoTouchpointId: - summary: List containing one product without any SellingPeriods (no touchpointId in HTTP-headers) - description: All products are returned, even if they have no activesellingPeriods + getListOneValidProductNoSellingPeriodsNoTouchpointId: + summary: List containing one (valid) product without any SellingPeriods (no touchpointId in HTTP-headers) + description: All products are returned, even if they have no active sellingPeriods or are invalid or archived value: { "Entries": [ { "productId": 1, + "isValid": true, + "isArchived": false, + "productName": "HTM pilot 90% korting", + "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", + "productCategory": { + "productCategoryId": 1, + "isTravelProduct": true, + "name": "Kortingsabonnement" + }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], + "sellableTouchpointIds": null, + "amountInclTax": null, + "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", + "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" + } + ] + } + getListOneInvalidProductNoSellingPeriodsNoTouchpointId: + summary: List containing one (invalid) product without any SellingPeriods (no touchpointId in HTTP-headers) + description: All products are returned, even if they have no active sellingPeriods or are invalid or archived + value: + { + "Entries": [ + { + "productId": 1, + "isValid": false, + "isArchived": false, "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", "productCategory": { @@ -82,12 +115,14 @@ paths: } getListOneProductNoTouchpointId: summary: List containing one product with 4 currently active SellingPeriods (no touchpointId in HTTP-headers) - description: All products are returned, even if they have no active SellingPeriods + description: All products are returned, even if they have no active SellingPeriods or are invalid or archived value: { "Entries": [ { "productId": 2, + "isValid": true, + "isArchived": false, "productName": "HTM dagkaart", "productDescription": "Reis een dag met het openbaar vervoer bij HTM", "productCategory": { @@ -136,12 +171,14 @@ paths: } getListMultipleProductsNoTouchpointId: summary: List containing multiple products (no touchpointId in HTTP-headers) - description: All products are returned, even if they have no active SellingPeriods + description: All products are returned, even if they have no active SellingPeriods or are invalid or archived value: { "Entries": [ { "productId": 1, + "isValid": true, + "isArchived": false, "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", "productCategory": { @@ -162,6 +199,8 @@ paths: }, { "productId": 2, + "isValid": true, + "isArchived": false, "productName": "HTM dagkaart", "productDescription": "Reis een dag met het openbaar vervoer bij HTM", "productCategory": { @@ -182,6 +221,8 @@ paths: }, { "productId": 3, + "isValid": true, + "isArchived": false, "productName": "HTM 20% korting", "productDescription": "Reis een maand lang met 20% korting!", "productCategory": { @@ -205,6 +246,8 @@ paths: }, { "productId": 4, + "isValid": true, + "isArchived": false, "productName": "HTM 40% korting", "productDescription": "Reis een maand lang met 40% korting!", "productCategory": { @@ -228,7 +271,7 @@ paths: } ] } - getListMultipleProductsTuchpointId1: + getListMultipleProductsTouchpointId1: summary: List containing multiple products (touchpointId 3 in HTTP-headers) description: Only products that have active SellingPeriods for touchpoint 3 and/or 4 (part of same retailer) are returned value: @@ -325,6 +368,8 @@ paths: value: { "productOwnerId": 1, + "isValid": false, + "isArchived": false, "isSellableAtHtm": false } postGboProduct: @@ -332,6 +377,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", @@ -420,6 +467,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", @@ -542,6 +591,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "35301", "productName": "HTM Regio Vrij DH73", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in het gekozen gebied in de regio Rotterdam Den Haag.", @@ -728,6 +779,8 @@ paths: "productId": 1, "parentProductId": null, "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "tapConnectProductCode": null, "productName": "HTM pilot 90% korting", @@ -900,6 +953,8 @@ paths: "productId": 2, "parentProductId": null, "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "tapConnectProductCode": null, "productName": "HTM pilot 90% korting", @@ -1129,6 +1184,8 @@ paths: "productId": 3, "parentProductId": null, "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "35301", "tapConnectProductCode": null, "productName": "HTM Regio Vrij DH73", @@ -1413,16 +1470,17 @@ paths: value: { "productOwnerId": 1, - "isRenewable": false, - "isSellableAtHtm": false, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false + "isValid": false, + "isArchived": false, + "isSellableAtHtm": false } updateGboProduct: summary: Update existing GBO product (non-renewable) value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", @@ -1515,6 +1573,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", @@ -1629,6 +1689,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "30901", "productName": "HTM pilot 90% korting", "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", @@ -1759,6 +1821,8 @@ paths: value: { "fikoArticleNumber": "1234", + "isValid": true, + "isArchived": false, "gboPackageTemplateId": "35301", "productName": "HTM Regio Vrij DH73", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in het gekozen gebied in de regio Rotterdam Den Haag.", @@ -2096,10 +2160,26 @@ components: type: object required: - productId + - productName + - productDescription + - productCategory + - tokenTypes + - sellableTouchpointIds + - amountInclTax + - imageReference + - productPageUrl properties: productId: type: integer example: 1 + isValid: + type: boolean + description: Not returned for external touchpoints + example: true + isArchived: + type: boolean + description: Not returned for external touchpoints + example: false productName: type: string example: HTM pilot 90% korting @@ -2156,6 +2236,8 @@ components: required: - productId - productOwner + - isValid + - isArchived - isSellableAtHtm properties: productId: @@ -2168,6 +2250,14 @@ components: type: string description: The article number of the product in FIKO example: 1234 + isValid: + type: boolean + description: Indicates if the product is valid - if false, the Service Engine will prevent touchpoints from seeing this product + example: true + isArchived: + type: boolean + description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product + example: false gboPackageTemplateId: type: string example: '30901' @@ -2500,6 +2590,8 @@ components: CreateProductRequest: required: - productOwnerId + - isValid + - isArchived - isSellableAtHtm type: object properties: @@ -2511,6 +2603,14 @@ components: type: string description: The article number of the product in FIKO example: 1234 + isValid: + type: boolean + description: Indicates if the product is valid - if false, the Service Engine will prevent touchpoints from seeing this product + example: true + isArchived: + type: boolean + description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product + example: false gboPackageTemplateId: type: string description: >- @@ -2863,6 +2963,8 @@ components: UpdateProductRequest: required: - productOwnerId + - isValid + - isArchived - isSellableAtHtm type: object properties: @@ -2874,6 +2976,14 @@ components: type: string description: The article number of the product in FIKO example: 1234 + isValid: + type: boolean + description: Indicates if the product is valid - if false, the Service Engine will prevent touchpoints from seeing this product + example: true + isArchived: + type: boolean + description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product + example: false gboPackageTemplateId: type: string description: >- -- 2.45.2