2519 lines
90 KiB
JSON
2519 lines
90 KiB
JSON
{
|
|
"openapi": "3.0.1",
|
|
"info": {
|
|
"title": "ABTProducts (based on domainmodel v2.2)",
|
|
"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": "2.2"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "https://api.integratielaag.nl/abt/products/2.2"
|
|
}
|
|
],
|
|
"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, without any filters. Only a few details are returned per product - use the `GET /products/{productId}` endpoint to get more details.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductPayloadListResponse"
|
|
},
|
|
"examples": {
|
|
"No products / Empty list": {
|
|
"value": {
|
|
"Entries": [],
|
|
"href": null
|
|
}
|
|
},
|
|
"Single product wihtout any SellingPeriods (no touchpointId in HTTP-headers)": {
|
|
"value": {
|
|
"Entries": [
|
|
{
|
|
"productId": 1,
|
|
"productName": "HTM pilot 90% korting",
|
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
|
"productCategory": {
|
|
"productCategoryId": 1,
|
|
"isTravelProduct": true,
|
|
"name": "Kortingsabonnement"
|
|
},
|
|
"sellableTouchPointIds": null,
|
|
"amountInclTax": null,
|
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
|
|
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
}
|
|
],
|
|
"href": null
|
|
}
|
|
},
|
|
"Single product (no touchpointId in HTTP-headers)": {
|
|
"value": {
|
|
"Entries": [
|
|
{
|
|
"productId": 1,
|
|
"productName": "HTM pilot 90% korting",
|
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
|
"productCategory": {
|
|
"productCategoryId": 1,
|
|
"isTravelProduct": true,
|
|
"name": "Kortingsabonnement"
|
|
},
|
|
"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"
|
|
}
|
|
],
|
|
"href": null
|
|
}
|
|
},
|
|
"Single product (touchpointId 3 in HTTP-headers)": {
|
|
"value": {
|
|
"Entries": [
|
|
{
|
|
"productId": 2,
|
|
"productName": "HTM dagkaart",
|
|
"productDescription": "Reis een dag met het openbaar vervoer bij HTM",
|
|
"productCategory": {
|
|
"productCategoryId": 6,
|
|
"isTravelProduct": false,
|
|
"name": "Barcode"
|
|
},
|
|
"sellableTouchPointIds": [
|
|
3
|
|
],
|
|
"amountInclTax": 300,
|
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
|
|
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
}
|
|
],
|
|
"href": null
|
|
}
|
|
},
|
|
"Multiple products with pagination (touchpointId 1 in HTTP-headers)": {
|
|
"value": {
|
|
"Entries": [
|
|
{
|
|
"productId": 1,
|
|
"productName": "HTM pilot 90% korting",
|
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
|
"productCategory": {
|
|
"productCategoryId": 1,
|
|
"isTravelProduct": true,
|
|
"name": "Kortingsabonnement"
|
|
},
|
|
"sellableTouchPointIds": [
|
|
1,
|
|
2
|
|
],
|
|
"amountInclTax": 100,
|
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
|
|
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
},
|
|
{
|
|
"productId": 2,
|
|
"productName": "HTM dagkaart",
|
|
"productDescription": "Reis een dag met het openbaar vervoer bij HTM",
|
|
"productCategory": {
|
|
"productCategoryId": 6,
|
|
"isTravelProduct": false,
|
|
"name": "Barcode"
|
|
},
|
|
"sellableTouchPointIds": [
|
|
3
|
|
],
|
|
"amountInclTax": null,
|
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
|
|
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
}
|
|
],
|
|
"href": "https://api.htm.nl/products?pageNumber=2"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"x-auth-type": "Application & Application User",
|
|
"x-throttling-tier": "Unlimited"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/examples/postMinimalProduct"
|
|
},
|
|
"postGboProduct": {
|
|
"$ref": "#/components/examples/postGboProduct"
|
|
},
|
|
"postGboProductMultiplePeriods": {
|
|
"$ref": "#/components/examples/postGboProductMultiplePeriods"
|
|
},
|
|
"postGboPadProduct": {
|
|
"$ref": "#/components/examples/postGboPadProduct"
|
|
},
|
|
"postGboProductSupplement": {
|
|
"$ref": "#/components/examples/postGboProductSupplement"
|
|
},
|
|
"postTapConnectProduct": {
|
|
"$ref": "#/components/examples/postTapConnectProduct"
|
|
},
|
|
"postIbanMandate": {
|
|
"$ref": "#/components/examples/postIbanMandate"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"x-auth-type": "Application & Application User",
|
|
"x-throttling-tier": "Unlimited"
|
|
}
|
|
},
|
|
"/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",
|
|
"explode": false,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductPayloadResponse"
|
|
},
|
|
"examples": {
|
|
"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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"purchasePriceId": 1,
|
|
"productId": 1,
|
|
"amountExclTax": 0,
|
|
"taxMetadata": {
|
|
"taxMetadataId": 1,
|
|
"taxCode": "V0",
|
|
"taxPercentageAmount": 0,
|
|
"description": "BTW VERKOOP NUL"
|
|
},
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"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+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02: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+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02: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": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
},
|
|
{
|
|
"sellingPriceId": 2,
|
|
"amountExclTax": 101,
|
|
"taxMetadata": {
|
|
"taxMetadataId": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 110,
|
|
"fromInclusive": "2025-01-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 101.0000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"sellingPeriodId": 2,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02: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": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
},
|
|
{
|
|
"sellingPriceId": 4,
|
|
"amountExclTax": 101,
|
|
"taxMetadata": {
|
|
"taxMetadataId": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 110,
|
|
"fromInclusive": "2025-01-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 101.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"purchasePriceId": 1,
|
|
"productId": 1,
|
|
"amountExclTax": 0,
|
|
"taxMetadata": {
|
|
"taxMetadataId": 1,
|
|
"taxCode": "V0",
|
|
"taxPercentageAmount": 0,
|
|
"description": "BTW VERKOOP NUL"
|
|
},
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02: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"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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": 2,
|
|
"taxCode": "V09",
|
|
"taxPercentageAmount": 9,
|
|
"description": "BTW VERKOOP LAAG 9%"
|
|
},
|
|
"amountInclTax": 5900,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 5413.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"purchasePriceId": 1,
|
|
"productId": 1,
|
|
"amountExclTax": 0,
|
|
"taxMetadata": {
|
|
"taxMetadataId": 1,
|
|
"taxCode": "V0",
|
|
"taxPercentageAmount": 0,
|
|
"description": "BTW VERKOOP NUL"
|
|
},
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"GBO product (supplement with requirements)": {
|
|
"value": {
|
|
"productName": "TODO"
|
|
}
|
|
},
|
|
"TapConnect product": {
|
|
"value": {
|
|
"productName": "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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"x-auth-type": "Application & Application User",
|
|
"x-throttling-tier": "Unlimited"
|
|
},
|
|
"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": "Replace the entire product (as specified by the productId) with the given 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.",
|
|
"parameters": [
|
|
{
|
|
"name": "productId",
|
|
"in": "path",
|
|
"required": true,
|
|
"style": "simple",
|
|
"explode": false,
|
|
"description": "The id of the product to replace",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductRequest"
|
|
},
|
|
"examples": {
|
|
"postMinimalProduct": {
|
|
"$ref": "#/components/examples/postMinimalProduct"
|
|
},
|
|
"postGboProduct": {
|
|
"$ref": "#/components/examples/postGboProduct"
|
|
},
|
|
"postGboProductMultiplePeriods": {
|
|
"$ref": "#/components/examples/postGboProductMultiplePeriods"
|
|
},
|
|
"postGboPadProduct": {
|
|
"$ref": "#/components/examples/postGboPadProduct"
|
|
},
|
|
"postGboProductSupplement": {
|
|
"$ref": "#/components/examples/postGboProductSupplement"
|
|
},
|
|
"postTapConnectProduct": {
|
|
"$ref": "#/components/examples/postTapConnectProduct"
|
|
},
|
|
"postIbanMandate": {
|
|
"$ref": "#/components/examples/postIbanMandate"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"x-auth-type": "Application & Application User",
|
|
"x-throttling-tier": "Unlimited"
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"TaxMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"taxMetadataId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"taxCode": {
|
|
"type": "string",
|
|
"example": "V09"
|
|
},
|
|
"taxPercentageAmount": {
|
|
"type": "integer",
|
|
"example": 21
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "BTW VERKOOP LAAG 9%"
|
|
}
|
|
}
|
|
},
|
|
"ProductTranslation": {
|
|
"type": "object",
|
|
"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!"
|
|
}
|
|
}
|
|
},
|
|
"SellingPrice": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sellingPriceId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"amountExclTax": {
|
|
"type": "integer",
|
|
"example": 750
|
|
},
|
|
"taxMetadata": {
|
|
"$ref": "#/components/schemas/TaxMetadata"
|
|
},
|
|
"amountInclTax": {
|
|
"type": "integer",
|
|
"example": 908
|
|
},
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"example": "2022-03-01T00:00:00.000Z"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"example": "2022-06-01T00:00:00.000Z"
|
|
},
|
|
"internalPrice": {
|
|
"type": "number",
|
|
"example": 908.1234
|
|
}
|
|
}
|
|
},
|
|
"PurchasePrice": {
|
|
"type": "object",
|
|
"properties": {
|
|
"purchasePriceId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"amountExclTax": {
|
|
"type": "integer",
|
|
"example": 750
|
|
},
|
|
"taxMetadata": {
|
|
"$ref": "#/components/schemas/TaxMetadata"
|
|
},
|
|
"amountInclTax": {
|
|
"type": "integer",
|
|
"example": 908
|
|
},
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"example": "2022-03-01T00:00:00.000Z"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"example": "2022-06-01T00:00:00.000Z"
|
|
}
|
|
}
|
|
},
|
|
"SalesTouchpoint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"salesTouchpointId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "HTM App"
|
|
},
|
|
"isActive": {
|
|
"type": "boolean",
|
|
"example": true
|
|
},
|
|
"retailer": {
|
|
"type": "object",
|
|
"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",
|
|
"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",
|
|
"properties": {
|
|
"Entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"productId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"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",
|
|
"properties": {
|
|
"productCategoryId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"isTravelProduct": {
|
|
"type": "boolean",
|
|
"example": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "Kortingsabonnement"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"example": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"href": {
|
|
"type": "string",
|
|
"example": "https://api.htm.nl/products?page=2"
|
|
}
|
|
}
|
|
},
|
|
"ProductPayloadResponse": {
|
|
"type": "object",
|
|
"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",
|
|
"properties": {
|
|
"productGroupMetadataId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"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",
|
|
"example": "2024-09-03T10:01:34.000+02:00"
|
|
},
|
|
"validFrom": {
|
|
"type": "string",
|
|
"example": "2024-09-03T10:01:34.000+02:00"
|
|
},
|
|
"validUntil": {
|
|
"type": "string",
|
|
"example": "2024-09-03T10:01:34.000+02: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",
|
|
"properties": {
|
|
"validityPeriodId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"example": "2024-09-03T10:01:34.000+02:00"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"example": "2024-09-03T23:59:59.999+02:00"
|
|
}
|
|
}
|
|
},
|
|
"productTranslations": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductTranslation"
|
|
}
|
|
},
|
|
"productOwner": {
|
|
"type": "object",
|
|
"properties": {
|
|
"productOwnerId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "John Doe"
|
|
},
|
|
"organization": {
|
|
"type": "string",
|
|
"example": "HTM"
|
|
}
|
|
}
|
|
},
|
|
"marketSegments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"marketSegmentId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "B2C"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"customerSegments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"customerSegmentId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "Kind (4-11)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"productCategory": {
|
|
"type": "object",
|
|
"properties": {
|
|
"productCategoryId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "Kortingsabonnement"
|
|
},
|
|
"isTravelProduct": {
|
|
"type": "boolean",
|
|
"example": true
|
|
}
|
|
}
|
|
},
|
|
"requiredCustomerLevel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requiredCustomerLevelId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "anonymous"
|
|
}
|
|
}
|
|
},
|
|
"requiredProducts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requiredProductId": {
|
|
"type": "integer",
|
|
"example": 2
|
|
},
|
|
"productName": {
|
|
"type": "string",
|
|
"example": "Product name"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "Description"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"incompatibleProducts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"incompatibleProductId": {
|
|
"type": "integer",
|
|
"example": 4
|
|
},
|
|
"productName": {
|
|
"type": "string",
|
|
"example": "Product name"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "Description"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mandatoryCustomerDataItems": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"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",
|
|
"properties": {
|
|
"requiredGboPersonalAttributeId": {
|
|
"type": "integer",
|
|
"example": 2
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "BIRTHDATE"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tokenTypes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tokenTypeId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "EMV"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"paymentMoment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paymentMomentId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "prepaid"
|
|
}
|
|
}
|
|
},
|
|
"serviceOptions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"serviceOptionId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"example": "cancellableTermAhead"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "Per termijn vooruit opzegbaar"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"validityDuration": {
|
|
"type": "string",
|
|
"example": "P1M"
|
|
},
|
|
"maxStartInFutureDuration": {
|
|
"type": "string",
|
|
"example": "P6W"
|
|
},
|
|
"isRenewable": {
|
|
"type": "boolean",
|
|
"example": true
|
|
},
|
|
"sendInvoice": {
|
|
"type": "boolean",
|
|
"example": false
|
|
},
|
|
"imageReference": {
|
|
"type": "string",
|
|
"example": "https://htm.azure.net/abt/products/product_1.svg"
|
|
},
|
|
"productPageUrl": {
|
|
"type": "string",
|
|
"example": "https://www.htm.nl/nog-onbekende-product-pagina"
|
|
},
|
|
"termsUrl": {
|
|
"type": "string",
|
|
"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",
|
|
"properties": {
|
|
"sellingPeriodId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"example": "2022-03-01T00:00:00.000Z"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"example": "2022-06-01T00:00:00.000Z"
|
|
},
|
|
"salesTouchpoint": {
|
|
"$ref": "#/components/schemas/SalesTouchpoint"
|
|
},
|
|
"forbiddenPaymentMethods": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"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/SellingPrice"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"purchasePrices": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PurchasePrice"
|
|
}
|
|
},
|
|
"auditTrail": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auditTrailId": {
|
|
"type": "integer",
|
|
"example": 1
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"example": "insert"
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"example": "username"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"example": "2024-09-03T10:01:34.000+02: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": "integer",
|
|
"description": "The ID of the productGroupMetadata for administration in U4F",
|
|
"example": 1
|
|
},
|
|
"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": {
|
|
"type": "object",
|
|
"description": "The validity period of the product",
|
|
"properties": {
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"description": "The start of the validity period",
|
|
"example": "2022-03-01T00:00:00.000Z"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"description": "The end of the validity period",
|
|
"example": "2022-06-01T00:00:00.000Z"
|
|
}
|
|
}
|
|
},
|
|
"productTranslations": {
|
|
"type": "array",
|
|
"description": "Translations of the product name and description",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductTranslation"
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"requiredProductIds": {
|
|
"type": "array",
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"incompatibleProductIds": {
|
|
"type": "array",
|
|
"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",
|
|
"description": "The validity duration of the product. Should only contain one single unit of duration (D, W, M, Y)",
|
|
"example": "P7D"
|
|
},
|
|
"maxStartInFutureDuration": {
|
|
"type": "string",
|
|
"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",
|
|
"description": "A reference/URL to the image of the product",
|
|
"example": "https://www.htm.nl/nog-onbekende-productafbeelding"
|
|
},
|
|
"productPageUrl": {
|
|
"type": "string",
|
|
"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",
|
|
"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": {
|
|
"properties": {
|
|
"fromInclusive": {
|
|
"type": "string",
|
|
"description": "The start date of the period",
|
|
"example": "2020-01-01T00:00:00.000Z"
|
|
},
|
|
"toInclusive": {
|
|
"type": "string",
|
|
"description": "The end date of the period",
|
|
"example": "2020-01-01T00:00:00.000Z"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/SellingPrice"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"purchasePrices": {
|
|
"type": "array",
|
|
"description": "The purchasePrices of the product. Can contain multiple prices, as long as there is no overlap in validity",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PurchasePrice"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"CreateProductResponse": {
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": "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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00"
|
|
},
|
|
"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": [
|
|
{
|
|
"productName": "HTM pilot 90% korting",
|
|
"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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"salesTouchpointId": 3,
|
|
"sellingPrices": [
|
|
{
|
|
"amountExclTax": 92,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"amountExclTax": 0,
|
|
"taxMetadataId": 1,
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"postGboProductMultiplePeriods": {
|
|
"summary": "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+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00"
|
|
},
|
|
"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+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"salesTouchpointId": 3,
|
|
"sellingPrices": [
|
|
{
|
|
"amountExclTax": 92,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
},
|
|
{
|
|
"amountExclTax": 101,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 110,
|
|
"fromInclusive": "2025-01-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 101.0000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"salesTouchpointId": 2,
|
|
"sellingPrices": [
|
|
{
|
|
"amountExclTax": 92,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 100,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 92.0000
|
|
},
|
|
{
|
|
"amountExclTax": 101,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 110,
|
|
"fromInclusive": "2025-01-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 101.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"amountExclTax": 0,
|
|
"taxMetadataId": 1,
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2025-12-31T23:59:59.999+02:00"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"postGboPadProduct": {
|
|
"summary": "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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02: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."
|
|
}
|
|
],
|
|
"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+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"salesTouchPointId": 3,
|
|
"forbiddenPaymentMethodIds": [
|
|
1
|
|
],
|
|
"sellingPrices": [
|
|
{
|
|
"amountExclTax": 5413,
|
|
"taxMetadataId": 2,
|
|
"amountInclTax": 5900,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00",
|
|
"internalPrice": 5413.0000
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"purchasePrices": [
|
|
{
|
|
"amountExclTax": 0,
|
|
"taxMetadataId": 1,
|
|
"amountInclTax": 0,
|
|
"fromInclusive": "2024-09-01T00:00:00.000+02:00",
|
|
"toInclusive": "2024-12-31T23:59:59.999+02:00"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"postGboProductSupplement": {
|
|
"summary": "GBO product (supplement with requirements)",
|
|
"value": {
|
|
"productName": "TODO"
|
|
}
|
|
},
|
|
"postTapConnectProduct": {
|
|
"summary": "TapConnect product",
|
|
"value": {
|
|
"productName": "TODO"
|
|
}
|
|
},
|
|
"postIbanMandate": {
|
|
"summary": "IBAN mandate (functional product)",
|
|
"value": {
|
|
"productName": "TODO"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |