Compare commits
193 Commits
features/O
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| b6a490c979 | |||
|
|
1ac734de96 | ||
|
|
c692cd45ea | ||
|
|
0f2eaed9dd | ||
| 11ea8f5fea | |||
| e52fde1bb3 | |||
| 1761c662e7 | |||
|
|
6a0e5a5fba | ||
|
|
7953e035bb | ||
|
|
3c4ca6e00c | ||
|
|
f87baaca06 | ||
| 257f8f939b | |||
| c1bb52277e | |||
| e79ac51966 | |||
| c6b395a05b | |||
| 1d4fbf5004 | |||
|
|
8eed2a9dd6 | ||
|
|
5e255b7bac | ||
|
|
e2f70a78af | ||
|
|
ee0147b963 | ||
| 0a8a706675 | |||
| d42236dafc | |||
| 1aae9729b2 | |||
| f7975ed5a1 | |||
| f0c216be9b | |||
| 3db0d113a0 | |||
| f4e7bd9385 | |||
| c2a6b1c9c2 | |||
|
|
17f52cd914 | ||
| a493694021 | |||
| 96fd6341b0 | |||
| f1022c0d8d | |||
| 5b3264d9cd | |||
|
|
3d387e451b | ||
|
|
851f60d665 | ||
|
|
0987cedb4f | ||
| 23dd83fac9 | |||
| a637cfb4f2 | |||
| 42ff41baea | |||
| 699c633a4e | |||
| 95bc19d7ff | |||
| 8e77863480 | |||
| 07e1dc91e3 | |||
| 75531b4fdc | |||
| 00a98a6178 | |||
| 937a0323ed | |||
| ebee1178ef | |||
| 6e37b7c4fe | |||
| a0ebde6ae2 | |||
| 1f8e8f1381 | |||
| 1f0481119c | |||
| 3d2885f2b8 | |||
| 280d3b1fcd | |||
| f28a797b6b | |||
| 87d8f7df58 | |||
| 30e8860a39 | |||
| d18afcae8c | |||
| eb03aa04e6 | |||
| aca160f65c | |||
| 3f090c76b6 | |||
| 25788e0976 | |||
|
|
90bb7c11b5 | ||
|
|
0c23571085 | ||
|
|
f1a0850871 | ||
|
|
cc8881b9d5 | ||
|
|
d484acbc69 | ||
| e5a0b52d1b | |||
| 89833680db | |||
|
|
ff225ea00c | ||
|
|
bd870d0fa8 | ||
| 531eaa2ff6 | |||
|
|
7173bd3727 | ||
|
|
a09ad1ad08 | ||
|
|
f198c1633b | ||
| 5f7893b057 | |||
|
|
383d43122b | ||
|
|
f8010560cc | ||
|
|
69908f58b0 | ||
|
|
9fb20a491f | ||
|
|
2fca37628e | ||
|
|
8a10320c26 | ||
|
|
e13b643c99 | ||
| 7954e8012d | |||
| 7d84691c4b | |||
| 354a8bf75d | |||
| 534ee3f8fd | |||
| 3e4a59bdcc | |||
| 4f54aaf027 | |||
| 8dd6f7211b | |||
| b59b8ca32b | |||
| c35c44a1cf | |||
| 8fc5d3b55e | |||
| 50bff1d3f7 | |||
| b1fb842046 | |||
| a621b1f06c | |||
|
|
6a4b1a1d58 | ||
| c4d99bb8d6 | |||
| db5d2ac324 | |||
| 175c81f5cd | |||
|
|
4f183fe4ab | ||
|
|
e295a570f0 | ||
| 2094ef46e4 | |||
|
|
cf7dcc8dd4 | ||
|
|
f033ab6bbe | ||
|
|
58ca9326dc | ||
|
|
d3c9e3d36b | ||
|
|
38094e7b29 | ||
| 974f737777 | |||
| 868ac3e6bd | |||
| 5c950701e0 | |||
| f193a1204b | |||
| dc21af3cef | |||
| c45f2059f4 | |||
| 53185d10b1 | |||
| f237f677e3 | |||
| 9bb7320299 | |||
| 1bf9fa2fd0 | |||
| 903adbe238 | |||
| b6586891fc | |||
| 8b148b22ac | |||
| 44dae159b8 | |||
| a7e32f6122 | |||
| 513045c146 | |||
| 8c4542a151 | |||
| 0749e927dc | |||
| 2b02e52c22 | |||
| 2cb6f910df | |||
| 1269f8916f | |||
| c3af1e9adf | |||
| 5d307d9808 | |||
| 105e81b5c4 | |||
| 24b4832c69 | |||
| 03372074d9 | |||
| bf0ebee435 | |||
| 541b0662f1 | |||
| 594475331f | |||
| 42c49693f1 | |||
| 62f001c902 | |||
| a71aa2e4df | |||
| 5e2b646a30 | |||
| 7ab0de07c4 | |||
|
|
39e5042350 | ||
| 2d742ca3f1 | |||
| 97c58dc3fe | |||
| d06da1401e | |||
| 04d46e0891 | |||
| c31554a526 | |||
| 9d9039d732 | |||
| 93efb6b8f7 | |||
| 77953a726a | |||
|
|
bbf21e61f7 | ||
| 681e9f7671 | |||
| c9b54a095d | |||
| e3139fdd6d | |||
| 4b932a0628 | |||
| 43bf7bfff3 | |||
| 007cf4bdef | |||
| baee1e8622 | |||
| ba314674a3 | |||
| 1f51eaadc6 | |||
| 5838b14ac5 | |||
| 14817cc621 | |||
| c1fbc0dc90 | |||
| 9b8cf65525 | |||
| 8f907896be | |||
| 591347e080 | |||
| da7afd63fc | |||
| 2c88fac238 | |||
| 6a24636d50 | |||
| c7fa48b554 | |||
| 5133903efb | |||
| 447912e081 | |||
| e2d78ec969 | |||
| c6facc5a70 | |||
| cf0d24632f | |||
| aa4721c651 | |||
| 46bf7874d9 | |||
| 1a14918f4a | |||
| 7147318900 | |||
| e0f78d2e38 | |||
| ab57e27c1d | |||
| 68c7ccc279 | |||
| 80c9fe7599 | |||
| 8946026860 | |||
| e6b2146706 | |||
| fb8723124a | |||
| 6d7c260e9e | |||
| 292588b7ba | |||
| 4bd216bd37 | |||
| bfaa1ddcb1 | |||
| 55bac27561 | |||
|
|
715a9668fc | ||
| b4f20a9758 |
0
src/AGO_Examples_20260904.curl
Normal file
0
src/AGO_Examples_20260904.curl
Normal file
@ -8,7 +8,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="temurin-21" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
Binary file not shown.
@ -1,7 +1,9 @@
|
|||||||
# ABTProducts PUT request body generator
|
# ABTProducts PUT request body generator
|
||||||
Simple tool to quickly edit HTM products via ABTProducts REST API.
|
Simple tool to quickly edit HTM products via ABTProducts REST API.
|
||||||
|
|
||||||
- Requires JRE 21
|
- Requires JRE 17
|
||||||
|
|
||||||
|
## Generating a PUT output (that you need to supply to PUT API yourself):
|
||||||
- Run via: `java -jar ABTProductsPUTGenerator.jar`
|
- Run via: `java -jar ABTProductsPUTGenerator.jar`
|
||||||
- Specify custom input/output path via: `java -jar ABTProductsPUTGenerator.jar <inputPath> <outputPath>`
|
- Specify custom input/output path via: `java -jar ABTProductsPUTGenerator.jar <inputPath> <outputPath>`
|
||||||
- Takes a ABTProducts GET response body in JSON format (product details)
|
- Takes a ABTProducts GET response body in JSON format (product details)
|
||||||
@ -10,3 +12,14 @@ Simple tool to quickly edit HTM products via ABTProducts REST API.
|
|||||||
- `curl -X PUT -H 'Content-Type: application/json' {baseUrl}/abt/abtproducts/1.0/38 --data @output.json`
|
- `curl -X PUT -H 'Content-Type: application/json' {baseUrl}/abt/abtproducts/1.0/38 --data @output.json`
|
||||||
- Default input path: /input.json
|
- Default input path: /input.json
|
||||||
- Default output path: /output.json (output is overwritten if it exists)
|
- Default output path: /output.json (output is overwritten if it exists)
|
||||||
|
|
||||||
|
## Bulk clearing (set to null) of a certain product attribute for all productIds in a product-tree (SE product reponse)
|
||||||
|
- Run via: `java -jar ABTProductsPUTGenerator.jar clearAttribute <inputPath> <attributeToClear> <environment> <wso2BearerToken>`
|
||||||
|
- Takes a SE GET product tree response body or ABTProducts GET response body in JSON format
|
||||||
|
- Also needs the attribute to clear and the WSO2 environment and valid WSO2 bearer token for that environment
|
||||||
|
- Performs the following operations:
|
||||||
|
- Finds all productId's in the given product(tree) and for each productId found:
|
||||||
|
- GETs productdetails via ABTProducts API
|
||||||
|
- Converts it to PUT request body using the functionality in the previous section
|
||||||
|
- Replaces <attributeToClear> with `null`
|
||||||
|
- Actually sends the modified PUT request body to ABTProducts PUT API
|
||||||
|
|||||||
@ -58,8 +58,8 @@
|
|||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>21</source>
|
<source>17</source>
|
||||||
<target>21</target>
|
<target>17</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|||||||
@ -3,8 +3,11 @@ package nl.htm.ovpay.abt;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -19,6 +22,15 @@ public class ABTProductsPUTGenerator {
|
|||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ABTProductsPUTGenerator.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ABTProductsPUTGenerator.class);
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
LOGGER.info("Starting ABTProductsPUTGenerator with arguments {}", Arrays.stream(args).toList());
|
||||||
|
if (args.length > 0 && args[0].equalsIgnoreCase("clearAttribute")) {
|
||||||
|
clearAttribute(args);
|
||||||
|
} else {
|
||||||
|
generateOutput(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void generateOutput(String[] args) throws Exception {
|
||||||
if (args.length != 2) {
|
if (args.length != 2) {
|
||||||
LOGGER.info("To modify input/output path, use: java -jar ABTProductsPUTGenerator.jar <inputPath> <outputPath>");
|
LOGGER.info("To modify input/output path, use: java -jar ABTProductsPUTGenerator.jar <inputPath> <outputPath>");
|
||||||
}
|
}
|
||||||
@ -40,6 +52,49 @@ public class ABTProductsPUTGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void clearAttribute(String[] args) throws Exception {
|
||||||
|
if (args.length != 5) {
|
||||||
|
LOGGER.error("Incorrect input parameters!");
|
||||||
|
LOGGER.error("To clear attribute, use: java -jar ABTProductsPUTGenerator.jar clearAttribute <inputPath> <attributeToClear> <environment> <wso2BearerToken>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inputFile = args[1];
|
||||||
|
var attributeToClear = args[2];
|
||||||
|
var environment = args[3];
|
||||||
|
var wso2BearerToken = args[4];
|
||||||
|
|
||||||
|
try (InputStream is = getInputStream(inputFile)) {
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
JsonNode jsonNode = mapper.readTree(is);
|
||||||
|
var productIds = jsonNode.findValues("productId").stream().filter(JsonNode::isValueNode).map(JsonNode::asText).toList();
|
||||||
|
|
||||||
|
LOGGER.info("Found productIds to process: {}", productIds);
|
||||||
|
LOGGER.warn("Are you SURE you want to set attribute \"{}\" for all these productIds on environment {} to NULL?", attributeToClear, environment);
|
||||||
|
LOGGER.warn("Type 'yes' to continue...");
|
||||||
|
var input = new Scanner(System.in).nextLine();
|
||||||
|
if (!input.equalsIgnoreCase("yes")) {
|
||||||
|
LOGGER.info("Aborting...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var productId : productIds) {
|
||||||
|
LOGGER.info("Getting product details for product {}...", productId);
|
||||||
|
var productJsonString = APIHelper.getProductDetails(environment, productId, wso2BearerToken);
|
||||||
|
var productJsonNode = mapper.readTree(productJsonString);
|
||||||
|
var putJsonNode = processJsonNode(productJsonNode);
|
||||||
|
LOGGER.info("Clearing attribute \"{}\" from product with productId {}...", attributeToClear, productId);
|
||||||
|
((ObjectNode)putJsonNode).putRawValue(attributeToClear, null);
|
||||||
|
|
||||||
|
LOGGER.info("PUT product details for product with productId {} with cleared attribute \"{}\"...", productId, attributeToClear);
|
||||||
|
LOGGER.info("PUT product details with JSON body: {}", putJsonNode.toPrettyString());
|
||||||
|
APIHelper.putProductDetails(environment, productId, putJsonNode.toString(), wso2BearerToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("DONE clearing attribute \"{}\" for productIds {}!", attributeToClear, productIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static InputStream getInputStream(String filePath) throws IOException {
|
private static InputStream getInputStream(String filePath) throws IOException {
|
||||||
var externalResource = new File(filePath);
|
var externalResource = new File(filePath);
|
||||||
if (externalResource.exists()) {
|
if (externalResource.exists()) {
|
||||||
@ -160,9 +215,14 @@ public class ABTProductsPUTGenerator {
|
|||||||
}
|
}
|
||||||
case "paymentMoment" -> {
|
case "paymentMoment" -> {
|
||||||
LOGGER.info("Rewriting paymentMoment to paymentMomentId...");
|
LOGGER.info("Rewriting paymentMoment to paymentMomentId...");
|
||||||
|
if (jsonField.getValue().get("paymentMomentId").isNull()) {
|
||||||
|
LOGGER.info("Rewriting null paymentMomentId...");
|
||||||
|
((ObjectNode)newJsonNode).putRawValue("paymentMomentId", null);
|
||||||
|
} else {
|
||||||
Long paymentMomentId = jsonField.getValue().get("paymentMomentId").asLong();
|
Long paymentMomentId = jsonField.getValue().get("paymentMomentId").asLong();
|
||||||
((ObjectNode)newJsonNode).put("paymentMomentId", paymentMomentId);
|
((ObjectNode)newJsonNode).put("paymentMomentId", paymentMomentId);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case "requiredCustomerLevel" -> {
|
case "requiredCustomerLevel" -> {
|
||||||
LOGGER.info("Rewriting requiredCustomerLevel to requiredCustomerLevelId...");
|
LOGGER.info("Rewriting requiredCustomerLevel to requiredCustomerLevelId...");
|
||||||
Long requiredCustomerLevelId = jsonField.getValue().get("requiredCustomerLevelId").asLong();
|
Long requiredCustomerLevelId = jsonField.getValue().get("requiredCustomerLevelId").asLong();
|
||||||
|
|||||||
@ -0,0 +1,89 @@
|
|||||||
|
package nl.htm.ovpay.abt;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.KeyManagementException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.StringJoiner;
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class APIHelper {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(APIHelper.class);
|
||||||
|
private static final String PRODUCT_DETAILS_URI = "https://services.<ENV>.api.htm.nl/abt/abtproducts/1.0/products/<PRODUCTID>";
|
||||||
|
|
||||||
|
|
||||||
|
public static String envToUriPart(String environment) {
|
||||||
|
return switch (environment) {
|
||||||
|
case "DEV" -> "dev";
|
||||||
|
case "ACC" -> "acc";
|
||||||
|
case "PRD" -> "";
|
||||||
|
default -> throw new IllegalArgumentException("Invalid environment: " + environment);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getProductDetails(String environment, String productId, String wso2BearerToken) throws Exception {
|
||||||
|
var envUriPart = envToUriPart(environment);
|
||||||
|
var getProductDetailsUri = PRODUCT_DETAILS_URI.replace("<ENV>", envUriPart).replace("<PRODUCTID>", productId);
|
||||||
|
|
||||||
|
SSLContext sc = SSLContext.getInstance("SSL");
|
||||||
|
sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom());
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||||
|
|
||||||
|
URL url = new URL(getProductDetailsUri);
|
||||||
|
URLConnection con = url.openConnection();
|
||||||
|
HttpURLConnection http = (HttpURLConnection)con;
|
||||||
|
http.setRequestMethod("GET");
|
||||||
|
http.setDoOutput(false);
|
||||||
|
http.setRequestProperty("Authorization", "Bearer " + wso2BearerToken);
|
||||||
|
http.connect();
|
||||||
|
|
||||||
|
try(InputStream is = http.getInputStream()) {
|
||||||
|
return new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void putProductDetails(String environment, String productId, String jsonBody, String wso2BearerToken) throws Exception {
|
||||||
|
var envUriPart = envToUriPart(environment);
|
||||||
|
var putProductDetailsUri = PRODUCT_DETAILS_URI.replace("<ENV>", envUriPart).replace("<PRODUCTID>", productId);
|
||||||
|
|
||||||
|
LOGGER.info("PUT product details to URI: {}", putProductDetailsUri);
|
||||||
|
|
||||||
|
SSLContext sc = SSLContext.getInstance("SSL");
|
||||||
|
sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom());
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||||
|
|
||||||
|
URL url = new URL(putProductDetailsUri);
|
||||||
|
URLConnection con = url.openConnection();
|
||||||
|
HttpURLConnection http = (HttpURLConnection)con;
|
||||||
|
http.setRequestMethod("PUT");
|
||||||
|
http.setDoOutput(true);
|
||||||
|
http.setRequestProperty("Authorization", "Bearer " + wso2BearerToken);
|
||||||
|
http.setRequestProperty("Content-Type", "application/json");
|
||||||
|
|
||||||
|
byte[] out = jsonBody.getBytes(StandardCharsets.UTF_8);
|
||||||
|
int length = out.length;
|
||||||
|
http.setFixedLengthStreamingMode(length);
|
||||||
|
http.connect();
|
||||||
|
|
||||||
|
try(OutputStream os = http.getOutputStream()) {
|
||||||
|
os.write(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
try(InputStream is = http.getInputStream()) {
|
||||||
|
LOGGER.info("Got response from PUT API: {}", new String(is.readAllBytes(), StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package nl.htm.ovpay.abt;
|
||||||
|
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
|
public final class DummyX509TrustManager implements X509TrustManager {
|
||||||
|
|
||||||
|
private static DummyX509TrustManager INSTANCE;
|
||||||
|
|
||||||
|
private DummyX509TrustManager() {
|
||||||
|
// prevent instantiation
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DummyX509TrustManager getInstance() {
|
||||||
|
if (INSTANCE == null) {
|
||||||
|
INSTANCE = new DummyX509TrustManager();
|
||||||
|
}
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TrustManager[] getDummyArray() {
|
||||||
|
if (INSTANCE == null) {
|
||||||
|
INSTANCE = new DummyX509TrustManager();
|
||||||
|
}
|
||||||
|
return new TrustManager[] { INSTANCE };
|
||||||
|
}
|
||||||
|
|
||||||
|
public X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkClientTrusted(X509Certificate[] certs, String authType) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkServerTrusted(X509Certificate[] certs, String authType) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,23 +1,33 @@
|
|||||||
{
|
{
|
||||||
"productId": 251,
|
"productId": 663,
|
||||||
"fikoArticleNumber": null,
|
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
"gboPackageTemplateId": "30901",
|
"layerInfo": {
|
||||||
|
"layerInfoId": 7,
|
||||||
|
"choiceKey": "isRenewable",
|
||||||
|
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
|
||||||
|
"isCustomChoice": false
|
||||||
|
},
|
||||||
|
"fikoArticleNumber": null,
|
||||||
|
"gboPackageTemplateId": "30001",
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "MaxTestPOST-21-okt-test-1 edited PUT",
|
"productName": "Test OVPAY-2306",
|
||||||
"productDescription": "21-okt-test-1 edited PUT - reis met 90% korting gedurende de eerste F&F pilot!",
|
"productDescription": "Test OVPAY-2306 (sellingPeriods in kindje verwijderen en later opnieuw weer kunnen toevoegen)",
|
||||||
"validityPeriod": null,
|
"validityPeriod": {
|
||||||
"productTranslations": null,
|
"validityPeriodId": 782,
|
||||||
|
"fromInclusive": "2025-12-31T23:00:00.000Z",
|
||||||
|
"toInclusive": "2026-03-30T22:00:00.000Z"
|
||||||
|
},
|
||||||
|
"productTranslations": [],
|
||||||
|
"allowedGboAgeProfiles": [],
|
||||||
"productOwner": {
|
"productOwner": {
|
||||||
"productOwnerId": 1,
|
"productOwnerId": 1,
|
||||||
"name": "Corneel Verstoep",
|
"name": "Wie dit leest",
|
||||||
"organization": "HTM"
|
"organization": "... is een aap."
|
||||||
},
|
},
|
||||||
"marketSegments": null,
|
"marketSegments": [],
|
||||||
"customerSegments": null,
|
"customerSegments": [],
|
||||||
"allowedGboAgeProfiles": null,
|
|
||||||
"productCategory": {
|
"productCategory": {
|
||||||
"productCategoryId": 9,
|
"productCategoryId": 1,
|
||||||
"isTravelProduct": true,
|
"isTravelProduct": true,
|
||||||
"name": "Kortingsabonnement"
|
"name": "Kortingsabonnement"
|
||||||
},
|
},
|
||||||
@ -25,32 +35,10 @@
|
|||||||
"requiredCustomerLevelId": 1,
|
"requiredCustomerLevelId": 1,
|
||||||
"name": "guest"
|
"name": "guest"
|
||||||
},
|
},
|
||||||
"requiredProducts": null,
|
"requiredProducts": [],
|
||||||
"incompatibleProducts": null,
|
"incompatibleProducts": [],
|
||||||
"mandatoryCustomerDataItems": [
|
"mandatoryCustomerDataItems": [],
|
||||||
{
|
"requiredGboPersonalAttributes": [],
|
||||||
"mandatoryCustomerDataItemId": 4,
|
|
||||||
"customerDataItem": "emailAddress"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mandatoryCustomerDataItemId": 5,
|
|
||||||
"customerDataItem": "address"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"requiredGboPersonalAttributes": [
|
|
||||||
{
|
|
||||||
"requiredGboPersonalAttributeId": 1,
|
|
||||||
"name": "NAME"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"requiredGboPersonalAttributeId": 2,
|
|
||||||
"name": "BIRTHDATE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"requiredGboPersonalAttributeId": 3,
|
|
||||||
"name": "PHOTO"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tokenTypes": [
|
"tokenTypes": [
|
||||||
{
|
{
|
||||||
"tokenTypeId": 1,
|
"tokenTypeId": 1,
|
||||||
@ -61,72 +49,36 @@
|
|||||||
"paymentMomentId": 1,
|
"paymentMomentId": 1,
|
||||||
"name": "prepaid"
|
"name": "prepaid"
|
||||||
},
|
},
|
||||||
"serviceOptions": null,
|
"serviceOptions": [
|
||||||
"validityDuration": "P7D",
|
{
|
||||||
"maxStartInFutureDuration": "P6W",
|
"serviceOptionId": 4,
|
||||||
"isRenewable": false,
|
"action": "cancel_notAllowed",
|
||||||
|
"description": "Stopzetting is niet toegestaan (doorgaans in combinatie met refund_notAllowed)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"serviceOptionId": 10,
|
||||||
|
"action": "refund_notAllowed",
|
||||||
|
"description": "Terugbetaling niet toegestaan (doorgaans in combinatie met cancel_notAllowed)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"validityDuration": "P1W",
|
||||||
|
"maxStartInFutureDuration": "P1W",
|
||||||
|
"isRenewable": null,
|
||||||
"sendInvoice": false,
|
"sendInvoice": false,
|
||||||
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
|
"imageReference": null,
|
||||||
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina",
|
"productPageUrl": null,
|
||||||
"termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina",
|
"termsUrl": null,
|
||||||
"isSellableAtHtm": true,
|
"isSellableAtHtm": true,
|
||||||
"needsSolvencyCheckConsumer": false,
|
"needsSolvencyCheckConsumer": false,
|
||||||
"needsSolvencyCheckBusiness": false,
|
"needsSolvencyCheckBusiness": false,
|
||||||
"sellingPeriods": [
|
"sellingPeriods": [
|
||||||
{
|
{
|
||||||
"sellingPeriodId": 240,
|
"sellingPeriodId": 1382,
|
||||||
"fromInclusive": "2024-09-06T00:00:00.000+00:00",
|
"fromInclusive": "2025-12-31T23:00:00.000Z",
|
||||||
"toInclusive": "2024-12-29T23:59:59.000+00:00",
|
"toInclusive": "2026-03-30T22:00:00.000Z",
|
||||||
"salesTouchpoint": {
|
"salesTouchpoint": {
|
||||||
"salesTouchpointId": 6,
|
"salesTouchpointId": 3,
|
||||||
"name": "Service-engine",
|
"name": "Website",
|
||||||
"isActive": true,
|
|
||||||
"retailer": {
|
|
||||||
"retailerId": 1000,
|
|
||||||
"name": "HTM intern beheer",
|
|
||||||
"street": "Koningin Julianaplein",
|
|
||||||
"number": 10,
|
|
||||||
"numberAddition": null,
|
|
||||||
"postalCode": "2595 AA",
|
|
||||||
"city": "Den Haag",
|
|
||||||
"country": "Nederland",
|
|
||||||
"emailAddress": "info@htm.nl",
|
|
||||||
"phoneNumber": "070 374 9002",
|
|
||||||
"taxId": null,
|
|
||||||
"imageReference": "https://www.htm.nl/typo3conf/ext/htm_template/Resources/Public/img/logo.svg"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"forbiddenPaymentMethods": null,
|
|
||||||
"sellingPrices": [
|
|
||||||
{
|
|
||||||
"sellingPriceId": 318,
|
|
||||||
"taxCode": "V21",
|
|
||||||
"taxPercentage": 21.0000,
|
|
||||||
"amountExclTax": 94,
|
|
||||||
"amountInclTax": 100,
|
|
||||||
"fromInclusive": "2024-09-06T00:00:00.000+00:00",
|
|
||||||
"toInclusive": "2024-12-18T23:59:59.000+00:00",
|
|
||||||
"internalPrice": 92.0000
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sellingPriceId": 319,
|
|
||||||
"taxCode": "V21",
|
|
||||||
"taxPercentage": 21.0000,
|
|
||||||
"amountExclTax": 98,
|
|
||||||
"amountInclTax": 102,
|
|
||||||
"fromInclusive": "2024-12-19T00:00:00.000+00:00",
|
|
||||||
"toInclusive": "2024-12-29T23:59:59.000+00:00",
|
|
||||||
"internalPrice": 0.0000
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sellingPeriodId": 241,
|
|
||||||
"fromInclusive": "2024-09-06T00:00:00.000+00:00",
|
|
||||||
"toInclusive": "2024-12-29T23:59:59.000+00:00",
|
|
||||||
"salesTouchpoint": {
|
|
||||||
"salesTouchpointId": 5,
|
|
||||||
"name": "Servicewinkel (Team Incident Masters)",
|
|
||||||
"isActive": true,
|
"isActive": true,
|
||||||
"retailer": {
|
"retailer": {
|
||||||
"retailerId": 1001,
|
"retailerId": 1001,
|
||||||
@ -139,64 +91,196 @@
|
|||||||
"country": "Nederland",
|
"country": "Nederland",
|
||||||
"emailAddress": "info@htm.nl",
|
"emailAddress": "info@htm.nl",
|
||||||
"phoneNumber": "070 374 9002",
|
"phoneNumber": "070 374 9002",
|
||||||
"taxId": null,
|
"taxId": 572309345923,
|
||||||
"imageReference": "https://www.htm.nl/typo3conf/ext/htm_template/Resources/Public/img/logo.svg"
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"forbiddenPaymentMethods": [
|
"forbiddenPaymentMethods": [],
|
||||||
{
|
"sellingPrices": []
|
||||||
"forbiddenPaymentMethodId": 2,
|
|
||||||
"name": "creditcard",
|
|
||||||
"issuer": "Visa"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sellingPrices": [
|
"purchasePrices": [],
|
||||||
|
"productVariants": [
|
||||||
{
|
{
|
||||||
"sellingPriceId": 320,
|
"productId": 664,
|
||||||
"taxCode": "V21",
|
"parentProductId": 663,
|
||||||
"taxPercentage": 21.0000,
|
"layerInfo": {
|
||||||
"amountExclTax": 94,
|
"layerInfoId": null,
|
||||||
"amountInclTax": 100,
|
"choiceKey": null,
|
||||||
"fromInclusive": "2024-09-06T00:00:00.000+00:00",
|
"choiceLabel": null,
|
||||||
"toInclusive": "2024-12-18T23:59:59.000+00:00",
|
"isCustomChoice": false
|
||||||
"internalPrice": 92.0000
|
},
|
||||||
|
"fikoArticleNumber": null,
|
||||||
|
"gboPackageTemplateId": "30001",
|
||||||
|
"tapConnectProductCode": null,
|
||||||
|
"productName": "Losse week - Test OVPAY-2306",
|
||||||
|
"productDescription": "Test OVPAY-2306 (sellingPeriods in kindje verwijderen en later opnieuw weer kunnen toevoegen)",
|
||||||
|
"validityPeriod": {
|
||||||
|
"validityPeriodId": 783,
|
||||||
|
"fromInclusive": "2025-12-31T23:00:00.000Z",
|
||||||
|
"toInclusive": "2026-03-30T22:00:00.000Z"
|
||||||
|
},
|
||||||
|
"productTranslations": [],
|
||||||
|
"allowedGboAgeProfiles": [],
|
||||||
|
"productOwner": {
|
||||||
|
"productOwnerId": 1,
|
||||||
|
"name": "Wie dit leest",
|
||||||
|
"organization": "... is een aap."
|
||||||
|
},
|
||||||
|
"marketSegments": [],
|
||||||
|
"customerSegments": [],
|
||||||
|
"productCategory": {
|
||||||
|
"productCategoryId": 1,
|
||||||
|
"isTravelProduct": true,
|
||||||
|
"name": "Kortingsabonnement"
|
||||||
|
},
|
||||||
|
"requiredCustomerLevel": {
|
||||||
|
"requiredCustomerLevelId": 1,
|
||||||
|
"name": "guest"
|
||||||
|
},
|
||||||
|
"requiredProducts": [],
|
||||||
|
"incompatibleProducts": [],
|
||||||
|
"mandatoryCustomerDataItems": [],
|
||||||
|
"requiredGboPersonalAttributes": [],
|
||||||
|
"tokenTypes": [
|
||||||
|
{
|
||||||
|
"tokenTypeId": 1,
|
||||||
|
"name": "EMV"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"paymentMoment": {
|
||||||
|
"paymentMomentId": 1,
|
||||||
|
"name": "prepaid"
|
||||||
|
},
|
||||||
|
"serviceOptions": [
|
||||||
|
{
|
||||||
|
"serviceOptionId": 4,
|
||||||
|
"action": "cancel_notAllowed",
|
||||||
|
"description": "Stopzetting is niet toegestaan (doorgaans in combinatie met refund_notAllowed)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"sellingPriceId": 321,
|
"serviceOptionId": 10,
|
||||||
"taxCode": "V21",
|
"action": "refund_notAllowed",
|
||||||
"taxPercentage": 21.0000,
|
"description": "Terugbetaling niet toegestaan (doorgaans in combinatie met cancel_notAllowed)"
|
||||||
"amountExclTax": 98,
|
}
|
||||||
"amountInclTax": 102,
|
],
|
||||||
"fromInclusive": "2024-12-19T00:00:00.000+00:00",
|
"validityDuration": "P1W",
|
||||||
"toInclusive": "2024-12-29T23:59:59.000+00:00",
|
"maxStartInFutureDuration": "P1W",
|
||||||
"internalPrice": 0.0000
|
"isRenewable": false,
|
||||||
}
|
"sendInvoice": false,
|
||||||
]
|
"imageReference": null,
|
||||||
}
|
"productPageUrl": null,
|
||||||
],
|
"termsUrl": null,
|
||||||
"purchasePrices": [
|
"isSellableAtHtm": true,
|
||||||
{
|
"needsSolvencyCheckConsumer": false,
|
||||||
"purchasePriceId": 184,
|
"needsSolvencyCheckBusiness": false,
|
||||||
"taxCode": "V21",
|
"sellingPeriods": [
|
||||||
"taxPercentage": 21.0000,
|
{
|
||||||
"amountExclTax": 0,
|
"sellingPeriodId": 1384,
|
||||||
"amountInclTax": 0,
|
"fromInclusive": "2025-12-31T23:00:00.000Z",
|
||||||
"fromInclusive": "2024-09-01T00:00:00.000+00:00",
|
"toInclusive": "2026-03-30T22:00:00.000Z",
|
||||||
"toInclusive": "2024-12-31T23:59:59.000+00:00"
|
"salesTouchpoint": {
|
||||||
}
|
"salesTouchpointId": 3,
|
||||||
],
|
"name": "Website",
|
||||||
"auditTrail": [
|
"isActive": true,
|
||||||
{
|
"retailer": {
|
||||||
"auditTrailId": 228,
|
"retailerId": 1001,
|
||||||
"action": "update",
|
"name": "HTM externe touchpoints",
|
||||||
"user": "api",
|
"street": "Koningin Julianaplein",
|
||||||
"timestamp": "2024-10-21T09:00:30.410+00:00"
|
"number": 10,
|
||||||
},
|
"numberAddition": null,
|
||||||
{
|
"postalCode": "2595 AA",
|
||||||
"auditTrailId": 227,
|
"city": "Den Haag",
|
||||||
"action": "insert",
|
"country": "Nederland",
|
||||||
"user": "api",
|
"emailAddress": "info@htm.nl",
|
||||||
"timestamp": "2024-10-21T08:58:39.237+00:00"
|
"phoneNumber": "070 374 9002",
|
||||||
|
"taxId": 572309345923,
|
||||||
|
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"forbiddenPaymentMethods": [],
|
||||||
|
"sellingPrices": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"purchasePrices": [],
|
||||||
|
"productVariants": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"productId": 665,
|
||||||
|
"parentProductId": 663,
|
||||||
|
"layerInfo": {
|
||||||
|
"layerInfoId": null,
|
||||||
|
"choiceKey": null,
|
||||||
|
"choiceLabel": null,
|
||||||
|
"isCustomChoice": false
|
||||||
|
},
|
||||||
|
"fikoArticleNumber": null,
|
||||||
|
"gboPackageTemplateId": "30001",
|
||||||
|
"tapConnectProductCode": null,
|
||||||
|
"productName": "Doorlopend - Test OVPAY-2306",
|
||||||
|
"productDescription": "Test OVPAY-2306 (sellingPeriods in kindje verwijderen en later opnieuw weer kunnen toevoegen)",
|
||||||
|
"validityPeriod": {
|
||||||
|
"validityPeriodId": 784,
|
||||||
|
"fromInclusive": "2025-12-31T23:00:00.000Z",
|
||||||
|
"toInclusive": "2026-03-30T22:00:00.000Z"
|
||||||
|
},
|
||||||
|
"productTranslations": [],
|
||||||
|
"allowedGboAgeProfiles": [],
|
||||||
|
"productOwner": {
|
||||||
|
"productOwnerId": 1,
|
||||||
|
"name": "Wie dit leest",
|
||||||
|
"organization": "... is een aap."
|
||||||
|
},
|
||||||
|
"marketSegments": [],
|
||||||
|
"customerSegments": [],
|
||||||
|
"productCategory": {
|
||||||
|
"productCategoryId": 1,
|
||||||
|
"isTravelProduct": true,
|
||||||
|
"name": "Kortingsabonnement"
|
||||||
|
},
|
||||||
|
"requiredCustomerLevel": {
|
||||||
|
"requiredCustomerLevelId": 1,
|
||||||
|
"name": "guest"
|
||||||
|
},
|
||||||
|
"requiredProducts": [],
|
||||||
|
"incompatibleProducts": [],
|
||||||
|
"mandatoryCustomerDataItems": [],
|
||||||
|
"requiredGboPersonalAttributes": [],
|
||||||
|
"tokenTypes": [
|
||||||
|
{
|
||||||
|
"tokenTypeId": 1,
|
||||||
|
"name": "EMV"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"paymentMoment": {
|
||||||
|
"paymentMomentId": 1,
|
||||||
|
"name": "prepaid"
|
||||||
|
},
|
||||||
|
"serviceOptions": [
|
||||||
|
{
|
||||||
|
"serviceOptionId": 4,
|
||||||
|
"action": "cancel_notAllowed",
|
||||||
|
"description": "Stopzetting is niet toegestaan (doorgaans in combinatie met refund_notAllowed)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"serviceOptionId": 10,
|
||||||
|
"action": "refund_notAllowed",
|
||||||
|
"description": "Terugbetaling niet toegestaan (doorgaans in combinatie met cancel_notAllowed)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"validityDuration": "P1W",
|
||||||
|
"maxStartInFutureDuration": "P1W",
|
||||||
|
"isRenewable": true,
|
||||||
|
"sendInvoice": false,
|
||||||
|
"imageReference": null,
|
||||||
|
"productPageUrl": null,
|
||||||
|
"termsUrl": null,
|
||||||
|
"isSellableAtHtm": true,
|
||||||
|
"needsSolvencyCheckConsumer": false,
|
||||||
|
"needsSolvencyCheckBusiness": false,
|
||||||
|
"sellingPeriods": [],
|
||||||
|
"purchasePrices": [],
|
||||||
|
"productVariants": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -17,10 +17,10 @@ paths:
|
|||||||
description: >
|
description: >
|
||||||
Create a claim by sending a JSON as specified in the schema. By
|
Create a claim by sending a JSON as specified in the schema. By
|
||||||
specifying the chipcardnumber under 'chipkaart',
|
specifying the chipcardnumber under 'chipkaart',
|
||||||
|
a claim for OV chipcard will be sent to the OVC API. If no
|
||||||
a claim for OV chipcard will be send to the OVC API. If no
|
chipcardnumber is specified under 'chipkaart', a claim for EMV/OV-pas is sent
|
||||||
chipcardnumber is specified under 'chipkaart', a claim for EMV is send
|
to Mendix, where it can be handled according to the fields present
|
||||||
to mendix.
|
(serviceRefId + totaalbedrag or ovPasNumber + verificationCode)
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
@ -47,8 +47,6 @@ paths:
|
|||||||
toelichting: string
|
toelichting: string
|
||||||
lijn: '1'
|
lijn: '1'
|
||||||
vervoertype: '1'
|
vervoertype: '1'
|
||||||
serviceRefId: '1'
|
|
||||||
Totaalbedrag: 0
|
|
||||||
EMV:
|
EMV:
|
||||||
value:
|
value:
|
||||||
aankomsthalte: '1'
|
aankomsthalte: '1'
|
||||||
@ -67,8 +65,28 @@ paths:
|
|||||||
toelichting: string
|
toelichting: string
|
||||||
lijn: '1'
|
lijn: '1'
|
||||||
vervoertype: '1'
|
vervoertype: '1'
|
||||||
serviceRefId: '1'
|
serviceRefId: 'NLOV1234567ABCDEFG'
|
||||||
Totaalbedrag: 0
|
totaalbedrag: 3.14
|
||||||
|
OV-pas:
|
||||||
|
value:
|
||||||
|
aankomsthalte: '1'
|
||||||
|
instapdatum: '2024-03-06T15:20:44.549Z'
|
||||||
|
instaptijd: '2024-03-06T15:20:44.549Z'
|
||||||
|
ingecheckt: true
|
||||||
|
uitgecheckt: true
|
||||||
|
afgeschrevenbedrag: 0
|
||||||
|
vertrekhalte: string
|
||||||
|
korting: true
|
||||||
|
iban: '1234123412341234'
|
||||||
|
naam: string
|
||||||
|
emailadres: user@example.com
|
||||||
|
uitstaptijd: '2024-03-06T15:20:44.549Z'
|
||||||
|
verwachtbedrag: 0
|
||||||
|
toelichting: string
|
||||||
|
lijn: '1'
|
||||||
|
vervoertype: '1'
|
||||||
|
ovPasNumber: '63AW974'
|
||||||
|
verificationCode: '2FQ8'
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: ok
|
description: ok
|
||||||
@ -103,18 +121,19 @@ paths:
|
|||||||
examples:
|
examples:
|
||||||
EMV:
|
EMV:
|
||||||
value:
|
value:
|
||||||
emailAddress: 'j.beek@htm.nl'
|
emailAddress: 'stasjo@htm.nl'
|
||||||
orderNumber: 'ORD1000046'
|
orderNumber: 'ORD1000046'
|
||||||
serviceReferenceId: 'NLOVA5BCD124H3Z21X'
|
serviceReferenceId: 'NLOVA5BCD124H3Z21X'
|
||||||
amount: 2305
|
amount: 2305
|
||||||
iban: 'NL98INGB0003856625'
|
iban: 'NL98INGB0003856625'
|
||||||
orderDate: '2025-01-13'
|
orderDate: '2025-01-13'
|
||||||
productName: 'HTM 20% korting'
|
productName: 'HTM 20% korting'
|
||||||
OVpas:
|
OV-pas:
|
||||||
value:
|
value:
|
||||||
emailAddress: 'j.beek@htm.nl'
|
emailAddress: 'stasjo@htm.nl'
|
||||||
orderNumber: 'ORD1000046'
|
orderNumber: 'ORD1000046'
|
||||||
ovpasNumber: '63AW974'
|
ovpasNumber: '63AW974'
|
||||||
|
verificationCode: '2FQ8'
|
||||||
iban: 'NL98INGB0003856625'
|
iban: 'NL98INGB0003856625'
|
||||||
orderDate: '2025-01-13'
|
orderDate: '2025-01-13'
|
||||||
productName: 'HTM 20% korting'
|
productName: 'HTM 20% korting'
|
||||||
@ -181,7 +200,7 @@ components:
|
|||||||
iban:
|
iban:
|
||||||
type: string
|
type: string
|
||||||
description: String of length between 15 en 32 characters
|
description: String of length between 15 en 32 characters
|
||||||
example: '1234123412341234'
|
example: NL98INGB0003856625
|
||||||
naam:
|
naam:
|
||||||
type: string
|
type: string
|
||||||
emailadres:
|
emailadres:
|
||||||
@ -201,9 +220,16 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
serviceRefId:
|
serviceRefId:
|
||||||
type: string
|
type: string
|
||||||
Totaalbedrag:
|
example: NLOV1234567ABCDEFG
|
||||||
|
totaalbedrag:
|
||||||
type: number
|
type: number
|
||||||
format: float
|
format: float
|
||||||
|
ovPasNumber:
|
||||||
|
type: string
|
||||||
|
example: 63AW974
|
||||||
|
verificationCode:
|
||||||
|
type: string
|
||||||
|
example: 2FQ8
|
||||||
refundsEntity:
|
refundsEntity:
|
||||||
required:
|
required:
|
||||||
- emailAddress
|
- emailAddress
|
||||||
@ -213,7 +239,7 @@ components:
|
|||||||
emailAddress:
|
emailAddress:
|
||||||
type: string
|
type: string
|
||||||
format: email
|
format: email
|
||||||
example: j.beek@htm.nl
|
example: stasjo@htm.nl
|
||||||
orderNumber:
|
orderNumber:
|
||||||
type: string
|
type: string
|
||||||
example: ORD1000046
|
example: ORD1000046
|
||||||
@ -226,6 +252,9 @@ components:
|
|||||||
ovpasNumber:
|
ovpasNumber:
|
||||||
type: string
|
type: string
|
||||||
example: 63AW974
|
example: 63AW974
|
||||||
|
verificationCode:
|
||||||
|
type: string
|
||||||
|
example: 2FQ8
|
||||||
iban:
|
iban:
|
||||||
type: string
|
type: string
|
||||||
example: NL00RABO000001337
|
example: NL00RABO000001337
|
||||||
|
|||||||
1845
src/openapi/container/abt-container-notifications.yaml
Normal file
1845
src/openapi/container/abt-container-notifications.yaml
Normal file
File diff suppressed because it is too large
Load Diff
417
src/openapi/container/abt-container-tokens.yaml
Normal file
417
src/openapi/container/abt-container-tokens.yaml
Normal file
@ -0,0 +1,417 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: Integration layer APIs for token storage for ABT
|
||||||
|
description: >-
|
||||||
|
APIs that give business processes access to the security and authorization state of a token within the scope of HTM. In the backend this is connected to a container which handles the accessToken en refreshToken management for an OVpas as given by GBO.
|
||||||
|
version: "1.0"
|
||||||
|
servers:
|
||||||
|
- url: https://services.acc.api.htm.nl/abt/containertokens/1.0
|
||||||
|
security:
|
||||||
|
- oAuthSample: [profile]
|
||||||
|
tags:
|
||||||
|
- name: securitytokens
|
||||||
|
paths:
|
||||||
|
/securitytokens:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Create a new security token entry in the vault
|
||||||
|
description: Create a new security token entry in the vault, if the customerProfileId has been supplied create in the customerToken DB otherwise in the AnonymousToken DB
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/CreateSecurityTokenBody"
|
||||||
|
examples:
|
||||||
|
token details:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"xTat": "cf694905-7f76-4799-b0bc-490716921323",
|
||||||
|
"otpKey": "123456789123456789123456789abcde",
|
||||||
|
"customerProfileId": 12314
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"409":
|
||||||
|
description: Conflict
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT already exists:
|
||||||
|
value:
|
||||||
|
status: 409
|
||||||
|
title: Conflict
|
||||||
|
detail: Security Token already exists
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
/securitytokens/{xTat}/status:
|
||||||
|
parameters:
|
||||||
|
- name: xTat
|
||||||
|
in: path
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 85dbeacc-b9aa-4d5b-bdec-9319010c597f
|
||||||
|
required: true
|
||||||
|
description: The xTat of the OVpastoken for which the status needs to be checked
|
||||||
|
- name: customerProfileId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Request the security and authorization status of an OV pas token
|
||||||
|
description: Request the security and authorization status of an OV pas token, if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
Not secured and not authorized :
|
||||||
|
summary: Not secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": false
|
||||||
|
}
|
||||||
|
Secured and not authorized :
|
||||||
|
summary: Secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
Secured and authorized :
|
||||||
|
summary: Secured and authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": true,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
/securitytokens/{xTat}:
|
||||||
|
parameters:
|
||||||
|
- name: xTat
|
||||||
|
in: path
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: uuid
|
||||||
|
required: true
|
||||||
|
description: The xTat of the ovPastoken for which the status needs to be checked
|
||||||
|
- name: customerProfileId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
||||||
|
patch:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Validate the supplied OTP and secure and/or authorize the token
|
||||||
|
description: Validate the supplied OTP and secure and/or authorize the token if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityValidateTokenBody"
|
||||||
|
examples:
|
||||||
|
token:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"otp": "123456"
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
Not secured and not authorized :
|
||||||
|
summary: Not secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": false
|
||||||
|
}
|
||||||
|
Secured and not authorized :
|
||||||
|
summary: Secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
Secured and authorized :
|
||||||
|
summary: Secured and authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": true,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"422":
|
||||||
|
description: Unprocessable Entity
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Validation failed:
|
||||||
|
value:
|
||||||
|
status: 422
|
||||||
|
title: OTP validation failed
|
||||||
|
detail: The supplied OTP could not be validated
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Delete the authorization for HTM for an ovpaytoken
|
||||||
|
description: Delete the authorization for HTM for an ovpaytoken if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
example:
|
||||||
|
{}
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
oAuthSample:
|
||||||
|
type: oauth2
|
||||||
|
description: This API uses OAuth 2 with the clientCredentials flow. [More info](https://api.example.com/docs/auth)
|
||||||
|
flows:
|
||||||
|
clientCredentials: # <---- OAuth flow( clientCredentials)
|
||||||
|
tokenUrl: https://identity.{env}.api.htm.nl/oauth2/token
|
||||||
|
scopes:
|
||||||
|
profile: "Access user profile"
|
||||||
|
schemas:
|
||||||
|
ErrorResponse:
|
||||||
|
description: Default response when an invalid request has been sent
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
description: >-
|
||||||
|
A status IS An integer that represents the HTTP status code of the
|
||||||
|
response.
|
||||||
|
example: 400
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
description: A title IS A string that provides a brief summary of the error.
|
||||||
|
detail:
|
||||||
|
type: string
|
||||||
|
description: A detail IS A string that provides more details about the error.
|
||||||
|
CreateSecurityTokenBody:
|
||||||
|
description: Body for when the a new security token entry is created
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- xTat
|
||||||
|
- otpKey
|
||||||
|
properties:
|
||||||
|
xTat:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
Unique identifier for the GBO transit account
|
||||||
|
example: 03071794-482a-4168-b60f-84669a9e6a76
|
||||||
|
otpKey:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
Key used to validate the OTP at GBO
|
||||||
|
example: 123456789123456789123456789abcde
|
||||||
|
customerProfileId:
|
||||||
|
type : integer
|
||||||
|
description: >-
|
||||||
|
CustomerProfileId of the account requesting security or giving authorization
|
||||||
|
example: 123456
|
||||||
|
SecurityTokenStatusResponse:
|
||||||
|
description: Response for when the status of a token is requested
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
isSecured:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Is the OVpas secured according to the GBO
|
||||||
|
example: false
|
||||||
|
isAuthorized:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Does HTM have the authorization to access the secured the data of the OVpas
|
||||||
|
example: false
|
||||||
|
SecurityValidateTokenBody:
|
||||||
|
description: Body for when the a token entry is validated
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- otp
|
||||||
|
properties:
|
||||||
|
otp:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
OTP to be used to secure the token and retrieve the JWT at GBO
|
||||||
|
example: 123456
|
||||||
@ -45,12 +45,36 @@ paths:
|
|||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 2, "name": "active" },
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
|
"contractVersions": [
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 400,
|
||||||
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
|
"end": "2025-01-01T03:00:00.000Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 500,
|
||||||
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
|
"end": null
|
||||||
|
}
|
||||||
|
],
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"get_token":
|
"get_token":
|
||||||
@ -68,14 +92,38 @@ paths:
|
|||||||
"orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8",
|
"orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8",
|
||||||
"touchpointId": 2,
|
"touchpointId": 2,
|
||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 1, "name": "new" },
|
{ "contractStatusId": 6, "name": "pending cancellation" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1338,
|
"ovPayTokenId": 1338,
|
||||||
|
"contractVersions": [
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 400,
|
||||||
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
|
"end": "2025-01-01T03:00:00.000Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 500,
|
||||||
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
|
"end": "2025-02-01T03:00:00.000Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"get_token":
|
"get_token":
|
||||||
@ -154,8 +202,8 @@ paths:
|
|||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 2, "name": "active" },
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
@ -165,22 +213,22 @@ paths:
|
|||||||
"contractVersionId": 1,
|
"contractVersionId": 1,
|
||||||
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2024-07-04 15:01:00.000",
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
"end": "2024-12-31 15:01:00.000",
|
"end": "2025-01-01T03:00:00.000Z",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"contractVersionId": 2,
|
"contractVersionId": 2,
|
||||||
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2025-01-01 15:01:00.000",
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"contractActions":
|
"contractActions":
|
||||||
@ -190,7 +238,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 1, "name": "create" },
|
{ "actionTypeId": 1, "name": "create" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-02 15:01:00.000",
|
"timestamp": "2024-07-02T15:01:00.000Z",
|
||||||
"details": "Contract created",
|
"details": "Contract created",
|
||||||
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
||||||
},
|
},
|
||||||
@ -199,7 +247,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 2, "name": "change" },
|
{ "actionTypeId": 2, "name": "change" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-03 15:01:00.000",
|
"timestamp": "2024-07-03T15:01:00.000Z",
|
||||||
"details": "Contract changed",
|
"details": "Contract changed",
|
||||||
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
||||||
},
|
},
|
||||||
@ -211,8 +259,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:00.000",
|
"created": "2024-07-02T15:01:00.000Z",
|
||||||
"updated": "2024-07-02 15:01:00.000",
|
"updated": "2024-07-02T15:01:00.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"data": "{json}",
|
"data": "{json}",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -270,8 +318,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:34.000",
|
"created": "2024-07-02T15:01:34.000Z",
|
||||||
"updated": "2024-07-04 00:04:56.000",
|
"updated": "2024-07-04T00:04:56.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"public_link": "http://mijnfactuurinzien.nl/F2024-0001",
|
"public_link": "http://mijnfactuurinzien.nl/F2024-0001",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -282,8 +330,8 @@ paths:
|
|||||||
"externalReference": "F2024-0002",
|
"externalReference": "F2024-0002",
|
||||||
"term": 2,
|
"term": 2,
|
||||||
"invoiceDate": "2024-08-02",
|
"invoiceDate": "2024-08-02",
|
||||||
"created": "2024-08-02 15:01:34.000",
|
"created": "2024-08-02T15:01:34.000Z",
|
||||||
"updated": "2024-08-04 00:04:56.000",
|
"updated": "2024-08-04T00:04:56.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"public_link": "http://mijnfactuurinzien.nl/F2024-0002",
|
"public_link": "http://mijnfactuurinzien.nl/F2024-0002",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -328,8 +376,8 @@ paths:
|
|||||||
"cancellationMoment": "termBound",
|
"cancellationMoment": "termBound",
|
||||||
"termDuration": "P1M",
|
"termDuration": "P1M",
|
||||||
"billingDay": 18,
|
"billingDay": 18,
|
||||||
"cancellationFrom": "2024-08-10T00:00:00",
|
"cancellationFrom": "2024-08-10T00:00:00Z",
|
||||||
"cancellationUntil": "2026-08-10T00:00:00",
|
"cancellationUntil": "2026-08-10T00:00:00Z",
|
||||||
}
|
}
|
||||||
/contracts/{contractId}/cancellationvalidation:
|
/contracts/{contractId}/cancellationvalidation:
|
||||||
parameters:
|
parameters:
|
||||||
@ -382,14 +430,14 @@ paths:
|
|||||||
{
|
{
|
||||||
"validationResult": true,
|
"validationResult": true,
|
||||||
"validationMessage": "",
|
"validationMessage": "",
|
||||||
"end": "2024-08-10T03:59:59",
|
"end": "2024-08-10T03:59:59Z",
|
||||||
"refundAmount": 2489,
|
"refundAmount": 2489,
|
||||||
"refundMethods": ["creditInvoice", "iDeal"],
|
"refundMethods": ["creditInvoice", "iDeal"],
|
||||||
}
|
}
|
||||||
Unsuccesful validation:
|
Unsuccessful validation:
|
||||||
summary: Unsuccesful validation
|
summary: Unsuccessful validation
|
||||||
description: |
|
description: |
|
||||||
Unsuccesful validation. The response contains the error message.
|
Unsuccessful validation. The response contains the error message.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"validationResult": false,
|
"validationResult": false,
|
||||||
@ -451,7 +499,7 @@ paths:
|
|||||||
the refund amount and refund method.
|
the refund amount and refund method.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"end": "2024-08-10T03:59:59",
|
"end": "2024-08-10T03:59:59Z",
|
||||||
"refundAmount": 2489,
|
"refundAmount": 2489,
|
||||||
"refundMethod": "creditInvoice",
|
"refundMethod": "creditInvoice",
|
||||||
}
|
}
|
||||||
@ -516,8 +564,8 @@ paths:
|
|||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2024-07-04 15:01:00.000",
|
"start": "2024-07-04T15:01:00.000Z",
|
||||||
"end": "2024-12-31 15:01:00.000",
|
"end": "2024-12-31T15:01:00.000Z",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"contractVersionId": 2,
|
"contractVersionId": 2,
|
||||||
@ -527,7 +575,8 @@ paths:
|
|||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2025-01-01 15:01:00.000",
|
"start": "2025-01-01T15:01:00.000Z",
|
||||||
|
"end": null
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"contractActions":
|
"contractActions":
|
||||||
@ -537,7 +586,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 1, "name": "create" },
|
{ "actionTypeId": 1, "name": "create" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-02 15:01:00.000",
|
"timestamp": "2024-07-02T15:01:00.000Z",
|
||||||
"details": "Contract created",
|
"details": "Contract created",
|
||||||
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
||||||
},
|
},
|
||||||
@ -546,7 +595,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 2, "name": "change" },
|
{ "actionTypeId": 2, "name": "change" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-03 15:01:00.000",
|
"timestamp": "2024-07-03T15:01:00.000Z",
|
||||||
"details": "Contract changed",
|
"details": "Contract changed",
|
||||||
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
||||||
},
|
},
|
||||||
@ -558,8 +607,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:00.000",
|
"created": "2024-07-02T15:01:00.000Z",
|
||||||
"updated": "2024-07-02 15:01:00.000",
|
"updated": "2024-07-02T15:01:00.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"data": "{json}",
|
"data": "{json}",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -574,6 +623,267 @@ paths:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
/contracts/{uuid}/changemoments:
|
||||||
|
parameters:
|
||||||
|
- in: header
|
||||||
|
name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: true
|
||||||
|
description: The JWT of the logged in customer.
|
||||||
|
- in: path
|
||||||
|
name: uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 9e224750-3065-471d-af57-85b9cffa7c89
|
||||||
|
required: true
|
||||||
|
description: The id of the contract to process.
|
||||||
|
get:
|
||||||
|
summary: Get all change moments for a given contract.
|
||||||
|
description: Get all change moments for a given contract.
|
||||||
|
tags:
|
||||||
|
- SE Contract Changes v2
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
All change moments of a contract:
|
||||||
|
summary: All change moments of a contract
|
||||||
|
description: |
|
||||||
|
All change moments of a contract. The response contains the
|
||||||
|
allowed change moments for the current contract term.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"changeMoment": "termBound",
|
||||||
|
"termDuration": "P1M",
|
||||||
|
"billingDay": 18,
|
||||||
|
"changeFrom": "2024-08-10T00:00:00",
|
||||||
|
"changeUntil": "2024-08-10T03:59:59",
|
||||||
|
}
|
||||||
|
/contracts/{uuid}/changevalidation:
|
||||||
|
parameters:
|
||||||
|
- in: header
|
||||||
|
name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: true
|
||||||
|
description: The JWT of the logged in customer.
|
||||||
|
- in: path
|
||||||
|
name: uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 9e224750-3065-471d-af57-85b9cffa7c89
|
||||||
|
required: true
|
||||||
|
description: The id of the contract to process.
|
||||||
|
post:
|
||||||
|
summary: Validate a change for a given contract.
|
||||||
|
description: Validate a change for a given contract.
|
||||||
|
tags:
|
||||||
|
- SE Contract Changes v2
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Validate a change to another product:
|
||||||
|
summary: Validate a change to another product
|
||||||
|
description: |
|
||||||
|
Validate a change to another product. The response contains the allowed change moments for the current contract term.
|
||||||
|
value: { "productId": 124, "startDate": "2025-10-08" }
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Successfully validated change:
|
||||||
|
summary: Successfully validated change
|
||||||
|
description: |
|
||||||
|
Successfully validated a change. The response contains the allowed change moments for the current contract term.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"validationResult": true,
|
||||||
|
"validationMessage": "",
|
||||||
|
"contract":
|
||||||
|
{
|
||||||
|
"contractId": "15b43d9b-367a-4952-87f6-3e0fa902486f",
|
||||||
|
"contractNumber": "D123456",
|
||||||
|
"customerProfileId": 42,
|
||||||
|
"orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48",
|
||||||
|
"orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8",
|
||||||
|
"touchpointId": 2,
|
||||||
|
"contractStatus":
|
||||||
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting",
|
||||||
|
"termDuration": "P0Y1M0D",
|
||||||
|
"billingDay": 15,
|
||||||
|
"highestInvoiceTerm": 1,
|
||||||
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
|
"ovPayTokenId": 1337,
|
||||||
|
"contractVersions":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl",
|
||||||
|
"productId": 124,
|
||||||
|
"productName": "Regiovrij Regio Centrum",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9.0,
|
||||||
|
"termAmountInclTax": 12,
|
||||||
|
"start": "2025-10-08",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl",
|
||||||
|
"productId": 123,
|
||||||
|
"productName": "Regiovrij Regio Zuid",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9.0,
|
||||||
|
"termAmountInclTax": 10,
|
||||||
|
"start": "2025-01-08",
|
||||||
|
"end": "2025-10-07",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
Unsuccessful validation:
|
||||||
|
summary: Unsuccessful validation
|
||||||
|
description: |
|
||||||
|
Unsuccessful validation. The response contains the error message.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"validationResult": false,
|
||||||
|
"validationMessage": "Contract status is not ACTIVE",
|
||||||
|
"contract": null,
|
||||||
|
}
|
||||||
|
/contracts/{uuid}/change:
|
||||||
|
parameters:
|
||||||
|
- in: header
|
||||||
|
name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: true
|
||||||
|
description: The JWT of the logged in customer.
|
||||||
|
- in: path
|
||||||
|
name: uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 9e224750-3065-471d-af57-85b9cffa7c89
|
||||||
|
required: true
|
||||||
|
description: The id of the contract to process.
|
||||||
|
post:
|
||||||
|
summary: Change a contract.
|
||||||
|
description: Change a contract.
|
||||||
|
tags:
|
||||||
|
- SE Contract Changes v2
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Change to another product:
|
||||||
|
summary: Change to another product
|
||||||
|
description: |
|
||||||
|
Change to another product. The response contains the details of the changed contract.
|
||||||
|
value: { "productId": 124, "startDate": "2025-10-08" }
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Successfully changed contract:
|
||||||
|
summary: Successfully changed contract
|
||||||
|
description: |
|
||||||
|
Successfully changed a contract. The response contains the details of the changed contract.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"contractId": "15b43d9b-367a-4952-87f6-3e0fa902486f",
|
||||||
|
"contractNumber": "D123456",
|
||||||
|
"customerProfileId": 42,
|
||||||
|
"orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48",
|
||||||
|
"orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8",
|
||||||
|
"touchpointId": 2,
|
||||||
|
"contractStatus":
|
||||||
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting",
|
||||||
|
"termDuration": "P0Y1M0D",
|
||||||
|
"billingDay": 15,
|
||||||
|
"highestInvoiceTerm": 1,
|
||||||
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
|
"ovPayTokenId": 1337,
|
||||||
|
"contractVersions":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl",
|
||||||
|
"productId": 124,
|
||||||
|
"productName": "Regiovrij Regio Centrum",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9.0,
|
||||||
|
"termAmountInclTax": 12,
|
||||||
|
"start": "2025-10-08",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl",
|
||||||
|
"productId": 123,
|
||||||
|
"productName": "Regiovrij Regio Zuid",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9.0,
|
||||||
|
"termAmountInclTax": 10,
|
||||||
|
"start": "2025-01-08",
|
||||||
|
"end": "2025-10-07",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Unsuccessful change due to invalid productId:
|
||||||
|
summary: Unsuccessful change due to invalid productId
|
||||||
|
description: |
|
||||||
|
Unsuccessful change due to invalid productId. The response contains the error message.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"type": "https://htm.nl/api/v1/probs/validationerror",
|
||||||
|
"title": "Your request is not valid.",
|
||||||
|
"detail": "The chosen parameters for this contract change are not valid.",
|
||||||
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
||||||
|
"errors":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"code": "CHANGE_DATE_IN_THE_PAST",
|
||||||
|
"detail": "Chosen date of contract change is in the past. This is not alllowed.",
|
||||||
|
"path": "$.startDate",
|
||||||
|
"parameter": null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
/contractpayments:
|
/contractpayments:
|
||||||
parameters:
|
parameters:
|
||||||
- in: header
|
- in: header
|
||||||
@ -597,9 +907,13 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
examples:
|
examples:
|
||||||
List all contract payments for a single debtor:
|
Empty list:
|
||||||
summary: List all contract payments for a single debtor
|
summary: Empty list
|
||||||
description: List all contract payments for single debtor with debtor number 'D123456'.
|
description: List all contract payments for a debtor with no payments.
|
||||||
|
value: { "contractPayments": [] }
|
||||||
|
Successful direct debit:
|
||||||
|
summary: Successful direct debit
|
||||||
|
description: One payment for a debtor with a successful direct debit.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"contractPayments":
|
"contractPayments":
|
||||||
@ -607,8 +921,133 @@ paths:
|
|||||||
{
|
{
|
||||||
"paymentId": "151845776",
|
"paymentId": "151845776",
|
||||||
"totalAmount": "26.62",
|
"totalAmount": "26.62",
|
||||||
"paymentMethod": "Twikey",
|
"paymentMethod": "Automatische incasso",
|
||||||
"paymentDate": "2024-09-12",
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
Direct debit reversal:
|
||||||
|
summary: Direct debit reversal
|
||||||
|
description: One payment for a debtor with a reversed direct debit.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"contractPayments":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"paymentId": "151845776",
|
||||||
|
"totalAmount": "-26.62",
|
||||||
|
"paymentMethod": "Stornering",
|
||||||
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
iDEAL payment:
|
||||||
|
summary: iDEAL payment
|
||||||
|
description: One payment for a debtor with an iDEAL payment.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"contractPayments":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"paymentId": "151845776",
|
||||||
|
"totalAmount": "26.62",
|
||||||
|
"paymentMethod": "iDEAL",
|
||||||
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
Bank transfer:
|
||||||
|
summary: Bank transfer
|
||||||
|
description: One payment for a debtor with a bank transfer.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"contractPayments":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"paymentId": "151845776",
|
||||||
|
"totalAmount": "26.62",
|
||||||
|
"paymentMethod": "Overboeking",
|
||||||
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
List of four payments for one invoice:
|
||||||
|
summary: List of four payments for one invoice
|
||||||
|
description: Four payments for a debtor for one invoice; a direct debit, a direct debit reversal, a bank transfer and an iDEAL payment.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"contractPayments":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"paymentId": "151845776",
|
||||||
|
"totalAmount": "26.62",
|
||||||
|
"paymentMethod": "Automatische incasso",
|
||||||
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
"invoice":
|
"invoice":
|
||||||
{
|
{
|
||||||
"invoiceId": "147722263",
|
"invoiceId": "147722263",
|
||||||
@ -626,22 +1065,67 @@ paths:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"paymentId": "151845851",
|
"paymentId": "151845776",
|
||||||
"totalAmount": "45.21",
|
"totalAmount": "-26.62",
|
||||||
"paymentMethod": "Twikey",
|
"paymentMethod": "Stornering",
|
||||||
"paymentDate": "2024-09-12",
|
"paymentDate": "2024-09-12",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
"invoice":
|
"invoice":
|
||||||
{
|
{
|
||||||
"invoiceId": "147722266",
|
"invoiceId": "147722263",
|
||||||
"invoiceNumber": "F2024-0002",
|
"invoiceNumber": "F2024-0001",
|
||||||
"description": "HTM Maandkorting 20%",
|
"description": "HTM Maandkorting 20%",
|
||||||
"publicLink": "https://factuurinzien.nl/d/ddb245d6df67999eca48c4a71b5661b93038e20a/i/dp5h1i5cuu94nopiolkdst3u17vkmzo",
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"get_contractdetails":
|
"get_contractdetails":
|
||||||
{
|
{
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/7b2f8c1a-3d9d-4c2d-960e-4471e8e28b6a",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"paymentId": "151845777",
|
||||||
|
"totalAmount": "10.00",
|
||||||
|
"paymentMethod": "Overboeking",
|
||||||
|
"paymentDate": "2024-09-13",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"paymentId": "151845778",
|
||||||
|
"totalAmount": "16.62",
|
||||||
|
"paymentMethod": "iDEAL",
|
||||||
|
"paymentDate": "2024-09-14",
|
||||||
|
"iban": "NL25INGB******1337",
|
||||||
|
"invoice":
|
||||||
|
{
|
||||||
|
"invoiceId": "147722263",
|
||||||
|
"invoiceNumber": "F2024-0001",
|
||||||
|
"description": "HTM Maandkorting 20%",
|
||||||
|
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||||
|
},
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_contractdetails":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||||
"method": "GET",
|
"method": "GET",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
4737
src/openapi/customers/SE-customers-v2.yaml
Normal file
4737
src/openapi/customers/SE-customers-v2.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@ -187,21 +187,25 @@ paths:
|
|||||||
examples:
|
examples:
|
||||||
minimalCustomerProfile:
|
minimalCustomerProfile:
|
||||||
value:
|
value:
|
||||||
{ "person": { "emailAddress": "j.jansen@hatseflats.nl" } }
|
{
|
||||||
|
"person": {
|
||||||
|
"emailAddress": "j.jansen@hatseflats.nl"
|
||||||
|
}
|
||||||
|
}
|
||||||
fullCustomerProfile:
|
fullCustomerProfile:
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"customerPreference": { "languageId": 1 },
|
"customerPreference": {
|
||||||
"person":
|
"languageId": 1
|
||||||
{
|
},
|
||||||
|
"person": {
|
||||||
"birthname": "Jan",
|
"birthname": "Jan",
|
||||||
"surname": "Jansen",
|
"surname": "Jansen",
|
||||||
"prefix": "dhr",
|
"prefix": "dhr",
|
||||||
"suffix": "jr",
|
"suffix": "jr",
|
||||||
"dateOfBirth": "1970-01-01",
|
"dateOfBirth": "1970-01-01",
|
||||||
"emailAddress": "j.jansen@hatseflats.nl",
|
"emailAddress": "j.jansen@hatseflats.nl",
|
||||||
"addresses":
|
"addresses": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"street": "Laan van Meerdervoort",
|
"street": "Laan van Meerdervoort",
|
||||||
"houseNumber": 5,
|
"houseNumber": 5,
|
||||||
@ -210,7 +214,7 @@ paths:
|
|||||||
"city": "Den Haag",
|
"city": "Den Haag",
|
||||||
"country": "NL",
|
"country": "NL",
|
||||||
"isPreferred": true,
|
"isPreferred": true,
|
||||||
"addressTypeId": 1,
|
"addressTypeId": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"street": "Beeklaan",
|
"street": "Beeklaan",
|
||||||
@ -220,26 +224,24 @@ paths:
|
|||||||
"city": "Den Haag",
|
"city": "Den Haag",
|
||||||
"country": "NL",
|
"country": "NL",
|
||||||
"isPreferred": false,
|
"isPreferred": false,
|
||||||
"addressTypeId": 2,
|
"addressTypeId": 2
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
"phones":
|
"phones": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"number": "6123456789",
|
"number": "6123456789",
|
||||||
"countryCode": "0031",
|
"countryCode": "0031",
|
||||||
"phoneTypeId": 1,
|
"phoneTypeId": 1,
|
||||||
"isPreferred": true,
|
"isPreferred": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"number": "7012345678",
|
"number": "7012345678",
|
||||||
"countryCode": "0031",
|
"countryCode": "0031",
|
||||||
"phoneTypeId": 2,
|
"phoneTypeId": 2,
|
||||||
"isPreferred": false,
|
"isPreferred": false
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
"devices":
|
"devices": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
||||||
"alias": "My iPhone",
|
"alias": "My iPhone",
|
||||||
@ -247,9 +249,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
||||||
"alias": "My iPad",
|
"alias": "My iPad",
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
responses:
|
responses:
|
||||||
"201":
|
"201":
|
||||||
@ -294,22 +296,20 @@ paths:
|
|||||||
patchCustomer:
|
patchCustomer:
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"person":
|
"person": {
|
||||||
{
|
|
||||||
"birthname": "Jan",
|
"birthname": "Jan",
|
||||||
"surname": "Jansen",
|
"surname": "Jansen",
|
||||||
"prefix": "dhr",
|
"prefix": "dhr",
|
||||||
"suffix": "jr",
|
"suffix": "jr",
|
||||||
"dateOfBirth": "1970-01-01",
|
"dateOfBirth": "1970-01-01",
|
||||||
"addresses":
|
"addresses": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"addressId": 2,
|
"addressId": 2,
|
||||||
"street": "Laan van Meerdervoort",
|
"street": "Laan van Meerdervoort",
|
||||||
"houseNumber": 5,
|
"houseNumber": 5,
|
||||||
"postalCode": "2500AA",
|
"postalCode": "2500AA",
|
||||||
"city": "Den Haag",
|
"city": "Den Haag",
|
||||||
"country": "NL",
|
"country": "NL"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"addressId": 1,
|
"addressId": 1,
|
||||||
@ -319,28 +319,26 @@ paths:
|
|||||||
"postalCode": "2500AA",
|
"postalCode": "2500AA",
|
||||||
"city": "Den Haag",
|
"city": "Den Haag",
|
||||||
"country": "NL",
|
"country": "NL",
|
||||||
"addressTypeId": 2,
|
"addressTypeId": 2
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
"phones":
|
"phones": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"phoneId": 1,
|
"phoneId": 1,
|
||||||
"number": "6123456789",
|
"number": "6123456789",
|
||||||
"countryCode": "0031",
|
"countryCode": "0031",
|
||||||
"phoneTypeId": 1,
|
"phoneTypeId": 1,
|
||||||
"isPreferred": true,
|
"isPreferred": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"phoneId": 2,
|
"phoneId": 2,
|
||||||
"number": "7012345678",
|
"number": "7012345678",
|
||||||
"countryCode": "0031",
|
"countryCode": "0031",
|
||||||
"phoneTypeId": 2,
|
"phoneTypeId": 2,
|
||||||
"isPreferred": false,
|
"isPreferred": false
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
"devices":
|
"devices": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"deviceId": "813afdd8-bf8c-4e26-bfda-4da79552bd38",
|
"deviceId": "813afdd8-bf8c-4e26-bfda-4da79552bd38",
|
||||||
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
||||||
@ -350,9 +348,9 @@ paths:
|
|||||||
"deviceId": "4f4249a2-ac6c-44f9-b740-66e66b6f3c28",
|
"deviceId": "4f4249a2-ac6c-44f9-b740-66e66b6f3c28",
|
||||||
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
||||||
"alias": "My iPad",
|
"alias": "My iPad",
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
@ -361,7 +359,6 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/CustomersResponse"
|
$ref: "#/components/schemas/CustomersResponse"
|
||||||
|
|
||||||
/customers/tokens:
|
/customers/tokens:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -492,9 +489,9 @@ paths:
|
|||||||
"customerProfileId": 1,
|
"customerProfileId": 1,
|
||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"ovpasNumber": "",
|
|
||||||
"alias": "Mijn EMV pas",
|
|
||||||
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
||||||
|
"ovpasNumber": "",
|
||||||
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 2, "name": "Active" },
|
{ "tokenStatusId": 2, "name": "Active" },
|
||||||
"expirationDate": "2028-02-01",
|
"expirationDate": "2028-02-01",
|
||||||
@ -712,7 +709,7 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
@ -810,7 +807,7 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
@ -926,7 +923,7 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
@ -1011,7 +1008,7 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV54567",
|
"ovpasNumber": "OV31236",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 3, "name": "Replaced (*)" },
|
{ "tokenStatusId": 3, "name": "Replaced (*)" },
|
||||||
@ -1033,7 +1030,7 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34547",
|
"ovpasNumber": "OV36897",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 4, "name": "On stock" },
|
{ "tokenStatusId": 4, "name": "On stock" },
|
||||||
@ -1047,7 +1044,7 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 132,
|
"customerProfileId": 132,
|
||||||
@ -1055,7 +1052,7 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34831",
|
"ovpasNumber": "OV33489",
|
||||||
"alias": "Mijn OV Pas",
|
"alias": "Mijn OV Pas",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 5, "name": "Suspended" },
|
{ "tokenStatusId": 5, "name": "Suspended" },
|
||||||
@ -1069,7 +1066,7 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 166,
|
"customerProfileId": 166,
|
||||||
@ -1077,7 +1074,7 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34984",
|
"ovpasNumber": "OV48965",
|
||||||
"alias": "Mijn OV Pas",
|
"alias": "Mijn OV Pas",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{
|
{
|
||||||
@ -1094,7 +1091,7 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 166,
|
"customerProfileId": 166,
|
||||||
@ -1102,7 +1099,6 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV54368",
|
|
||||||
"alias": "My retired token",
|
"alias": "My retired token",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 1, "name": "Retired" },
|
{ "tokenStatusId": 1, "name": "Retired" },
|
||||||
@ -1116,7 +1112,7 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 1,
|
"customerProfileId": 1,
|
||||||
@ -1124,7 +1120,7 @@ paths:
|
|||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV98263",
|
"ovpasNumber": "OV13458",
|
||||||
"alias": "My found token",
|
"alias": "My found token",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 7, "name": "Renewed Active" },
|
{ "tokenStatusId": 7, "name": "Renewed Active" },
|
||||||
@ -1138,7 +1134,7 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
_links:
|
_links:
|
||||||
@ -1228,7 +1224,7 @@ paths:
|
|||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
||||||
"lastDigits": null,
|
"lastDigits": null,
|
||||||
"ovpasNumber": null,
|
"ovPasNumber": null,
|
||||||
"alias": "Mijn token",
|
"alias": "Mijn token",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 2, "name": "Active" },
|
{ "tokenStatusId": 2, "name": "Active" },
|
||||||
@ -1964,7 +1960,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
example: 1
|
example: 1
|
||||||
required: true
|
required: true
|
||||||
summary: Replace an OVpay token with another (+ transfer products) - V2 (for Integratielaag)
|
summary: "**INTERNAL USE ONLY** Replace an OVpay token with another (+ transfer products) - V2"
|
||||||
description: |
|
description: |
|
||||||
Transfer products from one OVpay token to another, and replace the tokens in the database.
|
Transfer products from one OVpay token to another, and replace the tokens in the database.
|
||||||
This endpoint is for usage by integratielaag only. Touch points should use
|
This endpoint is for usage by integratielaag only. Touch points should use
|
||||||
@ -2253,11 +2249,6 @@ paths:
|
|||||||
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
|
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
|
||||||
{
|
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances/1",
|
|
||||||
"method": "GET",
|
|
||||||
},
|
|
||||||
"get_order":
|
"get_order":
|
||||||
{
|
{
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
||||||
@ -2383,7 +2374,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"newOvPayToken":
|
"newOvPayToken":
|
||||||
{
|
{
|
||||||
@ -2400,7 +2391,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"isTransferable": true,
|
"isTransferable": true,
|
||||||
"transferableObjects":
|
"transferableObjects":
|
||||||
@ -2413,11 +2404,11 @@ paths:
|
|||||||
"ePurse": true,
|
"ePurse": true,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": true, "birthdate": true, "photo": true },
|
{ "name": true, "birthdate": true, "photo": true },
|
||||||
"gboAgeProfile": true,
|
"gboAgeProfile": true
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"transfer_token":
|
"transfer":
|
||||||
{
|
{
|
||||||
"href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer",
|
"href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
@ -2437,57 +2428,50 @@ paths:
|
|||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 2, "name": "Active" },
|
{ "tokenStatusId": 2, "name": "Active" },
|
||||||
"expirationDate": "2028-02-01",
|
"expirationDate": "2028-02-01",
|
||||||
"productInstances":
|
"productInstances": [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"name": "HTM 90% Korting EMV",
|
"name": "HTM 90% Korting EMV",
|
||||||
"status": "Active",
|
"status": "Active",
|
||||||
"isRenewable": true,
|
"isRenewable": true,
|
||||||
"productCategory":
|
"productCategory": {
|
||||||
{
|
|
||||||
"productCategoryId": 1,
|
"productCategoryId": 1,
|
||||||
"name": "Kortingsabonnement",
|
"name": "Kortingsabonnement"
|
||||||
},
|
},
|
||||||
"fromInclusive": "2025-11-25T13:25:00+01:00",
|
"fromInclusive": "2025-11-25T13:25:00+01:00",
|
||||||
"untilInclusive": "2025-12-25T03:59:59+01:00",
|
"untilInclusive": "2025-12-25T03:59:59+01:00",
|
||||||
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
||||||
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
||||||
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
|
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
|
||||||
"_links":
|
"_links": {
|
||||||
{
|
"self": {
|
||||||
"self":
|
|
||||||
{
|
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances/1",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances/1",
|
||||||
"method": "GET",
|
"method": "GET"
|
||||||
},
|
},
|
||||||
"get_order":
|
"get_order": {
|
||||||
{
|
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
||||||
"method": "GET",
|
"method": "GET"
|
||||||
},
|
},
|
||||||
"get_contract":
|
"get_contract": {
|
||||||
{
|
|
||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
|
||||||
"method": "GET",
|
"method": "GET"
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
"replacedByTokenId": null,
|
"replacedByTokenId": null,
|
||||||
"autoReloadRegistration": null,
|
"autoReloadRegistration": null,
|
||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"newOvPayToken":
|
"newOvPayToken":
|
||||||
{
|
{
|
||||||
"customerProfileId": null,
|
"customerProfileId": null,
|
||||||
"ovPayTokenId": null,
|
"ovPayTokenId": null,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType":
|
"tokenType": { "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"tokenStatus": null,
|
"tokenStatus": null,
|
||||||
"expirationDate": "2028-02-01",
|
"expirationDate": "2028-02-01",
|
||||||
@ -2497,7 +2481,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"isTransferable": false,
|
"isTransferable": false,
|
||||||
"transferableObjects":
|
"transferableObjects":
|
||||||
@ -2534,7 +2518,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"newOvPayToken":
|
"newOvPayToken":
|
||||||
{
|
{
|
||||||
@ -2551,7 +2535,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"isTransferable": false,
|
"isTransferable": false,
|
||||||
"transferableObjects":
|
"transferableObjects":
|
||||||
@ -2623,8 +2607,8 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
"newOvPayToken":
|
"newOvPayToken":
|
||||||
{
|
{
|
||||||
@ -2641,7 +2625,7 @@ paths:
|
|||||||
"ePurse": null,
|
"ePurse": null,
|
||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null
|
||||||
},
|
},
|
||||||
"isTransferable": false,
|
"isTransferable": false,
|
||||||
"transferableObjects":
|
"transferableObjects":
|
||||||
@ -2699,8 +2683,8 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
"newOvPayToken":
|
"newOvPayToken":
|
||||||
{
|
{
|
||||||
@ -2735,8 +2719,8 @@ paths:
|
|||||||
"gboAgeProfileId": 4,
|
"gboAgeProfileId": 4,
|
||||||
"name": "Kind (19 t/m 65 jaar)",
|
"name": "Kind (19 t/m 65 jaar)",
|
||||||
"ageFromInclusive": 19,
|
"ageFromInclusive": 19,
|
||||||
"ageToInclusive": 65,
|
"ageToInclusive": 65
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
"isTransferable": false,
|
"isTransferable": false,
|
||||||
"transferableObjects":
|
"transferableObjects":
|
||||||
@ -3099,7 +3083,7 @@ paths:
|
|||||||
"gboAgeProfileId": 1,
|
"gboAgeProfileId": 1,
|
||||||
"name": "Kind (4 t/m 11 jaar)",
|
"name": "Kind (4 t/m 11 jaar)",
|
||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
@ -3140,22 +3124,60 @@ paths:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
"202":
|
|
||||||
description: Accepted
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/unavailable"
|
|
||||||
examples:
|
|
||||||
Token transfer in progress:
|
Token transfer in progress:
|
||||||
description: |
|
description: |
|
||||||
The transfer of the token is still in progress. The response body shows the details of the
|
The transfer of the token is still in progress. The response body shows the details of the
|
||||||
processing status.
|
processing status.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"startTime": "2025-02-14T05:32:47.067Z",
|
"properties":
|
||||||
|
{
|
||||||
|
"waitEndTime": "2025-06-04T09:29:21.9641991Z",
|
||||||
|
"startTime": "2025-06-04T09:29:21.9641991Z",
|
||||||
"status": "Running",
|
"status": "Running",
|
||||||
"clientTrackingId": "08584620957189579629541919368CU00",
|
"correlation":
|
||||||
|
{
|
||||||
|
"clientTrackingId": "08584525775244808022011782750CU00",
|
||||||
|
},
|
||||||
|
"workflow":
|
||||||
|
{
|
||||||
|
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/versions/08584532480062676349",
|
||||||
|
"name": "08584532480062676349",
|
||||||
|
"type": "workflows/versions",
|
||||||
|
},
|
||||||
|
"trigger":
|
||||||
|
{
|
||||||
|
"name": "token_transfer",
|
||||||
|
"inputsLink":
|
||||||
|
{
|
||||||
|
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerInputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerInputs%2Fread&sv=1.0&sig=6Uxs33K7cQ7jONWzhv9XFPzx4RRHZ6smzfM6wNPk5Mc",
|
||||||
|
"contentSize": 298,
|
||||||
|
},
|
||||||
|
"outputsLink":
|
||||||
|
{
|
||||||
|
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerOutputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerOutputs%2Fread&sv=1.0&sig=vJ6pmCsmz2aP7f73MVOmCTes3YvC1e2w0ZLqdypLXrM",
|
||||||
|
"contentSize": 6110,
|
||||||
|
},
|
||||||
|
"startTime": "2025-06-04T09:29:21.9497457Z",
|
||||||
|
"endTime": "2025-06-04T09:29:21.9497457Z",
|
||||||
|
"originHistoryName": "08584525775235278538475939776CU00",
|
||||||
|
"correlation":
|
||||||
|
{
|
||||||
|
"clientTrackingId": "08584525775244808022011782750CU00",
|
||||||
|
},
|
||||||
|
"status": "Succeeded",
|
||||||
|
},
|
||||||
|
"outputs": {},
|
||||||
|
"response":
|
||||||
|
{
|
||||||
|
"startTime": "2025-06-04T09:29:21.9642901Z",
|
||||||
|
"correlation": {},
|
||||||
|
"status": "Waiting",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00",
|
||||||
|
"name": "08584525775235278538475939776CU00",
|
||||||
|
"type": "workflows/runs",
|
||||||
}
|
}
|
||||||
"404":
|
"404":
|
||||||
description: Not found
|
description: Not found
|
||||||
@ -3354,7 +3376,10 @@ paths:
|
|||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
examples:
|
examples:
|
||||||
Update alias of a device:
|
Update alias of a device:
|
||||||
value: { "alias": "My old iPhone 13" }
|
value:
|
||||||
|
{
|
||||||
|
"alias": "My old iPhone 13",
|
||||||
|
}
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -3768,11 +3793,23 @@ components:
|
|||||||
example: GET
|
example: GET
|
||||||
OvPayTokenProductInstancesResponse:
|
OvPayTokenProductInstancesResponse:
|
||||||
type: object
|
type: object
|
||||||
|
required:
|
||||||
|
- productInstances
|
||||||
properties:
|
properties:
|
||||||
productInstances:
|
productInstances:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
|
required:
|
||||||
|
- productId
|
||||||
|
- name
|
||||||
|
- status
|
||||||
|
- isRenewable
|
||||||
|
- productCategory
|
||||||
|
- fromInclusive
|
||||||
|
- orderId
|
||||||
|
- orderLineId
|
||||||
|
- _links
|
||||||
properties:
|
properties:
|
||||||
productId:
|
productId:
|
||||||
type: integer
|
type: integer
|
||||||
@ -3834,20 +3871,20 @@ components:
|
|||||||
example: GET
|
example: GET
|
||||||
get_order:
|
get_order:
|
||||||
type: object
|
type: object
|
||||||
|
description: Always present for any HTM product-instance
|
||||||
properties:
|
properties:
|
||||||
href:
|
href:
|
||||||
type: string
|
type: string
|
||||||
description: Always present for any HTM product-instance
|
|
||||||
example: https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E
|
||||||
method:
|
method:
|
||||||
type: string
|
type: string
|
||||||
example: GET
|
example: GET
|
||||||
get_contract:
|
get_contract:
|
||||||
type: object
|
type: object
|
||||||
|
description: Only present for subscriptions/contracts
|
||||||
properties:
|
properties:
|
||||||
href:
|
href:
|
||||||
type: string
|
type: string
|
||||||
description: Only present for subscriptions/contracts
|
|
||||||
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F
|
||||||
method:
|
method:
|
||||||
type: string
|
type: string
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
617
src/openapi/customers/SE-tat-security.yaml
Normal file
617
src/openapi/customers/SE-tat-security.yaml
Normal file
@ -0,0 +1,617 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: Service Engine APIs for TAT security
|
||||||
|
description: >-
|
||||||
|
Service Engine APIs for TAT security. These are NOT the raw GBO APIs to access TAT security at GBO directly.
|
||||||
|
To be used by touch points to get secure a TAT.
|
||||||
|
version: "2.0"
|
||||||
|
servers:
|
||||||
|
- url: https://services.acc.api.htm.nl/abt/touchpoint/2.0
|
||||||
|
tags:
|
||||||
|
- name: TAT Security
|
||||||
|
paths:
|
||||||
|
/tokens/status:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
- name: xTat
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format : uuid
|
||||||
|
example: 5c4cba83-1ecd-46a4-b712-a8de0dcb7bbf
|
||||||
|
required: false
|
||||||
|
description: The xtat of the customerToken
|
||||||
|
- name: ovPayTokenId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 1
|
||||||
|
required: false
|
||||||
|
description: The ovpay token id of a specific customer token
|
||||||
|
- name: serviceReferenceId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: NLOV1234567ABCDEFG
|
||||||
|
required: false
|
||||||
|
description: The serviceReferencId found on the bankstatement for a given trip with a bankcard, required for an unknown EMV card
|
||||||
|
- name: amount
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
required: false
|
||||||
|
description: The amount of the value of the bankstatement in cents, required for an unknown EMV card
|
||||||
|
- name: ovpasNumber
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: OV34567
|
||||||
|
required: false
|
||||||
|
description: The number of the ovpas, required for an unknown Ovpas card
|
||||||
|
- name: verificationCode
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: HL78
|
||||||
|
required: false
|
||||||
|
description: The 4 digit verificationCode found on the backside of the Ovpas, required for an unknown Ovpas card
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- TAT Security
|
||||||
|
summary: Check the status of the security and authorization status of the given token
|
||||||
|
description: Check the status of the security and authorization status of the given token, check anonymous tokenDB if no customer headers are supplied otherwise check customer tokenDB
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/TokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
isSecuredandnotAuthorized:
|
||||||
|
summary: Token is secured but HTM is not authorized
|
||||||
|
description: Token is secured but HTM is not authorized
|
||||||
|
value:
|
||||||
|
isSecured: true
|
||||||
|
isAuthorized: false
|
||||||
|
xTat: 12da8f2a-6390-408a-94eb-a6701b5daf27
|
||||||
|
_links: {
|
||||||
|
"authorize": {
|
||||||
|
"href": "/tokens/authorizetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notSecuredandnotAuthorized:
|
||||||
|
summary: Token is not secured but HTM is not authorized
|
||||||
|
description: Token is not secured but HTM is not authorized
|
||||||
|
value:
|
||||||
|
isSecured: false
|
||||||
|
isAuthorized: false
|
||||||
|
xTat: 12da8f2a-6390-408a-94eb-a6701b5daf27
|
||||||
|
_links: {
|
||||||
|
"secure": {
|
||||||
|
"href": "/tokens/securetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: XTAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/securetoken:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Security
|
||||||
|
summary: Request additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
description: Request additional OV-pas security for a token either in profile or anonymous
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecureTokenRequest"
|
||||||
|
examples:
|
||||||
|
With customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
emailAddress: stasjo@htm.nl
|
||||||
|
Without customer account:
|
||||||
|
value:
|
||||||
|
xTat: 62914b49-2c7f-437f-b4b0-2ad61a9f902d
|
||||||
|
emailAddress: stasjo@htm.nl
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/EmailNotPreApprovedResponse"
|
||||||
|
example:
|
||||||
|
recipient: xxxxxx.user@gmail.com
|
||||||
|
description: OTP Sent
|
||||||
|
_links: {
|
||||||
|
"verifyotp": {
|
||||||
|
"href": "/tokens/verifyotp",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"409":
|
||||||
|
description: Conflict
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/ErrorResponse'
|
||||||
|
examples:
|
||||||
|
TAT Already Secured:
|
||||||
|
value:
|
||||||
|
status: 409
|
||||||
|
title: Conflict
|
||||||
|
detail: TAT Already Secured
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/authorizetoken:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Authorization
|
||||||
|
summary: Request authorization for HTM to access the data secured by additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
description: Request authorization for HTM to access the data secured by additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/AuthorizeTokenRequest"
|
||||||
|
examples:
|
||||||
|
With customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
Without customer account:
|
||||||
|
value:
|
||||||
|
xTat: 62914b49-2c7f-437f-b4b0-2ad61a9f902d
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/EmailNotPreApprovedResponse"
|
||||||
|
example:
|
||||||
|
recipient: xxxxxx.user@gmail.com
|
||||||
|
description: OTP Sent
|
||||||
|
_links: {
|
||||||
|
"verifyotp": {
|
||||||
|
"href": "/tokens/verifyotp",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/verifyotp:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Verification
|
||||||
|
summary: Submit an OTP for a triggered OTP flow.
|
||||||
|
description: |
|
||||||
|
Submit an OTP for a triggered OTP flow. This can either be result of an AGO activation, or
|
||||||
|
result of an AGO authorization flow. Since the backoffice behaves slightly different depending
|
||||||
|
on which use case is executed, the calling TP needs to provide an `action` in the request body.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/VerifyOtpRequest"
|
||||||
|
examples:
|
||||||
|
OTP verification for TAT security activation for token in customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
otp: 123456
|
||||||
|
action: secure
|
||||||
|
OTP verification for TAT security authorization for anonymous token:
|
||||||
|
value:
|
||||||
|
xTat: 0f0defe8-828c-48e5-97e5-26d1d0179ef0
|
||||||
|
otp: 123456
|
||||||
|
action: authorize
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/VerifyOtpResponse'
|
||||||
|
examples:
|
||||||
|
Tat Secured:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Secured
|
||||||
|
Tat Unsecured:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Unsecured
|
||||||
|
Tat Authorized:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Authorized
|
||||||
|
"400":
|
||||||
|
description: Bad request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
unavailable:
|
||||||
|
type: object
|
||||||
|
GenerateTatOutput:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
uid:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
An uid IS A unique identifier THAT is associated with the
|
||||||
|
user.
|
||||||
|
recipient:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A recipient IS A unique identifier THAT is associated with the
|
||||||
|
TAT owner.
|
||||||
|
key:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A key IS a 32 character string THAT uniquely identifies the
|
||||||
|
OTP session.
|
||||||
|
EmailNotPreApprovedResponse:
|
||||||
|
type: object
|
||||||
|
description: >-
|
||||||
|
EmailNotPreApprovedResponse IS AN object THAT represents the response of
|
||||||
|
email pre-approval check.
|
||||||
|
properties:
|
||||||
|
recipient:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A recipient IS A unique identifier THAT is associated with the TAT
|
||||||
|
owner.
|
||||||
|
example: xxxxxx.user@gmail.com
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A description IS A string THAT describes the reason why the email is
|
||||||
|
not pre-approved.
|
||||||
|
example: OTP Sent
|
||||||
|
SecureTokenRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 6134db53-9ae5-41d1-a343-36656b60b510
|
||||||
|
emailAddress:
|
||||||
|
type: string
|
||||||
|
format: email
|
||||||
|
example: stasjo@htm.nl
|
||||||
|
required:
|
||||||
|
- emailAddress
|
||||||
|
AuthorizeTokenRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 6134db53-9ae5-41d1-a343-36656b60b510
|
||||||
|
VerifyOtpRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: f3474452-e1d4-428c-b366-e5ad5965eb8c
|
||||||
|
otp:
|
||||||
|
type: string
|
||||||
|
example: 123456
|
||||||
|
action:
|
||||||
|
type: string
|
||||||
|
example: secure
|
||||||
|
required:
|
||||||
|
- otp
|
||||||
|
- action
|
||||||
|
VerifyOtpResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
example: Success
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
example: TAT Secured
|
||||||
|
ErrorResponse:
|
||||||
|
description: Default response when an invalid request has been sent
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
description: >-
|
||||||
|
A status IS An integer that represents the HTTP status code of the
|
||||||
|
response.
|
||||||
|
example: 400
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
description: A title IS A string that provides a brief summary of the error.
|
||||||
|
detail:
|
||||||
|
type: string
|
||||||
|
description: A detail IS A string that provides more details about the error.
|
||||||
|
TokenStatusResponse:
|
||||||
|
type: object
|
||||||
|
description: >-
|
||||||
|
TokenStatusResponse IS AN object THAT represents the current state of the token in relation to the AGO security and authorization status of HTM.
|
||||||
|
required:
|
||||||
|
- isSecured
|
||||||
|
- isAuthorized
|
||||||
|
properties:
|
||||||
|
isSecured:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Is the token secured in the national database (GBO)
|
||||||
|
example: false
|
||||||
|
isAuthorized:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Does HTM have the authorization to access the secured data for this token, only applicable when isSecured equals True.
|
||||||
|
example: false
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
description: >-
|
||||||
|
The xtat of the customerToken given when token is unknown for the customer
|
||||||
|
example: 883674e5-54c7-47d6-a3e3-8781f0d3ffea
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ paths:
|
|||||||
suffix: PhD
|
suffix: PhD
|
||||||
dateOfBirth: "2002-10-29"
|
dateOfBirth: "2002-10-29"
|
||||||
emailAddresses: TEST@HTM.NL
|
emailAddresses: TEST@HTM.NL
|
||||||
isEmailVerified: True
|
isEmailVerified: false
|
||||||
addresses:
|
addresses:
|
||||||
- addressId: 1
|
- addressId: 1
|
||||||
street: mystreet
|
street: mystreet
|
||||||
@ -332,14 +332,6 @@ paths:
|
|||||||
user: user
|
user: user
|
||||||
timestamp: "2023-10-20T17:05:52.000+02:00"
|
timestamp: "2023-10-20T17:05:52.000+02:00"
|
||||||
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
||||||
_links:
|
|
||||||
{
|
|
||||||
"self":
|
|
||||||
{
|
|
||||||
"href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?customerProfileId=1",
|
|
||||||
"method": "GET",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
- customerProfileId: 12
|
- customerProfileId: 12
|
||||||
customerNumber: 1000002
|
customerNumber: 1000002
|
||||||
debtorNumber: DB100121
|
debtorNumber: DB100121
|
||||||
@ -377,7 +369,7 @@ paths:
|
|||||||
suffix: PhD
|
suffix: PhD
|
||||||
dateOfBirth: "2002-10-29"
|
dateOfBirth: "2002-10-29"
|
||||||
emailAddresses: TEST@HTM.NL
|
emailAddresses: TEST@HTM.NL
|
||||||
isEmailVerified: False
|
isEmailVerified: false
|
||||||
address:
|
address:
|
||||||
- addressId: 1
|
- addressId: 1
|
||||||
street: mystreet
|
street: mystreet
|
||||||
@ -467,32 +459,7 @@ paths:
|
|||||||
user: user
|
user: user
|
||||||
timestamp: "2023-10-20T17:05:52.000+02:00"
|
timestamp: "2023-10-20T17:05:52.000+02:00"
|
||||||
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
||||||
_links:
|
href: "https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?offset=20&limit=20"
|
||||||
{
|
|
||||||
"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:
|
getCustomerActive:
|
||||||
summary: getCustomerActive
|
summary: getCustomerActive
|
||||||
description: >-
|
description: >-
|
||||||
@ -526,7 +493,7 @@ paths:
|
|||||||
suffix: PhD
|
suffix: PhD
|
||||||
dateOfBirth: "2002-10-29"
|
dateOfBirth: "2002-10-29"
|
||||||
emailAddresses: TEST@HTM.NL
|
emailAddresses: TEST@HTM.NL
|
||||||
isEmailVerified: False
|
isEmailVerified: false
|
||||||
addresses:
|
addresses:
|
||||||
- addressId: 1
|
- addressId: 1
|
||||||
street: mystreet
|
street: mystreet
|
||||||
@ -615,22 +582,7 @@ paths:
|
|||||||
user: user
|
user: user
|
||||||
timestamp: "2023-10-20T17:05:52.000+02:00"
|
timestamp: "2023-10-20T17:05:52.000+02:00"
|
||||||
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
||||||
_links:
|
href: https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?offset=20&limit=20
|
||||||
{
|
|
||||||
"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:
|
getCustomerBlocked:
|
||||||
summary: getCustomerBlocked
|
summary: getCustomerBlocked
|
||||||
description: >-
|
description: >-
|
||||||
@ -669,7 +621,7 @@ paths:
|
|||||||
suffix: PhD
|
suffix: PhD
|
||||||
dateOfBirth: "2002-10-29"
|
dateOfBirth: "2002-10-29"
|
||||||
emailAddresses: TEST@HTM.NL
|
emailAddresses: TEST@HTM.NL
|
||||||
isEmailVerified: True
|
isEmailVerified: false
|
||||||
addresses:
|
addresses:
|
||||||
- addressId: 1
|
- addressId: 1
|
||||||
street: mystreet
|
street: mystreet
|
||||||
@ -758,22 +710,7 @@ paths:
|
|||||||
user: user
|
user: user
|
||||||
timestamp: "2023-10-20T17:05:52.000+02:00"
|
timestamp: "2023-10-20T17:05:52.000+02:00"
|
||||||
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
|
||||||
_links:
|
href: https://api.integratielaag.nl/abt/abtcustomers/2.0/customers?offset=20&limit=20
|
||||||
{
|
|
||||||
"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:
|
400:
|
||||||
description: Bad Request
|
description: Bad Request
|
||||||
content:
|
content:
|
||||||
@ -835,7 +772,7 @@ paths:
|
|||||||
suffix: jr
|
suffix: jr
|
||||||
dateOfBirth: "1970-01-01"
|
dateOfBirth: "1970-01-01"
|
||||||
emailAddress: j.jansen@hatseflats.nl
|
emailAddress: j.jansen@hatseflats.nl
|
||||||
isEmailVerified: False
|
isEmailVerified: false
|
||||||
addresses:
|
addresses:
|
||||||
- street: Laan van Meerdervoort
|
- street: Laan van Meerdervoort
|
||||||
houseNumber: 5
|
houseNumber: 5
|
||||||
@ -934,7 +871,7 @@ paths:
|
|||||||
suffix: "jr",
|
suffix: "jr",
|
||||||
dateOfBirth: "1970-01-01",
|
dateOfBirth: "1970-01-01",
|
||||||
emailAddress: "TEST@TEST1.NL",
|
emailAddress: "TEST@TEST1.NL",
|
||||||
isEmailVerified: False
|
isEmailVerified: false
|
||||||
}
|
}
|
||||||
updateCompleteEntity:
|
updateCompleteEntity:
|
||||||
value:
|
value:
|
||||||
@ -946,7 +883,7 @@ paths:
|
|||||||
suffix: "jr",
|
suffix: "jr",
|
||||||
dateOfBirth: "1970-01-01",
|
dateOfBirth: "1970-01-01",
|
||||||
emailAddress: "TEST@TEST1.NL",
|
emailAddress: "TEST@TEST1.NL",
|
||||||
isEmailVerified: True
|
isEmailVerified: false
|
||||||
}
|
}
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
@ -1303,7 +1240,6 @@ paths:
|
|||||||
name: externalDeviceId
|
name: externalDeviceId
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
|
||||||
example: c5545584-04af-4c60-a955-d6a70baab848
|
example: c5545584-04af-4c60-a955-d6a70baab848
|
||||||
required: false
|
required: false
|
||||||
description: The external id of the device.
|
description: The external id of the device.
|
||||||
@ -1439,13 +1375,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/getDevices"
|
$ref: "#/components/schemas/patchDeviceResponse"
|
||||||
examples:
|
|
||||||
updateDeviceResponse:
|
|
||||||
value:
|
|
||||||
deviceId: "5bedce29-af0c-4f3c-b182-2caa8a1f9377"
|
|
||||||
externalDeviceId: "7122a988-a00a-417d-a5b4-da2d91354976"
|
|
||||||
alias: "iPhone zakelijk"
|
|
||||||
|
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
@ -1608,24 +1538,7 @@ paths:
|
|||||||
"replacedByTokenId": 12,
|
"replacedByTokenId": 12,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"_links":
|
"href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/ovPayTokens?offset=20&limit=20"
|
||||||
{
|
|
||||||
"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:
|
/customers/{customerProfileId}/ovpaytokens:
|
||||||
post:
|
post:
|
||||||
@ -1944,9 +1857,10 @@ paths:
|
|||||||
"created": "2024-10-20T17:05:52.000",
|
"created": "2024-10-20T17:05:52.000",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
"href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/billingInformations?offset=20&limit=20"
|
||||||
}
|
}
|
||||||
getBillingInformationSingleSpecificCustomer:
|
getBillingInformationSingleSpecificCustomer:
|
||||||
summary: Get singel billing information entity for a specific customers
|
summary: Get single billing information entity for a specific customers
|
||||||
description: >-
|
description: >-
|
||||||
Found one billing information matching the search parameters
|
Found one billing information matching the search parameters
|
||||||
value:
|
value:
|
||||||
@ -2136,59 +2050,7 @@ paths:
|
|||||||
"updateTimestamp": "2024-03-22T08:55:00",
|
"updateTimestamp": "2024-03-22T08:55:00",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"_links":
|
"href": "https://api.integratielaag.nl/abt/abtcustomers/2.0/directdebitmandates?offset=20&limit=20"
|
||||||
{
|
|
||||||
"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",
|
|
||||||
},
|
|
||||||
"created": "2024-03-22T08:55:00",
|
|
||||||
"mandateReference": "CORE01",
|
|
||||||
"mandateState": "SIGNED",
|
|
||||||
"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:
|
/billingInformation/{billingInformationId}/directdebitmandates:
|
||||||
post:
|
post:
|
||||||
@ -2480,7 +2342,6 @@ components:
|
|||||||
format: uuid
|
format: uuid
|
||||||
externalDeviceId:
|
externalDeviceId:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
|
||||||
alias:
|
alias:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
@ -2599,7 +2460,6 @@ components:
|
|||||||
properties:
|
properties:
|
||||||
externalDeviceId:
|
externalDeviceId:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
|
||||||
alias:
|
alias:
|
||||||
type: string
|
type: string
|
||||||
defaultCustomerProfileResponse:
|
defaultCustomerProfileResponse:
|
||||||
@ -2846,7 +2706,7 @@ components:
|
|||||||
emailAddress:
|
emailAddress:
|
||||||
type: string
|
type: string
|
||||||
isEmailVerified:
|
isEmailVerified:
|
||||||
type: string
|
type: boolean
|
||||||
postOvPayTokenResponse:
|
postOvPayTokenResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -2860,6 +2720,14 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/getDeviceEntity"
|
$ref: "#/components/schemas/getDeviceEntity"
|
||||||
|
patchDeviceResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
deviceId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: "b2c8a8c6-3d1c-4b6b-8f8d-3a6a1b6a1b6a"
|
||||||
|
|
||||||
getDeviceEntity:
|
getDeviceEntity:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -2870,7 +2738,6 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
externalDeviceId:
|
externalDeviceId:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
|
||||||
alias:
|
alias:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
|
|||||||
1870
src/openapi/customers/customers-trips.yaml
Normal file
1870
src/openapi/customers/customers-trips.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@ -417,38 +417,56 @@ paths:
|
|||||||
example:
|
example:
|
||||||
Entries:
|
Entries:
|
||||||
phoneTypes:
|
phoneTypes:
|
||||||
- name: mobile
|
- name: Mobiel
|
||||||
id: 1
|
id: 1
|
||||||
- name: fixed line
|
- name: Thuis
|
||||||
id: 2
|
id: 2
|
||||||
|
- name: Ouders
|
||||||
|
id: 3
|
||||||
|
- name: Bewindvoerder
|
||||||
|
id: 4
|
||||||
|
- name: Home
|
||||||
|
id: 5
|
||||||
|
- name: Mobile
|
||||||
|
id: 6
|
||||||
|
- name: Work
|
||||||
|
id: 7
|
||||||
|
- name: Noodtelefoon
|
||||||
|
id: 8
|
||||||
addressTypes:
|
addressTypes:
|
||||||
- name: home
|
- name: Shipping
|
||||||
id: 1
|
id: 1
|
||||||
- name: office
|
- name: Billing
|
||||||
id: 2
|
id: 2
|
||||||
customerStatuses:
|
customerStatuses:
|
||||||
- name: active
|
- name: Inactive
|
||||||
id: 1
|
id: 1
|
||||||
- name: blocked
|
- name: Active
|
||||||
id: 2
|
id: 2
|
||||||
- name: inactive
|
- name: Blocked
|
||||||
id: 3
|
id: 3
|
||||||
- name: new
|
- name: Frozen
|
||||||
id: 4
|
id: 4
|
||||||
|
- name: Cleared
|
||||||
|
id: 5
|
||||||
tokenTypes:
|
tokenTypes:
|
||||||
- name: Debit card
|
- name: EMV
|
||||||
id: 1
|
id: 1
|
||||||
- name: Credit card
|
|
||||||
id: 2
|
|
||||||
- name: OVPas physical
|
- name: OVPas physical
|
||||||
id: 3
|
id: 2
|
||||||
- name: OVPas digital
|
- name: OVPas digital
|
||||||
id: 4
|
id: 3
|
||||||
directDebitMandateTypes:
|
directDebitMandateTypes:
|
||||||
- name: Paper Contract
|
- name: Paper Contract
|
||||||
id: 1
|
id: 1
|
||||||
- name: PIN transaction
|
- name: PIN transaction
|
||||||
id: 2
|
id: 2
|
||||||
|
- name: SEPA eMandate
|
||||||
|
id: 3
|
||||||
|
- name: Digital signature
|
||||||
|
id: 4
|
||||||
|
- name: IDEAL transaction
|
||||||
|
id: 5
|
||||||
tokenStatuses:
|
tokenStatuses:
|
||||||
- name: Expired
|
- name: Expired
|
||||||
id: 1
|
id: 1
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -49,6 +49,8 @@ paths:
|
|||||||
- status
|
- status
|
||||||
- aggregationReference
|
- aggregationReference
|
||||||
- accountingSystemReference
|
- accountingSystemReference
|
||||||
|
- createdOn
|
||||||
|
- lastUpdatedOn
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -79,6 +81,8 @@ paths:
|
|||||||
- status
|
- status
|
||||||
- aggregationReference
|
- aggregationReference
|
||||||
- accountingSystemReference
|
- accountingSystemReference
|
||||||
|
- createdOn
|
||||||
|
- lastUpdatedOn
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -118,6 +122,8 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
|
- "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
|
||||||
transactionItemRowId: 3232
|
transactionItemRowId: 3232
|
||||||
transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
|
transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
|
||||||
@ -137,6 +143,8 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
|
- "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
|
||||||
transactionItemRowId: 3233
|
transactionItemRowId: 3233
|
||||||
transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
|
transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
|
||||||
@ -156,6 +164,8 @@ paths:
|
|||||||
status: returned to src
|
status: returned to src
|
||||||
aggregationReference: FIKO-171f40609e
|
aggregationReference: FIKO-171f40609e
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
|
- "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
|
||||||
transactionItemRowId: 3234
|
transactionItemRowId: 3234
|
||||||
transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
|
transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
|
||||||
@ -175,6 +185,8 @@ paths:
|
|||||||
status: returned to trx-db
|
status: returned to trx-db
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
|
- "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
|
||||||
transactionItemRowId: 3235
|
transactionItemRowId: 3235
|
||||||
transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
|
transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
|
||||||
@ -194,6 +206,8 @@ paths:
|
|||||||
status: re-entered
|
status: re-entered
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
|
- "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
|
||||||
transactionItemRowId: 3236
|
transactionItemRowId: 3236
|
||||||
transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
|
transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
|
||||||
@ -213,6 +227,8 @@ paths:
|
|||||||
status: succeeded
|
status: succeeded
|
||||||
aggregationReference: FIKO-6a4fca8cd6
|
aggregationReference: FIKO-6a4fca8cd6
|
||||||
accountingSystemReference: U4F-123456
|
accountingSystemReference: U4F-123456
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -434,7 +450,7 @@ paths:
|
|||||||
summary: Add a processing failure.
|
summary: Add a processing failure.
|
||||||
description: Add a processing failure.
|
description: Add a processing failure.
|
||||||
tags:
|
tags:
|
||||||
- Failures v2.2
|
- Failures v2.3
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
content:
|
content:
|
||||||
@ -455,6 +471,7 @@ paths:
|
|||||||
reasonCode: "012"
|
reasonCode: "012"
|
||||||
reasonDescription: Transaction date is in the future.
|
reasonDescription: Transaction date is in the future.
|
||||||
resolved: false
|
resolved: false
|
||||||
|
journalEntryId: 0e53b984-16b2-4ef7-b669-29bcdad2a3ce
|
||||||
responses:
|
responses:
|
||||||
"201":
|
"201":
|
||||||
description: Created
|
description: Created
|
||||||
@ -472,67 +489,6 @@ paths:
|
|||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
x-throttling-tier: Unlimited
|
x-throttling-tier: Unlimited
|
||||||
/transactionitems/{transactionItemId}/transactionaudittrails:
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: transactionItemId
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
example: 9834b346-d68c-438d-9bd5-6716422c2657
|
|
||||||
required: true
|
|
||||||
description: The id of the transaction item to process.
|
|
||||||
post:
|
|
||||||
summary: Add an audit trail entry.
|
|
||||||
description: Add an audit trail entry.
|
|
||||||
tags:
|
|
||||||
- Audit Trail v2.2
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/TransactionAuditTrailsPostRequestBody"
|
|
||||||
examples:
|
|
||||||
Add new transaction audit trail for created transaction item:
|
|
||||||
summary: Add new transaction audit trail for created transaction item
|
|
||||||
description: Add a new audit trail record for a newly created transaction item.
|
|
||||||
value:
|
|
||||||
user: fiko
|
|
||||||
timestamp: 2022-01-01 12:34:00
|
|
||||||
action: create
|
|
||||||
status: created
|
|
||||||
description: Transaction item created.
|
|
||||||
correlationId: null
|
|
||||||
Add new transaction audit trail for updated transaction item:
|
|
||||||
summary: Add new transaction audit trail for updated transaction item
|
|
||||||
description: Add a new audit trail record for an updated transaction item.
|
|
||||||
value:
|
|
||||||
user: ad.vogelaar
|
|
||||||
timestamp: 2022-01-02 12:34:00
|
|
||||||
action: update
|
|
||||||
status: return to src
|
|
||||||
description: Transaction item returned to source.
|
|
||||||
correlationId: 0dc216ea-58e7-4a5e-aa18-449f0304209c
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: Created
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/TransactionAuditTrailsPostResponseBody"
|
|
||||||
examples:
|
|
||||||
Transaction audit trail record created:
|
|
||||||
summary: Transaction audit trail record created
|
|
||||||
description: |
|
|
||||||
A new audit trail record for this transaction item was successfully created.
|
|
||||||
The transactionAuditTrailId is returned as a reference for the consumer.
|
|
||||||
value:
|
|
||||||
transactionAuditTrailId: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
|
||||||
security:
|
|
||||||
- default: []
|
|
||||||
x-auth-type: Application & Application User
|
|
||||||
x-throttling-tier: Unlimited
|
|
||||||
/Odata/TransactionAuditTrail:
|
/Odata/TransactionAuditTrail:
|
||||||
get:
|
get:
|
||||||
summary: Find audit trail entries.
|
summary: Find audit trail entries.
|
||||||
@ -564,6 +520,7 @@ paths:
|
|||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
- correlationId
|
- correlationId
|
||||||
|
- journalEntryId
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -584,6 +541,7 @@ paths:
|
|||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
- correlationId
|
- correlationId
|
||||||
|
- journalEntryId
|
||||||
- name: $expand
|
- name: $expand
|
||||||
in: query
|
in: query
|
||||||
description: Expand related entities
|
description: Expand related entities
|
||||||
@ -597,6 +555,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- TransactionItem
|
- TransactionItem
|
||||||
|
- JournalEntry
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -627,6 +586,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
||||||
@ -637,6 +597,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
||||||
@ -647,6 +608,7 @@ paths:
|
|||||||
status: return to src
|
status: return to src
|
||||||
description: Transaction retunred to source.
|
description: Transaction retunred to source.
|
||||||
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
||||||
@ -657,6 +619,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: a062f64f-f39e-48e7-9793-efbfa86d2827
|
||||||
List containing multiple transaction audit trails of one transaction item:
|
List containing multiple transaction audit trails of one transaction item:
|
||||||
summary: List containing multiple 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`).
|
description: List containing multiple audit trail records of one transaction item (with id `d667d293-aa82-4c9e-9b10-77cffc9058a1`).
|
||||||
@ -673,6 +636,7 @@ paths:
|
|||||||
status: re-entered
|
status: re-entered
|
||||||
description: Transaction re-entered.
|
description: Transaction re-entered.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
|
transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
|
||||||
@ -683,6 +647,7 @@ paths:
|
|||||||
status: return to src
|
status: return to src
|
||||||
description: Transaction retunred to source.
|
description: Transaction retunred to source.
|
||||||
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
|
transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
|
||||||
@ -693,6 +658,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: b479507a-a65d-48b5-8476-87c88ba3c560
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
|
transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
|
||||||
@ -703,6 +669,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
List containing multiple audit trails of different failed transactions:
|
List containing multiple audit trails of different failed transactions:
|
||||||
summary: 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).
|
description: List containing multiple audit trails of different failed transactions (status = failed).
|
||||||
@ -719,6 +686,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
||||||
@ -729,6 +697,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: 43a98533-bb01-4aad-8d61-005051125969
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
||||||
@ -739,6 +708,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
||||||
@ -749,6 +719,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -786,6 +757,7 @@ paths:
|
|||||||
- reasonDescription
|
- reasonDescription
|
||||||
- resolved
|
- resolved
|
||||||
- change
|
- change
|
||||||
|
- journalEntryId
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -808,6 +780,7 @@ paths:
|
|||||||
- reasonDescription
|
- reasonDescription
|
||||||
- resolved
|
- resolved
|
||||||
- change
|
- change
|
||||||
|
- journalEntryId
|
||||||
- name: $expand
|
- name: $expand
|
||||||
in: query
|
in: query
|
||||||
description: Expand related entities
|
description: Expand related entities
|
||||||
@ -821,6 +794,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- TransactionItem
|
- TransactionItem
|
||||||
|
- JournalEntry
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -856,6 +830,7 @@ paths:
|
|||||||
reasonDescription: Cost type does not exist.
|
reasonDescription: Cost type does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
|
- "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
|
||||||
processingFailureRowId: 10
|
processingFailureRowId: 10
|
||||||
processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
|
processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
|
||||||
@ -867,6 +842,7 @@ paths:
|
|||||||
reasonDescription: Cost center does not exist.
|
reasonDescription: Cost center does not exist.
|
||||||
resolved: true
|
resolved: true
|
||||||
change: Adapt config
|
change: Adapt config
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
|
- "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
|
||||||
processingFailureRowId: 11
|
processingFailureRowId: 11
|
||||||
processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
|
processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
|
||||||
@ -878,6 +854,7 @@ paths:
|
|||||||
reasonDescription: Department does not exist.
|
reasonDescription: Department does not exist.
|
||||||
resolved: true
|
resolved: true
|
||||||
change: Adapt config
|
change: Adapt config
|
||||||
|
journalEntryId: null
|
||||||
List of unfiltered processing failures:
|
List of unfiltered processing failures:
|
||||||
summary: List of unfiltered processing failures
|
summary: List of unfiltered processing failures
|
||||||
description: |
|
description: |
|
||||||
@ -897,6 +874,7 @@ paths:
|
|||||||
reasonDescription: Transaction date is in the future
|
reasonDescription: Transaction date is in the future
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
|
- "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
|
||||||
processingFailureRowId: 10
|
processingFailureRowId: 10
|
||||||
processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
|
processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
|
||||||
@ -908,6 +886,7 @@ paths:
|
|||||||
reasonDescription: Cost center does not exist.
|
reasonDescription: Cost center does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
|
- "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
|
||||||
processingFailureRowId: 11
|
processingFailureRowId: 11
|
||||||
processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
|
processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
|
||||||
@ -919,6 +898,7 @@ paths:
|
|||||||
reasonDescription: Department does not exist.
|
reasonDescription: Department does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -969,6 +949,415 @@ paths:
|
|||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
x-throttling-tier: Unlimited
|
x-throttling-tier: Unlimited
|
||||||
|
/Odata/JournalEntries:
|
||||||
|
get:
|
||||||
|
summary: Find journalEntry.
|
||||||
|
description: Find journalEntry.
|
||||||
|
tags:
|
||||||
|
- Odata
|
||||||
|
parameters:
|
||||||
|
- $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:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- accountingSystemReference
|
||||||
|
- name: $select
|
||||||
|
in: query
|
||||||
|
description: Select properties to be returned
|
||||||
|
required: false
|
||||||
|
style: form
|
||||||
|
explode: false
|
||||||
|
schema:
|
||||||
|
uniqueItems: true
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- accountingSystemReference
|
||||||
|
- data
|
||||||
|
- response
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryGetResponseBody"
|
||||||
|
examples:
|
||||||
|
List containing all journal entries:
|
||||||
|
summary: List containing all journal entries
|
||||||
|
description: Returns a list containing all journal entries (no filters applied).
|
||||||
|
value:
|
||||||
|
"@odata.context": "$metadata#JournalEntry"
|
||||||
|
value:
|
||||||
|
- "@odata.etag": 8f085711-eeae-44ed-bac1-06779bedb480
|
||||||
|
journalEntryId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
|
||||||
|
aggregationReference: FIKO-123456
|
||||||
|
accountingSystemReference: null
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: {
|
||||||
|
"status": "failed",
|
||||||
|
"message": [
|
||||||
|
{
|
||||||
|
"code": "352",
|
||||||
|
"reason": "Documentregel 1 kan niet geboekt worden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "159",
|
||||||
|
"reason": "Element 99999 (niveau 2) is niet toegestaan in linkerlijst van element D150000001 (niveau 3)."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hints": [],
|
||||||
|
"paths": [
|
||||||
|
"/InputRequest/PostToBooks/Request/Transaction/Lines/Line[1]/AccountCode"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
- "@odata.etag": 66c033af-fc67-4eb2-9d17-d74a0166470f
|
||||||
|
journalEntryId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a
|
||||||
|
aggregationReference: FIKO-123457
|
||||||
|
accountingSystemReference: "OPBR-FIKO10000090"
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: {
|
||||||
|
"key": {
|
||||||
|
"$type": "finance_transaction_txnKey",
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO",
|
||||||
|
"number": " 10000090"
|
||||||
|
},
|
||||||
|
"suppliedNumber": ""
|
||||||
|
}
|
||||||
|
- "@odata.etag": 159f526c-3c88-48a1-93a0-e16430500bef
|
||||||
|
journalEntryId: 6097121f-f300-4c0b-ab8d-0a24685bda92
|
||||||
|
aggregationReference: FIKO-123458
|
||||||
|
accountingSystemReference: null
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: null
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
|
/journalEntries:
|
||||||
|
post:
|
||||||
|
summary: Add a journalEntry.
|
||||||
|
description: Add a journalEntry.
|
||||||
|
tags:
|
||||||
|
- journalEntries v1.0
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPostRequestBody"
|
||||||
|
examples:
|
||||||
|
Add a new journalEntry:
|
||||||
|
summary: Add a new journalEntry
|
||||||
|
description: In this example we add a new journalEntry.
|
||||||
|
value:
|
||||||
|
aggregationReference: FIKO-123456
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPostResponseBody"
|
||||||
|
examples:
|
||||||
|
Journalentry created successfully:
|
||||||
|
summary: Journalentry created successfully
|
||||||
|
description: TheJournalentry was successfully added to the database.
|
||||||
|
value:
|
||||||
|
journalEntryId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
|
/journalEntries/{journalEntryId}:
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: journalEntryId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
||||||
|
required: true
|
||||||
|
description: The id of the journalEntry.
|
||||||
|
patch:
|
||||||
|
summary: Update journalEntry.
|
||||||
|
description: Update journalEntry.
|
||||||
|
tags:
|
||||||
|
- journalEntries v1.0
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPatchRequestBody"
|
||||||
|
examples:
|
||||||
|
Update an journalEntry after error:
|
||||||
|
summary: Update an journalEntry after error
|
||||||
|
description: Update an journalEntry after error by logging the response
|
||||||
|
value:
|
||||||
|
response: {
|
||||||
|
"status": "failed",
|
||||||
|
"message": [
|
||||||
|
{
|
||||||
|
"code": "352",
|
||||||
|
"reason": "Documentregel 1 kan niet geboekt worden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "159",
|
||||||
|
"reason": "Element 99999 (niveau 2) is niet toegestaan in linkerlijst van element D150000001 (niveau 3)."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hints": [],
|
||||||
|
"paths": [
|
||||||
|
"/InputRequest/PostToBooks/Request/Transaction/Lines/Line[1]/AccountCode"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
Update an journalEntry after success:
|
||||||
|
summary: Update an journalEntry after succesfull call
|
||||||
|
description: Update an journalEntry after uccesfull call bij logging the response and the accountingSystemReference.
|
||||||
|
value:
|
||||||
|
accountingSystemReference: "OPBR-FIKO10000090"
|
||||||
|
response: {
|
||||||
|
"key": {
|
||||||
|
"$type": "finance_transaction_txnKey",
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO",
|
||||||
|
"number": " 10000090"
|
||||||
|
},
|
||||||
|
"suppliedNumber": ""
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPatchResponseBody"
|
||||||
|
examples:
|
||||||
|
JournalEntry updated successfully:
|
||||||
|
summary: JournalEntry updated successfully
|
||||||
|
description: The journalEntry was successfully updated in the database.
|
||||||
|
value:
|
||||||
|
journalEntryId: 5bbf5abc-4da5-4bb4-894e-a7f553789a20
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
/Odata/BookingProcess:
|
/Odata/BookingProcess:
|
||||||
get:
|
get:
|
||||||
summary: Find booking processes.
|
summary: Find booking processes.
|
||||||
@ -3316,6 +3705,16 @@ components:
|
|||||||
- occurredOn
|
- occurredOn
|
||||||
- type
|
- type
|
||||||
- status
|
- status
|
||||||
|
createdOn:
|
||||||
|
type: string
|
||||||
|
nullable: false
|
||||||
|
format: datetime
|
||||||
|
example: "2026-07-20T00:00:00Z"
|
||||||
|
updatedOn:
|
||||||
|
type: string
|
||||||
|
nullable: false
|
||||||
|
format: datetime
|
||||||
|
example: "2026-07-25T00:00:00Z"
|
||||||
TransactionItemsBulkRequestBody:
|
TransactionItemsBulkRequestBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -3551,6 +3950,11 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
example: Adapt config
|
example: Adapt config
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- timestamp
|
- timestamp
|
||||||
- element
|
- element
|
||||||
@ -3617,6 +4021,11 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
example: Adapt config
|
example: Adapt config
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- processingFailureId
|
- processingFailureId
|
||||||
- transactionItemId
|
- transactionItemId
|
||||||
@ -3681,6 +4090,11 @@ components:
|
|||||||
format: uuid
|
format: uuid
|
||||||
nullable: true
|
nullable: true
|
||||||
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- user
|
- user
|
||||||
- timestamp
|
- timestamp
|
||||||
@ -3754,6 +4168,11 @@ components:
|
|||||||
format: uuid
|
format: uuid
|
||||||
nullable: true
|
nullable: true
|
||||||
example: a3891560-3084-42cb-867c-f289e7cda47d
|
example: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- transactionAuditTrailId
|
- transactionAuditTrailId
|
||||||
- transactionItemId
|
- transactionItemId
|
||||||
@ -3761,6 +4180,89 @@ components:
|
|||||||
- timestamp
|
- timestamp
|
||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
|
JournalEntryGetResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
"@odata.context":
|
||||||
|
type: string
|
||||||
|
example: $metadata#JournalEntry
|
||||||
|
value:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/JournalEntry"
|
||||||
|
JournalEntry:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
"@odata.etag":
|
||||||
|
type: string
|
||||||
|
example: 333d6b7d-b709-3b89-89e0-bcb3d5fdddfc
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 8871d779-512c-4d4d-9a8a-dee7c635179d
|
||||||
|
aggregationReference:
|
||||||
|
type: string
|
||||||
|
example: FIKO-123456
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
example: {}
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
required:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- data
|
||||||
|
JournalEntryPostRequestBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
aggregationReference:
|
||||||
|
type: string
|
||||||
|
example: FIKO-123456
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
example: {}
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
required:
|
||||||
|
- aggregationReference
|
||||||
|
- data
|
||||||
|
JournalEntryPostResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: c97a8123-8d0e-41ea-9737-35843ebe2385
|
||||||
|
JournalEntryPatchRequestBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
JournalEntryPatchResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: c97a8123-8d0e-41ea-9737-35843ebe2385
|
||||||
BookingProcessesGetResponseBody:
|
BookingProcessesGetResponseBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
@ -57,12 +57,12 @@ paths:
|
|||||||
required: false
|
required: false
|
||||||
description: The id of the touch point where the order was initiated.
|
description: The id of the touch point where the order was initiated.
|
||||||
- in: query
|
- in: query
|
||||||
name: deviceId
|
name: externalDeviceId
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
example: "7a28bd54-7ca9-499a-a722-d15ab858ab99"
|
example: "7a28bd54-7ca9-499a-a722-d15ab858ab99"
|
||||||
required: false
|
required: false
|
||||||
description: The id of the device used to place the order.
|
description: The external id of the device used to place the order.
|
||||||
- in: query
|
- in: query
|
||||||
name: languageId
|
name: languageId
|
||||||
schema:
|
schema:
|
||||||
@ -111,14 +111,6 @@ paths:
|
|||||||
explode: false
|
explode: false
|
||||||
required: false
|
required: false
|
||||||
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
|
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
|
||||||
- in: query
|
|
||||||
name: issuedVoucherId
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
example: "b0a9f3c9-9b92-4f8c-b78d-6129be7218a6"
|
|
||||||
required: false
|
|
||||||
description: Filter on applied issuedVoucherId for the order.
|
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -140,7 +132,7 @@ paths:
|
|||||||
"touchPointId": 1,
|
"touchPointId": 1,
|
||||||
"name": "Perplex"
|
"name": "Perplex"
|
||||||
},
|
},
|
||||||
"deviceId": "42e77532-d831-41da-b07a-7edb9bb7f004",
|
"externalDeviceId": "42e77532-d831-41da-b07a-7edb9bb7f004",
|
||||||
"language":
|
"language":
|
||||||
{
|
{
|
||||||
"languageId": 1,
|
"languageId": 1,
|
||||||
@ -170,46 +162,24 @@ paths:
|
|||||||
"description": "Betaling in behandeling",
|
"description": "Betaling in behandeling",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"order_OrderVouchers": [
|
"orderVouchers": [
|
||||||
{
|
{
|
||||||
"order_OrderVoucherId": "399bd3b3-9721-4f09-a936-d64637de1621",
|
"orderVoucherId": "399bd3b3-9721-4f09-a936-d64637de1621",
|
||||||
"issuedVoucher":{
|
"issuedVoucher":{
|
||||||
"issuedVoucherId": "a0996218-bc5e-4826-9020-cda98a32838d",
|
"issuedVoucherId": "a0996218-bc5e-4826-9020-cda98a32838d",
|
||||||
"voucherCode": "Voucher1234",
|
"voucherCode": "Voucher1234",
|
||||||
"voucherStatusInstances":
|
"purchasedProductId": 31,
|
||||||
[
|
|
||||||
{
|
|
||||||
"voucherStatus":
|
|
||||||
{
|
|
||||||
"voucherStatusId": 2,
|
|
||||||
"name": "issued"
|
|
||||||
},
|
|
||||||
"createdOn": "2025-11-22T13:00:00"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"productId": 31,
|
|
||||||
"fromInclusive": "2025-03-22T08:55:00",
|
"fromInclusive": "2025-03-22T08:55:00",
|
||||||
"untillInclusive": "2026-03-22T08:55:00"
|
"untillInclusive": "2026-03-22T08:55:00"
|
||||||
},
|
},
|
||||||
"orderLineId": null
|
"orderLineId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order_OrderVoucherId": "f6c7ac42-1811-4e4d-82af-53e18fe16110",
|
"orderVoucherId": "f6c7ac42-1811-4e4d-82af-53e18fe16110",
|
||||||
"issuedVoucher":{
|
"issuedVoucher":{
|
||||||
"issuedVoucherId": "54668baf-4905-4e9a-af02-09c170f295ed",
|
"issuedVoucherId": "54668baf-4905-4e9a-af02-09c170f295ed",
|
||||||
"voucherCode": "Voucher124",
|
"voucherCode": "Voucher124",
|
||||||
"voucherStatusInstances":
|
"purchasedProductId": 35,
|
||||||
[
|
|
||||||
{
|
|
||||||
"voucherStatus":
|
|
||||||
{
|
|
||||||
"voucherStatusId": 2,
|
|
||||||
"name": "issued"
|
|
||||||
},
|
|
||||||
"createdOn": "2025-11-22T13:00:00"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"productId": 35,
|
|
||||||
"fromInclusive": "2025-03-22T08:55:00",
|
"fromInclusive": "2025-03-22T08:55:00",
|
||||||
"untillInclusive": "2026-03-22T08:55:00"
|
"untillInclusive": "2026-03-22T08:55:00"
|
||||||
},
|
},
|
||||||
@ -345,7 +315,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
||||||
"addressType":
|
"addressType":
|
||||||
{ "addressTypeId": 3, "name": "Billing" },
|
{ "addressTypeId": 2, "name": "Billing" },
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
@ -395,7 +365,7 @@ paths:
|
|||||||
"customerProfileId": 1337,
|
"customerProfileId": 1337,
|
||||||
"totalAmount": 121,
|
"totalAmount": 121,
|
||||||
"touchPointId": 1,
|
"touchPointId": 1,
|
||||||
"deviceId": "b8ca9fdf-0bb9-4e49-b48d-41e395563377",
|
"externalDeviceId": "b8ca9fdf-0bb9-4e49-b48d-41e395563377",
|
||||||
"languageId": 1,
|
"languageId": 1,
|
||||||
"createdOn": "2024-03-22T09:00:00",
|
"createdOn": "2024-03-22T09:00:00",
|
||||||
"order_OrderStatus":
|
"order_OrderStatus":
|
||||||
@ -406,7 +376,7 @@ paths:
|
|||||||
"description": "Concept order",
|
"description": "Concept order",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"order_OrderVouchers":
|
"orderVouchers":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"issuedVoucherId": "e81b2197-a6c2-45b6-9560-8ce8442e8604",
|
"issuedVoucherId": "e81b2197-a6c2-45b6-9560-8ce8442e8604",
|
||||||
@ -507,7 +477,7 @@ paths:
|
|||||||
"touchPointId": 1,
|
"touchPointId": 1,
|
||||||
"name": "Perplex"
|
"name": "Perplex"
|
||||||
},
|
},
|
||||||
"deviceId": null,
|
"externalDeviceId": null,
|
||||||
"language":
|
"language":
|
||||||
{
|
{
|
||||||
"languageId": 1,
|
"languageId": 1,
|
||||||
@ -533,7 +503,7 @@ paths:
|
|||||||
"description": "Betaling in behandeling",
|
"description": "Betaling in behandeling",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"order_OrderVouchers": null,
|
"orderVouchers": null,
|
||||||
"orderLines":
|
"orderLines":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -656,7 +626,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
||||||
"addressType":
|
"addressType":
|
||||||
{ "addressTypeId": 3, "name": "Billing" },
|
{ "addressTypeId": 2, "name": "Billing" },
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
@ -680,7 +650,7 @@ paths:
|
|||||||
example:
|
example:
|
||||||
{
|
{
|
||||||
"customerProfileId": 1337,
|
"customerProfileId": 1337,
|
||||||
"deviceId": "fe68e624-b75f-48ca-a179-d5f86a8ab7d5",
|
"externalDeviceId": "fe68e624-b75f-48ca-a179-d5f86a8ab7d5",
|
||||||
"totalAmount": 121,
|
"totalAmount": 121,
|
||||||
"languageId": 1,
|
"languageId": 1,
|
||||||
"lastUpdatedOn": "2024-03-22T09:00:00",
|
"lastUpdatedOn": "2024-03-22T09:00:00",
|
||||||
@ -773,12 +743,12 @@ paths:
|
|||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
example:
|
example:
|
||||||
{
|
{
|
||||||
"order_orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
"orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
||||||
}
|
}
|
||||||
/ordervouchers:
|
/ordervouchers:
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
- in: query
|
||||||
name: order_OrderVoucherId
|
name: orderVoucherId
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
format: uuid
|
||||||
@ -799,6 +769,13 @@ paths:
|
|||||||
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
||||||
required: false
|
required: false
|
||||||
description: The id of the orderLine
|
description: The id of the orderLine
|
||||||
|
- in: query
|
||||||
|
name: issuedVoucherId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
||||||
|
required: false
|
||||||
|
description: The id of the issuedVoucher
|
||||||
get:
|
get:
|
||||||
summary: Find vouchers on the order
|
summary: Find vouchers on the order
|
||||||
description: Find vouchers on the order
|
description: Find vouchers on the order
|
||||||
@ -814,15 +791,22 @@ paths:
|
|||||||
example:
|
example:
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"order_OrderVoucherId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
|
"orderVoucherId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
|
||||||
|
"issuedVoucher":{
|
||||||
|
"issuedVoucherId": "54668baf-4905-4e9a-af02-09c170f295ed",
|
||||||
|
"voucherCode": "Voucher124",
|
||||||
|
"purchasedProductId": 35,
|
||||||
|
"fromInclusive": "2025-03-22T08:55:00",
|
||||||
|
"untillInclusive": "2026-03-22T08:55:00"
|
||||||
|
},
|
||||||
"orderId": "f59e4769-53a0-4156-8991-6f9119ba629f",
|
"orderId": "f59e4769-53a0-4156-8991-6f9119ba629f",
|
||||||
"orderLineId": "eeb86071-4f59-405d-b2be-7d7a77044bfa"
|
"orderLineId": "eeb86071-4f59-405d-b2be-7d7a77044bfa"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
/ordervouchers/{order_ordervoucherId}:
|
/ordervouchers/{ordervoucherId}:
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
name: order_ordervoucherId
|
name: ordervoucherId
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
format: uuid
|
||||||
@ -853,7 +837,7 @@ paths:
|
|||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
example:
|
example:
|
||||||
{
|
{
|
||||||
"order_orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
"orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
||||||
}
|
}
|
||||||
delete:
|
delete:
|
||||||
summary: Delete an order voucher.
|
summary: Delete an order voucher.
|
||||||
@ -974,7 +958,7 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
example:
|
examples:
|
||||||
Minimum orderline requestBody:
|
Minimum orderline requestBody:
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -1060,7 +1044,7 @@ paths:
|
|||||||
"orderCustomerAddresses":
|
"orderCustomerAddresses":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"addressTypeId": 3,
|
"addressTypeId": 2,
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
@ -1998,7 +1982,6 @@ paths:
|
|||||||
"touchPointId": 1,
|
"touchPointId": 1,
|
||||||
"name": "Perplex"
|
"name": "Perplex"
|
||||||
},
|
},
|
||||||
"deviceId": null,
|
|
||||||
"isRefund": false,
|
"isRefund": false,
|
||||||
"htmPaymentReference": "HTM-1234",
|
"htmPaymentReference": "HTM-1234",
|
||||||
"pspPaymentReference": "Buckaroo-1234",
|
"pspPaymentReference": "Buckaroo-1234",
|
||||||
@ -2342,7 +2325,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
||||||
"addressType":
|
"addressType":
|
||||||
{ "addressTypeId": 3, "name": "Billing" },
|
{ "addressTypeId": 2, "name": "Billing" },
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
@ -2412,7 +2395,7 @@ paths:
|
|||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/unavailable"
|
||||||
example:
|
example:
|
||||||
{
|
{
|
||||||
"addressTypeId": 3,
|
"addressTypeId": 2,
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
@ -2462,7 +2445,7 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
explode: false
|
explode: false
|
||||||
required: false
|
required: false
|
||||||
description: Filter on possible types of addresses. 1 = Shipping, 3 = Billing.
|
description: Filter on possible types of addresses. 1 = Shipping, 2 = Billing.
|
||||||
- in: query
|
- in: query
|
||||||
name: street
|
name: street
|
||||||
schema:
|
schema:
|
||||||
@ -2518,7 +2501,7 @@ paths:
|
|||||||
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
|
||||||
"orderCustomerId": "540d8b7a-d626-443f-8f99-c24398604d7a",
|
"orderCustomerId": "540d8b7a-d626-443f-8f99-c24398604d7a",
|
||||||
"orderId": "73cca95a-81d1-468f-a8bf-99b36367001a",
|
"orderId": "73cca95a-81d1-468f-a8bf-99b36367001a",
|
||||||
"addressType": { "addressTypeId": 3, "name": "Billing" },
|
"addressType": { "addressTypeId": 2, "name": "Billing" },
|
||||||
"street": "Kon. Julianaplein",
|
"street": "Kon. Julianaplein",
|
||||||
"houseNumber": 10,
|
"houseNumber": 10,
|
||||||
"houseNumberSuffix": "a",
|
"houseNumberSuffix": "a",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -313,6 +313,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 24,
|
"productId": 24,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
@ -429,6 +430,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 126,
|
"productId": 126,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -537,6 +539,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 119,
|
"productId": 119,
|
||||||
"parentProductId": 126,
|
"parentProductId": 126,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30001",
|
"gboPackageTemplateId": "30001",
|
||||||
@ -652,6 +655,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 120,
|
"productId": 120,
|
||||||
"parentProductId": 126,
|
"parentProductId": 126,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30001",
|
"gboPackageTemplateId": "30001",
|
||||||
@ -779,6 +783,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 49,
|
"productId": 49,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 2,
|
"layerInfoId": 2,
|
||||||
"choiceKey": "regio",
|
"choiceKey": "regio",
|
||||||
@ -926,6 +931,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 109,
|
"productId": 109,
|
||||||
"parentProductId": 49,
|
"parentProductId": 49,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 3,
|
"layerInfoId": 3,
|
||||||
"choiceKey": "allowedGboAgeProfiles",
|
"choiceKey": "allowedGboAgeProfiles",
|
||||||
@ -1076,6 +1082,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 114,
|
"productId": 114,
|
||||||
"parentProductId": 109,
|
"parentProductId": 109,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -1226,6 +1233,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 115,
|
"productId": 115,
|
||||||
"parentProductId": 109,
|
"parentProductId": 109,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -1377,6 +1385,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 116,
|
"productId": 116,
|
||||||
"parentProductId": 115,
|
"parentProductId": 115,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "33615",
|
"gboPackageTemplateId": "33615",
|
||||||
@ -1526,6 +1535,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 117,
|
"productId": 117,
|
||||||
"parentProductId": 115,
|
"parentProductId": 115,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "33615",
|
"gboPackageTemplateId": "33615",
|
||||||
@ -1679,6 +1689,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 112,
|
"productId": 112,
|
||||||
"parentProductId": 49,
|
"parentProductId": 49,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 3,
|
"layerInfoId": 3,
|
||||||
"choiceKey": "allowedGboAgeProfiles",
|
"choiceKey": "allowedGboAgeProfiles",
|
||||||
@ -2150,6 +2161,10 @@ components:
|
|||||||
parentProductId:
|
parentProductId:
|
||||||
type: integer
|
type: integer
|
||||||
example: 1
|
example: 1
|
||||||
|
needsVoucher:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates if the product needs a voucher (with this productId as requiredProductId) to be bought - if false, this is optional, but still allowed
|
||||||
|
example: false
|
||||||
layerInfo:
|
layerInfo:
|
||||||
$ref: '#/components/schemas/LayerInfoResponse'
|
$ref: '#/components/schemas/LayerInfoResponse'
|
||||||
fikoArticleNumber:
|
fikoArticleNumber:
|
||||||
|
|||||||
@ -313,6 +313,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 24,
|
"productId": 24,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
@ -429,6 +430,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 126,
|
"productId": 126,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -537,6 +539,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 119,
|
"productId": 119,
|
||||||
"parentProductId": 126,
|
"parentProductId": 126,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30001",
|
"gboPackageTemplateId": "30001",
|
||||||
@ -652,6 +655,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 120,
|
"productId": 120,
|
||||||
"parentProductId": 126,
|
"parentProductId": 126,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "30001",
|
"gboPackageTemplateId": "30001",
|
||||||
@ -779,6 +783,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 49,
|
"productId": 49,
|
||||||
"parentProductId": null,
|
"parentProductId": null,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 2,
|
"layerInfoId": 2,
|
||||||
"choiceKey": "regio",
|
"choiceKey": "regio",
|
||||||
@ -926,6 +931,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 109,
|
"productId": 109,
|
||||||
"parentProductId": 49,
|
"parentProductId": 49,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 3,
|
"layerInfoId": 3,
|
||||||
"choiceKey": "allowedGboAgeProfiles",
|
"choiceKey": "allowedGboAgeProfiles",
|
||||||
@ -1076,6 +1082,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 114,
|
"productId": 114,
|
||||||
"parentProductId": 109,
|
"parentProductId": 109,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -1226,6 +1233,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 115,
|
"productId": 115,
|
||||||
"parentProductId": 109,
|
"parentProductId": 109,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 1,
|
"layerInfoId": 1,
|
||||||
"choiceKey": "isRenewable",
|
"choiceKey": "isRenewable",
|
||||||
@ -1377,6 +1385,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 116,
|
"productId": 116,
|
||||||
"parentProductId": 115,
|
"parentProductId": 115,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "33615",
|
"gboPackageTemplateId": "33615",
|
||||||
@ -1526,6 +1535,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 117,
|
"productId": 117,
|
||||||
"parentProductId": 115,
|
"parentProductId": 115,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": null,
|
"layerInfo": null,
|
||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"gboPackageTemplateId": "33615",
|
"gboPackageTemplateId": "33615",
|
||||||
@ -1679,6 +1689,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"productId": 112,
|
"productId": 112,
|
||||||
"parentProductId": 49,
|
"parentProductId": 49,
|
||||||
|
"needsVoucher": false,
|
||||||
"layerInfo": {
|
"layerInfo": {
|
||||||
"layerInfoId": 3,
|
"layerInfoId": 3,
|
||||||
"choiceKey": "allowedGboAgeProfiles",
|
"choiceKey": "allowedGboAgeProfiles",
|
||||||
@ -2150,6 +2161,10 @@ components:
|
|||||||
parentProductId:
|
parentProductId:
|
||||||
type: integer
|
type: integer
|
||||||
example: 1
|
example: 1
|
||||||
|
needsVoucher:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates if the product needs a voucher (with this productId as requiredProductId) to be bought - if false, this is optional, but still allowed
|
||||||
|
example: false
|
||||||
layerInfo:
|
layerInfo:
|
||||||
$ref: '#/components/schemas/LayerInfoResponse'
|
$ref: '#/components/schemas/LayerInfoResponse'
|
||||||
fikoArticleNumber:
|
fikoArticleNumber:
|
||||||
|
|||||||
400
src/openapi/products/SE-vouchers-TP.yaml
Normal file
400
src/openapi/products/SE-vouchers-TP.yaml
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: Service Engine APIs for HTM voucher for sales Touchpoint
|
||||||
|
description: Service Engine APIs for HTM vouchers. These are NOT the CRUD APIs to the data hub. These ARE the APIs for sales touchpoints.
|
||||||
|
version: "1.0"
|
||||||
|
servers:
|
||||||
|
- url: https://services.acc.api.htm.nl/abt/abtvouchersTouchpoint/1.0
|
||||||
|
paths:
|
||||||
|
/issuedvouchers/{voucherCode}:
|
||||||
|
get:
|
||||||
|
summary: Get details of a voucher, that was issued for a specific touchpoint
|
||||||
|
description:
|
||||||
|
Get details of an issued voucher for a specific touchpoint. This means that only products that the calling touchpoint is allowed to see or sell
|
||||||
|
(i.e. has active sellingPeriods for touchPointId of the calling touchpoint) are returned.
|
||||||
|
parameters:
|
||||||
|
- name: voucherCode
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
description: The unique code of the issued voucher to retrieve.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: VOUCHER123
|
||||||
|
tags:
|
||||||
|
- Vouchers
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: Successful retrieval of voucher instance
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/salesTouchpointIssuedVoucherResponse"
|
||||||
|
examples:
|
||||||
|
Voucher that grants a voucher-only product for free:
|
||||||
|
summary: Voucher that grants a voucher-only product for free
|
||||||
|
description: |-
|
||||||
|
Voucher that grants a product (that can only be acquired via a voucher) for free.
|
||||||
|
In this case, the voucher has an amountInclTax of 0. If the requiredProduct has a
|
||||||
|
non-zero sellingPrice (amountInclTax), the difference between sellingPrice and
|
||||||
|
voucher amountInclTax represents the granted discount. If the requiredProduct has
|
||||||
|
a sellingPrice of 0, no "discount" is shown; just the voucher's amountInclTax.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
|
"fromInclusive": "2024-10-04T00:00:00.000",
|
||||||
|
"untilInclusive": "2024-11-04T00:00:00.000",
|
||||||
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
||||||
|
"product":
|
||||||
|
{
|
||||||
|
"productId": 263,
|
||||||
|
"productName": "Voucher Ooievaarspas-product AOW",
|
||||||
|
"productDescription": "Voucher voor AOW-ers in Den Haag met een Ooievaarspas, die ingewisseld kan worden voor het product \"Ooievaarspas voor AOW-ers in Den Haag\"",
|
||||||
|
"amountInclTax": 0,
|
||||||
|
"requiredProducts":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"productId": 982,
|
||||||
|
"productName": "Ooievaarspas voor AOW-ers in Den Haag",
|
||||||
|
"productDescription": "Vrij reizen bij HTM voor Haagse AOW-gerechtigden met een Ooievaarspas.",
|
||||||
|
"productCategory":
|
||||||
|
{
|
||||||
|
"productCategoryId": 2,
|
||||||
|
"isTravelProduct": true,
|
||||||
|
"name": "Afgekocht reisrecht",
|
||||||
|
},
|
||||||
|
"amountInclTax": 0,
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_details":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/982",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mandatoryCustomerDataItems":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItemId": 8,
|
||||||
|
"customerDataItem": "padBirthDate"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
Voucher that grants a hybrid product for a reduced price:
|
||||||
|
summary: Voucher that grants a hybrid product for a reduced price
|
||||||
|
description: |-
|
||||||
|
Voucher that grants a hybrid product (that can be acquired via voucher or via ordinary order flow)
|
||||||
|
for a reduced price. In this case, the voucher has an amountInclTax > 0, which dictates the (modified)
|
||||||
|
total amount that needs to be paid for said product. If the requiredProduct has a
|
||||||
|
non-zero sellingPrice (amountInclTax), the difference between sellingPrice and
|
||||||
|
voucher amountInclTax represents the granted discount. If the requiredProduct has
|
||||||
|
a sellingPrice of 0, no "discount" is shown; just the voucher's amountInclTax./
|
||||||
|
Specifically, in this example, the product "HTM 20% Korting" can be purchased for 1 euro instead of 5 euro.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
|
"fromInclusive": "2024-10-04T00:00:00.000",
|
||||||
|
"untilInclusive": "2024-11-04T00:00:00.000",
|
||||||
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
||||||
|
"product":
|
||||||
|
{
|
||||||
|
"productId": 264,
|
||||||
|
"productName": "Kortingsvoucher HTM 20% Korting ",
|
||||||
|
"productDescription": "Voucher waarmee het product \"HTM 20% Korting\" voor een lagere prijs kan worden aangeschaft.",
|
||||||
|
"amountInclTax": 100,
|
||||||
|
"requiredProducts":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"productId": 984,
|
||||||
|
"productName": "HTM 20% Korting",
|
||||||
|
"productDescription": "Reis met 20% korting op je betaalpas bij HTM.",
|
||||||
|
"productCategory":
|
||||||
|
{
|
||||||
|
"productCategoryId": 1,
|
||||||
|
"isTravelProduct": true,
|
||||||
|
"name": "Kortingsabonnement",
|
||||||
|
},
|
||||||
|
"amountInclTax": 500,
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_details":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/984",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mandatoryCustomerDataItems": []
|
||||||
|
}
|
||||||
|
Voucher that grants a discount for a whole order:
|
||||||
|
summary: Voucher that grants a discount for a whole order
|
||||||
|
description: |-
|
||||||
|
Voucher that grants a discount for a whole order. In this case, no requiredProduct is specified, and
|
||||||
|
the voucher has an amountInclTax < 0. The (negative) amountInclTax dictates the value of the voucher,
|
||||||
|
that is subtracted from the total order value as a discount (with a minimum order total of 0).
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
|
"fromInclusive": "2024-10-04T00:00:00.000",
|
||||||
|
"untilInclusive": "2024-11-04T00:00:00.000",
|
||||||
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
||||||
|
"product":
|
||||||
|
{
|
||||||
|
"productId": 265,
|
||||||
|
"productName": "Voucher 10 euro korting",
|
||||||
|
"productDescription": "Voucher die 10 euro korting geeft op je gehele winkelmand.",
|
||||||
|
"amountInclTax": -1000,
|
||||||
|
"requiredProducts": []
|
||||||
|
},
|
||||||
|
"mandatoryCustomerDataItems": []
|
||||||
|
}
|
||||||
|
"403":
|
||||||
|
description: Forbidden
|
||||||
|
content:
|
||||||
|
application/problem+json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/rfc9457"
|
||||||
|
examples:
|
||||||
|
Access denied due to insufficient permissions:
|
||||||
|
summary: Access denied due to insufficient permissions
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"type": "https://example.com/probs/forbidden",
|
||||||
|
"title": "Access denied",
|
||||||
|
"detail": "You do not have permission to access this resource.",
|
||||||
|
"instance": "/issuedvouchers",
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad request
|
||||||
|
content:
|
||||||
|
application/problem+json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/rfc9457"
|
||||||
|
examples:
|
||||||
|
Invalid voucher code:
|
||||||
|
summary: Invalid voucher code
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"type": "https://example.com/probs/bad-request",
|
||||||
|
"title": "Invalid voucher code",
|
||||||
|
"detail": "No valid voucher found for code VOUCHER123.",
|
||||||
|
"instance": "/issuedvouchers",
|
||||||
|
}
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/problem+json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/rfc9457"
|
||||||
|
examples:
|
||||||
|
Unexpected server error:
|
||||||
|
summary: Unexpected server error
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"type": "https://example.com/probs/internal-server-error",
|
||||||
|
"title": "Internal Server Error",
|
||||||
|
"detail": "An unexpected error occurred while processing your request.",
|
||||||
|
"instance": "/issuedvouchers",
|
||||||
|
}
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
bearerToken:
|
||||||
|
type: http
|
||||||
|
scheme: bearer
|
||||||
|
bearerFormat: JWT
|
||||||
|
schemas:
|
||||||
|
salesTouchpointIssuedVoucherResponse:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- issuedVoucherId
|
||||||
|
- voucherCode
|
||||||
|
- fromInclusive
|
||||||
|
- untilInclusive
|
||||||
|
- voucherStatus
|
||||||
|
- product
|
||||||
|
- mandatoryCustomerDataItems
|
||||||
|
properties:
|
||||||
|
issuedVoucherId:
|
||||||
|
type: string
|
||||||
|
description: The unique (technical) identifier of the issued voucher instance.
|
||||||
|
example: "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
|
||||||
|
voucherCode:
|
||||||
|
type: string
|
||||||
|
description: The voucher code that is shared with the customer and uniquely identifies this voucher.
|
||||||
|
example: "HTM-A7J-128-PYT"
|
||||||
|
fromInclusive:
|
||||||
|
type: string
|
||||||
|
format: date-time-offset
|
||||||
|
description: |-
|
||||||
|
The date and time the voucher becomes valid for redemption. This has nothing to do with
|
||||||
|
the allowed start date of a requiredProduct (for this, the existing order flow logic is applied).
|
||||||
|
example: "2024-10-04T00:00:00.000+02:00"
|
||||||
|
untilInclusive:
|
||||||
|
type: string
|
||||||
|
format: date-time-offset
|
||||||
|
description: |-
|
||||||
|
The date and time the voucher becomes invalid for redemption. This has nothing to do with
|
||||||
|
the maximum allowed start date of a requiredProduct (for this, the existing order flow logic is applied).
|
||||||
|
example: "2024-11-04T00:00:00.000+01:00"
|
||||||
|
voucherStatus:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- voucherStatusId
|
||||||
|
- name
|
||||||
|
description: |-
|
||||||
|
The current status of the voucher. Can be any of the following:
|
||||||
|
- 1 = new
|
||||||
|
- 2 = issued
|
||||||
|
- 3 = redeemed
|
||||||
|
- 4 = revoked
|
||||||
|
- 5 = expired
|
||||||
|
- 6 = pendingRedemption
|
||||||
|
properties:
|
||||||
|
voucherStatusId:
|
||||||
|
type: integer
|
||||||
|
example: 2
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
example: "issued"
|
||||||
|
product:
|
||||||
|
type: object
|
||||||
|
description: The "product" referencing the voucher definition that this voucher instance is based on
|
||||||
|
required:
|
||||||
|
- productId
|
||||||
|
- productName
|
||||||
|
- productDescription
|
||||||
|
- amountInclTax
|
||||||
|
properties:
|
||||||
|
productId:
|
||||||
|
type: integer
|
||||||
|
example: 263
|
||||||
|
productName:
|
||||||
|
type: string
|
||||||
|
example: Voucher Ooievaarspas-product AOW
|
||||||
|
productDescription:
|
||||||
|
type: string
|
||||||
|
example: |-
|
||||||
|
Voucher voor AOW-ers in Den Haag met een Ooievaarspas, die ingewisseld kan worden
|
||||||
|
voor het product "Ooievaarspas voor AOW-ers in Den Haag".
|
||||||
|
amountInclTax:
|
||||||
|
type: integer
|
||||||
|
description: |-
|
||||||
|
When combined with a requiredProduct, the (positive or zero) amountInclTax dictates
|
||||||
|
the (modified) total amount that needs to be paid for said product. When the requiredProduct
|
||||||
|
has a sellingPrice > 0, the difference between sellingPrice and voucher amountInclTax
|
||||||
|
represents the granted discount.
|
||||||
|
When not combined with a required product, the (negative) amountInclTax dictates
|
||||||
|
the value of the voucher, that is subtracted from the total order value as a discount
|
||||||
|
(with a minimum order total of 0).
|
||||||
|
example: 0
|
||||||
|
requiredProducts:
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
Currently, only one requiredProduct is supported and thus, this array can contain at
|
||||||
|
most one element.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- productId
|
||||||
|
properties:
|
||||||
|
productId:
|
||||||
|
type: integer
|
||||||
|
example: 892
|
||||||
|
productName:
|
||||||
|
type: string
|
||||||
|
example: "Ooievaarspas voor AOW-ers in Den Haag"
|
||||||
|
productDescription:
|
||||||
|
type: string
|
||||||
|
example: "Vrij reizen bij HTM voor Haagse AOW-gerechtigden met een Ooievaarspas."
|
||||||
|
productCategory:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- productCategoryId
|
||||||
|
- isTravelProduct
|
||||||
|
- name
|
||||||
|
properties:
|
||||||
|
productCategoryId:
|
||||||
|
type: integer
|
||||||
|
example: 2
|
||||||
|
isTravelProduct:
|
||||||
|
type: boolean
|
||||||
|
example: true
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
example: "Afgekocht reisrecht"
|
||||||
|
amountInclTax:
|
||||||
|
type: integer
|
||||||
|
description: |-
|
||||||
|
Selling price of the product in cents (including tax, if applicable) that is
|
||||||
|
currently active for the calling touchpoint. When 0, the product is free of charge.
|
||||||
|
example: 0
|
||||||
|
imageReference:
|
||||||
|
type: string
|
||||||
|
description: Can be a URL or a base64 encoded image
|
||||||
|
example: https://www.htm.nl/nog-onbekende-productafbeelding
|
||||||
|
_links:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
get_details:
|
||||||
|
type: object
|
||||||
|
description: Link to get more details for the product that this voucher instance applies to
|
||||||
|
properties:
|
||||||
|
href:
|
||||||
|
type: string
|
||||||
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/products/982
|
||||||
|
method:
|
||||||
|
type: string
|
||||||
|
example: GET
|
||||||
|
mandatoryCustomerDataItems:
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
List of mandatory customer data items that are required to redeem this voucher.\
|
||||||
|
The values provided for these data items may be checked against allowed values as provided by the voucher issuer.
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- mandatoryCustomerDataItemId
|
||||||
|
- customerDataItem
|
||||||
|
properties:
|
||||||
|
mandatoryCustomerDataItemId:
|
||||||
|
type: integer
|
||||||
|
example: 8
|
||||||
|
customerDataItem:
|
||||||
|
type: string
|
||||||
|
example: padBirthdate
|
||||||
|
|
||||||
|
unavailable:
|
||||||
|
type: object
|
||||||
|
rfc9457:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
format: url
|
||||||
|
example: https://example.com/probs/out-of-credit
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
example: You do not have enough credit.
|
||||||
|
detail:
|
||||||
|
type: string
|
||||||
|
example: Your current balance is 30, but that costs 50.
|
||||||
|
instance:
|
||||||
|
type: string
|
||||||
|
example: /account/12345/msgs/abc
|
||||||
|
balance:
|
||||||
|
type: string
|
||||||
|
example: 30
|
||||||
|
accounts:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- /account/12345
|
||||||
|
- /account/67890
|
||||||
1430
src/openapi/products/SE-vouchers-supplier.yaml
Normal file
1430
src/openapi/products/SE-vouchers-supplier.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@ -1553,6 +1553,9 @@ components:
|
|||||||
- productCategoryId: 8
|
- productCategoryId: 8
|
||||||
name: Saldo
|
name: Saldo
|
||||||
isTravelProduct: true
|
isTravelProduct: true
|
||||||
|
- productCategoryId: 9
|
||||||
|
name: Voucher
|
||||||
|
isTravelProduct: false
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/productCategoryGetEntity'
|
$ref: '#/components/schemas/productCategoryGetEntity'
|
||||||
@ -1811,7 +1814,7 @@ components:
|
|||||||
- mandatoryCustomerDataItemId: 5
|
- mandatoryCustomerDataItemId: 5
|
||||||
customerDataItem: address
|
customerDataItem: address
|
||||||
- mandatoryCustomerDataItemId: 6
|
- mandatoryCustomerDataItemId: 6
|
||||||
customerDataItem: phone
|
customerDataItem: voucher
|
||||||
- mandatoryCustomerDataItemId: 7
|
- mandatoryCustomerDataItemId: 7
|
||||||
customerDataItem: ovPayToken
|
customerDataItem: ovPayToken
|
||||||
- mandatoryCustomerDataItemId: 8
|
- mandatoryCustomerDataItemId: 8
|
||||||
@ -1820,6 +1823,8 @@ components:
|
|||||||
customerDataItem: shippingAddress
|
customerDataItem: shippingAddress
|
||||||
- mandatoryCustomerDataItemId: 10
|
- mandatoryCustomerDataItemId: 10
|
||||||
customerDataItem: billingAddress
|
customerDataItem: billingAddress
|
||||||
|
- mandatoryCustomerDataItemId: 11
|
||||||
|
customerDataItem: startDate
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/mandatoryCustomerDataItemGetEntity'
|
$ref: '#/components/schemas/mandatoryCustomerDataItemGetEntity'
|
||||||
type: array
|
type: array
|
||||||
|
|||||||
@ -46,6 +46,13 @@ paths:
|
|||||||
when false, return only non-archived products (isArchived = false).
|
when false, return only non-archived products (isArchived = false).
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
- name: onlyVouchers
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: |-
|
||||||
|
When omitted, defaults to false (i.e. return all normal products that are NOT voucher definitions); when true, return only voucher definitions
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: OK
|
description: OK
|
||||||
@ -387,6 +394,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
"productName": "HTM pilot 90% korting",
|
"productName": "HTM pilot 90% korting",
|
||||||
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
||||||
@ -474,6 +482,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
"productName": "HTM pilot 90% korting",
|
"productName": "HTM pilot 90% korting",
|
||||||
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
||||||
@ -560,6 +569,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
"productName": "HTM pilot 90% korting",
|
"productName": "HTM pilot 90% korting",
|
||||||
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
"productDescription": "Reis met 90% korting gedurende de eerste F&F pilot!",
|
||||||
@ -680,6 +690,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "33610",
|
"gboPackageTemplateId": "33610",
|
||||||
"productName": "HTM Regio Vrij DH73",
|
"productName": "HTM Regio Vrij DH73",
|
||||||
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in het gekozen gebied in de regio Rotterdam Den Haag.",
|
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in het gekozen gebied in de regio Rotterdam Den Haag.",
|
||||||
@ -866,6 +877,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "HTM pilot 90% korting",
|
"productName": "HTM pilot 90% korting",
|
||||||
@ -1028,6 +1040,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "30901",
|
"gboPackageTemplateId": "30901",
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "HTM pilot 90% korting",
|
"productName": "HTM pilot 90% korting",
|
||||||
@ -1270,6 +1283,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": "33610",
|
"gboPackageTemplateId": "33610",
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "HTM Regio Vrij DH73",
|
"productName": "HTM Regio Vrij DH73",
|
||||||
@ -1475,6 +1489,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": null,
|
"gboPackageTemplateId": null,
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "IBAN wijzigen functioneel product",
|
"productName": "IBAN wijzigen functioneel product",
|
||||||
@ -1672,6 +1687,7 @@ paths:
|
|||||||
"fikoArticleNumber": "1234",
|
"fikoArticleNumber": "1234",
|
||||||
"isValid": true,
|
"isValid": true,
|
||||||
"isArchived": false,
|
"isArchived": false,
|
||||||
|
"needsVoucher": false,
|
||||||
"gboPackageTemplateId": null,
|
"gboPackageTemplateId": null,
|
||||||
"tapConnectProductCode": null,
|
"tapConnectProductCode": null,
|
||||||
"productName": "OV-pas saldo (1 eurocent)",
|
"productName": "OV-pas saldo (1 eurocent)",
|
||||||
@ -2775,6 +2791,10 @@ components:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
||||||
example: false
|
example: false
|
||||||
|
needsVoucher:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates if the product needs a voucher (with this productId as requiredProductId) to be bought - if false, this is optional, but still allowed
|
||||||
|
example: false
|
||||||
gboPackageTemplateId:
|
gboPackageTemplateId:
|
||||||
type: string
|
type: string
|
||||||
example: '30901'
|
example: '30901'
|
||||||
@ -3132,6 +3152,10 @@ components:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
||||||
example: false
|
example: false
|
||||||
|
needsVoucher:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates if the product needs a voucher (with this productId as requiredProductId) to be bought - if false, this is optional, but still allowed
|
||||||
|
example: false
|
||||||
gboPackageTemplateId:
|
gboPackageTemplateId:
|
||||||
type: string
|
type: string
|
||||||
description: >-
|
description: >-
|
||||||
@ -3503,6 +3527,10 @@ components:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
description: Indicates if the product is archived - if true, the Service Engine will prevent touchpoints from seeing this product
|
||||||
example: false
|
example: false
|
||||||
|
needsVoucher:
|
||||||
|
type: boolean
|
||||||
|
description: Indicates if the product needs a voucher (with this productId as requiredProductId) to be bought - if false, this is optional, but still allowed
|
||||||
|
example: false
|
||||||
gboPackageTemplateId:
|
gboPackageTemplateId:
|
||||||
type: string
|
type: string
|
||||||
description: >-
|
description: >-
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
0
src/trip.json
Normal file
0
src/trip.json
Normal file
151
trip2.json
Normal file
151
trip2.json
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
{ "tripId": 796727186, "tripVersion": 1, "tripStatus": "COMPLETE", "organisationIcon": "/icons/organisations/3.svg", "organisationId": "3", "organisationName": "HTM", "supersededByTripIds": [], "supersedesTripIds": [], "products": [ {
|
||||||
|
"productTemplateId": "30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"productIcon": "001.jpg", "purchaseDateTime": "2026-04-02T12:38:28+02:00", "organisationName": "ProductRetailer HTM", "appliedValue": -125, "organisationId": "3", "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "N/A", "purchaseDateTime": "2025-07-09T12:39:27+02:00", "appliedValue": 139, "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "1:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 116, "appliedMetric": "FARE", "appliedValue": 116, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "2:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 23, "appliedMetric": "FARE", "appliedValue": 23, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "3:30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" },
|
||||||
|
{
|
||||||
|
"key": "nl-NL", "value": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis een week lang met korting!" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2026-04-03T04:00:00+02:00", "validUntil": "2031-04-03T04:00:00+02:00", "organisationName": "Product Owner HTM", "weight": -125, "appliedMetric": "DISCOUNT", "appliedValue": -125, "organisationId": "3", "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"productCatalogVersionId": "PC-HTM:70", "xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1", "xpit": "1848597c-5ba9-4dab-8d9f-3948948706a1" }
|
||||||
|
],
|
||||||
|
"checkinTransactionTimestamp": "2026-04-20T16:59:48+02:00", "checkoutTransactionTimestamp": "2026-04-20T17:04:50+02:00", "checkinTransactionReference": "00310F92;29023;emvClt", "checkoutTransactionReference": "0030DBC1;30528;emvClt", "checkinLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"checkoutLocation": { "stopId": 2862, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Kalvermarkt-Stadhuis" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Kalvermarkt-Stadhuis" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2862", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"tokenType": "EMV-CLT", "transportType": "TRAM", "lineId": "17", "lineName": "Tram17", "networkId": "1", "networkName": "HTM netwerk", "currency": "EUR", "transportIcon": "/icons/transportTypes/tram.svg", "legs": [ {
|
||||||
|
"legId": 1614950977, "checkinTransactionTimestamp": "2026-04-20T16:59:48+02:00", "checkoutTransactionTimestamp": "2026-04-20T17:04:50+02:00", "checkinLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"checkoutLocation": { "stopId": 2862, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Kalvermarkt-Stadhuis" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Kalvermarkt-Stadhuis" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2862", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"baseRate": 139, "lineId": "17", "lineName": "Tram17", "networkId": "1", "networkName": "HTM netwerk", "fare": 14, "fareState": "CALCULATED", "currency": "EUR", "products": [ {
|
||||||
|
"productTemplateId": "30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"productIcon": "001.jpg", "purchaseDateTime": "2026-04-02T12:38:28+02:00", "organisationName": "ProductRetailer HTM", "appliedValue": -125, "organisationId": "3", "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "N/A", "purchaseDateTime": "2025-07-09T12:39:27+02:00", "appliedValue": 139, "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "1:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 116, "appliedMetric": "FARE", "appliedValue": 116, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "2:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 23, "appliedMetric": "FARE", "appliedValue": 23, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "3:30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" },
|
||||||
|
{
|
||||||
|
"key": "nl-NL", "value": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis een week lang met korting!" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2026-04-03T04:00:00+02:00", "validUntil": "2031-04-03T04:00:00+02:00", "organisationName": "Product Owner HTM", "weight": -125, "appliedMetric": "DISCOUNT", "appliedValue": -125, "organisationId": "3", "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"discountPercentage": 90, "productCatalogVersionId": "PC-HTM:70", "xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1", "xpit": "1848597c-5ba9-4dab-8d9f-3948948706a1" }
|
||||||
|
],
|
||||||
|
"appliedTimePeriods": [], "tariffJourneyStart": true, "topoDistance": 1161, "concessionId": "1", "appliedZones": [] }
|
||||||
|
],
|
||||||
|
"lastUpdatedTripDateTime": "2026-04-20T17:04:50+02:00", "fare": 14, "loyaltyOrDiscount": true, "supportCode": "pWM8Km6J8aHg5n", "tripVersionReason": "STRUCTURE", "checkinTransactionId": "00310F92-29023-emvClt-1776697188000", "checkoutTransactionId": "0030DBC1-30528-emvClt-1776697490000", "tariffVersionId": "HTM-CF1:278", "correlationId": "4bc7a040-71bf-4084-a61e-b2dd72092079", "createdAt": "2026-04-20T17:05:01.473+02:00", "entryTariffLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"traveledLines": [ {
|
||||||
|
"lineId": "17", "lineName": "Tram17" }
|
||||||
|
],
|
||||||
|
"tripFareNature": "FIXED", "paymentMethodId": "229a01ff-7bd9-4740-9b19-00637146a6ca", "paymentMethodMode": "PREPAID", "paymentMethodName": "EPURSE", "paymentProviderName": "TPURSE", "paymentProviderBusinessEntityId": "600027", "registryFragmentVersionId": "REG:27", "vehicleId": 5063, "xbot": "c85e34d6-f9c1-49c2-8574-59b37e0f3b8e" }
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user