From 6e01f688d8ee19175fe830ba3fe5360b97bf9fcd Mon Sep 17 00:00:00 2001 From: Max Martens Date: Mon, 24 Mar 2025 13:59:41 +0100 Subject: [PATCH] Remove old v2.2 CRUD YAML, add ProducReference CRUD YAML (Based on WSO2 export) with added GboAGeProfiles --- .../products/productreference-crud.yaml | 2643 +++++++++++++ src/openapi/products/products-crud-v2.2.yaml | 3372 ----------------- ...ucts-crud-v2.4.yaml => products-crud.yaml} | 0 3 files changed, 2643 insertions(+), 3372 deletions(-) create mode 100644 src/openapi/products/productreference-crud.yaml delete mode 100644 src/openapi/products/products-crud-v2.2.yaml rename src/openapi/products/{products-crud-v2.4.yaml => products-crud.yaml} (100%) diff --git a/src/openapi/products/productreference-crud.yaml b/src/openapi/products/productreference-crud.yaml new file mode 100644 index 0000000..eeb43b6 --- /dev/null +++ b/src/openapi/products/productreference-crud.yaml @@ -0,0 +1,2643 @@ +openapi: 3.0.1 +info: + title: ABTProductReference + description: >- + CRUD APIs for HTM product reference tables (based on the new domainmodel v2.4). + Internal use only; external touchpoints can get (some)) access via the HTM + Service Engine, using a different endpoint. + version: '1.0' +servers: + - url: https://api.integratielaag.nl/abt/productreference/1.0 +tags: + - name: ABTProductReference CRUD + description: >- + Internal use only; external touchpoints can get (some) access + via the HTM Service Engine. +paths: + /clientattributes: + get: + description: | + This method will get the list of all client attributes. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/clientAttributesGetEntity' + description: A list of client attributes + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get all client attributes. + tags: + - ABTProductReference CRUD + post: + description: "This method will create a single client attribute. \n" + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/clientAttributesPostEntity' + required: true + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a client attribute. + tags: + - ABTProductReference CRUD + /clientattributes/{clientAttributeId}: + delete: + description: "This method will delete the client attributes when provided the\n\ + clientAttributeId. \n" + parameters: + - explode: false + in: path + name: clientAttributeId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a client attribute. + tags: + - ABTProductReference CRUD + put: + description: "This method will update the client attributes when provided the\n\ + clientAttributesId. \n" + parameters: + - explode: false + in: path + name: clientAttributeId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/clientAttributesPutEntity' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Modify a client attribute. + tags: + - ABTProductReference CRUD + /productowners: + get: + description: | + This method will get the list of all productowners. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/productOwners' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get all productowners. + tags: + - ABTProductReference CRUD + post: + description: "This method will create a single productowner. \n" + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/productOwner' + required: true + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a productowners. + tags: + - ABTProductReference CRUD + delete: + description: "This method will delete the productOwner when provided the\nproductOwnerId.\ + \ \n" + parameters: + - explode: false + in: path + name: productOwnerId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a productowner. + tags: + - ABTProductReference CRUD + put: + description: "This method will update the productOwner when provided the\nproductOwnerId.\ + \ \n" + parameters: + - explode: false + in: path + name: productOwnerId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/productOwner' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Modify a productowner. + tags: + - ABTProductReference CRUD + /productcategories: + get: + description: | + This method will get the list of productCategories + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/productCategories' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get all productcategories. + tags: + - ABTProductReference CRUD + post: + description: | + This method will create a single product category. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/productCategory' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a product category. + tags: + - ABTProductReference CRUD + /productcategories/{productCategoryId}: + delete: + description: | + This method will delete the productCategory when provided the + productCategoryId. + parameters: + - explode: false + in: path + name: productCategoryId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a product category. + tags: + - ABTProductReference CRUD + put: + description: | + This method will update productCategory when provided the + productCategoryId. + parameters: + - explode: false + in: path + name: productCategoryId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/productCategory' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Modify a product category. + tags: + - ABTProductReference CRUD + /customersegments: + get: + description: This method will get the list of customer segments. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/customerSegments' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get all customer segments. + tags: + - ABTProductReference CRUD + post: + description: This method will create a single customer segment. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/customerSegment' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a customer segment. + tags: + - ABTProductReference CRUD + /customersegments/{customerSegmentId}: + delete: + description: | + This method will delete a customer segment when provided the customerSegmentId. + parameters: + - explode: false + in: path + name: customerSegmentId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a customer segment. + tags: + - ABTProductReference CRUD + put: + description: | + This method will update a customer segment when provided the customerSegmentId. + parameters: + - explode: false + in: path + name: customerSegmentId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/customerSegment' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Modify a customer segment. + tags: + - ABTProductReference CRUD + /marketsegments: + get: + description: This method will get the list of market segments. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/marketSegments' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get all market segments. + tags: + - ABTProductReference CRUD + post: + description: This method will create a single market segment. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/marketSegment' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a market segment. + tags: + - ABTProductReference CRUD + /marketsegments/{marketSegmentId}: + delete: + description: | + This method will delete a market segment when provided the marketSegmentId. + parameters: + - explode: false + in: path + name: marketSegmentId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a market segment. + tags: + - ABTProductReference CRUD + put: + description: | + This method will update a market segment when provided the marketSegmentId. + parameters: + - explode: false + in: path + name: marketSegmentId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/marketSegment' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Modify a market segment. + tags: + - ABTProductReference CRUD + /paymentmoments: + get: + description: | + This method will retrieve the list of payment moments. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/paymentMoments' + description: A list of payment moments + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of payment moments. + tags: + - ABTProductReference CRUD + /retailers: + get: + description: | + This method will retrieve the list of retailers. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/retailers' + description: A list of retailers + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of retailers. + tags: + - ABTProductReference CRUD + post: + description: | + This method will create a new retailer. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/retailer' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a retailer. + tags: + - ABTProductReference CRUD + /retailers/{retailerId}: + delete: + description: | + This method will delete a retailer when provided the retailerId. + parameters: + - explode: false + in: path + name: retailerId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a retailer. + tags: + - ABTProductReference CRUD + put: + description: | + This method will update a retailer when provided the retailerId. + parameters: + - explode: false + in: path + name: retailerId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/retailer' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Update a retailer. + tags: + - ABTProductReference CRUD + /salestouchpoints: + get: + description: | + This method will get the list of sales touchpoints. It can also return + sales touchpoints based on retailerId. + parameters: + - description: retailerId + explode: true + in: query + name: retailerId + required: false + schema: + format: integer + type: integer + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/salesTouchpoints' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of salestouchpoints or a single salestouchpoints for a + given retailerId. + tags: + - ABTProductReference CRUD + post: + description: | + This method will create a new salestouchpoint. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/salesTouchpoint' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a salestouchpoint. + tags: + - ABTProductReference CRUD + /salestouchpoints/{salesTouchpointId}: + delete: + description: | + This method will delete salesTouchpoint when provided the + salesTouchpointId. + parameters: + - explode: false + in: path + name: salesTouchpointId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a retailer. + tags: + - ABTProductReference CRUD + put: + description: | + This method will update sales touchpoints when provided the + salesTouchpointId. + parameters: + - explode: false + in: path + name: salesTouchpointId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/salesTouchpoint' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Update a salestouchpoints. + tags: + - ABTProductReference CRUD + /serviceoptions: + get: + description: | + This method will retrieve the list of serviceoptions. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/serviceOptions' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of serviceoptions. + tags: + - ABTProductReference CRUD + post: + description: | + This method will create a new serviceoptions. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/serviceOption' + responses: + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a serviceoptions. + tags: + - ABTProductReference CRUD + /serviceoptions/{serviceOptionId}: + delete: + description: | + This method will delete serviceoptions when provided the + serviceoptionsId. + parameters: + - explode: false + in: path + name: serviceOptionId + required: true + schema: + format: integer + type: integer + style: simple + responses: + "202": + description: Deleted record successfully + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Delete a serviceoptions. + tags: + - ABTProductReference CRUD + put: + description: | + This method will create a new serviceoption. + parameters: + - explode: false + in: path + name: serviceOptionId + required: true + schema: + format: integer + type: integer + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/serviceOption' + required: true + responses: + "202": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes_post_201_response' + description: ok + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/_clientattributes__clientAttributeId__put_404_response' + description: Not Found + "409": + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + description: Conflict + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Create a serviceoption. + tags: + - ABTProductReference CRUD + /mandatorycustomerdataitems: + get: + description: | + This method will retrieve the list of mandatorycustomerdataitems. + responses: + "200": + content: + application/json: + example: + Entries: + - mandatoryCustomerDataItemId: 1 + customerDataItem: birthname + - mandatoryCustomerDataItemId: 2 + customerDataItem: surname + - mandatoryCustomerDataItemId: 3 + customerDataItem: dateOfBirth + - mandatoryCustomerDataItemId: 4 + customerDataItem: emailAddress + - mandatoryCustomerDataItemId: 5 + customerDataItem: address + - mandatoryCustomerDataItemId: 6 + customerDataItem: phone + - mandatoryCustomerDataItemId: 7 + customerDataItem: ovPayToken + schema: + $ref: '#/components/schemas/mandatoryCustomerDataItems' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of mandatorycustomerdataitems. + tags: + - ABTProductReference CRUD + /requiredcustomerlevels: + get: + description: | + This method will retrieve the list of requiredcustomerlevels. + responses: + "200": + content: + application/json: + example: + Entries: + - requiredCustomerLevelId: 1 + name: guest + - requiredCustomerLevelId: 2 + name: contact + - requiredCustomerLevelId: 3 + name: profile + schema: + $ref: '#/components/schemas/requiredCustomerLevels' + description: A list of users + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of requiredcustomerlevels. + tags: + - ABTProductReference CRUD + /forbiddenpaymentmethod: + get: + description: This method will retrieve the list of forbidden payments. + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/getforbiddenPaymentMethodList' + description: A list of forbidden payment methods + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of forbidden payments. + tags: + - ABTProductReference CRUD + /requiredgbopersonalattribute: + get: + description: | + This method will retrieve the list of required personal attribute. + parameters: [] + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/requiredGboPersonalAttributes' + description: A list of Required GBO personal attributes + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of required personal attribute . + tags: + - ABTProductReference CRUD + /gboageprofiles: + get: + description: | + This method will retrieve the list of GBO age profiles. + parameters: [] + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/GboAgeProfileList' + description: A list of GBO age profiles + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: Get the list of required personal attribute . + tags: + - ABTProductReference CRUD + /productreferences: + get: + description: gives list of all possible product reference values availbale + parameters: [] + responses: + "200": + content: + application/json: + example: + Entries: + clientAttributes: + type: array + items: + type: object + properties: + - clientAttributeId: 1 + clientId: htm + description: description + isActive: "true" + retailerId: 1 + salesTouchpointId: 2 + productOwners: + - productOwnerId: 123 + name: name + organization: org + productCategories: + - isTravelProduct: true + name: name + productCategoryId: 21 + customerSegments: + - name: name + customerSegmentId: 123 + marketSegments: + - name: name + marketSegmentId: 123 + paymentMoments: + - paymentMomentId: 123 + name: name + retailers: + - name: name + street: StreetName + number: "12" + numberAddition: E + postalCode: 2222 BV + city: Amsterdam + country: NL + emailAddress: sample@email.com + phoneNumber: "6123456789" + taxId: taxId + imageReference: imageReference + retailerId: 123 + salesTouchpoints: + - isActive: true + name: name + retailerId: 21 + salesTouchPointId: 123 + serviceOptions: + - action: action + description: description + serviceOptionId: 123 + mandatoryCustomerDataItems: + - mandatoryCustomerDataItemId: 123 + customerDataItem: customerDataItem + requiredCustomerLevels: + - requiredCustomerLevelId: 123 + name: requiredCustomerLevel + forbiddenPaymentMethods: + - forbiddenPaymentMethodId: 123 + name: requiredCustomerLevel + issuer: Kane + requiredGboPersonalAttributes: + - requiredGboPersonalAttributeId: 123 + name: requiredCustomerLevel + schema: + $ref: '#/components/schemas/_productreferences_get_200_response' + description: Successful retrieved list of all possible product reference + values + "400": + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + description: Bad Request + "401": + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + description: Not Found + "500": + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + description: Internal Server Error + summary: List of all possible product reference values + tags: + - ABTProductReference CRUD +components: + schemas: + clientAttribute: + properties: + clientId: + example: htm + type: string + description: + example: description + type: string + isActive: + example: "true" + type: string + retailerId: + example: 1 + type: integer + salesTouchpointId: + example: 2 + type: integer + type: object + clientAttributesGetList: + items: + $ref: '#/components/schemas/clientAttributesGetList_inner' + type: array + clientAttributesGetEntity: + example: + Entries: + - clientId: htm + description: description + clientAttributeId: 1 + isActive: "true" + retailerId: 1 + salesTouchpointId: 2 + - clientId: htm + description: description + clientAttributeId: 1 + isActive: "true" + retailerId: 1 + salesTouchpointId: 2 + properties: + Entries: + items: + $ref: '#/components/schemas/clientAttributesGetList_inner' + type: array + type: object + clientAttributesPostEntity: + properties: + clientId: + example: htm + type: string + description: + example: description + type: string + isActive: + example: true + type: boolean + retailerId: + example: 1 + type: integer + salesTouchpointId: + example: 2 + type: integer + type: object + clientAttributesPutEntity: + properties: + description: + example: description + type: string + isActive: + example: true + type: boolean + retailerId: + example: 1 + type: integer + clientId: + example: retailer001 + type: string + salesTouchpointId: + example: 1 + type: integer + type: object + productOwner: + properties: + organization: + example: org + type: string + name: + example: name + type: string + type: object + productOwnerIdList: + items: + $ref: '#/components/schemas/productOwnerIdList_inner' + type: array + productOwners: + example: + Entries: + - productOwnerId: 123 + organization: org + name: name + - productOwnerId: 123 + organization: org + name: name + properties: + Entries: + items: + $ref: '#/components/schemas/productOwnerIdList_inner' + type: array + type: object + productCategory: + properties: + isTravelProduct: + example: true + type: boolean + name: + example: name + type: string + type: object + productCategoryIdList: + items: + $ref: '#/components/schemas/productCategoryIdList_inner' + type: array + productCategories: + example: + Entries: + - productCategoryId: 21 + name: name + isTravelProduct: true + - productCategoryId: 21 + name: name + isTravelProduct: true + properties: + Entries: + items: + $ref: '#/components/schemas/productCategoryIdList_inner' + type: array + type: object + customerSegment: + properties: + name: + example: name + type: string + type: object + customerSegmentIdList: + items: + $ref: '#/components/schemas/customerSegmentIdList_inner' + type: array + customerSegments: + example: + Entries: + - name: name + customerSegmentId: 123 + - name: name + customerSegmentId: 123 + properties: + Entries: + items: + $ref: '#/components/schemas/customerSegmentIdList_inner' + type: array + type: object + paymentMoment: + properties: + results: + $ref: '#/components/schemas/paymentMoment_results' + paymentMomentIdList: + items: + $ref: '#/components/schemas/paymentMoment_results' + type: array + paymentMoments: + example: + Entries: + - paymentMomentId: 123 + name: name + - paymentMomentId: 123 + name: name + properties: + Entries: + items: + $ref: '#/components/schemas/paymentMoment_results' + type: array + type: object + marketSegment: + properties: + name: + example: name + type: string + marketSegmentIdList: + items: + $ref: '#/components/schemas/marketSegmentIdList_inner' + type: array + marketSegments: + example: + Entries: + - name: name + marketSegmentId: 123 + - name: name + marketSegmentId: 123 + properties: + Entries: + items: + $ref: '#/components/schemas/marketSegmentIdList_inner' + type: array + type: object + retailer: + properties: + name: + example: name + type: string + street: + example: StreetName + type: string + number: + example: "12" + type: string + numberAddition: + example: E + type: string + postalCode: + example: 2222 BV + type: string + city: + example: Amsterdam + type: string + country: + example: NL + type: string + emailAddress: + example: sample@email.com + type: string + phoneNumber: + example: "6123456789" + type: string + taxId: + example: taxId + type: string + imageReference: + example: imageReference + type: string + retailerIdList: + items: + $ref: '#/components/schemas/retailerIdList_inner' + type: array + retailers: + example: + Entries: + - number: "12" + country: NL + emailAddress: sample@email.com + phoneNumber: "6123456789" + city: Amsterdam + street: StreetName + taxId: taxId + postalCode: 2222 BV + name: name + numberAddition: E + imageReference: imageReference + retailerId: 123 + - number: "12" + country: NL + emailAddress: sample@email.com + phoneNumber: "6123456789" + city: Amsterdam + street: StreetName + taxId: taxId + postalCode: 2222 BV + name: name + numberAddition: E + imageReference: imageReference + retailerId: 123 + properties: + Entries: + items: + $ref: '#/components/schemas/retailerIdList_inner' + type: array + type: object + salesTouchpoint: + properties: + isActive: + example: true + type: boolean + name: + example: name + type: string + retailerId: + example: 21 + type: integer + type: object + salesTouchpointIdList: + items: + $ref: '#/components/schemas/salesTouchpointIdList_inner' + type: array + salesTouchpoints: + example: + Entries: + - name: name + isActive: true + retailerId: 21 + salesTouchpointId: 123 + - name: name + isActive: true + retailerId: 21 + salesTouchpointId: 123 + properties: + Entries: + items: + $ref: '#/components/schemas/salesTouchpointIdList_inner' + type: array + type: object + serviceOption: + properties: + action: + example: action + type: string + description: + example: description + type: string + type: object + serviceOptionIdList: + items: + $ref: '#/components/schemas/serviceOptionIdList_inner' + type: array + serviceOptions: + example: + Entries: + - serviceOptionId: 123 + action: action + description: description + - serviceOptionId: 123 + action: action + description: description + properties: + Entries: + items: + $ref: '#/components/schemas/serviceOptionIdList_inner' + type: array + type: object + mandatoryCustomerDataItem: + properties: + customerDataItem: + example: customerDataItem + type: string + type: object + mandatoryCustomerDataItemIdList: + items: + $ref: '#/components/schemas/mandatoryCustomerDataItemIdList_inner' + type: array + mandatoryCustomerDataItems: + example: + Entries: + - mandatoryCustomerDataItemId: 1 + customerDataItem: birthname + - mandatoryCustomerDataItemId: 1 + customerDataItem: birthname + properties: + Entries: + items: + $ref: '#/components/schemas/mandatoryCustomerDataItemIdList_inner' + type: array + type: object + requiredCustomerLevelIdList: + items: + $ref: '#/components/schemas/requiredCustomerLevelIdList_inner' + type: array + requiredCustomerLevels: + example: + Entries: + - requiredCustomerLevelId: 123 + name: requiredCustomerLevel + - requiredCustomerLevelId: 123 + name: requiredCustomerLevel + properties: + Entries: + items: + $ref: '#/components/schemas/requiredCustomerLevelIdList_inner' + type: array + type: object + forbiddenPaymentMethodList: + items: + $ref: '#/components/schemas/forbiddenPaymentMethodList_inner' + type: array + getforbiddenPaymentMethodList: + example: + Entries: + - forbiddenPaymentMethodId: 123 + name: requiredCustomerLevel + issuer: Kane + - forbiddenPaymentMethodId: 123 + name: requiredCustomerLevel + issuer: Kane + properties: + Entries: + items: + $ref: '#/components/schemas/forbiddenPaymentMethodList_inner' + type: array + type: object + GetRequiredGboPersonalAttribute: + items: + $ref: '#/components/schemas/GetRequiredGboPersonalAttribute_inner' + type: array + requiredGboPersonalAttributes: + example: + Entries: + - name: NAME + requiredGboPersonalAttributeId: 1 + - name: BIRTHDATE + requiredGboPersonalAttributeId: 2 + - name: PHOTO + requiredGboPersonalAttributeId: 3 + properties: + Entries: + items: + $ref: '#/components/schemas/GetRequiredGboPersonalAttribute_inner' + type: array + type: object + GboAgeProfileList: + items: + $ref: '#/components/schemas/GboAgeProfile' + type: array + example: + Entries: + - gboAgeProfileId: 2 + name: Kind (4 t/m 11 jaar) + ageFromInclusive: 4 + ageToInclusive: 11 + - gboAgeProfileId: 3 + name: Jongere (12 t/m 18 jaar) + ageFromInclusive: 12 + ageToInclusive: 18 + GboAgeProfile: + 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 + description: The minimum age that the GBO age profile applies to + example: 4 + ageToInclusive: + type: integer + description: The maximum age that the GBO age profile applies to + example: 11 + GetproductReferences: + properties: + Entries: + $ref: '#/components/schemas/GetproductReferences_Entries' + type: object + "400Response": + properties: + code: + example: "400" + type: string + type: + type: string + message: + example: Bad Request + type: string + description: + example: '''2023-02-01 00:00:00'' is not a valid Datetime' + type: string + type: object + "401Response": + properties: + code: + example: "900901" + type: string + type: + type: string + message: + example: Invalid Credentials + type: string + description: + example: Invalid Credentials. Make sure you have provided the correct security + credentials + type: string + type: object + "404Response": + properties: + code: + example: "404" + type: string + type: + example: Status report + type: string + message: + example: Not Found + type: string + description: + example: The requested resource is not available. + type: string + type: object + "404ResponseId": + properties: + error: + example: "No record found for id: 5" + type: string + type: object + "409Response": + properties: + error: + example: Entry already exists + type: string + type: object + "500Response": + properties: + code: + example: "500" + type: string + type: + type: string + message: + example: Internal Server Error + type: string + description: + type: string + type: object + _clientattributes_post_201_response: + example: + id: 1 + properties: + id: + example: 1 + type: integer + type: object + _clientattributes__clientAttributeId__put_404_response: + oneOf: + - $ref: '#/components/schemas/404ResponseId' + - $ref: '#/components/schemas/404Response' + _productreferences_get_200_response: + allOf: + - $ref: '#/components/schemas/GetproductReferences' + clientAttributesGetList_inner: + example: + clientId: htm + description: description + clientAttributeId: 1 + isActive: "true" + retailerId: 1 + salesTouchpointId: 2 + properties: + clientAttributeId: + example: 1 + type: integer + clientId: + example: htm + type: string + description: + example: description + type: string + isActive: + example: "true" + type: string + retailerId: + example: 1 + type: integer + salesTouchpointId: + example: 2 + type: integer + productOwnerIdList_inner: + example: + productOwnerId: 123 + organization: org + name: name + properties: + productOwnerId: + example: 123 + type: integer + name: + example: name + type: string + organization: + example: org + type: string + productCategoryIdList_inner: + example: + productCategoryId: 21 + name: name + isTravelProduct: true + properties: + isTravelProduct: + example: true + type: boolean + name: + example: name + type: string + productCategoryId: + example: 21 + type: integer + customerSegmentIdList_inner: + example: + name: name + customerSegmentId: 123 + properties: + name: + example: name + type: string + customerSegmentId: + example: 123 + type: integer + paymentMoment_results: + example: + paymentMomentId: 123 + name: name + properties: + paymentMomentId: + example: 123 + type: integer + name: + example: name + type: string + marketSegmentIdList_inner: + example: + name: name + marketSegmentId: 123 + properties: + name: + example: name + type: string + marketSegmentId: + example: 123 + type: integer + retailerIdList_inner: + example: + number: "12" + country: NL + emailAddress: sample@email.com + phoneNumber: "6123456789" + city: Amsterdam + street: StreetName + taxId: taxId + postalCode: 2222 BV + name: name + numberAddition: E + imageReference: imageReference + retailerId: 123 + properties: + name: + example: name + type: string + street: + example: StreetName + type: string + number: + example: "12" + type: string + numberAddition: + example: E + type: string + postalCode: + example: 2222 BV + type: string + city: + example: Amsterdam + type: string + country: + example: NL + type: string + emailAddress: + example: sample@email.com + type: string + phoneNumber: + example: "6123456789" + type: string + taxId: + example: taxId + type: string + imageReference: + example: imageReference + type: string + retailerId: + example: 123 + type: integer + salesTouchpointIdList_inner: + example: + name: name + isActive: true + retailerId: 21 + salesTouchpointId: 123 + properties: + isActive: + example: true + type: boolean + name: + example: name + type: string + retailerId: + example: 21 + type: integer + salesTouchpointId: + example: 123 + type: integer + serviceOptionIdList_inner: + example: + serviceOptionId: 123 + action: action + description: description + properties: + action: + example: action + type: string + description: + example: description + type: string + serviceOptionId: + example: 123 + type: integer + mandatoryCustomerDataItemIdList_inner: + example: + mandatoryCustomerDataItemId: 1 + customerDataItem: birthname + properties: + mandatoryCustomerDataItemId: + example: 1 + type: integer + customerDataItem: + example: birthname + type: string + requiredCustomerLevelIdList_inner: + example: + requiredCustomerLevelId: 123 + name: requiredCustomerLevel + properties: + requiredCustomerLevelId: + example: 123 + type: integer + name: + example: requiredCustomerLevel + type: string + forbiddenPaymentMethodList_inner: + example: + forbiddenPaymentMethodId: 123 + name: requiredCustomerLevel + issuer: Kane + properties: + forbiddenPaymentMethodId: + example: 123 + type: integer + name: + example: CreditCard + type: string + issuer: + example: American Express + type: string + type: object + GetRequiredGboPersonalAttribute_inner: + example: + requiredGboPersonalAttributeId: 1 + name: NAME + properties: + requiredGboPersonalAttributeId: + example: 1 + type: integer + name: + example: NAME + type: string + type: object + GetproductReferences_Entries: + oneOf: + - $ref: '#/components/schemas/clientAttributesGetEntity' + - $ref: '#/components/schemas/productOwners' + - $ref: '#/components/schemas/productCategories' + - $ref: '#/components/schemas/customerSegments' + - $ref: '#/components/schemas/marketSegments' + - $ref: '#/components/schemas/paymentMoments' + - $ref: '#/components/schemas/retailers' + - $ref: '#/components/schemas/salesTouchpoints' + - $ref: '#/components/schemas/serviceOptions' + - $ref: '#/components/schemas/mandatoryCustomerDataItems' + - $ref: '#/components/schemas/requiredCustomerLevels' + - $ref: '#/components/schemas/getforbiddenPaymentMethodList' + - $ref: '#/components/schemas/requiredGboPersonalAttributes' + - $ref: '#/components/schemas/GboAgeProfileList' \ No newline at end of file diff --git a/src/openapi/products/products-crud-v2.2.yaml b/src/openapi/products/products-crud-v2.2.yaml deleted file mode 100644 index dfdd8f1..0000000 --- a/src/openapi/products/products-crud-v2.2.yaml +++ /dev/null @@ -1,3372 +0,0 @@ -openapi: 3.0.1 -info: - title: ABTProducts - description: >- - CRUD APIs for HTM products (based on the new domainmodel v2.2). Internal use - only; external touchpoints can get read-only, filtered access via the HTM - Service Engine, using a different endpoint. - version: '1.0' -servers: - - url: https://api.integratielaag.nl/abt/products/1.0 -tags: - - name: ABTProducts CRUD - description: >- - Internal use only; external touchpoints can get read-only, filtered access - via the HTM Service Engine. -paths: - /products: - get: - tags: - - ABTProducts CRUD - summary: Get a list of all defined HTM products - description: |- - 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. \ - 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. \ - Touchpoint 1 and 2 belong to retailer 1; touchpoint 3 and 4 belong to retailer 2. - parameters: - - name: parentProductId - in: query - required: false - description: |- - Only return products that refer to the given parentProductId. \ - Returns parent-products (i.e. products with parentProductId = null) if left empty. - schema: - type: integer - example: 1 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ProductPayloadListResponse' - examples: - getListNoProducts: - summary: No products / Empty list - description: No products - value: - { - "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 - value: - { - "Entries": [ - { - "productId": 1, - "productCode": "30901-WL", - "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" - } - ] - } - 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 - value: - { - "Entries": [ - { - "productId": 2, - "productCode": "312AB-WL", - "productName": "HTM dagkaart", - "productDescription": "Reis een dag met het openbaar vervoer bij HTM", - "productCategory": { - "productCategoryId": 6, - "isTravelProduct": false, - "name": "Barcode" - }, - "tokenTypes": null, - "sellableTouchpointIds": [ - 1, - 2, - 3, - 4 - ], - "amountInclTax": null, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - } - ] - } - getListOneProductTouchpointId3: - summary: List containing one product with 4 currently active SellingPeriods (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: - { - "Entries": [ - { - "productId": 2, - "productCode": "312AB-WL", - "productName": "HTM dagkaart", - "productDescription": "Reis een dag met het openbaar vervoer bij HTM", - "productCategory": { - "productCategoryId": 6, - "isTravelProduct": false, - "name": "Barcode" - }, - "tokenTypes": null, - "sellableTouchpointIds": [ - 3, - 4 - ], - "amountInclTax": 300, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - } - ] - } - getListMultipleProductsNoTouchpointId: - summary: List containing multiple products (no touchpointId in HTTP-headers) - description: All products are returned, even if they have no active SellingPeriods - value: - { - "Entries": [ - { - "productId": 1, - "productCode": "30901-WL", - "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" - }, - { - "productId": 2, - "productCode": "312AB-WL", - "productName": "HTM dagkaart", - "productDescription": "Reis een dag met het openbaar vervoer bij HTM", - "productCategory": { - "productCategoryId": 6, - "isTravelProduct": false, - "name": "Barcode" - }, - "tokenTypes": null, - "sellableTouchpointIds": [ - 1, - 2, - 3, - 4 - ], - "amountInclTax": null, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - }, - { - "productId": 3, - "productCode": "30001-ML", - "productName": "HTM 20% korting", - "productDescription": "Reis een maand lang met 20% korting!", - "productCategory": { - "productCategoryId": 1, - "isTravelProduct": true, - "name": "Kortingsabonnement" - }, - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - } - ], - "sellableTouchpointIds": [ - 1, - 2 - ], - "amountInclTax": null, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - }, - { - "productId": 4, - "productCode": "30002-ML", - "productName": "HTM 40% korting", - "productDescription": "Reis een maand lang met 40% korting!", - "productCategory": { - "productCategoryId": 1, - "isTravelProduct": true, - "name": "Kortingsabonnement" - }, - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - } - ], - "sellableTouchpointIds": [ - 3, - 4 - ], - "amountInclTax": null, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - } - ] - } - getListMultipleProductsTuchpointId1: - 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: - { - "Entries": [ - { - "productId": 2, - "productCode": "312AB-WL", - "productName": "HTM dagkaart", - "productDescription": "Reis een dag met het openbaar vervoer bij HTM", - "productCategory": { - "productCategoryId": 6, - "isTravelProduct": false, - "name": "Barcode" - }, - "tokenTypes": null, - "sellableTouchpointIds": [ - 3, - 4 - ], - "amountInclTax": 300, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - }, - { - "productId": 4, - "productCode": "30002-ML", - "productName": "HTM 40% korting", - "productDescription": "Reis een maand lang met 40% korting!", - "productCategory": { - "productCategoryId": 1, - "isTravelProduct": true, - "name": "Kortingsabonnement" - }, - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - } - ], - "sellableTouchpointIds": [ - 3, - 4 - ], - "amountInclTax": 800, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina" - } - ] - } - '400': - description: '400' - content: - application/json: - schema: - $ref: '#/components/schemas/400Response' - '401': - description: '401' - content: - application/json: - schema: - $ref: '#/components/schemas/401Response' - '404': - description: '404' - content: - application/json: - schema: - $ref: '#/components/schemas/404Response' - '500': - description: '500' - content: - application/json: - schema: - $ref: '#/components/schemas/500Response' - post: - tags: - - ABTProducts CRUD - summary: >- - Persist a new HTM product as defined in the request body, after - successful validation - description: >- - Persist a new HTM product as defined in the raw JSON request body, but - only after successful validation of the entire request body. When any - (subset of) validation fails, nothing is persisted in the underlying - database. - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateProductRequest' - examples: - postMinimalProduct: - summary: >- - Minimum request body (to be used as minimal parent-template - for hierarchical products) - value: - { - "productOwnerId": 1, - "isRenewable": false, - "isSellableAtHtm": false, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false - } - postGboProduct: - summary: Add new GBO product (non-renewable) - value: - { - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 1, - "requiredCustomerLevelId": 1, - "incompatibleProducts": [ - { - "incompatibleProductId": 1, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 4, - 5 - ], - "tokenTypeIds": [ - 1 - ], - "paymentMomentId": 1, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "salesTouchpointId": 3, - "sellingPrices": [ - { - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - } - ] - } - ], - "purchasePrices": [ - { - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - } - ] - } - postGboProductMultiplePeriods: - summary: >- - Add new GBO product (non-renewable, multiple - sellingPeriods/prices per period) - value: - { - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 1, - "requiredCustomerLevelId": 1, - "incompatibleProducts": [ - { - "incompatibleProductId": 2, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 4, - 5 - ], - "tokenTypeIds": [ - 1 - ], - "paymentMomentId": 1, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "salesTouchpointId": 3, - "sellingPrices": [ - { - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - }, - { - "amountExclTax": 101, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "internalPrice": 101.0000 - } - ] - }, - { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "salesTouchpointId": 2, - "sellingPrices": [ - { - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - }, - { - "amountExclTax": 101, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "internalPrice": 101.0000 - } - ] - } - ], - "purchasePrices": [ - { - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999" - } - ] - } - postGboPadProduct: - summary: >- - Add new GBO product (PAD required, renewable, serviceOptions, - forbiddenPaymentMethods) - value: - { - "productCode": "35301-MA", - "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.", - "validityPeriod": { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM Regio Free DH73", - "description": "For a fixed amount unlimited travel with EBS, HTM and RET in the chosen area in the Rotterdam The Hague region." - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 3, - "requiredCustomerLevelId": 3, - "requiredProducts": [ - { - "requiredProductId": 1, - "description": "Basisproduct nodig" - } - ], - "incompatibleProducts": [ - { - "incompatibleProductId": 3, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 3, - 4, - 5, - 6 - ], - "requiredGboPersonalAttributeIds": [ - 1, - 2, - 3 - ], - "tokenTypeIds": [ - 1, - 2, - 3 - ], - "paymentMomentId": 1, - "serviceOptionIds": [ - 1, - 2 - ], - "validityDuration": "P1M", - "maxStartInFutureDuration": "P6W", - "isRenewable": true, - "sendInvoice": true, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "salesTouchpointId": 3, - "forbiddenPaymentMethodIds": [ - 1 - ], - "sellingPrices": [ - { - "amountExclTax": 5413, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 5900, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 5413.0000 - } - ] - } - ], - "purchasePrices": [ - { - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - } - ] - } - postGboProductSupplement: - summary: TODO - Add new GBO product (supplement with requirements) - value: - { - "productName": "TODO" - } - postTapConnectProduct: - summary: TODO - Add new TapConnect product - value: - { - "productName": "TODO" - } - postIbanMandate: - summary: TODO - Add new IBAN mandate (functional product) - value: - { - "productName": "TODO" - } - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/CreateOrUpdateProductResponse' - '400': - description: '400' - content: - application/json: - schema: - $ref: '#/components/schemas/400Response' - '401': - description: '401' - content: - application/json: - schema: - $ref: '#/components/schemas/401Response' - '404': - description: '404' - content: - application/json: - schema: - $ref: '#/components/schemas/404Response' - '500': - description: '500' - content: - application/json: - schema: - $ref: '#/components/schemas/500Response' - /products/{productId}: - get: - tags: - - ABTProducts CRUD - summary: Get full details of a single HTM product, specified by the productId - description: >- - Get full details of a single HTM product, specified by the productId, - without any filtering. External consumers can get access to a filtered - view via the HTM Service Engine, only receiving the information that is - allowed to be seen by the touchpointId of the consumer. - parameters: - - name: productId - in: path - required: true - style: simple - description: Id of the product to get details for - schema: - type: integer - example: 1 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ProductPayloadResponse' - examples: - getDetailsGboNonRenewable: - summary: GBO product (non-renewable) - value: - { - "productId": 1, - "parentProductId": null, - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "tapConnectProductCode": null, - "productGroupMetadata": null, - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "validityPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwner": { - "productOwnerId": 1, - "name": "Corneel Verstoep", - "organization": "HTM" - }, - "marketSegments": [ - { - "marketSegmentId": 1, - "name": "B2C" - } - ], - "customerSegments": [ - { - "customerSegmentId": 2, - "name": "Kind (4-11)" - }, - { - "customerSegmentId": 3, - "name": "Jongere (12-17)" - }, - { - "customerSegmentId": 4, - "name": "Volwassene (18-64)" - }, - { - "customerSegmentId": 5, - "name": "Oudere (65+)" - } - ], - "productCategory": { - "productCategoryId": 1, - "isTravelProduct": true, - "name": "Kortingsabonnement" - }, - "requiredCustomerLevel": { - "requiredCustomerLevelId": 1, - "name": "anonymous" - }, - "requiredProducts": null, - "incompatibleProducts": [ - { - "incompatibleProductId": 1, - "productName": "HTM pilot 90% korting", - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItems": [ - { - "mandatoryCustomerDataItemId": 4, - "customerDataItem": "emailAddress" - }, - { - "mandatoryCustomerDataItemId": 5, - "customerDataItem": "ovPayToken" - } - ], - "requiredGboPersonalAttributes": null, - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - } - ], - "paymentMoment": { - "paymentMomentId": 1, - "name": "prepaid" - }, - "serviceOptions": null, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "salesTouchpoint": { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailer": { - "retailerId": 1001, - "name": "HTM externe touchpoints", - "street": "Koningin Julianaplein", - "number": "10", - "numberAddition": null, - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "Nederland", - "emailAddress": "info@htm.nl", - "phoneNumber": "070 374 9002", - "taxId": "572309345923", - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg" - } - }, - "forbiddenPaymentMethods": null, - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 92, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "internalPrice": 92.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "taxCode": "V0", - "taxPercentageAmount": 0, - "description": "BTW VERKOOP NUL" - }, - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00" - } - ], - "auditTrail": [ - { - "auditTrailId": 2, - "action": "update", - "user": "api", - "timestamp": "2024-09-03T08:39:38.000+00:00" - }, - { - "auditTrailId": 1, - "action": "insert", - "user": "api", - "timestamp": "2024-09-03T08:38:24.000+00:00" - } - ] - } - getDetailsGboProductMultiplePeriods: - summary: GBO product (non-renewable, multiple sellingPeriods/prices per period) - value: - { - "productId": 2, - "parentProductId": null, - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "tapConnectProductCode": null, - "productGroupMetadata": null, - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "validityPeriodId": 2, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwner": { - "productOwnerId": 1, - "name": "Corneel Verstoep", - "organization": "HTM" - }, - "marketSegments": [ - { - "marketSegmentId": 1, - "name": "B2C" - } - ], - "customerSegments": [ - { - "customerSegmentId": 2, - "name": "Kind (4-11)" - }, - { - "customerSegmentId": 3, - "name": "Jongere (12-17)" - }, - { - "customerSegmentId": 4, - "name": "Volwassene (18-64)" - }, - { - "customerSegmentId": 5, - "name": "Oudere (65+)" - } - ], - "productCategory": { - "productCategoryId": 1, - "isTravelProduct": true, - "name": "Kortingsabonnement" - }, - "requiredCustomerLevel": { - "requiredCustomerLevelId": 1, - "name": "anonymous" - }, - "requiredProducts": null, - "incompatibleProducts": [ - { - "incompatibleProductId": 2, - "productName": "HTM pilot 90% korting", - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItems": [ - { - "mandatoryCustomerDataItemId": 4, - "customerDataItem": "emailAddress" - }, - { - "mandatoryCustomerDataItemId": 5, - "customerDataItem": "ovPayToken" - } - ], - "requiredGboPersonalAttributes": null, - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - } - ], - "paymentMoment": { - "paymentMomentId": 1, - "name": "prepaid" - }, - "serviceOptions": null, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00", - "salesTouchpoint": { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailer": { - "retailerId": 1001, - "name": "HTM externe touchpoints", - "street": "Koningin Julianaplein", - "number": "10", - "numberAddition": null, - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "Nederland", - "emailAddress": "info@htm.nl", - "phoneNumber": "070 374 9002", - "taxId": "572309345923", - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg" - } - }, - "forbiddenPaymentMethods": null, - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 92, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "internalPrice": 92.0000 - }, - { - "sellingPriceId": 2, - "amountExclTax": 101, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00", - "internalPrice": 101.0000 - } - ] - }, - { - "sellingPeriodId": 2, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00", - "salesTouchpoint": { - "salesTouchpointId": 2, - "name": "SMP (Team Incident Masters)", - "isActive": false, - "retailer": { - "retailerId": 1000, - "name": "HTM interne touchpoints", - "street": "Koningin Julianaplein", - "number": "10", - "numberAddition": null, - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "Nederland", - "emailAddress": "info@htm.nl", - "phoneNumber": "070 374 9002", - "taxId": "572309345923", - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg" - } - }, - "forbiddenPaymentMethods": null, - "sellingPrices": [ - { - "sellingPriceId": 3, - "amountExclTax": 92, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "internalPrice": 92.0000 - }, - { - "sellingPriceId": 4, - "amountExclTax": 101, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00", - "internalPrice": 101.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "taxCode": "V0", - "taxPercentageAmount": 0, - "description": "BTW VERKOOP NUL" - }, - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2025-12-31T23:59:59.999+00:00" - } - ], - "auditTrail": [ - { - "auditTrailId": 2, - "action": "update", - "user": "api", - "timestamp": "2024-09-03T08:39:38.000+00:00" - }, - { - "auditTrailId": 1, - "action": "insert", - "user": "api", - "timestamp": "2024-09-03T08:38:24.000+00:00" - } - ] - } - getDetailsGboPadProduct: - summary: GBO product (PAD required, renewable, serviceOptions, forbiddenPaymentMethods) - value: - { - "productId": 3, - "parentProductId": null, - "productCode": "35301-MA", - "gboPackageTemplateId": "35301", - "tapConnectProductCode": null, - "productGroupMetadata": null, - "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.", - "validityPeriod": { - "validityPeriodId": 3, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM Regio Free DH73", - "description": "For a fixed amount unlimited travel with EBS, HTM and RET in the chosen area in the Rotterdam The Hague region." - } - ], - "productOwner": { - "productOwnerId": 1, - "name": "Corneel Verstoep", - "organization": "HTM" - }, - "marketSegments": [ - { - "marketSegmentId": 1, - "name": "B2C" - } - ], - "customerSegments": [ - { - "customerSegmentId": 2, - "name": "Kind (4-11)" - }, - { - "customerSegmentId": 3, - "name": "Jongere (12-17)" - }, - { - "customerSegmentId": 4, - "name": "Volwassene (18-64)" - }, - { - "customerSegmentId": 5, - "name": "Oudere (65+)" - } - ], - "productCategory": { - "productCategoryId": 3, - "isTravelProduct": true, - "name": "Afgekocht reisrecht" - }, - "requiredCustomerLevel": { - "requiredCustomerLevelId": 3, - "name": "account" - }, - "requiredProducts": null, - "incompatibleProducts": [ - { - "incompatibleProductId": 3, - "productName": "HTM Regio Vrij DH73", - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItems": [ - { - "mandatoryCustomerDataItemId": 3, - "customerDataItem": "dateOfBirth" - }, - { - "mandatoryCustomerDataItemId": 4, - "customerDataItem": "emailAddress" - }, - { - "mandatoryCustomerDataItemId": 5, - "customerDataItem": "ovPayToken" - }, - { - "mandatoryCustomerDataItemId": 6, - "customerDataItem": "directDebitMandate" - } - ], - "requiredGboPersonalAttributes": [ - { - "requiredGboPersonalAttributeId": 1, - "name": "NAME" - }, - { - "requiredGboPersonalAttributeId": 2, - "name": "BIRTHDATE" - }, - { - "requiredGboPersonalAttributeId": 3, - "name": "PHOTO" - } - ], - "tokenTypes": [ - { - "tokenTypeId": 1, - "name": "EMV" - }, - { - "tokenTypeId": 2, - "name": "OVpas physical" - }, - { - "tokenTypeId": 3, - "name": "OVpas digital" - } - ], - "paymentMoment": { - "paymentMomentId": 1, - "name": "prepaid" - }, - "serviceOptions": [ - { - "serviceOptionId": 1, - "action": "cancellableTermAhead", - "description": "Per termijn vooruit opzegbaar" - }, - { - "serviceOptionId": 2, - "action": "cancellableWithin14Days", - "description": "Binnen 14 dagen na aanschaf opzegbaar, met restitutie en herberekening ritten met product" - } - ], - "validityDuration": "P1M", - "maxStartInFutureDuration": "P6W", - "isRenewable": true, - "sendInvoice": true, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 5, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "salesTouchpoint": { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailer": { - "retailerId": 1001, - "name": "HTM externe touchpoints", - "street": "Koningin Julianaplein", - "number": "10", - "numberAddition": null, - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "Nederland", - "emailAddress": "info@htm.nl", - "phoneNumber": "070 374 9002", - "taxId": "572309345923", - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg" - } - }, - "forbiddenPaymentMethods": [ - { - "forbiddenPaymentMethodId": 1, - "name": "Credit Card", - "issuer": "American Express" - } - ], - "sellingPrices": [ - { - "sellingPriceId": 5, - "amountExclTax": 5413, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "taxCode": "V09", - "taxPercentageAmount": 9, - "description": "BTW VERKOOP LAAG 9%" - }, - "amountInclTax": 5900, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00", - "internalPrice": 5413.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadata": { - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "taxCode": "V0", - "taxPercentageAmount": 0, - "description": "BTW VERKOOP NUL" - }, - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000+00:00", - "toInclusive": "2024-12-31T23:59:59.999+00:00" - } - ], - "auditTrail": [ - { - "auditTrailId": 2, - "action": "update", - "user": "api", - "timestamp": "2024-09-03T08:39:38.000+00:00" - }, - { - "auditTrailId": 1, - "action": "insert", - "user": "api", - "timestamp": "2024-09-03T08:38:24.000+00:00" - } - ] - } - getDetailsGboProductSupplement: - summary: TODO - GBO product (supplement with requirements) - value: - { - "productName": "TODO" - } - getDetailsTapConnectProduct: - summary: TODO - TapConnect product - value: - { - "productName": "TODO" - } - getDetailsIbanMandate: - summary: TODO - IBAN mandate (functional product) - value: - { - "productName": "TODO" - } - '400': - description: '400' - content: - application/json: - schema: - $ref: '#/components/schemas/400Response' - '401': - description: '401' - content: - application/json: - schema: - $ref: '#/components/schemas/401Response' - '404': - description: '404' - content: - application/json: - schema: - $ref: '#/components/schemas/404Response' - '500': - description: '500' - content: - application/json: - schema: - $ref: '#/components/schemas/500Response' - put: - tags: - - ABTProducts CRUD - summary: >- - Replace the entire product (as specified by the productId) with the - given raw JSON request body, after successful validation - description: >- - For nested JSON, including id's for reference tables indicates an update - of an existing reference - no id's indicates a new reference - parameters: - - name: productId - in: path - required: true - style: simple - description: The id of the product to replace/update - schema: - type: integer - example: 1 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateProductRequest' - examples: - updateMinimalProduct: - summary: >- - Minimum request body (to be used as minimal parent-template - for hierarchical products) - value: - { - "productOwnerId": 1, - "isRenewable": false, - "isSellableAtHtm": false, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false - } - updateGboProduct: - summary: Update existing GBO product (non-renewable) - value: - { - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "validityPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 1, - "requiredCustomerLevelId": 1, - "incompatibleProducts": [ - { - "incompatibleProductId": 1, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 4, - 5 - ], - "tokenTypeIds": [ - 1 - ], - "paymentMomentId": 1, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "salesTouchpointId": 3, - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - } - ] - } - advancedUpdateGboProduct: - summary: >- - Advanced update (remove mandatoryCustomerDataItem references, - add new second sellingPeriod) - value: - { - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "validityPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 1, - "requiredCustomerLevelId": 1, - "incompatibleProducts": [ - { - "incompatibleProductId": 1, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": null, - "tokenTypeIds": [ - 1 - ], - "paymentMomentId": 1, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "salesTouchpointId": 3, - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - } - ] - }, - { - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "salesTouchpointId": 2, - "sellingPrices": [ - { - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - }, - { - "amountExclTax": 101, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "internalPrice": 101.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - } - ] - } - updateGboProductMultiplePeriods: - summary: >- - Update existing GBO product (non-renewable, multiple - sellingPeriods/prices per period) - value: - { - "productCode": "30901-WL", - "gboPackageTemplateId": "30901", - "productName": "HTM pilot 90% korting", - "productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!", - "validityPeriod": { - "validityPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM pilot 90% discount", - "description": "Travel with 90% discount during the first F&F pilot!" - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 1, - "requiredCustomerLevelId": 1, - "incompatibleProducts": [ - { - "incompatibleProductId": 2, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 4, - 5 - ], - "tokenTypeIds": [ - 1 - ], - "paymentMomentId": 1, - "validityDuration": "P7D", - "maxStartInFutureDuration": "P6W", - "isRenewable": false, - "sendInvoice": false, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "salesTouchpointId": 3, - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - }, - { - "sellingPriceId": 2, - "amountExclTax": 101, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "internalPrice": 101.0000 - } - ] - }, - { - "sellingPeriodId": 2, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "salesTouchpointId": 2, - "sellingPrices": [ - { - "sellingPriceId": 3, - "amountExclTax": 92, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 100, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 92.0000 - }, - { - "sellingPriceId": 4, - "amountExclTax": 101, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 110, - "fromInclusive": "2025-01-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999", - "internalPrice": 101.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2025-12-31T23:59:59.999" - } - ] - } - updateGboPadProduct: - summary: >- - Update existing GBO product (PAD required, renewable, - serviceOptions, forbiddenPaymentMethods) - value: - { - "productCode": "35301-MA", - "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.", - "validityPeriod": { - "validityPeriodId": 3, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - }, - "productTranslations": [ - { - "language": "en", - "name": "HTM Regio Free DH73", - "description": "For a fixed amount unlimited travel with EBS, HTM and RET in the chosen area in the Rotterdam The Hague region." - } - ], - "productOwnerId": 1, - "marketSegmentIds": [ - 1 - ], - "customerSegmentIds": [ - 2, - 3, - 4, - 5 - ], - "productCategoryId": 3, - "requiredCustomerLevelId": 3, - "requiredProducts": [ - { - "requiredProductId": 1, - "description": "Basisproduct nodig" - } - ], - "incompatibleProducts": [ - { - "incompatibleProductId": 3, - "description": "Kan niet combineren met zichzelf" - } - ], - "mandatoryCustomerDataItemIds": [ - 3, - 4, - 5, - 6 - ], - "requiredGboPersonalAttributeIds": [ - 1, - 2, - 3 - ], - "tokenTypeIds": [ - 1, - 2, - 3 - ], - "paymentMomentId": 1, - "serviceOptionIds": [ - 1, - 2 - ], - "validityDuration": "P1M", - "maxStartInFutureDuration": "P6W", - "isRenewable": true, - "sendInvoice": true, - "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", - "productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina", - "termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina", - "isSellableAtHtm": true, - "needsSolvencyCheckConsumer": false, - "needsSolvencyCheckBusiness": false, - "sellingPeriods": [ - { - "sellingPeriodId": 1, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "salesTouchpointId": 3, - "forbiddenPaymentMethodIds": [ - 1 - ], - "sellingPrices": [ - { - "sellingPriceId": 1, - "amountExclTax": 5413, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464E", - "amountInclTax": 5900, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999", - "internalPrice": 5413.0000 - } - ] - } - ], - "purchasePrices": [ - { - "purchasePriceId": 1, - "amountExclTax": 0, - "taxMetadataId": "501B17EF-36C4-4039-B92C-6517969B464F", - "amountInclTax": 0, - "fromInclusive": "2024-09-01T00:00:00.000", - "toInclusive": "2024-12-31T23:59:59.999" - } - ] - } - updateGboProductSupplement: - summary: TODO - Update existing GBO product (supplement with requirements) - value: - { - "productName": "TODO" - } - updateTapConnectProduct: - summary: TODO - Update existing TapConnect product - value: - { - "productName": "TODO" - } - updateIbanMandate: - summary: TODO - Update existing IBAN mandate (functional product) - value: - { - "productName": "TODO" - } - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/CreateOrUpdateProductResponse' - '400': - description: '400' - content: - application/json: - schema: - $ref: '#/components/schemas/400Response' - '401': - description: '401' - content: - application/json: - schema: - $ref: '#/components/schemas/401Response' - '404': - description: '404' - content: - application/json: - schema: - $ref: '#/components/schemas/404Response' - '500': - description: '500' - content: - application/json: - schema: - $ref: '#/components/schemas/500Response' -components: - schemas: - TaxMetadataResponse: - type: object - required: - - taxMetadataId - - taxCode - - taxPercentageAmount - properties: - taxMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - taxCode: - type: string - example: V09 - taxPercentageAmount: - type: integer - example: 21 - description: - type: string - example: BTW VERKOOP LAAG 9% - ProductTranslationResponse: - type: object - required: - - language - properties: - language: - type: string - example: en - name: - type: string - example: HTM F&F 90% korting - description: - type: string - example: >- - Travel with 90% discount for a week during the first HTM F&F OVpay - pilot! - SellingPriceResponse: - type: object - required: - - sellingPriceId - - amountExclTax - - taxMetadata - - amountInclTax - - fromInclusive - - toInclusive - - internalPrice - properties: - sellingPriceId: - type: integer - example: 1 - amountExclTax: - type: integer - example: 750 - taxMetadata: - $ref: '#/components/schemas/TaxMetadataResponse' - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time-offset - example: '2022-03-01T00:00:00.000+00:00' - toInclusive: - type: string - format: date-time-offset - example: '2022-06-01T00:00:00.000+00:00' - internalPrice: - type: number - example: 908.1234 - PurchasePriceResponse: - type: object - required: - - purchasePriceId - - amountExclTax - - taxMetadata - - amountInclTax - - fromInclusive - - toInclusive - properties: - purchasePriceId: - type: integer - example: 1 - amountExclTax: - type: integer - example: 750 - taxMetadata: - $ref: '#/components/schemas/TaxMetadataResponse' - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time-offset - example: '2022-03-01T00:00:00.000+00:00' - toInclusive: - type: string - format: date-time-offset - example: '2022-06-01T00:00:00.000+00:00' - SalesTouchpointResponse: - type: object - required: - - salesTouchpointId - - name - - isActive - - retailer - properties: - salesTouchpointId: - type: integer - example: 1 - name: - type: string - example: HTM App - isActive: - type: boolean - example: true - retailer: - type: object - required: - - retailerId - - name - properties: - retailerId: - type: integer - example: 1001 - name: - type: string - example: HTM - street: - type: string - example: Kon. Julianaplein - number: - type: string - example: '10' - numberAddition: - type: string - example: a - postalCode: - type: string - example: 2595 AA - city: - type: string - example: Den Haag - country: - type: string - example: Nederland - emailAddress: - type: string - format: email - example: info@htm.nl - phoneNumber: - type: string - example: '09004864636' - taxId: - type: string - example: '09004864636' - imageReference: - type: string - example: https://htm.azure.net/abt/retailers/htm.svg - ProductPayloadListResponse: - type: object - required: - - Entries - properties: - Entries: - type: array - items: - type: object - required: - - productId - properties: - productId: - type: integer - example: 1 - productCode: - type: string - example: 30901-WL - productName: - type: string - example: HTM pilot 90% korting - productDescription: - type: string - example: Reis met 90% korting gedurende de eerste F&F pilot! - productCategory: - type: object - required: - - productCategoryId - - isTravelProduct - - name - properties: - productCategoryId: - type: integer - example: 1 - isTravelProduct: - type: boolean - example: true - name: - type: string - example: Kortingsabonnement - tokenTypes: - type: array - items: - type: object - required: - - tokenTypeId - - name - properties: - tokenTypeId: - type: integer - example: 1 - name: - type: string - example: EMV - sellableTouchpointIds: - type: array - items: - type: integer - example: 3 - amountInclTax: - type: number - example: 100 - imageReference: - type: string - example: https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg - productPageUrl: - type: string - format: uri - example: https://www.htm.nl/nog-onbekende-product-pagina - ProductPayloadResponse: - type: object - required: - - productId - - productOwner - - isRenewable - - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness - properties: - productId: - type: integer - example: 1 - parentProductId: - type: integer - example: 1 - productCode: - type: string - example: 30901-WL - gboPackageTemplateId: - type: string - example: '30901' - tapConnectProductCode: - type: string - example: 1234AB - productGroupMetadata: - type: object - required: - - productGroupMetadataId - - productGroupCode - - department - - costCenter - - costType - - description - - documentCode - - user - - timestampUpdated - - validFrom - properties: - productGroupMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - productGroupCode: - type: string - example: TBD - department: - type: string - example: TBD - costCenter: - type: string - example: TBD - costType: - type: string - example: TBD - description: - type: string - example: TBD - documentCode: - type: string - example: TBD - user: - type: string - example: TBD - timestampUpdated: - type: string - format: date-time-offset - example: '2024-09-03T10:01:34.000+00:00' - validFrom: - type: string - format: date-time-offset - example: '2024-09-03T10:01:34.000+00:00' - validUntil: - type: string - format: date-time-offset - example: '2024-09-03T10:01:34.000+00:00' - productName: - type: string - example: HTM pilot 90% korting - productDescription: - type: string - example: Reis met 90% korting gedurende de eerste F&F pilot! - validityPeriod: - type: object - required: - - validityPeriodId - - fromInclusive - - toInclusive - properties: - validityPeriodId: - type: integer - example: 1 - fromInclusive: - type: string - format: date-time-offset - example: '2024-09-03T10:01:34.000+00:00' - toInclusive: - type: string - format: date-time-offset - example: '2024-09-03T23:59:59.999+00:00' - productTranslations: - type: array - items: - $ref: '#/components/schemas/ProductTranslationResponse' - productOwner: - type: object - required: - - productOwnerId - - name - properties: - productOwnerId: - type: integer - example: 1 - name: - type: string - example: John Doe - organization: - type: string - example: HTM - marketSegmentse: - type: array - items: - type: object - required: - - marketSegmentId - - name - properties: - marketSegmentId: - type: integer - example: 1 - name: - type: string - example: B2C - customerSegments: - type: array - items: - type: object - required: - - customerSegmentId - - name - properties: - customerSegmentId: - type: integer - example: 1 - name: - type: string - example: Kind (4-11) - productCategory: - type: object - required: - - productCategoryId - - name - - isTravelProduct - properties: - productCategoryId: - type: integer - example: 1 - name: - type: string - example: Kortingsabonnement - isTravelProduct: - type: boolean - example: true - requiredCustomerLevel: - type: object - required: - - requiredCustomerLevelId - - name - properties: - requiredCustomerLevelId: - type: integer - example: 1 - name: - type: string - example: anonymous - requiredProducts: - type: array - items: - type: object - required: - - requiredProductId - - productName - properties: - requiredProductId: - type: integer - example: 2 - productName: - type: string - example: Product name - description: - type: string - description: Reason why the product is required - example: Description - incompatibleProducts: - type: array - items: - type: object - required: - - incompatibleProductId - - productName - properties: - incompatibleProductId: - type: integer - example: 4 - productName: - type: string - example: Product name - description: - type: string - description: >- - Reason why the product is incompatible with the selected - product - example: Description - mandatoryCustomerDataItems: - type: array - items: - type: object - required: - - mandatoryCustomerDataItemId - - customerDataItem - properties: - mandatoryCustomerDataItemId: - type: integer - example: 3 - customerDataItem: - type: string - example: dateOfBirth - requiredGboPersonalAttributes: - type: array - description: >- - List of required GBO personal attributes (PAD) - should not be - user-editable, but automatically populated by PMT backend, based on - the selected gboPackageTemplateId (if any) - items: - type: object - required: - - requiredGboPersonalAttributeId - - name - properties: - requiredGboPersonalAttributeId: - type: integer - example: 2 - name: - type: string - example: BIRTHDATE - tokenTypes: - type: array - items: - type: object - required: - - tokenTypeId - - name - properties: - tokenTypeId: - type: integer - example: 1 - name: - type: string - example: EMV - paymentMoment: - type: object - required: - - paymentMomentId - - name - properties: - paymentMomentId: - type: integer - example: 1 - name: - type: string - example: prepaid - serviceOptions: - type: array - items: - type: object - required: - - serviceOptionId - - action - properties: - serviceOptionId: - type: integer - example: 1 - action: - type: string - example: cancellableTermAhead - description: - type: string - example: Per termijn vooruit opzegbaar - validityDuration: - type: string - format: duration - example: P1M - maxStartInFutureDuration: - type: string - format: duration - example: P6W - isRenewable: - type: boolean - example: true - sendInvoice: - type: boolean - example: false - imageReference: - type: string - format: uri - example: https://htm.azure.net/abt/products/product_1.svg - productPageUrl: - type: string - format: uri - example: https://www.htm.nl/nog-onbekende-product-pagina - termsUrl: - type: string - format: uri - example: https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina - isSellableAtHtm: - type: boolean - example: true - needsSolvencyCheckConsumer: - type: boolean - example: false - needsSolvencyCheckBusiness: - type: boolean - example: false - sellingPeriods: - type: array - items: - type: object - required: - - sellingPeriodId - - fromInclusive - - toInclusive - - salesTouchpoint - properties: - sellingPeriodId: - type: integer - example: 1 - fromInclusive: - type: string - format: date-time-offset - example: '2022-03-01T00:00:00.000+00:00' - toInclusive: - type: string - format: date-time-offset - example: '2022-06-01T00:00:00.000+00:00' - salesTouchpoint: - $ref: '#/components/schemas/SalesTouchpointResponse' - forbiddenPaymentMethods: - type: array - items: - type: object - required: - - forbiddenPaymentMethodId - - name - properties: - forbiddenPaymentMethodId: - type: integer - example: 1 - name: - type: string - example: Credit Card - issuer: - type: string - example: American Express - sellingPrices: - type: array - items: - $ref: '#/components/schemas/SellingPriceResponse' - purchasePrices: - type: array - items: - $ref: '#/components/schemas/PurchasePriceResponse' - auditTrail: - type: array - items: - type: object - required: - - auditTrailId - - action - - user - - timestamp - properties: - auditTrailId: - type: integer - example: 1 - action: - type: string - example: insert - user: - type: string - example: username - timestamp: - type: string - format: date-time-offset - example: '2024-09-03T10:01:34.000+00:00' - CreateProductRequest: - required: - - productOwnerId - - isRenewable - - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness - type: object - properties: - parentProductId: - type: integer - description: The ID of the parent product (if any) - example: 1 - productCode: - type: string - description: The HTM-internal product code - example: 30901-WL - gboPackageTemplateId: - type: string - description: >- - The ID of the GBO SalesPackage that should be instantiated after - buying this product - example: '30901' - tapConnectProductCode: - type: string - description: >- - The productCode of the TapConnect product that should be issued - after buying this product - example: 1234AB - productGroupMetadataId: - type: string - format: uuid - description: The ID of the productGroupMetadata for administration in U4F - example: 501B17EF-36C4-4039-B92C-6517969B464E - productName: - type: string - description: The name of the product - example: Test product name - productDescription: - type: string - description: The description of the product - example: Test product description - validityPeriod: - required: - - fromInclusive - - toInclusive - type: object - description: The validity period of the product - properties: - fromInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The start of the validity - period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The end of the validity period - example: '2022-06-01T00:00:00.000' - productTranslations: - type: array - description: Translations of the product name and description - items: - type: object - required: - - language - - name - - description - properties: - language: - type: string - example: en - name: - type: string - example: HTM F&F 90% korting - description: - type: string - example: >- - Travel with 90% discount for a week during the first HTM F&F - OVpay pilot! - productOwnerId: - type: integer - description: The ID of the owner of the product - example: 1 - marketSegmentIds: - type: array - description: The IDs of the market segments that the product is targeted towards - items: - type: integer - example: 1 - customerSegmentIds: - type: array - description: >- - The IDs of the customer segments that the product is targeted - towards - items: - type: integer - example: 1 - productCategoryId: - type: integer - description: The ID of the category the product belongs to - example: 1 - requiredCustomerLevelId: - type: integer - description: >- - The ID of the required customer level to be allowed to purchase the - product - requiredProducts: - type: array - required: - - requiredProductId - description: >- - The IDs of products that should already be owned by the customer - (for travel products, the validity of the given productIds should - fully overlap on the customer's travel medium) - items: - type: object - properties: - requiredProductId: - type: integer - example: 1 - description: - type: string - description: Description of why the product is required - example: Benodigd basisproduct - incompatibleProducts: - type: array - required: - - incompatibleProductId - description: >- - The IDs of products that can not be active at the same time as this - product (for travel products, none of the listed productIds should - have overlapping validity with this product on the customer's travel - medium) - items: - type: object - properties: - incompatibleProductId: - type: integer - example: 1 - description: - type: string - description: Description of why the product is incompatible - example: Kan niet combineren met zichzelf - mandatoryCustomerDataItemIds: - type: array - description: >- - The IDs of the customer data items that should be filled in by the - customer - items: - type: integer - example: 1 - requiredGboPersonalAttributeIds: - type: array - description: >- - GBO specific; the IDs of the GBO Personal Attribute Data (PAD) - elements that should be present (or filled during the order flow) on - the customer's chosen travel medium. This attribute should not be - user-editable, but only be filled by PMT, based on the chosen - gboPackageTemplateId! - items: - type: integer - example: 1 - tokenTypeIds: - type: array - description: The IDs of the token types that the product can be instantiated on - items: - type: integer - example: 1 - paymentMomentId: - type: integer - description: The ID of the payment moment for the product - example: 1 - serviceOptionIds: - type: array - description: The IDs of the service options that are available for this product - items: - type: integer - example: 1 - validityDuration: - type: string - format: duration - description: >- - The validity duration of the product. Should only contain one single - unit of duration (D, W, M, Y) - example: P7D - maxStartInFutureDuration: - type: string - format: duration - description: >- - The maximum amount of time in the future allowed for the start of - the product validity. Should only contain one single unit of - duration (D, W, M, Y) - example: P6W - isRenewable: - type: boolean - description: Indicates if the product is renewable - example: false - sendInvoice: - type: boolean - description: >- - Indicates if an invoice should be sent to the customer after - ordering this product - example: false - imageReference: - type: string - format: uri - description: A reference/URL to the image of the product - example: https://www.htm.nl/nog-onbekende-productafbeelding - productPageUrl: - type: string - format: uri - description: >- - The URL of the product page, to be used by touchpoints which are not - allowed to sell the product, to redirect the customer. If the - product is sold via multiple touchpoints, this URL should point to - the preferred touchpoint for sales - example: https://www.htm.nl/nog-onbekende-productpagina - termsUrl: - type: string - format: uri - description: >- - The URL for the webpage or document containing terms for this - product - example: https://www.htm.nl/nog-onbekende-productvoorwaarden - isSellableAtHtm: - type: boolean - description: >- - Indicates if the product is sellable at HTM. If false, no - sellingPrices/Periods should be defined - this product may only be - used for tracking/reporting purposed, or internal use - needsSolvencyCheckConsumer: - type: boolean - description: >- - Indicates if a solvency check is required for consumers purchasing - the product - needsSolvencyCheckBusiness: - type: boolean - description: >- - Indicates if a solvency check is required for businesses purchasing - the product - sellingPeriods: - type: array - description: >- - The sellingPeriods of the product. Can contain multiple periods for - the same or different touchpoints, as long as there is no overlap - for the same touchpoint - items: - type: object - required: - - fromInclusive - - toInclusive - - salesTouchpointId - properties: - fromInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The start date of the period - example: '2020-01-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The end date of the period - example: '2020-01-01T00:00:00.000' - salesTouchpointId: - type: integer - description: The ID of the touchpoint this period applies to - example: 1 - forbiddenPaymentMethodIds: - type: array - description: >- - The IDs of the payment methods that are not allowed to be used - for this touchpoint and period - items: - type: integer - example: 1 - sellingPrices: - type: array - description: >- - The sellingPrices of this product for the touchpoint defined - in this sellingPeriod. Can contain multiple prices, as long as - there is no overlap in validity - items: - type: object - required: - - amountExclTax - - taxMetadataId - - amountInclTax - - fromInclusive - - toInclusive - - internalPrice - properties: - amountExclTax: - type: integer - example: 750 - taxMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The start date of the - price period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The end date of the - price period - example: '2022-06-01T00:00:00.000' - internalPrice: - type: number - example: 908.1234 - purchasePrices: - type: array - description: >- - The purchasePrices of the product. Can contain multiple prices, as - long as there is no overlap in validity - items: - type: object - required: - - amountExclTax - - taxMetadataId - - amountInclTax - - fromInclusive - - toInclusive - properties: - amountExclTax: - type: integer - example: 750 - taxMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The start date of the price - period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The end date of the price - period - example: '2022-06-01T00:00:00.000' - UpdateProductRequest: - required: - - productOwnerId - - isRenewable - - isSellableAtHtm - - needsSolvencyCheckConsumer - - needsSolvencyCheckBusiness - type: object - properties: - parentProductId: - type: integer - description: The ID of the parent product (if any) - example: 1 - productCode: - type: string - description: The HTM-internal product code - example: 30901-WL - gboPackageTemplateId: - type: string - description: >- - The ID of the GBO SalesPackage that should be instantiated after - buying this product - example: '30901' - tapConnectProductCode: - type: string - description: >- - The productCode of the TapConnect product that should be issued - after buying this product - example: 1234AB - productGroupMetadataId: - type: string - format: uuid - description: The ID of the productGroupMetadata for administration in U4F - example: 501B17EF-36C4-4039-B92C-6517969B464E - productName: - type: string - description: The name of the product - example: Test product name - productDescription: - type: string - description: The description of the product - example: Test product description - validityPeriod: - required: - - fromInclusive - - toInclusive - type: object - description: The validity period of the product - properties: - validityPeriodId: - type: integer - description: >- - Including a validityPeriodId will update the existing - validityPeriod for this product - if omitted, a new - validityPeriod will be created - example: 1 - fromInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The start of the validity - period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The end of the validity period - example: '2022-06-01T00:00:00.000' - productTranslations: - type: array - description: Translations of the product name and description - items: - type: object - required: - - language - - name - - description - properties: - language: - type: string - example: en - name: - type: string - example: HTM F&F 90% korting - description: - type: string - example: >- - Travel with 90% discount for a week during the first HTM F&F - OVpay pilot! - productOwnerId: - type: integer - description: The ID of the owner of the product - example: 1 - marketSegmentIds: - type: array - description: The IDs of the market segments that the product is targeted towards - items: - type: integer - example: 1 - customerSegmentIds: - type: array - description: >- - The IDs of the customer segments that the product is targeted - towards - items: - type: integer - example: 1 - productCategoryId: - type: integer - description: The ID of the category the product belongs to - example: 1 - requiredCustomerLevelId: - type: integer - description: >- - The ID of the required customer level to be allowed to purchase the - product - requiredProducts: - type: array - required: - - requiredProductId - description: >- - The IDs of products that should already be owned by the customer - (for travel products, the validity of the given productIds should - fully overlap on the customer's travel medium) - items: - type: object - properties: - requiredProductId: - type: integer - example: 1 - description: - type: string - description: Description of why the product is required - example: Benodigd basisproduct - incompatibleProducts: - type: array - required: - - incompatibleProductId - description: >- - The IDs of products that can not be active at the same time as this - product (for travel products, none of the listed productIds should - have overlapping validity with this product on the customer's travel - medium) - items: - type: object - properties: - incompatibleProductId: - type: integer - example: 1 - description: - type: string - description: Description of why the product is incompatible - example: Kan niet combineren met zichzelf - mandatoryCustomerDataItemIds: - type: array - description: >- - The IDs of the customer data items that should be filled in by the - customer - items: - type: integer - example: 1 - requiredGboPersonalAttributeIds: - type: array - description: >- - GBO specific; the IDs of the GBO Personal Attribute Data (PAD) - elements that should be present (or filled during the order flow) on - the customer's chosen travel medium. This attribute should not be - user-editable, but only be filled by PMT, based on the chosen - gboPackageTemplateId! - items: - type: integer - example: 1 - tokenTypeIds: - type: array - description: The IDs of the token types that the product can be instantiated on - items: - type: integer - example: 1 - paymentMomentId: - type: integer - description: The ID of the payment moment for the product - example: 1 - serviceOptionIds: - type: array - description: The IDs of the service options that are available for this product - items: - type: integer - example: 1 - validityDuration: - type: string - format: duration - description: >- - The validity duration of the product. Should only contain one single - unit of duration (D, W, M, Y) - example: P7D - maxStartInFutureDuration: - type: string - format: duration - description: >- - The maximum amount of time in the future allowed for the start of - the product validity. Should only contain one single unit of - duration (D, W, M, Y) - example: P6W - isRenewable: - type: boolean - description: Indicates if the product is renewable - example: false - sendInvoice: - type: boolean - description: >- - Indicates if an invoice should be sent to the customer after - ordering this product - example: false - imageReference: - type: string - format: uri - description: A reference/URL to the image of the product - example: https://www.htm.nl/nog-onbekende-productafbeelding - productPageUrl: - type: string - format: uri - description: >- - The URL of the product page, to be used by touchpoints which are not - allowed to sell the product, to redirect the customer. If the - product is sold via multiple touchpoints, this URL should point to - the preferred touchpoint for sales - example: https://www.htm.nl/nog-onbekende-productpagina - termsUrl: - type: string - format: uri - description: >- - The URL for the webpage or document containing terms for this - product - example: https://www.htm.nl/nog-onbekende-productvoorwaarden - isSellableAtHtm: - type: boolean - description: >- - Indicates if the product is sellable at HTM. If false, no - sellingPrices/Periods should be defined - this product may only be - used for tracking/reporting purposed, or internal use - needsSolvencyCheckConsumer: - type: boolean - description: >- - Indicates if a solvency check is required for consumers purchasing - the product - needsSolvencyCheckBusiness: - type: boolean - description: >- - Indicates if a solvency check is required for businesses purchasing - the product - sellingPeriods: - type: array - description: >- - The sellingPeriods of the product. Can contain multiple periods for - the same or different touchpoints, as long as there is no overlap - for the same touchpoint - items: - type: object - required: - - fromInclusive - - toInclusive - - salesTouchpointId - properties: - sellingPeriodId: - type: integer - description: >- - Including a sellingPeriodId will update an existing - sellingPeriod for this product - if omitted, a new - sellingPeriod will be created - example: 1 - fromInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The start date of the period - example: '2020-01-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The end date of the period - example: '2020-01-01T00:00:00.000' - salesTouchpointId: - type: integer - description: The ID of the touchpoint this period applies to - example: 1 - forbiddenPaymentMethodIds: - type: array - description: >- - The IDs of the payment methods that are not allowed to be used - for this touchpoint and period - items: - type: integer - example: 1 - sellingPrices: - type: array - description: >- - The sellingPrices of this product for the touchpoint defined - in this sellingPeriod. Can contain multiple prices, as long as - there is no overlap in validity - items: - type: object - required: - - amountExclTax - - taxMetadataId - - amountInclTax - - fromInclusive - - toInclusive - - internalPrice - properties: - sellingPeriodId: - type: integer - description: >- - Including a sellingPriceId will update an existing - sellingPrice for this product - if omitted, a new - sellingPrice will be created - example: 1 - amountExclTax: - type: integer - example: 750 - taxMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The start date of the - period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: >- - LocalDateTime (without offset) - The end date of the - period - example: '2022-06-01T00:00:00.000' - internalPrice: - type: number - example: 908.1234 - purchasePrices: - type: array - description: >- - The purchasePrices of the product. Can contain multiple prices, as - long as there is no overlap in validity - items: - type: object - required: - - amountExclTax - - taxMetadataId - - amountInclTax - - fromInclusive - - toInclusive - properties: - purchasePriceId: - type: integer - description: >- - Including a purchasePriceId will update an existing - purchasePrice for this product - if omitted, a new - purchasePrice will be created - example: 1 - amountExclTax: - type: integer - example: 750 - taxMetadataId: - type: string - format: uuid - example: 501B17EF-36C4-4039-B92C-6517969B464E - amountInclTax: - type: integer - example: 908 - fromInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The start date of the period - example: '2022-03-01T00:00:00.000' - toInclusive: - type: string - format: date-time - description: LocalDateTime (without offset) - The end date of the period - example: '2022-06-01T00:00:00.000' - CreateOrUpdateProductResponse: - type: object - properties: - productId: - type: integer - example: 22 - 400Response: - type: object - properties: - code: - type: string - example: '400' - type: - type: string - message: - type: string - example: Bad Request - description: - type: string - example: '''2023-02-01 00:00:00'' is not a valid Datetime' - apiErrorCode: - type: string - example: htm.api.err.40xxx - 401Response: - type: object - properties: - code: - type: string - example: '900901' - type: - type: string - message: - type: string - example: Invalid Credentials - description: - type: string - example: >- - Invalid Credentials. Make sure you have provided the correct - security credentials - apiErrorCode: - type: string - example: htm.api.err.40xxx - 403Response: - type: object - properties: - code: - type: string - example: '900901' - type: - type: string - message: - type: string - example: Retailer not authorized - description: - type: string - example: The retailer is not allowed to access resource for requested - apiErrorCode: - type: string - example: htm.api.err.40xxx touchpoint - 404Response: - type: object - properties: - code: - type: string - example: '404' - type: - type: string - example: Status report - message: - type: string - example: Not Found - description: - type: string - example: The requested resource is not available. - apiErrorCode: - type: string - example: htm.api.err.40xxx - 500Response: - type: object - properties: - code: - type: string - example: '500' - type: - type: string - message: - type: string - example: Internal Server Error - description: - type: string - apiErrorCode: - type: string - example: htm.api.err.40xxx diff --git a/src/openapi/products/products-crud-v2.4.yaml b/src/openapi/products/products-crud.yaml similarity index 100% rename from src/openapi/products/products-crud-v2.4.yaml rename to src/openapi/products/products-crud.yaml