diff --git a/src/java/ABTProductsPUTGenerator/.gitignore b/src/java/ABTProductsPUTGenerator/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/.idea/.gitignore b/src/java/ABTProductsPUTGenerator/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/src/java/ABTProductsPUTGenerator/.idea/encodings.xml b/src/java/ABTProductsPUTGenerator/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/.idea/misc.xml b/src/java/ABTProductsPUTGenerator/.idea/misc.xml
new file mode 100644
index 0000000..7ace097
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/.idea/vcs.xml b/src/java/ABTProductsPUTGenerator/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/bin/ABTProductsPUTGenerator.jar b/src/java/ABTProductsPUTGenerator/bin/ABTProductsPUTGenerator.jar
new file mode 100644
index 0000000..2a3b03c
Binary files /dev/null and b/src/java/ABTProductsPUTGenerator/bin/ABTProductsPUTGenerator.jar differ
diff --git a/src/java/ABTProductsPUTGenerator/bin/README.md b/src/java/ABTProductsPUTGenerator/bin/README.md
new file mode 100644
index 0000000..3d0dad5
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/bin/README.md
@@ -0,0 +1,12 @@
+# ABTProducts PUT request body generator
+Simple tool to quickly edit HTM products via ABTProducts REST API.
+
+- Requires JRE 21
+- Run via: `java -jar ABTProductsPUTGenerator.jar`
+ - Specify custom input/output path via: `java -jar ABTProductsPUTGenerator.jar `
+- Takes a ABTProducts GET response body in JSON format (product details)
+- Generates the equivalent PUT request body - send via either:
+ - Postman WSO2 ABTProducts collection
+ - `curl -X PUT -H 'Content-Type: application/json' {baseUrl}/abt/abtproducts/1.0/38 --data @output.json`
+- Default input path: /input.json
+- Default output path: /output.json (output is overwritten if it exists)
diff --git a/src/java/ABTProductsPUTGenerator/bin/input.json b/src/java/ABTProductsPUTGenerator/bin/input.json
new file mode 100644
index 0000000..2873379
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/bin/input.json
@@ -0,0 +1,154 @@
+{
+ "productId": 38,
+ "parentProductId": null,
+ "productCode": "30901-WA",
+ "gboPackageTemplateId": "30901",
+ "tapConnectProductCode": null,
+ "productGroupMetadata": null,
+ "productName": "HTM P1W Prolongatie-Test 90% Korting",
+ "productDescription": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
+ "validityPeriod": {
+ "validityPeriodId": 148,
+ "fromInclusive": "2023-12-31T23:00:00.000+00:00",
+ "toInclusive": "2029-12-08T04:00:00.000+00:00"
+ },
+ "productTranslations": [
+ {
+ "language": "en",
+ "name": "HTM Prolongation-Test 90% Discount",
+ "description": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
+ }
+ ],
+ "productOwner": {
+ "productOwnerId": 17,
+ "name": "Corneel Verstoep",
+ "organization": "HTM"
+ },
+ "marketSegments": [
+ {
+ "marketSegmentId": 1,
+ "name": "B2C"
+ }
+ ],
+ "customerSegments": [
+ {
+ "customerSegmentId": 2,
+ "name": "Kind (4-11)"
+ },
+ {
+ "customerSegmentId": 3,
+ "name": "Jongere (12-18)"
+ },
+ {
+ "customerSegmentId": 4,
+ "name": "Volwassene (19-64)"
+ },
+ {
+ "customerSegmentId": 5,
+ "name": "Oudere (65+)"
+ }
+ ],
+ "productCategory": {
+ "productCategoryId": 1,
+ "isTravelProduct": true,
+ "name": "Kortingsabonnement"
+ },
+ "requiredCustomerLevel": {
+ "requiredCustomerLevelId": 3,
+ "name": "profile"
+ },
+ "requiredProducts": null,
+ "incompatibleProducts": null,
+ "mandatoryCustomerDataItems": [
+ {
+ "mandatoryCustomerDataItemId": 1,
+ "customerDataItem": "birthname"
+ },
+ {
+ "mandatoryCustomerDataItemId": 2,
+ "customerDataItem": "surname"
+ },
+ {
+ "mandatoryCustomerDataItemId": 4,
+ "customerDataItem": "emailAddress"
+ },
+ {
+ "mandatoryCustomerDataItemId": 5,
+ "customerDataItem": "address"
+ }
+ ],
+ "requiredGboPersonalAttributes": null,
+ "tokenTypes": [
+ {
+ "tokenTypeId": 1,
+ "name": "EMV"
+ }
+ ],
+ "paymentMoment": {
+ "paymentMomentId": 1,
+ "name": "prepaid"
+ },
+ "serviceOptions": null,
+ "validityDuration": "P1W",
+ "maxStartInFutureDuration": "P6W",
+ "isRenewable": true,
+ "sendInvoice": true,
+ "imageReference": "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
+ "productPageUrl": "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
+ "termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
+ "isSellableAtHtm": true,
+ "needsSolvencyCheckConsumer": false,
+ "needsSolvencyCheckBusiness": false,
+ "sellingPeriods": [
+ {
+ "sellingPeriodId": 89,
+ "fromInclusive": "2024-09-30T23:00:00.000+00:00",
+ "toInclusive": "2029-12-01T23:00:00.000+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": 82,
+ "amountExclTax": 92,
+ "amountInclTax": 100,
+ "fromInclusive": "2024-09-30T23:00:00.000+00:00",
+ "toInclusive": "2029-12-01T23:00:00.000+00:00",
+ "internalPrice": 0.0000,
+ "taxMetadata": {
+ "taxMetadataId": "47C8972E-A730-4032-9BDA-AF0A5BCB2C85",
+ "taxCode": "V09",
+ "taxPercentageAmount": 9,
+ "description": "BTW VERKOOP LAAG 9%"
+ }
+ }
+ ]
+ }
+ ],
+ "purchasePrices": null,
+ "auditTrail": [
+ {
+ "auditTrailId": 162,
+ "action": "insert",
+ "user": "api",
+ "timestamp": "2024-11-25T08:39:36.793+00:00"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/bin/output.json b/src/java/ABTProductsPUTGenerator/bin/output.json
new file mode 100644
index 0000000..070aba6
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/bin/output.json
@@ -0,0 +1,58 @@
+{
+ "parentProductId" : null,
+ "productCode" : "30901-WA",
+ "gboPackageTemplateId" : "30901",
+ "tapConnectProductCode" : null,
+ "productGroupMetadata" : null,
+ "productName" : "HTM P1W Prolongatie-Test 90% Korting",
+ "productDescription" : "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
+ "validityPeriod" : {
+ "validityPeriodId" : 148,
+ "fromInclusive" : "2023-12-31T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-08T04:00:00.000+00:00"
+ },
+ "productTranslations" : [ {
+ "language" : "en",
+ "name" : "HTM Prolongation-Test 90% Discount",
+ "description" : "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
+ } ],
+ "productOwnerId" : 17,
+ "marketSegmentIds" : [ 1 ],
+ "customerSegmentIds" : [ 2, 3, 4, 5 ],
+ "productCategoryId" : 1,
+ "requiredCustomerLevelId" : 3,
+ "requiredProducts" : null,
+ "incompatibleProducts" : null,
+ "mandatoryCustomerDataItemIds" : [ 1, 2, 4, 5 ],
+ "requiredGboPersonalAttributes" : null,
+ "tokenTypeIds" : [ 1 ],
+ "paymentMomentId" : 1,
+ "serviceOptions" : null,
+ "validityDuration" : "P1W",
+ "maxStartInFutureDuration" : "P6W",
+ "isRenewable" : true,
+ "sendInvoice" : true,
+ "imageReference" : "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
+ "productPageUrl" : "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
+ "termsUrl" : "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
+ "isSellableAtHtm" : true,
+ "needsSolvencyCheckConsumer" : false,
+ "needsSolvencyCheckBusiness" : false,
+ "sellingPeriods" : [ {
+ "sellingPeriodId" : 89,
+ "fromInclusive" : "2024-09-30T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-01T23:00:00.000+00:00",
+ "salesTouchpointId" : 3,
+ "forbiddenPaymentMethodIds" : null,
+ "sellingPrices" : [ {
+ "sellingPriceId" : 82,
+ "amountExclTax" : 92,
+ "amountInclTax" : 100,
+ "fromInclusive" : "2024-09-30T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-01T23:00:00.000+00:00",
+ "internalPrice" : 0.0,
+ "taxMetadataId" : "47C8972E-A730-4032-9BDA-AF0A5BCB2C85"
+ } ]
+ } ],
+ "purchasePrices" : null
+}
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/output.json b/src/java/ABTProductsPUTGenerator/output.json
new file mode 100644
index 0000000..070aba6
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/output.json
@@ -0,0 +1,58 @@
+{
+ "parentProductId" : null,
+ "productCode" : "30901-WA",
+ "gboPackageTemplateId" : "30901",
+ "tapConnectProductCode" : null,
+ "productGroupMetadata" : null,
+ "productName" : "HTM P1W Prolongatie-Test 90% Korting",
+ "productDescription" : "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
+ "validityPeriod" : {
+ "validityPeriodId" : 148,
+ "fromInclusive" : "2023-12-31T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-08T04:00:00.000+00:00"
+ },
+ "productTranslations" : [ {
+ "language" : "en",
+ "name" : "HTM Prolongation-Test 90% Discount",
+ "description" : "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
+ } ],
+ "productOwnerId" : 17,
+ "marketSegmentIds" : [ 1 ],
+ "customerSegmentIds" : [ 2, 3, 4, 5 ],
+ "productCategoryId" : 1,
+ "requiredCustomerLevelId" : 3,
+ "requiredProducts" : null,
+ "incompatibleProducts" : null,
+ "mandatoryCustomerDataItemIds" : [ 1, 2, 4, 5 ],
+ "requiredGboPersonalAttributes" : null,
+ "tokenTypeIds" : [ 1 ],
+ "paymentMomentId" : 1,
+ "serviceOptions" : null,
+ "validityDuration" : "P1W",
+ "maxStartInFutureDuration" : "P6W",
+ "isRenewable" : true,
+ "sendInvoice" : true,
+ "imageReference" : "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
+ "productPageUrl" : "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
+ "termsUrl" : "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
+ "isSellableAtHtm" : true,
+ "needsSolvencyCheckConsumer" : false,
+ "needsSolvencyCheckBusiness" : false,
+ "sellingPeriods" : [ {
+ "sellingPeriodId" : 89,
+ "fromInclusive" : "2024-09-30T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-01T23:00:00.000+00:00",
+ "salesTouchpointId" : 3,
+ "forbiddenPaymentMethodIds" : null,
+ "sellingPrices" : [ {
+ "sellingPriceId" : 82,
+ "amountExclTax" : 92,
+ "amountInclTax" : 100,
+ "fromInclusive" : "2024-09-30T23:00:00.000+00:00",
+ "toInclusive" : "2029-12-01T23:00:00.000+00:00",
+ "internalPrice" : 0.0,
+ "taxMetadataId" : "47C8972E-A730-4032-9BDA-AF0A5BCB2C85"
+ } ]
+ } ],
+ "purchasePrices" : null
+}
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/pom.xml b/src/java/ABTProductsPUTGenerator/pom.xml
new file mode 100644
index 0000000..6c41c8c
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/pom.xml
@@ -0,0 +1,67 @@
+
+ 4.0.0
+ nl.htm.ovpay.abt
+ ABTProductsPUTGenerator
+ 1.0-SNAPSHOT
+ ABTProductsPUTGenerator
+ Generate an ABTProducts PUT request body from a given ABTProducts GET response body
+
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.23.1
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.23.1
+
+
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ 2.23.1
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.17.2
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+
+
+
+
+ nl.htm.ovpay.abt.ABTProductsPUTGenerator
+
+
+
+ jar-with-dependencies
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 21
+ 21
+
+
+
+
+
diff --git a/src/java/ABTProductsPUTGenerator/src/main/java/nl/htm/ovpay/abt/ABTProductsPUTGenerator.java b/src/java/ABTProductsPUTGenerator/src/main/java/nl/htm/ovpay/abt/ABTProductsPUTGenerator.java
new file mode 100644
index 0000000..ae4bdc2
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/src/main/java/nl/htm/ovpay/abt/ABTProductsPUTGenerator.java
@@ -0,0 +1,272 @@
+package nl.htm.ovpay.abt;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.JsonNodeType;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class ABTProductsPUTGenerator {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ABTProductsPUTGenerator.class);
+
+ public static void main(String[] args) throws Exception {
+ if (args.length != 2) {
+ LOGGER.info("To modify input/output path, use: java -jar ABTProductsPUTGenerator.jar ");
+ }
+ var inputFile = args.length > 0 ? args[0] : "input.json";
+ var outputFile = args.length > 1 ? args[1] : "output.json";
+ try (InputStream is = getInputStream(inputFile)) {
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode jsonNode = mapper.readTree(is);
+ Long productId = jsonNode.get("productId").asLong();
+
+ LOGGER.info("Successfully parsed product with productId {} from JSON:\n{}\n", productId, jsonNode.toPrettyString());
+
+ JsonNode putJsonNode = processJsonNode(jsonNode);
+
+ writeToFile(putJsonNode, outputFile);
+
+ LOGGER.info("DONE! Modify the output JSON as desired and send it as ABTProducts PUT request body:");
+ LOGGER.info("curl -X PUT -H 'Content-Type: application/json' {baseUrl}/abt/abtproducts/1.0/products/{} --data @{}", productId, outputFile);
+ }
+ }
+
+ private static InputStream getInputStream(String filePath) throws IOException {
+ var externalResource = new File(filePath);
+ if (externalResource.exists()) {
+ LOGGER.info("Loading ABTProducts details JSON from external file {}...", externalResource.getAbsolutePath());
+ return externalResource.toURI().toURL().openStream();
+ } else {
+ LOGGER.info("External file {} not found, using internal resource /input.json...", filePath);
+ return ABTProductsPUTGenerator.class.getResourceAsStream("/input.json");
+ }
+ }
+
+ private static void writeToFile(JsonNode jsonNode, String filePath) throws IOException {
+ ObjectMapper mapper = new ObjectMapper();
+ var outputFile = new File(filePath);
+ if (outputFile.exists()) {
+ LOGGER.info("Deleting existing output file {}...", filePath);
+ outputFile.delete();
+ }
+ mapper.writerWithDefaultPrettyPrinter().writeValue(outputFile, jsonNode);
+ LOGGER.info("Successfully wrote JSON to file {}!", outputFile.getAbsolutePath(), jsonNode.toPrettyString());
+ }
+
+ private static JsonNode processJsonNode(JsonNode jsonNode) {
+ var newJsonNode = new ObjectNode(new JsonNodeFactory(true));
+
+ jsonNode.fields().forEachRemaining(jsonField -> {
+ if (!List.of(JsonNodeType.ARRAY, JsonNodeType.OBJECT).contains(jsonField.getValue().getNodeType())) {
+ if (!jsonField.getKey().equals("productId") && !jsonField.getKey().equals("auditTrail")) {
+ LOGGER.info("Keeping {} as-is...", jsonField.getKey());
+ newJsonNode.put(jsonField.getKey(), jsonField.getValue());
+ }
+ } else {
+ if (List.of("validityPeriod", "productTranslations").contains(jsonField.getKey())) {
+ LOGGER.info("Keeping {} as-is...", jsonField.getKey());
+ newJsonNode.set(jsonField.getKey(), jsonField.getValue());
+ } else {
+ rewriteObjectFields(jsonField, newJsonNode);
+ rewriteArrayFields(jsonField, newJsonNode);
+ }
+ }
+ });
+
+ LOGGER.info("Successfully rewritten into PUT JSON:\n{}\n", newJsonNode.toPrettyString());
+
+ return newJsonNode;
+ }
+
+ private static void rewriteObjectFields(Map.Entry jsonField, JsonNode newJsonNode) {
+ switch (jsonField.getKey()) {
+ case "productOwner" -> {
+ LOGGER.info("Rewriting productOwner to productOwnerId...");
+ Long productOwnerId = jsonField.getValue().get("productOwnerId").asLong();
+ ((ObjectNode)newJsonNode).put("productOwnerId", productOwnerId);
+ }
+ case "productCategory" -> {
+ LOGGER.info("Rewriting productCategory to productCategoryId...");
+ Long productCategoryId = jsonField.getValue().get("productCategoryId").asLong();
+ ((ObjectNode)newJsonNode).put("productCategoryId", productCategoryId);
+ }
+ case "paymentMoment" -> {
+ LOGGER.info("Rewriting paymentMoment to paymentMomentId...");
+ Long paymentMomentId = jsonField.getValue().get("paymentMomentId").asLong();
+ ((ObjectNode)newJsonNode).put("paymentMomentId", paymentMomentId);
+ }
+ case "requiredCustomerLevel" -> {
+ LOGGER.info("Rewriting requiredCustomerLevel to requiredCustomerLevelId...");
+ Long requiredCustomerLevelId = jsonField.getValue().get("requiredCustomerLevelId").asLong();
+ ((ObjectNode)newJsonNode).put("requiredCustomerLevelId", requiredCustomerLevelId);
+ }
+ }
+ }
+
+ private static void rewriteArrayFields(Map.Entry jsonField, JsonNode newJsonNode) {
+ switch (jsonField.getKey()) {
+ case "marketSegments" -> {
+ LOGGER.info("Rewriting marketSegments to marketSegmentIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode marketSegmentIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(marketSegment -> {
+ marketSegmentIds.add(marketSegment.get("marketSegmentId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("marketSegmentIds").addAll(marketSegmentIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("marketSegmentIds", null);
+ }
+ }
+ case "customerSegments" -> {
+ LOGGER.info("Rewriting customerSegments to customerSegmentIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode customerSegmentIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(customerSegment -> {
+ customerSegmentIds.add(customerSegment.get("customerSegmentId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("customerSegmentIds").addAll(customerSegmentIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("customerSegmentIds", null);
+ }
+ }
+ case "tokenTypes" -> {
+ LOGGER.info("Rewriting tokenTypes to tokenTypeIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode tokenTypeIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(tokenType -> {
+ tokenTypeIds.add(tokenType.get("tokenTypeId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("tokenTypeIds").addAll(tokenTypeIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("tokenTypeIds", null);
+ }
+ }
+ case "mandatoryCustomerDataItems" -> {
+ LOGGER.info("Rewriting mandatoryCustomerDataItems to mandatoryCustomerDataItemIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode mandatoryCustomerDataItemIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(mandatoryCustomerDataItem -> {
+ mandatoryCustomerDataItemIds.add(mandatoryCustomerDataItem.get("mandatoryCustomerDataItemId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("mandatoryCustomerDataItemIds").addAll(mandatoryCustomerDataItemIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("mandatoryCustomerDataItemIds", null);
+ }
+ }
+ case "requiredGboPersonalAttributes" -> {
+ LOGGER.info("Rewriting requiredGboPersonalAttributes to requiredGboPersonalAttributeIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode requiredGboPersonalAttributeIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(requiredGboPersonalAttribute -> {
+ requiredGboPersonalAttributeIds.add(
+ requiredGboPersonalAttribute.get("requiredGboPersonalAttributeId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("requiredGboPersonalAttributeIds").addAll(requiredGboPersonalAttributeIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("requiredGboPersonalAttributeIds", null);
+ }
+ }
+ case "serviceOptions" -> {
+ LOGGER.info("Rewriting serviceOptions to serviceOptionIds...");
+ if (jsonField.getValue() != null) {
+ ArrayNode serviceOptionIds = new ArrayNode(new JsonNodeFactory(true));
+ ((ArrayNode)jsonField.getValue()).elements().forEachRemaining(serviceOption -> {
+ serviceOptionIds.add(serviceOption.get("serviceOptionId").asLong());
+ });
+ ((ObjectNode)newJsonNode).putArray("serviceOptionIds").addAll(serviceOptionIds);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("serviceOptionIds", null);
+ }
+ }
+ case "incompatibleProducts" -> {
+ LOGGER.info("Rewriting incompatibleProducts to remove product names...");
+ if (jsonField.getValue() != null) {
+ ArrayNode incompatibleProducts = ((ArrayNode)jsonField.getValue()).deepCopy();
+ incompatibleProducts.elements().forEachRemaining(incompatibleProduct -> {
+ ((ObjectNode)incompatibleProduct).remove("productName");
+ });
+ ((ObjectNode)newJsonNode).putArray("incompatibleProducts").addAll(incompatibleProducts);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("incompatibleProducts", null);
+ }
+ }
+ case "requiredProducts" -> {
+ LOGGER.info("Rewriting requiredProducts to remove product names...");
+ if (jsonField.getValue() != null) {
+ ArrayNode requiredProducts = ((ArrayNode)jsonField.getValue()).deepCopy();
+ requiredProducts.elements().forEachRemaining(requiredProduct -> {
+ ((ObjectNode)requiredProduct).remove("productName");
+ });
+ ((ObjectNode)newJsonNode).putArray("requiredProducts").addAll(requiredProducts);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("requiredProducts", null);
+ }
+ }
+ case "sellingPeriods" -> {
+ if (jsonField.getValue() != null) {
+ LOGGER.info("Rewriting salesTouchpoint in sellingPeriods to salesTouchpointId...");
+ ArrayNode sellingPeriods = ((ArrayNode)jsonField.getValue()).deepCopy();
+ sellingPeriods.elements().forEachRemaining(sellingPeriod -> {
+ Long salesTouchpointId = sellingPeriod.get("salesTouchpoint").get("salesTouchpointId").asLong();
+ ((ObjectNode)sellingPeriod).put("salesTouchpointId", salesTouchpointId);
+ ((ObjectNode)sellingPeriod).remove("salesTouchpoint");
+ if (sellingPeriod.get("forbiddenPaymentMethods") != null) {
+ LOGGER.info("Rewriting forbiddenPaymentMethods to forbiddenPaymentMethodIds...");
+ ArrayNode forbiddenPaymentMethodIds = new ArrayNode(new JsonNodeFactory(true));
+ sellingPeriod.get("forbiddenPaymentMethods").elements().forEachRemaining(forbiddenPaymentMethod -> {
+ forbiddenPaymentMethodIds.add(forbiddenPaymentMethod.get("forbiddenPaymentMethodId").asLong());
+ });
+ ((ObjectNode)sellingPeriod).remove("forbiddenPaymentMethods");
+ if (!forbiddenPaymentMethodIds.isEmpty()) {
+ ((ObjectNode)sellingPeriod).putArray("forbiddenPaymentMethodIds").addAll(forbiddenPaymentMethodIds);
+ } else {
+ ((ObjectNode)sellingPeriod).putRawValue("forbiddenPaymentMethodIds", null);
+ }
+ }
+ if (sellingPeriod.get("sellingPrices") != null) {
+ LOGGER.info("Rewriting taxMetadata in sellingPrices to taxMetadataId...");
+ ArrayNode sellingPrices = ((ArrayNode)sellingPeriod.get("sellingPrices")).deepCopy();
+ sellingPrices.elements().forEachRemaining(sellingPrice -> {
+ String taxMetadataId = sellingPrice.get("taxMetadata").get("taxMetadataId").asText();
+ ((ObjectNode)sellingPrice).put("taxMetadataId", taxMetadataId);
+ ((ObjectNode)sellingPrice).remove("taxMetadata");
+ });
+ ((ObjectNode)sellingPeriod).remove("sellingPrices");
+ if (!sellingPrices.isEmpty()) {
+ ((ObjectNode)sellingPeriod).putArray("sellingPrices").addAll(sellingPrices);
+ } else {
+ ((ObjectNode)sellingPeriod).putRawValue("sellingPrices", null);
+ }
+ }
+ });
+ ((ObjectNode)newJsonNode).putArray("sellingPeriods").addAll(sellingPeriods);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("sellingPeriods", null);
+ }
+ }
+ case "purchasePrices" -> {
+ LOGGER.info("Rewriting taxMetadata in purchasePrices to taxMetadataId...");
+ if (jsonField.getValue() != null) {
+ ArrayNode purchasePrices = ((ArrayNode)jsonField.getValue()).deepCopy();
+ purchasePrices.elements().forEachRemaining(purchasePrice -> {
+ String taxMetadataId = purchasePrice.get("taxMetadata").get("taxMetadataId").asText();
+ ((ObjectNode)purchasePrice).put("taxMetadataId", taxMetadataId);
+ ((ObjectNode)purchasePrice).remove("taxMetadata");
+ });
+ ((ObjectNode)newJsonNode).putArray("purchasePrices").addAll(purchasePrices);
+ } else {
+ ((ObjectNode)newJsonNode).putRawValue("purchasePrices", null);
+ }
+ }
+ }
+ }
+}
diff --git a/src/java/ABTProductsPUTGenerator/src/main/resources/input.json b/src/java/ABTProductsPUTGenerator/src/main/resources/input.json
new file mode 100644
index 0000000..2873379
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/src/main/resources/input.json
@@ -0,0 +1,154 @@
+{
+ "productId": 38,
+ "parentProductId": null,
+ "productCode": "30901-WA",
+ "gboPackageTemplateId": "30901",
+ "tapConnectProductCode": null,
+ "productGroupMetadata": null,
+ "productName": "HTM P1W Prolongatie-Test 90% Korting",
+ "productDescription": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
+ "validityPeriod": {
+ "validityPeriodId": 148,
+ "fromInclusive": "2023-12-31T23:00:00.000+00:00",
+ "toInclusive": "2029-12-08T04:00:00.000+00:00"
+ },
+ "productTranslations": [
+ {
+ "language": "en",
+ "name": "HTM Prolongation-Test 90% Discount",
+ "description": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
+ }
+ ],
+ "productOwner": {
+ "productOwnerId": 17,
+ "name": "Corneel Verstoep",
+ "organization": "HTM"
+ },
+ "marketSegments": [
+ {
+ "marketSegmentId": 1,
+ "name": "B2C"
+ }
+ ],
+ "customerSegments": [
+ {
+ "customerSegmentId": 2,
+ "name": "Kind (4-11)"
+ },
+ {
+ "customerSegmentId": 3,
+ "name": "Jongere (12-18)"
+ },
+ {
+ "customerSegmentId": 4,
+ "name": "Volwassene (19-64)"
+ },
+ {
+ "customerSegmentId": 5,
+ "name": "Oudere (65+)"
+ }
+ ],
+ "productCategory": {
+ "productCategoryId": 1,
+ "isTravelProduct": true,
+ "name": "Kortingsabonnement"
+ },
+ "requiredCustomerLevel": {
+ "requiredCustomerLevelId": 3,
+ "name": "profile"
+ },
+ "requiredProducts": null,
+ "incompatibleProducts": null,
+ "mandatoryCustomerDataItems": [
+ {
+ "mandatoryCustomerDataItemId": 1,
+ "customerDataItem": "birthname"
+ },
+ {
+ "mandatoryCustomerDataItemId": 2,
+ "customerDataItem": "surname"
+ },
+ {
+ "mandatoryCustomerDataItemId": 4,
+ "customerDataItem": "emailAddress"
+ },
+ {
+ "mandatoryCustomerDataItemId": 5,
+ "customerDataItem": "address"
+ }
+ ],
+ "requiredGboPersonalAttributes": null,
+ "tokenTypes": [
+ {
+ "tokenTypeId": 1,
+ "name": "EMV"
+ }
+ ],
+ "paymentMoment": {
+ "paymentMomentId": 1,
+ "name": "prepaid"
+ },
+ "serviceOptions": null,
+ "validityDuration": "P1W",
+ "maxStartInFutureDuration": "P6W",
+ "isRenewable": true,
+ "sendInvoice": true,
+ "imageReference": "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
+ "productPageUrl": "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
+ "termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
+ "isSellableAtHtm": true,
+ "needsSolvencyCheckConsumer": false,
+ "needsSolvencyCheckBusiness": false,
+ "sellingPeriods": [
+ {
+ "sellingPeriodId": 89,
+ "fromInclusive": "2024-09-30T23:00:00.000+00:00",
+ "toInclusive": "2029-12-01T23:00:00.000+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": 82,
+ "amountExclTax": 92,
+ "amountInclTax": 100,
+ "fromInclusive": "2024-09-30T23:00:00.000+00:00",
+ "toInclusive": "2029-12-01T23:00:00.000+00:00",
+ "internalPrice": 0.0000,
+ "taxMetadata": {
+ "taxMetadataId": "47C8972E-A730-4032-9BDA-AF0A5BCB2C85",
+ "taxCode": "V09",
+ "taxPercentageAmount": 9,
+ "description": "BTW VERKOOP LAAG 9%"
+ }
+ }
+ ]
+ }
+ ],
+ "purchasePrices": null,
+ "auditTrail": [
+ {
+ "auditTrailId": 162,
+ "action": "insert",
+ "user": "api",
+ "timestamp": "2024-11-25T08:39:36.793+00:00"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/java/ABTProductsPUTGenerator/src/main/resources/log4j2.xml b/src/java/ABTProductsPUTGenerator/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..47eb2d8
--- /dev/null
+++ b/src/java/ABTProductsPUTGenerator/src/main/resources/log4j2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/openapi/customers/customers-crud-v2.yaml b/src/openapi/customers/customers-crud-v2.yaml
index 72ef1eb..83c7a68 100644
--- a/src/openapi/customers/customers-crud-v2.yaml
+++ b/src/openapi/customers/customers-crud-v2.yaml
@@ -1,17 +1,1219 @@
openapi: "3.0.3"
info:
title: ABT Customers CRUD APIs v2
- version: "1.0"
+ version: "2.0"
description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine.
servers:
- - url: https://api.integratielaag.nl/v1
+ - url: https://api.integratielaag.nl/abt/abtcustomers/2.0
paths:
+ /customers:
+ get:
+ tags:
+ - Customer
+ summary: Search customer profiles
+ description: >-
+ Search for all customer profile list in the ABT database matching given query parameters
+ parameters:
+ - name: customerProfileId
+ in: query
+ schema:
+ type: integer
+ example: 1
+ - name: customerNumber
+ in: query
+ schema:
+ type: integer
+ example: 1000001
+ - name: customerStatusId
+ in: query
+ schema:
+ type: array
+ items:
+ type: integer
+ description: Filter on possible customer statuses. 1 = Inactive, 2 = Active, 3 = Blocked, 4 = Frozen, 5 = Cleaned
+ - name: debtorNumber
+ in: query
+ schema:
+ type: string
+ example: DB100001
+ - name: debtorStatusId
+ in: query
+ schema:
+ type: array
+ items:
+ type: integer
+ description: Filter on possible debtor statuses. 1 = Active, 2 = Inactive
+ - name: vasCustomerNumber
+ in: query
+ schema:
+ type: string
+ example: VAS100001
+ - name: lastLoginBefore
+ in: query
+ schema:
+ type: string
+ format: date-time
+ example: "2022-08-04 15:01:00.000"
+ - name: lastLoginAfter
+ in: query
+ schema:
+ type: string
+ format: date-time
+ example: "2022-08-04 15:01:00.000"
+ - name: birthname
+ in: query
+ schema:
+ type: string
+ example: John
+ - name: surname
+ in: query
+ schema:
+ type: string
+ example: Doe
+ - name: prefix
+ in: query
+ schema:
+ type: string
+ example: de
+ - name: suffix
+ in: query
+ schema:
+ type: string
+ example: PhD
+ - name: emailAddress
+ in: query
+ schema:
+ type: string
+ format: email
+ example: john.doe@mymailprovider.com
+ - name: dateOfBirth
+ in: query
+ schema:
+ type: string
+ format: date
+ example: "2000-01-01"
+ - name: addressStreet
+ in: query
+ schema:
+ type: string
+ example: Sesamestreet
+ - name: addressHouseNumber
+ in: query
+ schema:
+ type: integer
+ example: 1
+ - name: addressHouseNumberSuffix
+ in: query
+ schema:
+ type: string
+ example: A
+ - name: addressPostalCode
+ in: query
+ schema:
+ type: string
+ example: 1234AB
+ - name: addressCity
+ in: query
+ schema:
+ type: string
+ example: The Hague
+ - name: addressCountry
+ in: query
+ schema:
+ type: string
+ example: NL
+ - name: phoneNumber
+ in: query
+ schema:
+ type: string
+ example: "0123456789"
+ - name: phoneCountryCode
+ in: query
+ schema:
+ type: string
+ example: "+31"
+ - name: ovChipcardNumber
+ in: query
+ schema:
+ type: integer
+ example: 0123456789
+ - name: ovChipcardAlias
+ in: query
+ schema:
+ type: string
+ example: My ovchipcard
+ - name: ovPasNumber
+ in: query
+ schema:
+ type: string
+ example: 0123456789
+ - name: ovPayTokenAlias
+ in: query
+ schema:
+ type: string
+ example: My Ov Pay Token
+ - name: ovPayTokenXTat
+ in: query
+ schema:
+ type: string
+ example: 180d04e0-a721-447e-a1d9-b416937b43bc
+ - name: ovPayTokenXBot
+ in: query
+ schema:
+ type: string
+ example: e1307c73-676a-4d07-967b-6141276f7c7c
+ - name: mandateReference
+ in: query
+ schema:
+ type: string
+ example: PAYT-1
+ - name: iban
+ in: query
+ schema:
+ type: string
+ example: NL20INGB0001234567
+ - name: bic
+ in: query
+ schema:
+ type: string
+ example: NL20INGB
+ - name: ascription
+ in: query
+ schema:
+ type: string
+ example: j.jansen
+ - name: billingAlias
+ in: query
+ schema:
+ type: string
+ example: Mijn ING bankrekening
+ - name: sort
+ in: query
+ schema:
+ type: string
+ - name: offset
+ in: query
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ schema:
+ type: integer
+ example: 20
+ responses:
+ 200:
+ description: Ok
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/getCustomerProfiles"
+ examples:
+ getCustomersMultiple:
+ summary: getCustomersMultiple
+ description: >-
+ Found multiple customer profiles matching the search parameters, does not return the financial details
+ value:
+ customers:
+ - customerProfileId: 1
+ customerNumber: 1000001
+ debtorNumber: DB100001
+ debtorStatus:
+ debtorStatusId: 1
+ name: Inactive
+ vasCustomerNumber: CST005
+ customerPreference:
+ language:
+ languageId: 1
+ name: Dutch
+ ietfCode: nl-NL
+ iso639Code: nl
+ customerStatusInstances:
+ - customerStatus:
+ name: Active
+ customerStatusId: 2
+ fromInclusive: "2022-08-04 15:01:00.000"
+ toInclusive: "2022-08-05 15:01:00.000"
+ person:
+ birthname: Pieter
+ surname: Valen
+ prefix: de
+ suffix: PhD
+ dateOfBirth: "2002-10-29"
+ emailAddresses: TEST@HTM.NL
+ addresses:
+ - addressId: 1
+ street: mystreet
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 0000AA
+ city: Den Haag
+ country: NL
+ isPreferred: false
+ addressType:
+ addressTypeId: 2
+ name: Office
+ - addressId: 2
+ street: mystreet 33
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 4455CA
+ city: Den BOSCH
+ country: NL
+ isPreferred: true
+ addressType:
+ addressTypeId: 2
+ name: Office
+ phones:
+ - phoneId: 1
+ number: "3112345678"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 1
+ name: Home
+ isPreferred: true
+ - phoneId: 2
+ number: "333225588"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 2
+ name: Work
+ isPreferred: false
+ ovChipcards:
+ - ovChipCardId: 1
+ chipCardNumber: 1234123412341234
+ validUntil: "2023-01-01"
+ alias: alias
+ - ovChipCardId: 2
+ chipCardNumber: 1234123412341235
+ validUntil: "2025-01-01"
+ alias: alias
+ ovPayTokens:
+ - ovPayTokenId: 126
+ tokenType:
+ tokenTypeId: 1
+ name: EMV
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5678"
+ ovpasNumber: null
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2025-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 1
+ - ovPayTokenId: 127
+ tokenType:
+ tokenTypeId: 2
+ name: OV-pas physical
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5674"
+ ovpasNumber: OV34568
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2024-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 2
+ auditTrails:
+ - auditTrailId: 1
+ customerProfileId: 1
+ action: insert
+ user: user
+ timestamp: "2023-10-20T17:05:52.000+02:00"
+ correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?customerProfileId=1",
+ "method": "GET",
+ },
+ }
+ - customerProfileId: 12
+ customerNumber: 1000002
+ debtorNumber: DB100121
+ debtorStatus:
+ debtorStatusId: 1
+ name: Inactive
+ vasCustomerNumber: CST005
+ customerPreference:
+ language:
+ languageId: 1
+ name: Dutch
+ ietfCode: nl-NL
+ iso639Code: nl
+ customerStatusInstances:
+ - customerStatus:
+ name: Active
+ customerStatusId: 2
+ fromInclusive: "2022-08-04 15:01:00.000"
+ toInclusive: "2022-08-05 15:01:00.000"
+ - customerStatus:
+ name: Blocked
+ customerStatusId: 3
+ fromInclusive: "2022-08-05 15:01:00.000"
+ toInclusive: "2023-08-05 15:01:00.000"
+ - customerStatus:
+ name: Active
+ customerStatusId: 2
+ fromInclusive: "2023-08-05 15:01:00.000"
+ toInclusive: null
+ person:
+ birthname: Pieter
+ surname: Valen
+ prefix: de
+ suffix: PhD
+ dateOfBirth: "2002-10-29"
+ emailAddresses: TEST@HTM.NL
+ address:
+ - addressId: 1
+ street: mystreet
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 0000AA
+ city: Den Haag
+ country: NL
+ isPreferred: false
+ addressType:
+ addressTypeId: 2
+ name: Office
+ - addressId: 2
+ street: mystreet 33
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 4455CA
+ city: Den BOSCH
+ country: NL
+ isPreferred: true
+ addressType:
+ addressTypeId: 2
+ name: Office
+ phones:
+ - phoneId: 1
+ number: "3112345678"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 1
+ name: Home
+ isPreferred: true
+ - phoneId: 2
+ number: "333225588"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 2
+ name: Work
+ isPreferred: false
+ ovChipcards:
+ - ovChipCardId: 1
+ chipCardNumber: 1234123412341234
+ validUntil: "2023-01-01"
+ alias: alias
+ - ovChipCardId: 2
+ chipCardNumber: 1234123412341235
+ validUntil: "2025-01-01"
+ alias: alias
+ ovPayTokens:
+ - ovPayTokenId: 126
+ tokenType:
+ tokenTypeId: 2
+ name: OV-pas physical
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5678"
+ ovpasNumber: OV34567
+ tokenStatus:
+ tokenStatusId: 2
+ name: active
+ expirationDate: "2025-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 1
+ - ovPayTokenId: 127
+ tokenType:
+ tokenTypeId: 2
+ name: OV-pas physical
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5674"
+ ovpasNumber: OV34568
+ tokenStatus:
+ tokenStatusId: 2
+ name: active
+ expirationDate: "2024-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 2
+ auditTrails:
+ - auditTrailId: 1
+ customerProfileId: 1
+ action: insert
+ user: user
+ timestamp: "2023-10-20T17:05:52.000+02:00"
+ correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?customerProfileId=12",
+ "method": "GET",
+ },
+ }
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?offset=20",
+ "method": "GET",
+ },
+ "prev":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers",
+ "method": "GET",
+ },
+ "next":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?offset=40",
+ "method": "GET",
+ },
+ }
+ getCustomerActive:
+ summary: getCustomerActive
+ description: >-
+ Found a single customerProfile with an active status
+ value:
+ customers:
+ - customerProfileId: 1
+ customerNumber: 1000001
+ debtorNumber: DB100001
+ debtorStatus:
+ debtorStatusId: 1
+ name: Inactive
+ vasCustomerNumber: CST005
+ customerPreference:
+ language:
+ languageId: 1
+ name: Dutch
+ ietfCode: nl-NL
+ iso639Code: nl
+ customerStatusInstances:
+ - customerStatus:
+ name: Active
+ customerStatusId: 2
+ fromInclusive: "2022-08-04 15:01:00.000"
+ toInclusive: null
+ person:
+ birthname: Pieter
+ surname: Valen
+ prefix: de
+ suffix: PhD
+ dateOfBirth: "2002-10-29"
+ emailAddresses: TEST@HTM.NL
+ addresses:
+ - addressId: 1
+ street: mystreet
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 0000AA
+ city: Den Haag
+ country: NL
+ isPreferred: false
+ addressType:
+ addressTypeId: 2
+ name: Office
+ - addressId: 2
+ street: mystreet 33
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 4455CA
+ city: Den BOSCH
+ country: NL
+ isPreferred: true
+ addressType:
+ addressTypeId: 2
+ name: Office
+ phones:
+ - phoneId: 1
+ number: "3112345678"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 1
+ name: Home
+ isPreferred: true
+ - phoneId: 2
+ number: "333225588"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 2
+ name: Work
+ isPreferred: false
+ ovChipcards:
+ - ovChipCardId: 1
+ chipCardNumber: 1234123412341234
+ validUntil: "2023-01-01"
+ alias: alias
+ - ovChipCardId: 2
+ chipCardNumber: 1234123412341235
+ validUntil: "2025-01-01"
+ alias: alias
+ ovPayTokens:
+ - ovPayTokenId: 126
+ tokenType:
+ tokenTypeId: 1
+ name: EMV
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5678"
+ ovpasNumber: null
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2025-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 1
+ - ovPayTokenId: 127
+ tokenType:
+ tokenTypeId: 2
+ name: OV-pas physical
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5674"
+ ovpasNumber: OV34568
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2024-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 2
+ auditTrails:
+ - auditTrailId: 1
+ customerProfileId: 1
+ action: insert
+ user: user
+ timestamp: "2023-10-20T17:05:52.000+02:00"
+ correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?customerProfileId=1",
+ "method": "GET",
+ },
+ }
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers",
+ "method": "GET",
+ },
+ }
+ getCustomerBlocked:
+ summary: getCustomerBlocked
+ description: >-
+ Found a single customerProfile with a blocked status
+ value:
+ customers:
+ - customerProfileId: 1
+ customerNumber: 1000001
+ debtorNumber: DB100001
+ debtorStatus:
+ debtorStatusId: 2
+ name: Active
+ vasCustomerNumber: CST005
+ customerPreference:
+ language:
+ languageId: 1
+ name: Dutch
+ ietfCode: nl-NL
+ iso639Code: nl
+ customerStatusInstances:
+ - customerStatus:
+ name: Active
+ customerStatusId: 2
+ fromInclusive: "2022-08-04 15:01:00.000"
+ toInclusive: "2022-08-05 15:01:00.000"
+ - customerStatus:
+ name: Blocked
+ customerStatusId: 3
+ fromInclusive: "2022-08-05 15:01:00.000"
+ toInclusive: null
+ person:
+ birthname: Pieter
+ surname: Valen
+ prefix: de
+ suffix: PhD
+ dateOfBirth: "2002-10-29"
+ emailAddresses: TEST@HTM.NL
+ addresses:
+ - addressId: 1
+ street: mystreet
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 0000AA
+ city: Den Haag
+ country: NL
+ isPreferred: false
+ addressType:
+ addressTypeId: 2
+ name: Office
+ - addressId: 2
+ street: mystreet 33
+ houseNumber: 1
+ houseNumberSuffix: null
+ postalCode: 4455CA
+ city: Den BOSCH
+ country: NL
+ isPreferred: true
+ addressType:
+ addressTypeId: 2
+ name: Office
+ phones:
+ - phoneId: 1
+ number: "3112345678"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 1
+ name: Home
+ isPreferred: true
+ - phoneId: 2
+ number: "333225588"
+ countryCode: "+31"
+ phoneType:
+ phoneTypeId: 2
+ name: Work
+ isPreferred: false
+ ovChipcards:
+ - ovChipCardId: 1
+ chipCardNumber: 1234123412341234
+ validUntil: "2023-01-01"
+ alias: alias
+ - ovChipCardId: 2
+ chipCardNumber: 1234123412341235
+ validUntil: "2025-01-01"
+ alias: alias
+ ovPayTokens:
+ - ovPayTokenId: 126
+ tokenType:
+ tokenTypeId: 1
+ name: EMV
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5678"
+ ovpasNumber: null
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2025-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 1
+ - ovPayTokenId: 127
+ tokenType:
+ tokenTypeId: 2
+ name: OV-pas physical
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: alias
+ lastDigits: "5674"
+ ovpasNumber: OV34568
+ tokenStatus:
+ tokenStatusId: 2
+ name: Active
+ expirationDate: "2024-04-20T17:05:52.000+02:00"
+ replacedByTokenId: 2
+ auditTrails:
+ - auditTrailId: 1
+ customerProfileId: 1
+ action: insert
+ user: user
+ timestamp: "2023-10-20T17:05:52.000+02:00"
+ correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?customerProfileId=1",
+ "method": "GET",
+ },
+ }
+ _links:
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers",
+ "method": "GET",
+ },
+ }
+ 400:
+ description: Bad Request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ examples:
+ invalidDataTypeError:
+ summary: invalidDataTypeError
+ description: >-
+ The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
+ value:
+ type: https://htm.nl/api/v1/probs/bad-request
+ title: Your request contains an invalid datatype
+ detail: "'2023-02-01 00:00:00' is not a valid Datetime"
+ instance: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ post:
+ tags:
+ - Customer
+ summary: Create a customer profile
+ description: >-
+ Create a customer profile in the ABT database with status ACTIVE and
+ debtorStatus Inactive with a start date based on the timestamp of this
+ post call.
+
+ - Requested format for postal code:
+ - 0000AA
+ - Requested format for country:
+ - NL
+ parameters: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerProfile"
+ examples:
+ minimumProfile:
+ value: {}
+ basicCustomerProfile:
+ value:
+ debtorStatusId: 2
+ person:
+ birthname: Jan
+ surname: Jansen
+ emailAddress: j.jansen@hatseflats.nl
+ fullCustomerProfile:
+ value:
+ customerPreference:
+ languageId: 1
+ debtorStatusId: 2
+ person:
+ birthname: Jan
+ surname: Jansen
+ prefix: de
+ suffix: jr
+ dateOfBirth: "1970-01-01"
+ emailAddress: j.jansen@hatseflats.nl
+ addresses:
+ - street: Laan van Meerdervoort
+ houseNumber: 5
+ houseNumberSuffix: B
+ postalCode: 2500AA
+ city: Den Haag
+ country: NL
+ isPreferred: true
+ addressTypeId: 1
+ - street: Beeklaan
+ houseNumber: 30
+ houseNumberSuffix: B
+ postalCode: 2500AA
+ city: Den Haag
+ country: NL
+ isPreferred: false
+ addressTypeId: 2
+ phones:
+ - number: "6123456789"
+ countryCode: "+31"
+ phoneTypeId: 1
+ isPreferred: true
+ - number: "7012345678"
+ countryCode: "+31"
+ phoneTypeId: 2
+ isPreferred: false
+ required: true
+ responses:
+ 201:
+ description: Successful created a customer profile
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerProfileResponse"
+ examples:
+ customerProfileCreated:
+ summary: customerProfileCreated
+ description: >-
+ Successfully created a customer profile
+ value:
+ customerProfileId: 1
+ customerNumber: 1000001
+ debtorNumber: DB100001
+ 400:
+ description: Bad Request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ examples:
+ invalidDataTypeError:
+ summary: invalidDataTypeError
+ description: >-
+ The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
+ value:
+ type: https://htm.nl/api/v1/probs/bad-request
+ title: Your request contains an invalid datatype
+ detail: "'2023-02-01 00:00:00' is not a valid Datetime"
+ instance: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}:
+ patch:
+ tags:
+ - Customer
+ summary: Modify a customer element
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/customersEntity"
+ examples:
+ customer:
+ value:
+ debtorStatusId: 2
+ required: true
+ responses:
+ 201:
+ description: Successfully modified a customer
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/patchCustomerProfileResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}/customerStatusInstances:
+ post:
+ tags:
+ - Customer
+ summary: Create a new customer status element
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/customerStatusEntity"
+ examples:
+ customerStatus:
+ value:
+ customerStatus:
+ customerStatusId: 2
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer Status
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerStatusResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}/customerPreferences:
+ post:
+ tags:
+ - Customer
+ summary: Create a customer preference element
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/customerPreferencesEntity"
+ examples:
+ customerPreference:
+ value:
+ customerPreference:
+ languageId: 1
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer preference
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerPreferencesResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customerPreferences/{customerPreferenceId}:
+ patch:
+ tags:
+ - Customer
+ summary: Modify a customer preference element
+ description: >-
+
+ parameters:
+ - name: customerPreferenceId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/customerPreferencesEntity"
+ examples:
+ customerPreference:
+ value:
+ customerPreference:
+ languageId: 1
+ required: true
+ responses:
+ 200:
+ description: Successfully modified a customer preference
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/patchCustomerPreferencesResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}/addresses:
+ post:
+ tags:
+ - Customer address
+ summary: Add a customer address
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerAddress"
+ examples:
+ customerAddress:
+ value:
+ customerAddress:
+ addressTypeId: 1
+ street: Sesamstraat
+ houseNumber: 1
+ houseNumberSuffix: A
+ postalCode: 1234 AB
+ city: Den Haag
+ country: NL
+ isPreferred: true
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer address
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerProfileAddressResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /addresses/{addressId}:
+ patch:
+ tags:
+ - Customer address
+ summary: Edit a customer address
+ description: >-
+
+ parameters:
+ - name: addressId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/patchCustomerAddress"
+ examples:
+ updateAddressTypeId:
+ value:
+ address:
+ addressTypeId: 2
+ required: true
+ responses:
+ 200:
+ description: Successfully modified a customer Address
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postCustomerProfileAddressResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ delete:
+ tags:
+ - Customer address
+ summary: Delete a customer address
+ description: >-
+
+ parameters:
+ - name: addressId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ responses:
+ 200:
+ description: Successfully deleted a customer Address
+ content:
+ application/json: {}
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}/phones:
+ post:
+ tags:
+ - Customer phoneNumber
+ summary: Add a customer phonenumber
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/phoneEntity"
+ examples:
+ customerPhone:
+ value:
+ phone:
+ number: 0701112233
+ countryCode: 0031
+ phoneTypeId: 1
+ isPreferred: true
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer phonenumber
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postPhoneResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /phones/{phoneId}:
+ patch:
+ tags:
+ - Customer phoneNumber
+ summary: Edit a customer phonenumber
+ description: >-
+
+ parameters:
+ - name: phoneId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/phoneEntity"
+ examples:
+ updatePhoneTypeId:
+ value:
+ phone:
+ phoneTypeId: 2
+ required: true
+ responses:
+ 200:
+ description: Successfully modified a customer phonenumber
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postPhoneResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ delete:
+ tags:
+ - Customer phoneNumber
+ summary: Delete a customer phone
+ description: >-
+
+ parameters:
+ - name: phoneId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ responses:
+ 200:
+ description: Successfully deleted a customer phonenumber
+ content:
+ application/json: {}
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/ovpaytokens:
get:
tags:
- - Token
- summary: Find OVpay tokens.
- description: Find OVpay tokens.
+ - Ovpay Token
+ summary: Find ovpay tokens.
+ description: Find ovpay tokens.
parameters:
- in: query
name: ovPayTokenId
@@ -101,6 +1303,19 @@ paths:
example: 12
required: false
description: The id of the token that replaced this token.
+ - name: sort
+ in: query
+ schema:
+ type: string
+ - name: offset
+ in: query
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ schema:
+ type: integer
+ example: 20
responses:
200:
description: OK
@@ -127,8 +1342,491 @@ paths:
"replacedByTokenId": 12,
},
],
- "href": null,
+ "_links":
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/ovPayTokens?offset=20",
+ "method": "GET",
+ },
+ "prev":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/ovPayTokens",
+ "method": "GET",
+ },
+ "next":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/ovPayTokens?offset=40",
+ "method": "GET",
+ },
+ },
}
+ /customers/{customerProfileId}/ovpaytokens:
+ post:
+ tags:
+ - Ovpay Token
+ summary: Create a new ovpay token
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ovPayTokenEntity"
+ examples:
+ EMV token:
+ value:
+ ovpaytoken:
+ tokenTypeId: 1
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: Mijn Rabo Pas
+ tokenStatusId: 2
+ expirationDate: "2026-04-20T17:05:52.000+02:00"
+ OVpas token physical:
+ value:
+ ovpaytoken:
+ tokenTypeId: 2
+ xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
+ xBot: 71a88843-32b8-4d52-ac25-de2458c47775
+ alias: Mijn OV Pas
+ ovpasNumber: 4048453105891361
+ tokenStatusId: 2
+ expirationDate: "2026-04-20T17:05:52.000+02:00"
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer ovpaytoken
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postOvPayTokenResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /ovpaytokens/{ovpaytokenId}:
+ patch:
+ tags:
+ - Ovpay Token
+ summary: Update an ovpay token
+ description: >-
+
+ parameters:
+ - name: ovpaytokenId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ovPayTokenEntity"
+ examples:
+ updateTokenAlias:
+ value:
+ ovpaytoken:
+ alias: "ING pas mobiel"
+ updateTokenStatus to removed:
+ value:
+ ovpaytoken:
+ tokenStatusId: 6
+ replaceToken:
+ value:
+ ovpaytoken:
+ tokenStatusId: 3
+ replacedByTokenId: 8
+ required: true
+ responses:
+ 200:
+ description: Successfully updated a customer ovpaytoken
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postOvPayTokenResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ delete:
+ tags:
+ - Ovpay Token
+ summary: Delete an ovpay token
+ description: >-
+
+ parameters:
+ - name: ovpaytokenId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ responses:
+ 200:
+ description: Successfully deleted a customer ovpaytoken
+ content:
+ application/json: {}
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /customers/{customerProfileId}/ovchipcards:
+ post:
+ tags:
+ - Ovchipcard
+ summary: Create a new ovchipcard
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ovChipcardEntity"
+ examples:
+ ovChipcards:
+ value:
+ ovChipcard:
+ chipCardNumber: 1234123412341234
+ validUntil: "2027-01-01"
+ alias: Mijn chipkaart
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer ovchipcard
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postOvChipCardResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /ovchipcards/{ovchipcardId}:
+ patch:
+ tags:
+ - Ovchipcard
+ summary: Update an ovchipcard
+ description: >-
+
+ parameters:
+ - name: ovchipcardId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ovChipcardEntity"
+ examples:
+ updateOvChipCardAlias:
+ value:
+ ovChipCard:
+ alias: "Zoon 1 chipkaart"
+ required: true
+ responses:
+ 200:
+ description: Successfully updated a customer ovchipcard
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postOvChipCardResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ delete:
+ tags:
+ - Ovchipcard
+ summary: Delete an ovchipcard
+ description: >-
+
+ parameters:
+ - name: ovchipcardId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 2
+ responses:
+ 200:
+ description: Successfully deleted a customer ovchipcard
+ content:
+ application/json: {}
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /billingInformations:
+ get:
+ tags:
+ - Billing Information
+ summary: Find billing information
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: query
+ schema:
+ type: integer
+ example: 1
+ - name: issuerCountry
+ in: query
+ schema:
+ type: string
+ example: "NL"
+ - name: iban
+ in: query
+ schema:
+ type: string
+ example: "NL73RABO2677424363"
+ - name: bic
+ in: query
+ schema:
+ type: string
+ example: "GHJZIEJSKVM"
+ - name: ascription
+ in: query
+ schema:
+ type: string
+ example: "J. Doe"
+ - name: alias
+ in: query
+ schema:
+ type: string
+ example: "John's billing details"
+ - name: billingAddressID
+ in: query
+ schema:
+ type: integer
+ example: 1
+ - name: sort
+ in: query
+ schema:
+ type: string
+ - name: offset
+ in: query
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ schema:
+ type: integer
+ example: 20
+ responses:
+ 200:
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/unavailable"
+ examples:
+ getBillingInformationMultipleSpecificCustomer:
+ summary: Get multiple billing information entities for a specific customers
+ description: >-
+ Found multiple billing informations matching the search parameters
+ value:
+ {
+ "billingInformations":
+ [
+ {
+ "billingInformationId": 1,
+ "customerProfileId": 1,
+ "issuerCountry": "NL",
+ "iban": "NL06RABO8902022560",
+ "ascription": "J. Doe",
+ "alias": null,
+ "billingAddressId": 3,
+ },
+ {
+ "billingInformationId": 2,
+ "customerProfileId": 1,
+ "issuerCountry": "NL",
+ "iban": "NL27ABNA4458972219",
+ "bic": "GHJZIEJSKVM",
+ "ascription": "J. Doe",
+ "alias": "John's billing details",
+ "billingAddressId": 4,
+ },
+ ],
+ }
+ getBillingInformationSingleSpecificCustomer:
+ summary: Get singel billing information entity for a specific customers
+ description: >-
+ Found one billing information matching the search parameters
+ value:
+ {
+ "billingInformations":
+ [
+ {
+ "billingInformationId": 1,
+ "customerProfileId": 1,
+ "issuerCountry": "NL",
+ "iban": "NL06RABO8902022560",
+ "ascription": "J. Doe",
+ "alias": null,
+ "billingAddressId": 3,
+ },
+ ],
+ }
+ getBillingInformationIssuerCountry:
+ summary: Get multiple billing information entities for a specific issuer country
+ description: >-
+ Found multiple billing informations matching the search parameters
+ value:
+ {
+ "billingInformations":
+ [
+ {
+ "billingInformationId": 1,
+ "customerProfileId": 1,
+ "issuerCountry": "NL",
+ "iban": "NL06RABO8902022560",
+ "ascription": "J. Doe",
+ "alias": null,
+ "billingAddressId": 3,
+ },
+ {
+ "billingInformationId": 2,
+ "customerProfileId": 5,
+ "issuerCountry": "NL",
+ "iban": "NL27ABNA4458972219",
+ "bic": "GHJZIEJSKVM",
+ "ascription": "J. Doe",
+ "alias": null,
+ "billingAddressId": 42,
+ },
+ {
+ "billingInformationId": 11,
+ "customerProfileId": 9,
+ "issuerCountry": "NL",
+ "iban": "NL27ABNA4458972219",
+ "bic": "GHJZIEJSKVM",
+ "ascription": "J. Doe",
+ "alias": null,
+ "billingAddressId": 84,
+ },
+ ],
+ }
+ /customers/{customerProfileId}/billingInformations:
+ post:
+ tags:
+ - Billing Information
+ summary: Add billing information for a customer
+ description: >-
+
+ parameters:
+ - name: customerProfileId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/billingInformationEntity"
+ examples:
+ customerBillinginformationMandatoryFields:
+ value:
+ billingInformation:
+ issuerCountry: "NL"
+ iban: "NL73RABO2677424363"
+ ascription: "J. Doe"
+ billingAddressId: 1
+ customerBillinginformationMandatoryFull:
+ value:
+ billingInformation:
+ issuerCountry: "NL"
+ iban: "NL73RABO2677424363"
+ bic: "GHJZIEJSKVM"
+ ascription: "J. Doe"
+ alias: "John's billing details"
+ billingAddressId: 1
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer billingInformation
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postBillingInformationResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /billingInformations/{billingInformationId}:
+ patch:
+ tags:
+ - Billing Information
+ summary: Update a billing information
+ description: >-
+
+ parameters:
+ - name: billingInformationId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/billingInformationEntity"
+ examples:
+ updateBillingInformationAlias:
+ value:
+ billingInformation:
+ alias: "Mijn rekening details"
+ updateBillingInformationAdressId:
+ value:
+ billingInformation:
+ billingAddressId: 4
+ updateBillingInformation:
+ value:
+ billingInformation:
+ alias: "Mijn rekening details"
+ billingAddressId: 4
+ required: true
+ responses:
+ 200:
+ description: Successfully updated a customer billing information
+ content:
+ application/json:
+ example:
+ {
+ "billingInformationId": 1,
+ "customerProfileId": 1,
+ "issuerCountry": "NL",
+ "iban": "NL06RABO8902022560",
+ "ascription": "J. Doe",
+ "alias": "Mijn rekening details",
+ "billingAddressId": 4,
+ }
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/directdebitmandates:
get:
tags:
@@ -223,6 +1921,19 @@ paths:
example: 2020-01-01T00:00:00
required: false
description: Filter on updated after.
+ - name: sort
+ in: query
+ schema:
+ type: string
+ - name: offset
+ in: query
+ schema:
+ type: integer
+ - name: limit
+ in: query
+ schema:
+ type: integer
+ example: 20
responses:
200:
description: OK
@@ -230,30 +1941,182 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
+ examples:
+ getDirectDebitMandateWithNextPage:
+ value:
+ {
+ "directDebitMandates":
+ [
+ {
+ "directDebitMandateId": 71,
+ "customerProfileId": 12,
+ "billingInformationId": 51,
+ "directDebitMandateType":
+ {
+ "directDebitMandateTypeId": 1,
+ "name": "import",
+ "description": "import",
+ },
+ "mandateAddressId": 21,
+ "created": "2024-03-22T08:55:00",
+ "mandateReference": "CORE01",
+ "mandateState": "SINGED",
+ "updateTimestamp": "2024-03-22T08:55:00",
+ },
+ ],
+ "_links":
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates",
+ "method": "GET",
+ },
+ "next":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates?offset=20",
+ "method": "GET",
+ },
+ },
+ }
+ getDirectDebitMandateWithNextPageandPreviousPage:
+ value:
+ {
+ "directDebitMandates":
+ [
+ {
+ "directDebitMandateId": 71,
+ "customerProfileId": 12,
+ "billingInformationId": 51,
+ "directDebitMandateType":
+ {
+ "directDebitMandateTypeId": 1,
+ "name": "import",
+ "description": "import",
+ },
+ "mandateAddressId": 21,
+ "created": "2024-03-22T08:55:00",
+ "mandateReference": "CORE01",
+ "mandateState": "SINGED",
+ "updateTimestamp": "2024-03-22T08:55:00",
+ },
+ ],
+ "_links":
+ {
+ "self":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates?offset=20",
+ "method": "GET",
+ },
+ "prev":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates",
+ "method": "GET",
+ },
+ "next":
+ {
+ "href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates?offset=40",
+ "method": "GET",
+ },
+ },
+ }
+ /billingInformation/{billingInformationId}/directdebitmandates:
+ post:
+ tags:
+ - Mandates
+ summary: Add a customer direct debit mandate
+ description: >-
+
+ parameters:
+ - name: billingInformationId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/mandateEntity"
+ examples:
+ customerDirectDebitMandatePrepared:
+ value:
+ directDebitMandate:
+ directDebitMandateTypeId: 1
+ mandateAddressId: 1
+ mandateReference: HTM-mandate-001
+ mandateState: PREPARED
+ required: true
+ responses:
+ 201:
+ description: Successfully created a customer mandate
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/postDirectDebitMandateResponse"
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /directdebitmandates/{directdebitmandateId}:
+ patch:
+ tags:
+ - Mandates
+ summary: Update a customer direct debit mandate
+ description: >-
+
+ parameters:
+ - name: directdebitmandateId
+ in: path
+ required: true
+ schema:
+ type: integer
+ example: 1
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/mandateEntity"
+ examples:
+ customerDirectDebitMandateCancelled:
+ value:
+ directDebitMandate:
+ mandateState: CANCELLED
+ required: true
+ responses:
+ 200:
+ description: Successfully updated a customer mandate
+ content:
+ application/json:
example:
- [
- {
- "directDebitMandateId": 71,
- "customerProfileId": 12,
- "billingInformationId": 51,
- "directDebitMandateType": {
+ {
+ "directDebitMandateId": 1,
+ "customerProfileId": 12,
+ "billingInformationId": 51,
+ "directDebitMandateType":
+ {
"directDebitMandateTypeId": 1,
"name": "import",
- "description": "import"
+ "description": "import",
},
- "mandateAddressId": 21,
- "created": "2024-03-22T08:55:00",
- "mandateReference": "CORE01",
- "mandateState": "SINGED",
- "updateTimestamp": "2024-03-22T08:55:00"
- },
- ]
+ "mandateAddressId": 21,
+ "created": "2024-03-22T08:55:00",
+ "mandateReference": "CORE01",
+ "mandateState": "CANCELLED",
+ "updateTimestamp": "2025-03-22T08:55:00",
+ }
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
components:
securitySchemes:
- bearerToken:
- type: http
- scheme: bearer
- bearerFormat: JWT
+ default:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: https://services.acc.api.htm.nl/authorize
+ scopes: {}
schemas:
unavailable:
type: object
@@ -283,3 +2146,530 @@ components:
example:
- /account/12345
- /account/67890
+ getAuditTrails:
+ type: object
+ properties:
+ auditTrailId:
+ type: integer
+ customerProfileId:
+ type: integer
+ action:
+ type: string
+ user:
+ type: string
+ timestamp:
+ type: string
+ format: datetime
+ correlationId:
+ type: string
+ getOvPayTokens:
+ type: object
+ properties:
+ ovPayTokenId:
+ type: integer
+ tokenTypeId:
+ type: integer
+ xTat:
+ type: string
+ xBot:
+ type: string
+ alias:
+ type: string
+ lastDigits:
+ type: integer
+ ovpasNumber:
+ type: string
+ tokenStatusId:
+ type: integer
+ expirationDate:
+ type: string
+ replacedByTokenId:
+ type: integer
+ getOvChipcards:
+ type: object
+ properties:
+ ovChipCardId:
+ type: integer
+ chipCardNumber:
+ type: integer
+ validUntil:
+ type: string
+ format: date
+ alias:
+ type: string
+ getCustomerStatusInstance:
+ type: object
+ properties:
+ customerStatus:
+ $ref: "#/components/schemas/getCustomerStatus"
+ fromInclusive:
+ type: string
+ format: date
+ toInclusive:
+ type: string
+ format: date
+ getCustomerStatus:
+ type: object
+ properties:
+ customerStatusId:
+ type: integer
+ name:
+ type: string
+ getDebtorStatus:
+ type: object
+ properties:
+ debtorStatusId:
+ type: integer
+ name:
+ type: string
+ getPerson:
+ type: object
+ properties:
+ birthname:
+ type: string
+ description: voornaam
+ surname:
+ type: string
+ description: achternaam
+ prefix:
+ type: string
+ description: tussenvoegsel
+ suffix:
+ type: string
+ description: achtervoegsel
+ dateOfBirth:
+ type: string
+ format: date
+ emailAddresses:
+ type: string
+ format: email
+ addresses:
+ type: array
+ items:
+ $ref: "#/components/schemas/getAddresses"
+ phones:
+ type: array
+ items:
+ $ref: "#/components/schemas/getPhones"
+ getAddresses:
+ type: object
+ properties:
+ addressId:
+ type: integer
+ street:
+ type: string
+ houseNumber:
+ type: integer
+ houseNumberSuffix:
+ type: string
+ postalCode:
+ type: string
+ city:
+ type: string
+ country:
+ type: string
+ isPreferred:
+ type: boolean
+ addressType:
+ $ref: "#/components/schemas/getAddressType"
+ getAddressType:
+ type: object
+ properties:
+ addressTypeId:
+ type: integer
+ name:
+ type: string
+ getPhones:
+ type: object
+ properties:
+ phoneId:
+ type: integer
+ number:
+ type: string
+ countryCode:
+ type: string
+ phoneType:
+ $ref: "#/components/schemas/getPhoneType"
+ isPreferred:
+ type: boolean
+ getPhoneType:
+ type: object
+ properties:
+ phoneTypeId:
+ type: integer
+ name:
+ type: string
+ getCustomerPreference:
+ type: object
+ properties:
+ language:
+ $ref: "#/components/schemas/getCustomerLanguage"
+ getCustomerLanguage:
+ type: object
+ properties:
+ languageId:
+ type: integer
+ name:
+ type: string
+ ietfCode:
+ type: string
+ iso639Code:
+ type: string
+ getCustomerProfiles:
+ type: object
+ properties:
+ customers:
+ type: array
+ items:
+ $ref: "#/components/schemas/getCustomerProfile"
+ getCustomerProfile:
+ type: object
+ properties:
+ customerNumber:
+ type: integer
+ debtorNumber:
+ type: integer
+ debtorStatus:
+ $ref: "#/components/schemas/getDebtorStatus"
+ vasCustomerNumber:
+ type: integer
+ customerPreference:
+ $ref: "#/components/schemas/getCustomerPreference"
+ customerStatusInstances:
+ type: array
+ items:
+ $ref: "#/components/schemas/getCustomerStatusInstance"
+ person:
+ $ref: "#/components/schemas/getPerson"
+ ovChipcards:
+ type: array
+ items:
+ $ref: "#/components/schemas/getOvChipcards"
+ ovPayTokens:
+ type: array
+ items:
+ $ref: "#/components/schemas/getOvPayTokens"
+ auditTrails:
+ type: array
+ items:
+ $ref: "#/components/schemas/getAuditTrails"
+ addressPostEntity:
+ required:
+ - addressTypeId
+ - city
+ - country
+ - houseNumber
+ - postalCode
+ - street
+ type: object
+ properties:
+ street:
+ type: string
+ houseNumber:
+ type: integer
+ houseNumberSuffix:
+ type: string
+ postalCode:
+ type: string
+ city:
+ type: string
+ country:
+ type: string
+ isPreferred:
+ type: boolean
+ addressTypeId:
+ type: integer
+ postPhoneEntity:
+ required:
+ - countryCode
+ - number
+ - phoneTypeId
+ type: object
+ properties:
+ number:
+ type: string
+ countryCode:
+ type: string
+ phoneTypeId:
+ type: integer
+ isPreferred:
+ type: boolean
+ phoneEntity:
+ type: object
+ properties:
+ number:
+ type: string
+ countryCode:
+ type: string
+ phoneTypeId:
+ type: integer
+ isPreferred:
+ type: boolean
+ defaultCustomerProfileResponse:
+ type: object
+ properties:
+ customerNumber:
+ type: integer
+ example: 10000001
+ postCustomerProfile:
+ type: object
+ properties:
+ debtorStatusId:
+ type: integer
+ customerPreference:
+ $ref: "#/components/schemas/customerPreferencesEntity"
+ person:
+ $ref: "#/components/schemas/personEntity"
+ addresses:
+ type: array
+ items:
+ $ref: "#/components/schemas/addressPostEntity"
+ phones:
+ type: array
+ items:
+ $ref: "#/components/schemas/postPhoneEntity"
+ postCustomerAddress:
+ type: object
+ properties:
+ street:
+ type: string
+ houseNumber:
+ type: integer
+ houseNumberSuffix:
+ type: string
+ postalCode:
+ type: string
+ city:
+ type: string
+ country:
+ type: string
+ isPreferred:
+ type: boolean
+ addressType:
+ type: integer
+ patchCustomerAddress:
+ type: object
+ properties:
+ street:
+ type: string
+ houseNumber:
+ type: integer
+ houseNumberSuffix:
+ type: string
+ postalCode:
+ type: string
+ city:
+ type: string
+ country:
+ type: string
+ isPreferred:
+ type: boolean
+ addressType:
+ type: integer
+ postCustomerProfileResponse:
+ type: object
+ properties:
+ customerNumber:
+ type: integer
+ example: 10000001
+ customerProfileId:
+ type: integer
+ example: 1
+ postCustomerProfileAddressResponse:
+ type: object
+ properties:
+ customerProfileId:
+ type: integer
+ example: 1
+ addressId:
+ type: integer
+ example: 3
+ postPhoneResponse:
+ type: object
+ properties:
+ phoneId:
+ type: integer
+ example: 2
+ postBillingInformationResponse:
+ type: object
+ properties:
+ billingInformationId:
+ type: integer
+ example: 1
+ postDirectDebitMandateResponse:
+ type: object
+ properties:
+ directDebitMandateId:
+ type: integer
+ example: 1
+ postOvChipCardResponse:
+ type: object
+ properties:
+ ovChipCardId:
+ type: integer
+ example: 1
+ patchCustomerProfileResponse:
+ type: object
+ properties:
+ customerProfileId:
+ type: integer
+ example: 1
+ postCustomerStatusResponse:
+ type: object
+ properties:
+ customerPreferenceId:
+ type: integer
+ example: 1
+ postCustomerPreferencesResponse:
+ type: object
+ properties:
+ customerPreferenceId:
+ type: integer
+ example: 1
+ patchCustomerPreferencesResponse:
+ type: object
+ properties:
+ customerPreferenceId:
+ type: integer
+ example: 1
+ customerLanguageId:
+ type: integer
+ example: 1
+ getCustomerProfileOvPayTokenResponse:
+ type: object
+ properties:
+ ovPayToken:
+ type: array
+ items:
+ $ref: "#/components/schemas/ovPayTokenEntity"
+ customerPreferencesEntity:
+ type: object
+ properties:
+ customerPreferenceId:
+ type: integer
+ languageId:
+ type: integer
+ customerStatusEntity:
+ type: object
+ properties:
+ customerStatusId:
+ type: integer
+ customersEntity:
+ type: object
+ properties:
+ debtorStatusId:
+ type: integer
+ billingInformationEntity:
+ type: object
+ properties:
+ billingInformationId:
+ type: integer
+ issuerCountry:
+ type: string
+ iban:
+ type: string
+ bic:
+ type: string
+ ascription:
+ type: string
+ alias:
+ type: string
+ billingAddressId:
+ type: integer
+ mandateEntity:
+ type: object
+ properties:
+ directDebitMandateId:
+ type: integer
+ directDebitMandateTypeId:
+ type: integer
+ mandateAddressId:
+ type: integer
+ mandateReference:
+ type: string
+ mandateState:
+ type: string
+ ovPayTokenEntity:
+ type: object
+ properties:
+ ovPayTokenId:
+ type: integer
+ tokenType:
+ type: object
+ properties:
+ tokenTypeId:
+ type: string
+ name:
+ type: string
+ xTat:
+ type: string
+ xBot:
+ type: string
+ alias:
+ type: string
+ lastDigits:
+ type: integer
+ ovpasNumber:
+ type: string
+ tokenStatus:
+ type: object
+ properties:
+ tokenStatusId:
+ type: integer
+ name:
+ type: string
+ expirationDate:
+ type: string
+ replacedByTokenId:
+ type: integer
+ ovChipcardEntity:
+ type: object
+ properties:
+ ovChipCardId:
+ type: integer
+ chipCardNumber:
+ type: integer
+ validUntil:
+ type: string
+ format: date
+ alias:
+ type: string
+ personEntity:
+ type: object
+ properties:
+ personId:
+ type: integer
+ birthname:
+ type: string
+ description: voornaam
+ surname:
+ type: string
+ description: achternaam
+ prefix:
+ type: string
+ description: tussenvoegsel
+ suffix:
+ type: string
+ description: achtervoegsel
+ dateOfBirth:
+ type: string
+ format: date
+ emailAddress:
+ type: string
+ postOvPayTokenResponse:
+ type: object
+ properties:
+ ovPayTokenId:
+ type: integer
+ example: 1
+ ErrorResponse:
+ type: object
+ properties:
+ type:
+ type: string
+ title:
+ type: string
+ detail:
+ type: string
+ instance:
+ type: string
diff --git a/src/openapi/fiko/fiko-crud.yaml b/src/openapi/fiko/fiko-crud.yaml
index 33fb229..bfc55cd 100644
--- a/src/openapi/fiko/fiko-crud.yaml
+++ b/src/openapi/fiko/fiko-crud.yaml
@@ -8,12 +8,12 @@ info:
servers:
- url: https://api.integratielaag.nl/fiko/1.0
paths:
- /transactionitems:
+ /Odata/TransactionItem:
get:
- summary: P1. Find transaction items.
+ summary: Find transaction items.
description: Find transaction items.
tags:
- - Transactions v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -91,16 +91,19 @@ paths:
summary: No transaction items were found
description: No transaction items that match the search criteria were found.
value:
- transactionItems: []
- href: null
+ "@odata.context": "$metadata#TransactionItem"
+ value: []
List containing multiple sales transaction items:
summary: List containing multiple sales transaction items
description: List containing multiple sales transaction items of transaction type 'sales' with different statuses.
value:
- transactionItems:
- - transactionItemId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ "@odata.context": "$metadata#TransactionItem"
+ value:
+ - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
+ transactionItemRowId: 3231
+ transactionItemId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
name: HTM Maandkorting 20%
@@ -115,9 +118,11 @@ paths:
status: created
aggregationReference: null
accountingSystemReference: null
- - transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
+ - "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
+ transactionItemRowId: 3232
+ transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1002001
transactionLineId: 1
name: Reisproduct HTM 3 dag Anoniem
@@ -132,9 +137,11 @@ paths:
status: failed
aggregationReference: null
accountingSystemReference: null
- - transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
+ - "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
+ transactionItemRowId: 3233
+ transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001871
transactionLineId: 1
name: Reisproduct HTM 3 dag Anoniem
@@ -149,9 +156,11 @@ paths:
status: returned to src
aggregationReference: FIKO-171f40609e
accountingSystemReference: null
- - transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
+ - "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
+ transactionItemRowId: 3234
+ transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001131
transactionLineId: 1
name: Reisproduct HTM 3 dag Anoniem
@@ -166,9 +175,11 @@ paths:
status: returned to trx-db
aggregationReference: null
accountingSystemReference: null
- - transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
+ - "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
+ transactionItemRowId: 3235
+ transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001885
transactionLineId: 1
name: Reisproduct HTM 3 dag Anoniem
@@ -183,9 +194,11 @@ paths:
status: re-entered
aggregationReference: null
accountingSystemReference: null
- - transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
+ - "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
+ transactionItemRowId: 3236
+ transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001679
transactionLineId: 1
name: Reisproduct HTM 1 dag Anoniem
@@ -200,7 +213,11 @@ paths:
status: succeeded
aggregationReference: FIKO-6a4fca8cd6
accountingSystemReference: U4F-123456
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /transactionitems:
post:
summary: P1. Add one ore more finanicial transaction items in bulk.
description: Add one ore more finanicial transaction items in bulk.
@@ -219,7 +236,7 @@ paths:
value:
transactionItems:
- transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
name: HTM Maandkorting 20%
@@ -237,7 +254,7 @@ paths:
value:
transactionItems:
- transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
name: HTM Maandkorting 20%
@@ -250,7 +267,7 @@ paths:
type: debit
articleNumber: 4031
- transactionType: sales
- sourceName: Verkoopengine
+ sourceName: HTM-website
transactionId: 1001237
transactionLineId: 1
name: HTM Maandkorting 20%
@@ -282,6 +299,10 @@ paths:
clientTrackingId: 08584620957189579629541919368CU00
callbackurl: https://api.integratielaag.nl/transactionitems/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
retryAfter: 10
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/transactionitems/{transactionItemId}:
parameters:
- in: path
@@ -337,6 +358,10 @@ paths:
description: The transaction item was successfully updated in the database.
value:
transactionItemId: 7c3a5b0f-b89e-4f02-8b09-d11c5a050a07
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/transactionitems/responsestatus/{clientTrackingId}:
get:
tags:
@@ -391,6 +416,10 @@ paths:
pointer: "#/transactionItems/0"
transactionId: 1ad109d3-fd7d-4b6f-872b-220d492f385f
transactionLineId: fee907dd-e59d-44f5-a63b-bbdec38f79b7
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/transactionitems/{transactionItemId}/processingfailures:
parameters:
- in: path
@@ -439,6 +468,10 @@ paths:
description: The processing failure was successfully added to the database.
value:
processingFailureId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/transactionitems/{transactionItemId}/transactionaudittrails:
parameters:
- in: path
@@ -496,12 +529,16 @@ paths:
The transactionAuditTrailId is returned as a reference for the consumer.
value:
transactionAuditTrailId: 37a8095b-19db-498f-9349-5f37d21c5bdf
- /transactionaudittrails:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/TransactionAuditTrail:
get:
- summary: P3. Find audit trail entries.
+ summary: Find audit trail entries.
description: Find audit trail entries.
tags:
- - Audit Trail v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -568,18 +605,21 @@ paths:
schema:
$ref: "#/components/schemas/TransactionAuditTrailsGetResponseBody"
examples:
- No transaction items:
+ No transaction item audit trails:
summary: No transaction audit trails were found
description: No transaction audit trails that match the search criteria were found.
value:
- transactionAuditTrails: []
- href: null
+ "@odata.context": "$metadata#TransactionAuditTrail"
+ value: []
List containing multiple transaction audit trails:
summary: List containing multiple transaction audit trails
description: List containing multiple transaction audit trails of different transaction items (no filters applied).
value:
- transactionAuditTrails:
- - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ "@odata.context": "$metadata#TransactionAuditTrail"
+ value:
+ - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
+ transactionAuditTrailRowId: 8218
+ transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: fiko
timestamp: 2025-01-01 12:34:51
@@ -587,7 +627,9 @@ paths:
status: created
description: Transaction created.
correlationId: null
- - transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
+ - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
+ transactionAuditTrailRowId: 8219
+ transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
user: fiko
timestamp: 2025-01-01 12:34:50
@@ -595,7 +637,9 @@ paths:
status: created
description: Transaction created.
correlationId: null
- - transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
+ - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
+ transactionAuditTrailRowId: 8220
+ transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd
user: ad.vogelaar
timestamp: 2025-01-01 12:34:48
@@ -603,7 +647,9 @@ paths:
status: return to src
description: Transaction retunred to source.
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
- - transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
+ - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
+ transactionAuditTrailRowId: 8221
+ transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b
user: fiko
timestamp: 2025-01-01 12:34:47
@@ -611,13 +657,15 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- href: null
? List containing multiple transaction audit trails of one transaction item
: summary: List containing multiple audit trails of one transaction item
description: List containing multiple audit trail records of one transaction item (with id `d667d293-aa82-4c9e-9b10-77cffc9058a1`).
value:
- transactionAuditTrails:
- - transactionAuditTrailId: d571ff7c-eaa5-428a-9bc3-5a0fa3e5ee2e
+ "@odata.context": "$metadata#TransactionAuditTrail"
+ value:
+ - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
+ transactionAuditTrailRowId: 8218
+ transactionAuditTrailId: d571ff7c-eaa5-428a-9bc3-5a0fa3e5ee2e
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: fiko
timestamp: 2025-01-07 12:34:59
@@ -625,7 +673,9 @@ paths:
status: re-entered
description: Transaction re-entered.
correlationId: null
- - transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
+ - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
+ transactionAuditTrailRowId: 8219
+ transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: ad.vogelaar
timestamp: 2025-01-04 12:34:54
@@ -633,7 +683,9 @@ paths:
status: return to src
description: Transaction retunred to source.
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
- - transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
+ - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
+ transactionAuditTrailRowId: 8220
+ transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: fiko
timestamp: 2025-01-02 00:34:50
@@ -641,7 +693,9 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
+ transactionAuditTrailRowId: 8221
+ transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: fiko
timestamp: 2025-01-01 12:34:47
@@ -649,13 +703,15 @@ paths:
status: created
description: Transaction created.
correlationId: null
- href: null
- List containing multiple audit trails of failed transactions:
- summary: List containing multiple audit trails of failed transactions
- description: List containing multiple audit trails of just failed transactions (status = failed).
+ ? List containing multiple audit trails of different failed transactions
+ : summary: List containing multiple audit trails of different failed transactions
+ description: List containing multiple audit trails of different failed transactions (status = failed).
value:
- transactionAuditTrails:
- - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ "@odata.context": "$metadata#TransactionAuditTrail"
+ value:
+ - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
+ transactionAuditTrailRowId: 8218
+ transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
user: fiko
timestamp: 2025-01-01 00:34:51
@@ -663,7 +719,9 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- - transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
+ - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
+ transactionAuditTrailRowId: 8219
+ transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
user: fiko
timestamp: 2025-01-01 00:34:50
@@ -671,7 +729,9 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- - transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
+ - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
+ transactionAuditTrailRowId: 8220
+ transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd
user: fiko
timestamp: 2025-01-01 00:34:48
@@ -679,7 +739,9 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- - transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
+ - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
+ transactionAuditTrailRowId: 8221
+ transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b
user: fiko
timestamp: 2025-01-01 00:34:47
@@ -687,13 +749,16 @@ paths:
status: failed
description: Validation XYZ failed.
correlationId: null
- href: null
- /processingfailures:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/ProcessingFailure:
get:
- summary: P1.Find processing failures.
+ summary: Find processing failures.
description: Find processing failures.
tags:
- - Failures v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -764,12 +829,12 @@ paths:
schema:
$ref: "#/components/schemas/ProcessingFailuresGetResponseBody"
examples:
- No processing failures:
- summary: No processing failures
+ No processing failures were found:
+ summary: No processing failures were found
description: No processing failures were found (for example for a single transaction item).
value:
- processingFailures: []
- href: null
+ "@odata.context": "$metadata#ProcessingFailure"
+ value: []
Multiple processing failures for a single transaction item:
summary: Multiple processing failures for a single transaction item
description: |
@@ -778,8 +843,11 @@ paths:
the first failure has two validation errors, which have been resolved, and the second failure
hasn't been. Which makes three processing failures total.
value:
- processingFailures:
- - processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ "@odata.context": "$metadata#ProcessingFailure"
+ value:
+ - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
+ processingFailureRowId: 9
+ processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf
transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
timestamp: 2022-01-01 00:00:00
element: costType
@@ -788,7 +856,9 @@ paths:
reasonDescription: Cost type does not exist.
resolved: false
change: null
- - processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
+ - "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
+ processingFailureRowId: 10
+ processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
timestamp: 2025-01-01 00:43:01
element: costCenter
@@ -797,7 +867,9 @@ paths:
reasonDescription: Cost center does not exist.
resolved: true
change: Adapt config
- - processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
+ - "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
+ processingFailureRowId: 11
+ processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
timestamp: 2025-01-01 00:43:01
element: department
@@ -806,15 +878,17 @@ paths:
reasonDescription: Department does not exist.
resolved: true
change: Adapt config
- href: null
List of unfiltered processing failures:
summary: List of unfiltered processing failures
description: |
In this example there is a list of processing failures where no filters have been applied.
This results in a list of all processing failures, for different transaction items.
value:
- processingFailures:
- - processingFailureId: 1d0f237e-5fbe-4107-8bdf-a41f43307ac0
+ "@odata.context": "$metadata#ProcessingFailure"
+ value:
+ - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
+ processingFailureRowId: 9
+ processingFailureId: 1d0f237e-5fbe-4107-8bdf-a41f43307ac0
transactionItemId: d0425652-07a3-4b95-bb37-8bb15ea1b9b5
timestamp: 2022-01-01 00:00:00
element: occuredOn
@@ -823,7 +897,9 @@ paths:
reasonDescription: Transaction date is in the future
resolved: false
change: null
- - processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
+ - "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
+ processingFailureRowId: 10
+ processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
transactionItemId: 3f0a8a74-c642-441e-a187-d32fedb77fdf
timestamp: 2025-01-01 00:43:01
element: costCenter
@@ -832,7 +908,9 @@ paths:
reasonDescription: Cost center does not exist.
resolved: false
change: null
- - processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
+ - "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
+ processingFailureRowId: 11
+ processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
transactionItemId: 446ad396-41f6-4c1f-942c-a131e620075d
timestamp: 2025-01-01 00:43:01
element: department
@@ -841,7 +919,10 @@ paths:
reasonDescription: Department does not exist.
resolved: false
change: null
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/processingfailures/{processingFailureId}:
parameters:
- in: path
@@ -884,12 +965,16 @@ paths:
description: The processing failure has been updated successfully.
value:
processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf
- /bookingprocesses:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/BookingProcess:
get:
- summary: P1. Find booking processes.
+ summary: Find booking processes.
description: Find booking processes.
tags:
- - Booking Processes v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -941,16 +1026,25 @@ paths:
summary: List containing all booking processes
description: Returns a list containing all booking processes (no filters applied).
value:
- bookingProcesses:
- - bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ "@odata.context": "$metadata#BookingProcess"
+ value:
+ - "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
+ bookingProcessRowId: 10
+ bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
name: Verkooptransacties
transactionType: sales
identifyingFieldName: articleNumber
- - bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26
+ - "@odata.etag": 97c65a01-f5ac-4081-b731-137622c4630d
+ bookingProcessRowId: 11
+ bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26
name: Inkooptransacties
transactionType: purchase
identifyingFieldName: null
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /bookingprocesses:
post:
summary: P2. Add a booking process.
description: Add a booking process.
@@ -984,6 +1078,10 @@ paths:
description: The new booking process was successfully added to the database.
value:
bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookingprocesses/{bookingProcessId}:
parameters:
- in: path
@@ -1025,6 +1123,10 @@ paths:
description: The booking process was successfully updated in the database.
value:
bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookingprocesses/{bookingProcessId}/bookingmetadata:
parameters:
- in: path
@@ -1075,12 +1177,16 @@ paths:
description: The new booking metadata was successfully added to the database.
value:
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- /bookingmetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/BookingMetadata:
get:
- summary: P1. Find booking metadata.
+ summary: Find booking metadata.
description: Find booking metadata.
tags:
- - Booking Processes v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -1161,8 +1267,11 @@ paths:
summary: List containing all booking metadata
description: Returns a list containing all booking metadata (no filters applied).
value:
- bookingMetadata:
- - bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ "@odata.context": "$metadata#BookingMetadata"
+ value:
+ - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
+ bookingMetadataRowId: 13
+ bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
description: Dagkaart
department: 900
@@ -1174,7 +1283,9 @@ paths:
hasLinePerConcession: true
validFrom: 2022-01-01 00:00:00
validUntil: null
- - bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
+ - "@odata.etag": 2fc41131-e875-4365-b4b4-f5babc7349b1
+ bookingMetadataRowId: 14
+ bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
description: Saldoreizen
department: 900
@@ -1186,7 +1297,10 @@ paths:
hasLinePerConcession: true
validFrom: 2022-01-01 00:00:00
validUntil: null
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookingmetadata/{bookingMetadataId}:
parameters:
- in: path
@@ -1228,6 +1342,10 @@ paths:
description: The booking metadata was successfully updated in the database.
value:
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookingmetadata/{bookingMetadataId}/bookinggroupfields:
parameters:
- in: path
@@ -1268,6 +1386,10 @@ paths:
description: The new booking group field was successfully added to the database.
value:
bookingGroupFieldId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookingmetadata/{bookingMetadataId}/bookinglinemetadata:
parameters:
- in: path
@@ -1339,12 +1461,16 @@ paths:
description: The new booking line metadata was successfully added to the database.
value:
bookingLineMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- /bookinggroupfields:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/BookingGroupField:
get:
- summary: P1. Find booking group fields.
+ summary: Find booking group fields.
description: Find booking group fields.
tags:
- - Booking Processes v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -1407,58 +1533,90 @@ paths:
summary: List containing all booking group fields
description: Returns a list containing all booking group fields for all booking metadata (no filters applied).
value:
- bookingGroupFields:
- - bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
+ "@odata.context": "$metadata#BookingGroupField"
+ value:
+ - "@odata.etag": 2e52e353-bf49-4296-8dc3-bd5e6096be4e
+ bookingGroupFieldRowId: 8
+ bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 1737
- - bookingGroupFieldId: 3b9005f4-42c4-4e2b-b472-ba7d0926fe77
+ - "@odata.etag": 3f285dc2-6ae3-4613-a759-68fada2afcdf
+ bookingGroupFieldRowId: 9
+ bookingGroupFieldId: 3b9005f4-42c4-4e2b-b472-ba7d0926fe77
bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
identifyingFieldValue: 1748
- - bookingGroupFieldId: ae773282-ac9b-4a0b-a487-b4061ea2a42f
+ - "@odata.etag": f6f303f9-6685-44be-9c44-aec14a59e461
+ bookingGroupFieldRowId: 10
+ bookingGroupFieldId: ae773282-ac9b-4a0b-a487-b4061ea2a42f
bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
identifyingFieldValue: 1750
- - bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
+ - "@odata.etag": 39d5bf02-0ac3-47a2-8ba4-e00a18108e98
+ bookingGroupFieldRowId: 11
+ bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 1757
- href: null
List containing all booking group fields for a single booking:
summary: List containing all booking group fields for a single booking
description: |
Returns a list containing all booking group fields for a single booking booking metadata 'Dagkaart'
(identified by the same bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617).
value:
- bookingGroupFields:
- - bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
+ "@odata.context": "$metadata#BookingGroupField"
+ value:
+ - "@odata.etag": 2e52e353-bf49-4296-8dc3-bd5e6096be4e
+ bookingGroupFieldRowId: 8
+ bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 1737
- - bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
+ - "@odata.etag": d269b9e9-2f8e-4c3d-9874-599d2e7553aa
+ bookingGroupFieldRowId: 9
+ bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 1757
- - bookingGroupFieldId: fede01e0-86c5-47d0-9466-3093132148e5
+ - "@odata.etag": 8110f2ee-a37a-4e56-a3d8-5ae113675923
+ bookingGroupFieldRowId: 10
+ bookingGroupFieldId: fede01e0-86c5-47d0-9466-3093132148e5
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4031
- - bookingGroupFieldId: d7c25182-b64e-4e47-8998-19ddb65b8f2c
+ - "@odata.etag": 89e9ef54-138a-479d-a4ce-5e01d3f8bb14
+ bookingGroupFieldRowId: 11
+ bookingGroupFieldId: d7c25182-b64e-4e47-8998-19ddb65b8f2c
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4032
- - bookingGroupFieldId: ea02d3eb-29e6-42fd-b7eb-dfbfd2231090
+ - "@odata.etag": ab2242f7-b891-40fe-86c0-34e0f4453316
+ bookingGroupFieldRowId: 12
+ bookingGroupFieldId: ea02d3eb-29e6-42fd-b7eb-dfbfd2231090
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4033
- - bookingGroupFieldId: a73407a6-ff8c-4924-a7ac-5cd605e1793c
+ - "@odata.etag": 9244dd72-fcc0-4578-97cc-9dcc55429eb4
+ bookingGroupFieldRowId: 13
+ bookingGroupFieldId: a73407a6-ff8c-4924-a7ac-5cd605e1793c
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4034
- - bookingGroupFieldId: d9af4bf1-4e85-4eb6-ae5d-d2020b18d63c
+ - "@odata.etag": 057281d9-65ef-46b9-b7d3-efee2968a438
+ bookingGroupFieldRowId: 14
+ bookingGroupFieldId: d9af4bf1-4e85-4eb6-ae5d-d2020b18d63c
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4051
- - bookingGroupFieldId: c1ba494b-249a-475b-a542-19918aa36778
+ - "@odata.etag": 95e91fe2-e990-4b9e-a146-b44142d66b90
+ bookingGroupFieldRowId: 15
+ bookingGroupFieldId: c1ba494b-249a-475b-a542-19918aa36778
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4053
- - bookingGroupFieldId: 69be1be0-c600-492d-aec1-8490409371da
+ - "@odata.etag": c346c96d-acac-4e2b-a652-219983fc5bca
+ bookingGroupFieldRowId: 16
+ bookingGroupFieldId: 69be1be0-c600-492d-aec1-8490409371da
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4054
- - bookingGroupFieldId: d7d00ec1-6d53-44e9-bcd8-01f6a523f771
+ - "@odata.etag": 39635b84-551e-4927-9787-28f6868d3b18
+ bookingGroupFieldRowId: 17
+ bookingGroupFieldId: d7d00ec1-6d53-44e9-bcd8-01f6a523f771
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
identifyingFieldValue: 4055
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookinggroupfields/{bookingGroupFieldId}:
parameters:
- in: path
@@ -1477,12 +1635,16 @@ paths:
responses:
"200":
description: OK
- /bookinglinemetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/BookingLineMetadata:
get:
- summary: P1. Find booking line metadata.
+ summary: Find booking line metadata.
description: Find booking line metadata.
tags:
- - Booking Processes v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -1569,26 +1731,20 @@ paths:
schema:
$ref: "#/components/schemas/BookingLineMetadataGetResponseBody"
examples:
- List containing all booking line metadata:
- summary: List containing all booking line metadata
- description: Returns a list containing all booking line metadata for all bookings (no filters applied).
+ List containing two different booking lines:
+ summary: List containing two different booking lines
+ description: List containing two different booking line metadata records, for two different booking processes (no filters applied).
value:
- bookingLineMetadata:
- - bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
+ "@odata.context": "$metadata#BookingLineMetadata"
+ value:
+ - "@odata.etag": 511fb29c-47d6-4af9-bc54-cbbf3de27dae
+ bookingLineMetadataRowId: 10
+ bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
name: Webshop - Dagkaart - BUS
- sourceMetadata:
- sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
- incomingName: HTM-website
- incomingEntity: OrderLine
- outgoingName: Webshop
- businessOwner: Koos Verweg
- rejectionProcessing: system
- rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc
+ sourceName: HTM-website
identifyingFieldValue: null
- concession:
- concessionId: 2
- name: BUS
+ concessionId: 2
lineType: summary
lineSense: credit
costCenter: 603031
@@ -1599,21 +1755,14 @@ paths:
extRef4: null
extRef5: Webshop
extRef6: null
- - bookingLineMetadataId: 1bca01db-40d3-4447-9f28-41475ec6877d
+ - "@odata.etag": 42b91a85-0771-4cde-92ff-fe4a42bb6cf7
+ bookingLineMetadataRowId: 11
+ bookingLineMetadataId: 1bca01db-40d3-4447-9f28-41475ec6877d
bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
name: TLS - Saldoreizen - RAIL
- sourceMetadata:
- sourceMetadataId: 4b06a325-1078-4a2f-b63e-1d81eae8e5c3
- incomingName: Translink
- incomingEntity: Trip
- outgoingName: TLS
- businessOwner: Koos Verweg
- rejectionProcessing: mail
- rejectionInfo: helpdesk@translink.nl
+ sourceName: Translink
identifyingFieldValue: null
- concession:
- concessionId: 1
- name: RAIL
+ concessionId: 1
lineType: summary
lineSense: credit
costCenter: 603007
@@ -1624,7 +1773,6 @@ paths:
extRef4: null
extRef5: TLS
extRef6: null
- href: null
List containing booking line metadata of one booking:
summary: List containing booking line metadata of one booking
description: |
@@ -1632,22 +1780,16 @@ paths:
This example contains all the booking lines for a 'Dagkaart' booking
(bookingMetadataId: "6ce10520-9a73-4cb4-b8dd-39ee46ceb617").
value:
- bookingLineMetadata:
- - bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
+ "@odata.context": "$metadata#BookingLineMetadata"
+ value:
+ - "@odata.etag": 42b91a85-0771-4cde-92ff-fe4a42bb6cf7
+ bookingLineMetadataRowId: 11
+ bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- name: Webshop Dagkaart - BUS
- sourceMetadata:
- sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
- incomingName: HTM-website
- incomingEntity: OrderLine
- outgoingName: Webshop
- businessOwner: Koos Verweg
- rejectionProcessing: system
- rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc
+ name: Webshop - Dagkaart - BUS
+ sourceName: HTM-website
identifyingFieldValue: null
- concession:
- concessionId: 2
- name: BUS
+ concessionId: 2
lineType: summary
lineSense: credit
costCenter: 619031
@@ -1658,21 +1800,14 @@ paths:
extRef4: null
extRef5: Webshop
extRef6: null
- - bookingLineMetadataId: a4464b5c-9a8e-4e48-a0a0-5500b1ca0885
+ - "@odata.etag": 8513d1aa-5cba-4765-81ca-56ca1272cc05
+ bookingLineMetadataRowId: 12
+ bookingLineMetadataId: a4464b5c-9a8e-4e48-a0a0-5500b1ca0885
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- name: Webshop Dagkaart - RAIL
- sourceMetadata:
- sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
- incomingName: HTM-website
- incomingEntity: OrderLine
- outgoingName: Webshop
- businessOwner: Koos Verweg
- rejectionProcessing: system
- rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc
+ name: Webshop - Dagkaart - RAIL
+ sourceName: HTM-website
identifyingFieldValue: null
- concession:
- concessionId: 1
- name: RAIL
+ concessionId: 1
lineType: summary
lineSense: credit
costCenter: 603031
@@ -1683,21 +1818,14 @@ paths:
extRef4: null
extRef5: Webshop
extRef6: null
- - bookingLineMetadataId: feaa7b33-ba49-40a2-90f3-5dd70d591f17
+ - "@odata.etag": 63e1c54d-7c6b-4b77-ab7f-86a5e9ce9e53
+ bookingLineMetadataRowId: 13
+ bookingLineMetadataId: feaa7b33-ba49-40a2-90f3-5dd70d591f17
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- name: Ticketapp Dagkaart - BUS
- sourceMetadata:
- sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc
- incomingName: HTM-app
- incomingEntity: OrderLine
- outgoingName: ticketapp
- businessOwner: Danny Negen
- rejectionProcessing: mail
- rejectionInfo: d.negen@htm.nl
+ name: Ticketapp - Dagkaart - BUS
+ sourceName: HTM-app
identifyingFieldValue: null
- concession:
- concessionId: 2
- name: BUS
+ concessionId: 2
lineType: summary
lineSense: credit
costCenter: 619031
@@ -1708,21 +1836,14 @@ paths:
extRef4: null
extRef5: Webshop
extRef6: null
- - bookingLineMetadataId: ea6ce4e7-4d52-4b89-bbea-ffe0ef6c48ff
+ - "@odata.etag": 576446b0-b3c4-4a63-bff4-939d44104572
+ bookingLineMetadataRowId: 14
+ bookingLineMetadataId: ea6ce4e7-4d52-4b89-bbea-ffe0ef6c48ff
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- name: Ticketapp Dagkaart - RAIL
- sourceMetadata:
- sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc
- incomingName: HTM-app
- incomingEntity: OrderLine
- outgoingName: ticketapp
- businessOwner: Danny Negen
- rejectionProcessing: mail
- rejectionInfo: d.negen@htm.nl
+ name: Ticketapp - Dagkaart - RAIL
+ sourceName: HTM-app
identifyingFieldValue: null
- concession:
- concessionId: 1
- name: RAIL
+ concessionId: 1
lineType: summary
lineSense: credit
costCenter: 603031
@@ -1733,7 +1854,9 @@ paths:
extRef4: null
extRef5: Webshop
extRef6: null
- - bookingLineMetadataId: 0a8dbb7d-73c8-451e-9028-e4613283c7bd
+ - "@odata.etag": cbd3968b-8e73-4c43-847b-a680e43e67cb
+ bookingLineMetadataRowId: 15
+ bookingLineMetadataId: 0a8dbb7d-73c8-451e-9028-e4613283c7bd
bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
name: Dagkaart - BTW
sourceMetadata: null
@@ -1749,7 +1872,10 @@ paths:
extRef4: null
extRef5: null
extRef6: null
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/bookinglinemetadata/{bookingLineMetadataId}:
parameters:
- in: path
@@ -1791,6 +1917,10 @@ paths:
description: The booking line metadata was successfully updated in the database.
value:
bookingLineMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
delete:
summary: P2. Delete booking line metadata.
description: Delete booking line metadata.
@@ -1799,12 +1929,16 @@ paths:
responses:
"200":
description: OK
- /taxmetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/TaxMetadata:
get:
- summary: P1. Find tax metadata.
+ summary: Find tax metadata.
description: Find tax metadata.
tags:
- - Metadata v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -1860,44 +1994,61 @@ paths:
summary: List containing all tax metadata
description: Returns a list containing all tax metadata (no filters applied).
value:
- taxMetadata:
- - taxMetadataId: 2d444740-4131-4169-bb47-2d125641dc87
+ "@odata.context": "$metadata#TaxMetadata"
+ value:
+ - "@odata.etag": 4a758689-c28f-47d1-a230-e5422e9ad3be
+ taxMetadataRowId: 13
+ taxMetadataId: 2d444740-4131-4169-bb47-2d125641dc87
taxCode: V0
texPercantageAmount: 0
description: BTW VERKOOP NUL
validFrom: 2024-03-22T09:00:00
validUntil: null
- - taxMetadataId: b5f879d1-043d-4357-9655-2eeca8ebe9bf
+ - "@odata.etag": f848cce9-7fbe-4371-a70c-085fefe4613e
+ taxMetadataRowId: 14
+ taxMetadataId: b5f879d1-043d-4357-9655-2eeca8ebe9bf
taxCode: V09
taxPercentageAmount: 9
description: BTW VERKOOP LAAG 9%
validFrom: 2024-03-22T09:00:00
validUntil: null
- - taxMetadataId: 62e1abe7-d76f-4364-9207-591c0601ba55
+ - "@odata.etag": db06ae45-710d-4a4b-958b-cba61a8ba027
+ taxMetadataRowId: 15
+ taxMetadataId: 62e1abe7-d76f-4364-9207-591c0601ba55
taxCode: V21
taxPercentageAmount: 21
description: BTW VERKOOP HOOG 21%
validFrom: 2024-03-22T09:00:00
validUntil: null
- - taxMetadataId: 9a253fc3-e562-4c4a-925c-d9caf0dcc549
+ - "@odata.etag": 3bc97433-06f8-431c-b931-f5e33641bf88
+ taxMetadataRowId: 16
+ taxMetadataId: 9a253fc3-e562-4c4a-925c-d9caf0dcc549
taxCode: ?0
taxPercentageAmount: 0
description: BTW DEBIT NUL
validFrom: 2024-03-22T09:00:00
validUntil: null
- - taxMetadataId: 6243b848-5ca3-44e0-9860-4fb3a817f148
+ - "@odata.etag": 2262ab02-57a8-4425-a823-88d3c8d956bf
+ taxMetadataRowId: 17
+ taxMetadataId: 6243b848-5ca3-44e0-9860-4fb3a817f148
taxCode: ?09
taxPercentageAmount: 9
description: BTW DEBIT laag 9%
validFrom: 2024-03-22T09:00:00
validUntil: null
- - taxMetadataId: 0240d6e4-6037-4da0-ac10-1fde0229d439
+ - "@odata.etag": 261794fa-11fa-47a2-9429-1e671638cb9d
+ taxMetadataRowId: 18
+ taxMetadataId: 0240d6e4-6037-4da0-ac10-1fde0229d439
taxCode: ?21
taxPercentageAmount: 21
description: BTW DEBIT hoog 21%
validFrom: 2024-03-22T09:00:00
validUntil: null
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /taxmetadata:
post:
summary: P3. Add tax metadata.
description: Add tax metadata.
@@ -1932,6 +2083,10 @@ paths:
description: The tax metadata was successfully added to the database.
value:
taxMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/taxmetadata/{taxMetadataId}:
parameters:
- in: path
@@ -1972,12 +2127,16 @@ paths:
description: The tax metadata was successfully updated in the database.
value:
taxMetadataId: 7c3a5b0f-b89e-4f02-8b09-d11c5a050a07
- /sourcemetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/SourceMetadata:
get:
- summary: P1. Find source metadata.
+ summary: Find source metadata.
description: Find source metadata.
tags:
- - Metadata v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -2035,29 +2194,40 @@ paths:
summary: List containing all source metadata
description: Returns a list containing all source metadata (no filters applied).
value:
- sourceMetadata:
- - sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
+ "@odata.context": "$metadata#SourceMetadata"
+ value:
+ - "@odata.etag": 309ac952-12ad-4f13-a19d-f7443b8a1e93
+ sourceMetadataRowId: 2
+ sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
incomingName: HTM-web
incomingEntity: OrderLine
outgoingName: webshop
businessOwner: Koos Verweg
rejectionProcessing: system
rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc
- - sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc
+ - "@odata.etag": 4b743da5-4195-4b2e-a11b-6e5393a94c0a
+ sourceMetadataRowId: 3
+ sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc
incomingName: HTM-app
incomingEntity: OrderLine
outgoingName: ticketapp
businessOwner: Danny Negen
rejectionProcessing: mail
rejectionInfo: d.negen@htm.nl
- - sourceMetadataId: 0b6e3e07-c4e0-42bf-86f2-9c9522b71209
+ - "@odata.etag": 502e2f58-b4e1-4dd0-947a-db6eea726e3a
+ sourceMetadataRowId: 4
+ sourceMetadataId: 0b6e3e07-c4e0-42bf-86f2-9c9522b71209
incomingName: SMP
incomingEntity: OrderLine
outgoingName: balieverkoop
businessOwner: Guus Geluk
rejectionProcessing: mail
rejectionInfo: ao@htm.nl
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /sourcemetadata:
post:
summary: P3. Add source metadata.
description: Add source metadata.
@@ -2093,6 +2263,10 @@ paths:
description: The source metadata was successfully added to the database.
value:
sourceMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/sourcemetadata/{sourceMetadataId}:
parameters:
- in: path
@@ -2133,12 +2307,16 @@ paths:
description: The source metadata was successfully updated in the database.
value:
sourceMetadataId: 37a8095b-19db-498f-9349-5f37d21c5bdf
- /accountingperiodmetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/AccountingPeriodMetadata:
get:
- summary: P1. Find accounting period metadata.
+ summary: Find accounting period metadata.
description: Find accounting period metadata.
tags:
- - Metadata v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -2188,17 +2366,28 @@ paths:
summary: List containing all accounting period metadata
description: Returns a list containing all accounting period metadata (no filters applied).
value:
- accountingPeriodMetadata:
- - accountingPeriodMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
+ "@odata.context": "$metadata#AccountingPeriodMetadata"
+ value:
+ - "@odata.etag": 8f085711-eeae-44ed-bac1-06779bedb480
+ accountingPeriodMetadataRowId: 1
+ accountingPeriodMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
accountingPeriod: 2025/01
isOpen: true
- - accountingPeriodMetadataId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a
+ - "@odata.etag": 66c033af-fc67-4eb2-9d17-d74a0166470f
+ accountingPeriodMetadataRowId: 2
+ accountingPeriodMetadataId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a
accountingPeriod: 2024/12
isOpen: false
- - accountingPeriodMetadataId: 33b4889b-0036-4870-87df-be43f9316cdf
+ - "@odata.etag": fc1aa814-ede9-4f99-b09b-b969c8738003
+ accountingPeriodMetadataRowId: 3
+ accountingPeriodMetadataId: 33b4889b-0036-4870-87df-be43f9316cdf
accountingPeriod: 2024/11
isOpen: false
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /accountingperiodmetadata:
post:
summary: P2. Add accounting period metadata.
description: Add accounting period metadata.
@@ -2230,6 +2419,10 @@ paths:
description: The accounting period metadata was successfully added to the database.
value:
accountingPeriodMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/accountingperiodmetadata/{accountingPeriodMetadataId}:
parameters:
- in: path
@@ -2270,12 +2463,16 @@ paths:
description: The accounting period metadata was successfully updated in the database.
value:
accountingPeriodMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- /concessionmetadata:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/ConcessionMetadata:
get:
- summary: P1. Find concession metadata.
+ summary: Find concession metadata.
description: Find concession metadata.
tags:
- - Metadata v2.2
+ - Odata
parameters:
- $ref: "#/components/parameters/top"
- $ref: "#/components/parameters/skip"
@@ -2342,50 +2539,55 @@ paths:
summary: List containing all concession metadata
description: Returns a list containing all concession metadata (no filters applied).
value:
- concessionMetadata:
- - concessionMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
- concession:
- concessionId: 1
- name: RAIL
+ "@odata.context": "$metadata#ConcessionMetadata"
+ value:
+ - "@odata.etag": 8a7c6124-574b-4725-9105-834924437087
+ concessionMetadataRowId: 14
+ concessionMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
+ concessionId: 1
percentage: 84.021
validFrom: 2025-01-01T00:00:00.000
validUntil: null
- - concessionMetadataId: 39720be0-af88-486a-b5e2-faea7eb5b352
- concession:
- concessionId: 2
- name: BUS
+ - "@odata.etag": 90d4cf7b-86c8-4111-975b-af332b1507e5
+ concessionMetadataRowId: 15
+ concessionMetadataId: 39720be0-af88-486a-b5e2-faea7eb5b352
+ concessionId: 2
percentage: 15.979
validFrom: 2025-01-01T00:00:00.000
validUntil: null
- - concessionMetadataId: 274db383-96dd-410e-a07e-0b9e3040ac91
- concession:
- concessionId: 1
- name: RAIL
+ - "@odata.etag": 08b684af-7fe5-44ee-ad99-dab0f57c42bb
+ concessionMetadataRowId: 16
+ concessionMetadataId: 274db383-96dd-410e-a07e-0b9e3040ac91
+ concessionId: 1
percentage: 83.021
validFrom: 2024-12-01T00:00:00.000
validUntil: 2024-12-31T23:59:59.999
- - concessionMetadataId: 03959bc5-83f2-4ac7-9bf5-67e0f2a6eace
- concession:
- concessionId: 2
- name: BUS
+ - "@odata.etag": 640270c1-8dff-468e-9a5b-459e57b3ae13
+ concessionMetadataRowId: 17
+ concessionMetadataId: 03959bc5-83f2-4ac7-9bf5-67e0f2a6eace
+ concessionId: 2
percentage: 16.979
validFrom: 2024-12-01T00:00:00.000
validUntil: 2024-12-31T23:59:59.999
- - concessionMetadataId: d5b7d8f6-5cb8-482e-9d9a-68909dc7b5d3
- concession:
- concessionId: 1
- name: RAIL
+ - "@odata.etag": a03c2a52-d65d-40c6-828b-18ce07df1d68
+ concessionMetadataRowId: 18
+ concessionMetadataId: d5b7d8f6-5cb8-482e-9d9a-68909dc7b5d3
+ concessionId: 1
percentage: 85.021
validFrom: 2024-11-01T00:00:00.000
validUntil: 2024-11-30T23:59:59.999
- - concessionMetadataId: 5ee5f86f-ab00-4630-b130-4714fd060d1a
- concession:
- concessionId: 2
- name: BUS
+ - "@odata.etag": 4eb2fbe7-8dca-4ac9-a59d-379d56611bb4
+ concessionMetadataRowId: 19
+ concessionMetadataId: 5ee5f86f-ab00-4630-b130-4714fd060d1a
+ concessionId: 2
percentage: 14.979
validFrom: 2024-11-01T00:00:00.000
validUntil: 2024-11-30T23:59:59.999
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /concessionmetadata:
post:
summary: P2. Add concession metadata.
description: Add concession metadata.
@@ -2421,6 +2623,10 @@ paths:
description: The new concession metadata was successfully added to the database.
value:
concessionMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
/concessionmetadata/{concessionMetadataId}:
parameters:
- in: path
@@ -2463,126 +2669,57 @@ paths:
description: The concession metadata was successfully updated in the database.
value:
concessionMetadataId: 37a8095b-19db-498f-9349-5f37d21c5bdf
- /metadataaudittrails:
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
+ /Odata/Concession:
get:
- summary: Find metadata audit trails.
- description: Find metadata audit trails.
- deprecated: true
+ summary: Find concessions.
+ description: Find concessions.
tags:
- - Audit Trail v2.2
+ - Odata
parameters:
- - in: query
- name: metadataAuditTrailId
- schema:
- type: string
- format: uuid
- example: 37a8095b-19db-498f-9349-5f37d21c5bdf
- description: The id of the metadata audit trail.
- - in: query
- name: source
- schema:
- type: string
- example: FMT
- description: The source of the metadata change.
- - in: query
- name: endpoint
- schema:
- type: string
- format: url
- example: https://dev.api.htm.nl/v2/productmetadata
- description: The endpoint of the metadata change.
- - in: query
- name: operation
+ - $ref: "#/components/parameters/top"
+ - $ref: "#/components/parameters/skip"
+ - $ref: "#/components/parameters/filter"
+ - $ref: "#/components/parameters/count"
+ - name: $orderby
+ in: query
+ description: Order items by property values
+ required: false
+ style: form
+ explode: false
schema:
+ uniqueItems: true
type: array
items:
type: string
enum:
- - GET
- - POST
- - PATCH
- - DELETE
- example: POST
+ - concessionMetadataRowId
+ - concessionMetadataId
+ - concessionId
+ - percentage
+ - validFrom
+ - validUntil
+ - name: $select
+ in: query
+ description: Select properties to be returned
+ required: false
+ style: form
explode: false
- description: The operation of the metadata change.
- - in: query
- name: responseCode
schema:
- type: integer
- example: 200
- description: The HTTP response code of the metadata change.
- - in: query
- name: requestBody
- schema:
- type: string
- format: json
- example: { "json": "data" }
- description: The request body of the metadata change.
- - in: query
- name: responseBody
- schema:
- type: string
- format: json
- example: { "json": "data" }
- description: The response body of the metadata change.
- - in: query
- name: user
- schema:
- type: string
- example: ad.vogelaar
- description: The id of the user who performed the metadata change.
- - in: query
- name: timestampBefore
- schema:
- type: string
- format: date-time
- example: 2024-01-01T00:00:00.000
- description: The timestamp before the metadata change was made.
- - in: query
- name: timestampAfter
- schema:
- type: string
- format: date-time
- example: 2024-01-01T00:00:00.000
- description: The timestamp after the metadata change was made.
- - in: query
- name: correlationId
- schema:
- type: string
- example: 37a8095b-19db-498f-9349-5f37d21c5bdf
- description: The correlation id of the metadata change.
- responses:
- "200":
- description: OK
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/MetadataAuditTrailsGetResponseBody"
- post:
- summary: Add metadata audit trail.
- description: Add metadata audit trail.
- deprecated: true
- tags:
- - Audit Trail v2.2
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/MetadataAuditTrailsPostRequestBody"
- responses:
- "201":
- description: Created
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/MetadataAuditTrailsPostResponseBody"
- /concessions:
- get:
- summary: P1. Get all concessions.
- description: Get all concessions.
- tags:
- - References v2.2
+ uniqueItems: true
+ type: array
+ items:
+ type: string
+ enum:
+ - concessionMetadataRowId
+ - concessionMetadataId
+ - concessionId
+ - percentage
+ - validFrom
+ - validUntil
responses:
"200":
description: OK
@@ -2595,116 +2732,132 @@ paths:
summary: List containing all concessions
description: Returns a list containing all concessions (no filters applied).
value:
- concessions:
- - concessionId: 1
+ "@odata.context": "$metadata#Concession"
+ value:
+ - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
+ concessionRowId: 1
+ concessionId: 1
name: RAIL
- - concessionId: 2
+ - "@odata.etag": b4eb7b82-9ecb-424f-a3e3-c532f0b763a4
+ concessionRowId: 2
+ concessionId: 2
name: BUS
- href: null
+ security:
+ - default: []
+ x-auth-type: Application & Application User
+ x-throttling-tier: Unlimited
components:
securitySchemes:
- bearerToken:
- type: http
- scheme: bearer
- bearerFormat: JWT
+ default:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: https://api.integratielaag.nl/authorize
+ scopes: {}
schemas:
unavailable:
type: object
TransactionItemsGetResponseBody:
type: object
properties:
- transactionItems:
+ "@odata.context":
+ type: string
+ example: $metadata#TransactionItem
+ value:
type: array
items:
- type: object
- properties:
- transactionItemId:
- type: string
- example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
- transactionType:
- type: string
- enum:
- - sales
- example: sales
- sourceName:
- type: string
- example: Verkoopengine
- transactionId:
- type: string
- example: 1001236
- transactionLineId:
- type: string
- nullable: true
- example: 1
- name:
- type: string
- example: HTM Maandkorting 20%
- quantity:
- type: integer
- example: 1
- taxCode:
- type: string
- example: V21
- amountExclTax:
- type: integer
- example: 100
- amountInclTax:
- type: integer
- example: 121
- amountTax:
- type: integer
- example: 21
- occurredOn:
- type: string
- format: date-time
- example: 2024-10-04T00:00:00Z
- type:
- type: string
- enum:
- - debit
- - credit
- example: debit
- articleNumber:
- type: string
- nullable: true
- example: 4031
- status:
- type: string
- enum:
- - created
- - succeeded
- - failed
- - returned to trx-db
- - returned to src
- - re-entered
- example: created
- aggregationReference:
- type: string
- nullable: true
- example: FIKO-123456
- accountingSystemReference:
- type: string
- nullable: true
- example: U4F-123456
- required:
- - transactionItemId
- - transactionType
- - sourceName
- - transactionId
- - name
- - quantity
- - taxCode
- - amountExclTax
- - amountInclTax
- - amountTax
- - occurredOn
- - type
- - status
- href:
+ $ref: "#/components/schemas/TransactionItem"
+ TransactionItem:
+ type: object
+ properties:
+ "@odata.etag":
+ type: string
+ example: 6962e56b-c7dd-3336-9627-6687f007ee07
+ transactionItemRowId:
+ type: integer
+ example: 3231
+ transactionItemId:
+ type: string
+ example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ transactionType:
+ type: string
+ enum:
+ - sales
+ example: sales
+ sourceName:
+ type: string
+ example: HTM-website
+ transactionId:
+ type: string
+ example: 1001236
+ transactionLineId:
type: string
nullable: true
- description: URI for pagination.
- example: null
+ example: 1
+ name:
+ type: string
+ example: HTM Maandkorting 20%
+ quantity:
+ type: integer
+ example: 1
+ taxCode:
+ type: string
+ example: V21
+ amountExclTax:
+ type: integer
+ example: 100
+ amountInclTax:
+ type: integer
+ example: 121
+ amountTax:
+ type: integer
+ example: 21
+ occurredOn:
+ type: string
+ format: date-time
+ example: 2024-10-04T00:00:00Z
+ type:
+ type: string
+ enum:
+ - debit
+ - credit
+ example: debit
+ articleNumber:
+ type: string
+ nullable: true
+ example: 4031
+ status:
+ type: string
+ enum:
+ - created
+ - succeeded
+ - failed
+ - returned to trx-db
+ - returned to src
+ - re-entered
+ example: created
+ aggregationReference:
+ type: string
+ nullable: true
+ example: FIKO-123456
+ accountingSystemReference:
+ type: string
+ nullable: true
+ example: U4F-123456
+ required:
+ - transactionItemId
+ - transactionType
+ - sourceName
+ - transactionId
+ - name
+ - quantity
+ - taxCode
+ - amountExclTax
+ - amountInclTax
+ - amountTax
+ - occurredOn
+ - type
+ - status
TransactionItemsPostRequestBody:
type: object
properties:
@@ -2720,7 +2873,7 @@ components:
example: sales
sourceName:
type: string
- example: Verkoopengine
+ example: HTM-website
transactionId:
type: string
example: 1001236
@@ -2955,56 +3108,62 @@ components:
ProcessingFailuresGetResponseBody:
type: object
properties:
- processingFailures:
+ "@odata.context":
+ type: string
+ example: $metadata#ProcessingFailure
+ value:
type: array
items:
- type: object
- properties:
- processingFailureId:
- type: string
- format: uuid
- example: 37a8095b-19db-498f-9349-5f37d21c5bdf
- transactionItemId:
- type: string
- format: uuid
- example: 2d77d978-7141-499a-84ad-93fad8ee03ce
- timestamp:
- type: string
- format: date-time
- example: 2022-01-01 00:00:00
- element:
- type: string
- example: costCenter
- value:
- type: string
- example: 84955
- reasonCode:
- type: string
- example: "002"
- reasonDescription:
- type: string
- example: Contra account does not exist.
- resolved:
- type: boolean
- example: false
- change:
- type: string
- nullable: true
- example: Adapt config
- required:
- - processingFailureId
- - transactionItemId
- - timestamp
- - element
- - value
- - reasonCode
- - reasonDescription
- - resolved
- href:
+ $ref: "#/components/schemas/ProcessingFailure"
+ ProcessingFailure:
+ type: object
+ properties:
+ "@odata.etag":
+ type: string
+ example: 464155e4-0018-3676-8102-42429f14f2ed
+ processingFailureRowId:
+ type: integer
+ example: 9
+ processingFailureId:
+ type: string
+ format: uuid
+ example: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ transactionItemId:
+ type: string
+ format: uuid
+ example: 2d77d978-7141-499a-84ad-93fad8ee03ce
+ timestamp:
+ type: string
+ format: date-time
+ example: 2022-01-01 00:00:00
+ element:
+ type: string
+ example: costCenter
+ value:
+ type: string
+ example: 84955
+ reasonCode:
+ type: string
+ example: "002"
+ reasonDescription:
+ type: string
+ example: Contra account does not exist.
+ resolved:
+ type: boolean
+ example: false
+ change:
type: string
nullable: true
- description: URI for pagination.
- example: null
+ example: Adapt config
+ required:
+ - processingFailureId
+ - transactionItemId
+ - timestamp
+ - element
+ - value
+ - reasonCode
+ - reasonDescription
+ - resolved
ProcessingFailuresPatchRequestBody:
type: object
properties:
@@ -3077,99 +3236,108 @@ components:
TransactionAuditTrailsGetResponseBody:
type: object
properties:
- transactionAuditTrails:
+ "@odata.context":
+ type: string
+ example: $metadata#TransactionAuditTrail
+ value:
type: array
items:
- type: object
- properties:
- transactionAuditTrailId:
- type: string
- format: uuid
- example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
- transactionItemId:
- type: string
- format: uuid
- example: d667d293-aa82-4c9e-9b10-77cffc9058a1
- user:
- type: string
- example: fiko
- timestamp:
- type: string
- format: date-time
- example: 2022-01-01 00:00:00
- action:
- type: string
- enum:
- - create
- - update
- example: create
- status:
- type: string
- enum:
- - created
- - succeeded
- - failed
- - returned to trx-db
- - returned to src
- - re-entered
- example: created
- description:
- type: string
- nullable: true
- example: Transaction created.
- correlationId:
- type: string
- format: uuid
- nullable: true
- example: a3891560-3084-42cb-867c-f289e7cda47d
- required:
- - transactionAuditTrailId
- - transactionItemId
- - user
- - timestamp
- - action
- - status
- href:
+ $ref: "#/components/schemas/TransactionAuditTrail"
+ TransactionAuditTrail:
+ type: object
+ properties:
+ "@odata.etag":
+ type: string
+ example: a669b92c-1a10-3dd6-b4d1-efaed0629db8
+ transactionAuditTrailRowId:
+ type: integer
+ example: 8218
+ transactionAuditTrailId:
+ type: string
+ format: uuid
+ example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
+ transactionItemId:
+ type: string
+ format: uuid
+ example: d667d293-aa82-4c9e-9b10-77cffc9058a1
+ user:
+ type: string
+ example: fiko
+ timestamp:
+ type: string
+ format: date-time
+ example: 2022-01-01 00:00:00
+ action:
+ type: string
+ enum:
+ - create
+ - update
+ example: create
+ status:
+ type: string
+ enum:
+ - created
+ - succeeded
+ - failed
+ - returned to trx-db
+ - returned to src
+ - re-entered
+ example: created
+ description:
type: string
nullable: true
- example: null
+ example: Transaction created.
+ correlationId:
+ type: string
+ format: uuid
+ nullable: true
+ example: a3891560-3084-42cb-867c-f289e7cda47d
required:
- - transactionAuditTrails
+ - transactionAuditTrailId
+ - transactionItemId
+ - user
+ - timestamp
+ - action
+ - status
BookingProcessesGetResponseBody:
type: object
properties:
- bookingProcesses:
+ "@odata.context":
+ type: string
+ example: $metadata#BookingProcess
+ value:
type: array
items:
- type: object
- properties:
- bookingProcessId:
- type: string
- format: uuid
- example: 37a8095b-19db-498f-9349-5f37d21c5bdf
- name:
- type: string
- example: Verkooptransacties
- transactionType:
- type: string
- enum:
- - sales
- example: sales
- identifyingFieldName:
- type: string
- nullable: true
- example: articleNumber
- required:
- - bookingProcessId
- - name
- - transactionType
- href:
+ $ref: "#/components/schemas/BookingProcess"
+ BookingProcess:
+ type: object
+ properties:
+ "@odata.etag":
+ type: string
+ example: 9e8b14cf-c03a-3be7-b9ec-ef5dd6948217
+ bookingProcessRowId:
+ type: integer
+ example: 10
+ bookingProcessId:
+ type: string
+ format: uuid
+ example: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ name:
+ type: string
+ example: Verkooptransacties
+ transactionType:
+ type: string
+ enum:
+ - sales
+ example: sales
+ identifyingFieldName:
type: string
nullable: true
- description: URI for pagination.
- example: null
+ example: articleNumber
required:
- - bookingProcesses
+ - bookingProcessId
+ - name
+ - transactionType
BookingProcessesPostRequestBody:
type: object
properties:
@@ -3226,70 +3394,75 @@ components:
BookingMetadataGetResponseBody:
type: object
properties:
- bookingMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#BookingMetadata
+ value:
type: array
items:
- type: object
- properties:
- bookingMetadataId:
- type: string
- format: uuid
- example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- bookingProcessId:
- type: string
- format: uuid
- example: 37a8095b-19db-498f-9349-5f37d21c5bdf
- description:
- type: string
- example: Dagkaart
- department:
- type: string
- example: 900
- costType:
- type: string
- example: 84956
- documentCode:
- type: string
- example: FIKO-OPBR
- hasSeparateTaxLine:
- type: boolean
- example: true
- hasLinePerIdentifyingField:
- type: boolean
- example: true
- hasLinePerSource:
- type: boolean
- example: true
- hasLinePerConcession:
- type: boolean
- example: true
- validFrom:
- type: string
- format: date-time
- example: 2022-01-01 00:00:00
- validUntil:
- type: string
- format: date-time
- nullable: true
- example: null
- required:
- - bookingMetadataId
- - bookingProcessId
- - description
- - department
- - costType
- - documentCode
- - hasSeparateTaxLine
- - hasLinePerIdentifyingField
- - hasLinePerSource
- - hasLinePerConcession
- - validFrom
- href:
+ $ref: "#/components/schemas/BookingMetadata"
+ BookingMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
+ example: f477014f-8bf2-3e72-b9b6-1bb609840b61
+ bookingMetadataRowId:
+ type: integer
+ example: 13
+ bookingMetadataId:
+ type: string
+ format: uuid
+ example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ bookingProcessId:
+ type: string
+ format: uuid
+ example: 37a8095b-19db-498f-9349-5f37d21c5bdf
+ description:
+ type: string
+ example: Dagkaart
+ department:
+ type: string
+ example: 900
+ costType:
+ type: string
+ example: 84956
+ documentCode:
+ type: string
+ example: FIKO-OPBR
+ hasSeparateTaxLine:
+ type: boolean
+ example: true
+ hasLinePerIdentifyingField:
+ type: boolean
+ example: true
+ hasLinePerSource:
+ type: boolean
+ example: true
+ hasLinePerConcession:
+ type: boolean
+ example: true
+ validFrom:
+ type: string
+ format: date-time
+ example: 2022-01-01 00:00:00
+ validUntil:
+ type: string
+ format: date-time
nullable: true
example: null
required:
- - bookingMetadata
+ - bookingMetadataId
+ - bookingProcessId
+ - description
+ - department
+ - costType
+ - documentCode
+ - hasSeparateTaxLine
+ - hasLinePerIdentifyingField
+ - hasLinePerSource
+ - hasLinePerConcession
+ - validFrom
BookingMetadataPostRequestBody:
type: object
properties:
@@ -3419,32 +3592,37 @@ components:
BookingGroupFieldsGetResponseBody:
type: object
properties:
- bookingGroupFields:
+ "@odata.context":
+ type: string
+ example: $metadata#BookingGroupField
+ value:
type: array
items:
- type: object
- properties:
- bookingGroupFieldId:
- type: string
- format: uuid
- example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- bookingMetadataId:
- type: string
- format: uuid
- example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
- identifyingFieldValue:
- type: string
- example: 1737
- required:
- - bookingGroupFieldId
- - bookingMetadataId
- - identifyingFieldValue
- href:
+ $ref: "#/components/schemas/BookingGroupField"
+ BookingGroupField:
+ type: object
+ properties:
+ "@odata.etag":
type: string
- nullable: true
- example: null
+ example: ef520db0-4e3d-39a0-926f-f37ad49bb7cf
+ bookingGroupFieldRowId:
+ type: integer
+ example: 8
+ bookingGroupFieldId:
+ type: string
+ format: uuid
+ example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ bookingMetadataId:
+ type: string
+ format: uuid
+ example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
+ identifyingFieldValue:
+ type: string
+ example: 1737
required:
- - bookingGroupFields
+ - bookingGroupFieldId
+ - bookingMetadataId
+ - identifyingFieldValue
BookingLineMetadataPostRequestBody:
type: object
properties:
@@ -3525,89 +3703,96 @@ components:
BookingLineMetadataGetResponseBody:
type: object
properties:
- bookingLineMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#BookingLineMetadata
+ value:
type: array
items:
- type: object
- properties:
- bookingLineMetadataId:
- type: string
- format: uuid
- example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
- bookingMetadataId:
- type: string
- format: uuid
- example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
- name:
- type: string
- example: Dagkaart - RAIL
- sourceMetadata:
- type: object
- $ref: "#/components/schemas/SourceMetadata"
- identifyingFieldValue:
- type: string
- example: null
- nullable: true
- concession:
- type: object
- $ref: "#/components/schemas/Concession"
- lineType:
- type: string
- enum:
- - summary
- - analysis
- - tax
- example: summary
- lineSense:
- type: string
- enum:
- - debit
- - credit
- example: credit
- costCenter:
- type: string
- example: 603031
- nullable: true
- articleName:
- type: string
- example: dagkaart
- nullable: true
- extRef1:
- type: string
- example: null
- nullable: true
- extRef2:
- type: string
- example: null
- nullable: true
- extRef3:
- type: string
- example: 2025-02-17
- nullable: true
- extRef4:
- type: string
- example: null
- nullable: true
- extRef5:
- type: string
- example: Webshop
- nullable: true
- extRef6:
- type: string
- example: null
- nullable: true
- required:
- - bookingLineMetadataId
- - bookingMetadataId
- - name
- - lineType
- - lineSense
- href:
+ $ref: "#/components/schemas/BookingLineMetadata"
+ BookingLineMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
+ example: c0afe2d6-f4b2-321a-ae6b-2dc72b25ebc1
+ bookingLineMetadataRowId:
+ type: integer
+ example: 10
+ bookingLineMetadataId:
+ type: string
+ format: uuid
+ example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
+ bookingMetadataId:
+ type: string
+ format: uuid
+ example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
+ name:
+ type: string
+ example: Dagkaart - RAIL
+ sourceName:
+ type: string
+ example: HTM-website
nullable: true
+ identifyingFieldValue:
+ type: string
example: null
+ nullable: true
+ concessionId:
+ type: integer
+ example: 1
+ nullable: true
+ lineType:
+ type: string
+ enum:
+ - summary
+ - analysis
+ - tax
+ example: summary
+ lineSense:
+ type: string
+ enum:
+ - debit
+ - credit
+ example: credit
+ costCenter:
+ type: string
+ example: 603031
+ nullable: true
+ articleName:
+ type: string
+ example: dagkaart
+ nullable: true
+ extRef1:
+ type: string
+ example: null
+ nullable: true
+ extRef2:
+ type: string
+ example: null
+ nullable: true
+ extRef3:
+ type: string
+ example: 2025-02-17
+ nullable: true
+ extRef4:
+ type: string
+ example: null
+ nullable: true
+ extRef5:
+ type: string
+ example: Webshop
+ nullable: true
+ extRef6:
+ type: string
+ example: null
+ nullable: true
required:
- - bookingLineMetadata
+ - bookingLineMetadataId
+ - bookingMetadataId
+ - name
+ - lineType
+ - lineSense
BookingLineMetadataPatchRequestBody:
type: object
properties:
@@ -3812,44 +3997,50 @@ components:
TaxMetadataGetResponseBody:
type: object
properties:
- taxMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#TaxMetadata
+ value:
type: array
items:
- type: object
- properties:
- taxMetadataId:
- type: string
- format: uuid
- example: 192882fe-3f51-46bb-bfdb-2e4cb31ef925
- taxCode:
- type: string
- example: V21
- taxPercentageAmount:
- type: number
- example: 21
- description:
- type: string
- example: BTW VERKOOP HOOG 21%
- validFrom:
- type: string
- format: date-time
- example: 2024-03-22T09:00:00
- validUntil:
- type: string
- format: date-time
- nullable: true
- example: null
- required:
- - taxMetadataId
- - taxCode
- - taxPercentageAmount
- - description
- - validFrom
- href:
+ $ref: "#/components/schemas/TaxMetadata"
+ TaxMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
+ example: e4e7c773-eb7a-3fe0-960d-df1744127a7b
+ taxMetadataRowId:
+ type: integer
+ example: 13
+ taxMetadataId:
+ type: string
+ format: uuid
+ example: 192882fe-3f51-46bb-bfdb-2e4cb31ef925
+ taxCode:
+ type: string
+ example: V21
+ taxPercentageAmount:
+ type: number
+ example: 21
+ description:
+ type: string
+ example: BTW VERKOOP HOOG 21%
+ validFrom:
+ type: string
+ format: date-time
+ example: 2024-03-22T09:00:00
+ validUntil:
+ type: string
+ format: date-time
nullable: true
- description: URI for pagination.
example: null
+ required:
+ - taxMetadataId
+ - taxCode
+ - taxPercentageAmount
+ - description
+ - validFrom
TaxMetadataPostRequestBody:
type: object
properties:
@@ -3857,7 +4048,7 @@ components:
type: string
example: V21
taxPercentageAmount:
- type: integer
+ type: number
example: 21
description:
type: string
@@ -3892,7 +4083,7 @@ components:
type: string
example: V21
taxPercentageAmount:
- type: integer
+ type: number
example: 21
description:
type: string
@@ -3918,21 +4109,59 @@ components:
SourceMetadataGetResponseBody:
type: object
properties:
- sourceMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#SourceMetadata
+ value:
type: array
items:
$ref: "#/components/schemas/SourceMetadata"
- href:
+ SourceMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
- nullable: true
- description: URI for pagination.
- example: null
+ example: d7df8249-3e72-35f2-a069-d845e8e2cbba
+ sourceMetadataRowId:
+ type: integer
+ example: 2
+ sourceMetadataId:
+ type: string
+ format: uuid
+ example: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
+ incomingName:
+ type: string
+ example: HTM-website
+ incomingEntity:
+ type: string
+ example: OrderLine
+ outgoingName:
+ type: string
+ example: Website Verkopen
+ businessOwner:
+ type: string
+ example: Koos Verweg
+ rejectionProcessing:
+ type: string
+ example: system
+ rejectionInfo:
+ type: string
+ example: api.htm.nl/v2/account/12345/msgs/abc
+ required:
+ - sourceMetadataId
+ - incomingName
+ - incomingEntity
+ - outgoingName
+ - businessOwner
+ - rejectionProcessing
+ - rejectionInfo
+ - validFrom
SourceMetadataPostRequestBody:
type: object
properties:
incomingName:
type: string
- example: VerkoopEngine
+ example: HTM-website
incomingEntity:
type: string
example: OrderLine
@@ -3969,7 +4198,7 @@ components:
properties:
incomingName:
type: string
- example: VerkoopEngine
+ example: HTM-website
incomingEntity:
type: string
example: OrderLine
@@ -3997,30 +4226,36 @@ components:
AccountingPeriodMetadataGetResponseBody:
type: object
properties:
- accountingPeriodMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#AccountingPeriodMetadata
+ value:
type: array
items:
- type: object
- properties:
- accountingPeriodMetadataId:
- type: string
- format: uuid
- example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
- accountingPeriod:
- type: string
- example: 2024/01
- isOpen:
- type: boolean
- example: true
- required:
- - accountingPeriodMetadataId
- - accountingPeriod
- - isOpen
- href:
+ $ref: "#/components/schemas/AccountingPeriodMetadata"
+ AccountingPeriodMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
- nullable: true
- description: URI for pagination.
- example: null
+ example: 333d6b7d-b709-3b89-89e0-bcb3d5fdddfc
+ accountingPeriodMetadataRowId:
+ type: integer
+ example: 1
+ accountingPeriodMetadataId:
+ type: string
+ format: uuid
+ example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
+ accountingPeriod:
+ type: string
+ example: 2024/01
+ isOpen:
+ type: boolean
+ example: true
+ required:
+ - accountingPeriodMetadataId
+ - accountingPeriod
+ - isOpen
AccountingPeriodMetadataPostRequestBody:
type: object
properties:
@@ -4063,40 +4298,46 @@ components:
ConcessionMetadataGetResponseBody:
type: object
properties:
- concessionMetadata:
+ "@odata.context":
+ type: string
+ example: $metadata#ConcessionMetadata
+ value:
type: array
items:
- type: object
- properties:
- concessionMetadataId:
- type: string
- format: en
- example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
- concession:
- type: object
- $ref: "#/components/schemas/Concession"
- percentage:
- type: number
- example: 84.021
- validFrom:
- type: string
- format: date-time
- example: 2024-01-01T00:00:00.000
- validUntil:
- type: string
- format: date-time
- nullable: true
- example: null
- required:
- - concessionMetadataId
- - concession
- - percentage
- - validFrom
- href:
+ $ref: "#/components/schemas/ConcessionMetadata"
+ ConcessionMetadata:
+ type: object
+ properties:
+ "@odata.etag":
type: string
+ example: 77c78584-7ce8-3cf5-b89e-73b888d72d70
+ concessionMetadataRowId:
+ type: integer
+ example: 14
+ concessionMetadataId:
+ type: string
+ format: en
+ example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
+ concessionId:
+ type: integer
+ example: 1
+ percentage:
+ type: number
+ example: 84.021
+ validFrom:
+ type: string
+ format: date-time
+ example: 2024-01-01T00:00:00.000
+ validUntil:
+ type: string
+ format: date-time
nullable: true
- description: URI for pagination.
example: null
+ required:
+ - concessionMetadataId
+ - concessionId
+ - percentage
+ - validFrom
ConcessionMetadataPostRequestBody:
type: object
properties:
@@ -4158,18 +4399,22 @@ components:
ConcessionsGetResponseBody:
type: object
properties:
- concessions:
+ "@odata.context":
+ type: string
+ example: $metadata#Concession
+ value:
type: array
items:
$ref: "#/components/schemas/Concession"
- href:
- type: string
- nullable: true
- description: URI for pagination.
- example: null
Concession:
type: object
properties:
+ "@odata.etag":
+ type: string
+ example: 49bfa10d-b80d-3f2f-b3c2-9a5da3182cc3
+ concessionRowId:
+ type: integer
+ example: 1
concessionId:
type: integer
example: 1
@@ -4179,40 +4424,6 @@ components:
required:
- concessionId
- name
- SourceMetadata:
- type: object
- properties:
- sourceMetadataId:
- type: string
- format: uuid
- example: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
- incomingName:
- type: string
- example: VerkoopEngine
- incomingEntity:
- type: string
- example: OrderLine
- outgoingName:
- type: string
- example: Website Verkopen
- businessOwner:
- type: string
- example: Koos Verweg
- rejectionProcessing:
- type: string
- example: system
- rejectionInfo:
- type: string
- example: api.htm.nl/v2/account/12345/msgs/abc
- required:
- - sourceMetadataId
- - incomingName
- - incomingEntity
- - outgoingName
- - businessOwner
- - rejectionProcessing
- - rejectionInfo
- - validFrom
TransactionItemsResponseStatusGetResponseBody:
type: object
properties:
diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml
index 1c36967..214836a 100644
--- a/src/openapi/orders/service_engine_orders.yaml
+++ b/src/openapi/orders/service_engine_orders.yaml
@@ -3406,7 +3406,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
- example:
+ examples:
v2.0:
summary: Order customer address create v1.2
description: Order customer address create v1.2
@@ -3564,7 +3564,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
- example:
+ examples:
v2.0:
summary: Order customer address create v1.2
description: Order customer address create v1.2