diff --git a/src/openapi/contracts/contracts-crud.yaml b/src/openapi/contracts/contracts-crud.yaml index 0c3e90e..963bf1e 100644 --- a/src/openapi/contracts/contracts-crud.yaml +++ b/src/openapi/contracts/contracts-crud.yaml @@ -624,6 +624,14 @@ paths: tags: - ContractInvoice parameters: + - in: query + name: contractInvoiceId + schema: + type: string + format: uuid + example: 8699d72a-cf4d-4e6b-9e9c-549d837ca51f + required: false + description: Id of the contract invoice to fetch. - in: query name: contractId schema: diff --git a/src/openapi/fiko/fiko-crud.yaml b/src/openapi/fiko/fiko-crud.yaml index 3be6d63..33fb229 100644 --- a/src/openapi/fiko/fiko-crud.yaml +++ b/src/openapi/fiko/fiko-crud.yaml @@ -1,177 +1,84 @@ openapi: "3.0.3" info: - title: ABT FIKO CRUD APIs v2 + title: FIKO CRUD APIs v2.2 version: "1.0" - description: CRUD APIs for ABT FIKO database v2. + description: | + CRUD APIs for FIKO resource model v2.2. This version of the API corresponds with version 2.2 + of the data model in [Lucid Chart](https://lucid.app/lucidchart/50c0ff9d-48ba-4ea9-8182-10bede07d3b1/edit?page=LL7PJg1Y_GOA>). servers: - - url: https://api.integratielaag.nl/v1 + - url: https://api.integratielaag.nl/fiko/1.0 paths: - /fiko/transactionitems: - post: - summary: DEPRECATED. Add a finanicial transaction item. - description: DEPRECATED. This API is deprecated. Use bulk-insert instead. - deprecated: true - tags: - - External FIKO endpoints v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - /fiko/transactionitems/bulk: - post: - summary: Add one ore more finanicial transaction items in bulk. - description: Add one ore more finanicial transaction items in bulk. - tags: - - External FIKO endpoints v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionItemsBulkPostRequestBody" - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/TransactionItemsBulkPostResponseBody" /transactionitems: get: - summary: Find transaction items. + summary: P1. Find transaction items. description: Find transaction items. tags: - - Transactions v2 + - Transactions v2.2 parameters: - - in: query - name: transactionItemId - schema: - type: string - format: uuid - example: 75174a9d-fff4-4682-b66b-ebd93cbe7ea3 - description: The id of the transaction item. - - in: query - name: transactionType + - $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 - example: [sales] + enum: + - transactionItemRowId + - transactionItemId + - transactionType + - sourceName + - transactionId + - transactionLineId + - name + - quantity + - taxCode + - amountExclTax + - amountInclTax + - amountTax + - occurredOn + - type + - articleNumber + - status + - aggregationReference + - accountingSystemReference + - name: $select + in: query + description: Select properties to be returned + required: false + style: form explode: false - description: Possible types of the transaction ('sales'). - - in: query - name: sourceName - schema: - type: string - example: Verkoopengine - description: Source name of the transaction. - - in: query - name: transactionId - schema: - type: string - example: 1001236 - description: The id of the transaction. - - in: query - name: transactionLineId - schema: - type: string - example: 1 - description: The line id of the transaction. - - in: query - name: name - schema: - type: string - example: HTM Maandkorting 20% - description: The name of the product on the transaction. - - in: query - name: quantity - schema: - type: integer - example: 1 - description: The quantity of the transaction. - - in: query - name: taxCode - schema: - type: string - example: V21 - description: The tax code of the transaction. - - in: query - name: amountExclTax - schema: - type: integer - example: 100 - description: The amount of the transaction excluding tax in cents. - - in: query - name: amountInclTax - schema: - type: integer - example: 121 - description: The amount of the transaction including tax in cents. - - in: query - name: amountTax - schema: - type: integer - example: 21 - description: The tax amount of the transaction in cents. - - in: query - name: occurredBefore - schema: - type: string - format: date-time - example: 2024-10-04T00:00:00Z - description: Timestamp before which the transaction occurred. - - in: query - name: occurredAfter - schema: - type: string - format: date-time - example: 2024-10-04T00:00:00Z - description: Timestamp after which the transaction occurred. - - in: query - name: type schema: + uniqueItems: true type: array items: type: string - example: [debit, credit] - explode: false - description: Possible types of the transaction ('debit' or 'credit'). - - in: query - name: productCode - schema: - type: string - example: HTM-MND-20 - description: The product code of the transaction. - - in: query - name: status - schema: - type: array - items: - type: string - example: [created, succeeded, failed, returned to trx-db, returned to src, re-entered] - explode: false - description: Possible statuses of the transaction ('created', 'succeeded', 'failed', 'returned to trx-db', 'returned to src', 're-entered'). - - in: query - name: aggregationReference - schema: - type: string - example: FIKO-123456 - description: The aggregation reference of the transaction. %00 is searching for NULL-values. - - in: query - name: accountingSystemReference - schema: - type: string - example: U4F-123456 - description: The accounting system reference of the transaction. %00 is searching for NULL-values. + enum: + - transactionItemRowId + - transactionItemId + - transactionType + - sourceName + - transactionId + - transactionLineId + - name + - quantity + - taxCode + - amountExclTax + - amountInclTax + - amountTax + - occurredOn + - type + - articleNumber + - status + - aggregationReference + - accountingSystemReference responses: "200": description: OK @@ -179,25 +86,202 @@ paths: application/json: schema: $ref: "#/components/schemas/TransactionItemsGetResponseBody" + examples: + No transaction items: + summary: No transaction items were found + description: No transaction items that match the search criteria were found. + value: + transactionItems: [] + href: null + List containing multiple sales transaction items: + summary: List containing multiple sales transaction items + description: List containing multiple sales transaction items of transaction type 'sales' with different statuses. + value: + transactionItems: + - transactionItemId: afce35b2-1dff-4ace-98d0-4b9ac405c87d + transactionType: sales + sourceName: Verkoopengine + transactionId: 1001236 + transactionLineId: 1 + name: HTM Maandkorting 20% + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4031 + status: created + aggregationReference: null + accountingSystemReference: null + - transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf + transactionType: sales + sourceName: Verkoopengine + transactionId: 1002001 + transactionLineId: 1 + name: Reisproduct HTM 3 dag Anoniem + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4051 + status: failed + aggregationReference: null + accountingSystemReference: null + - transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db + transactionType: sales + sourceName: Verkoopengine + transactionId: 1001871 + transactionLineId: 1 + name: Reisproduct HTM 3 dag Anoniem + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4051 + status: returned to src + aggregationReference: FIKO-171f40609e + accountingSystemReference: null + - transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599 + transactionType: sales + sourceName: Verkoopengine + transactionId: 1001131 + transactionLineId: 1 + name: Reisproduct HTM 3 dag Anoniem + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4051 + status: returned to trx-db + aggregationReference: null + accountingSystemReference: null + - transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f + transactionType: sales + sourceName: Verkoopengine + transactionId: 1001885 + transactionLineId: 1 + name: Reisproduct HTM 3 dag Anoniem + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4051 + status: re-entered + aggregationReference: null + accountingSystemReference: null + - transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b + transactionType: sales + sourceName: Verkoopengine + transactionId: 1001679 + transactionLineId: 1 + name: Reisproduct HTM 1 dag Anoniem + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 1737 + status: succeeded + aggregationReference: FIKO-6a4fca8cd6 + accountingSystemReference: U4F-123456 + href: null post: - summary: DEPRECATED. Add a finanicial transaction item. - description: DEPRECATED. This API is deprecated. Use bulk-insert instead. - deprecated: true + summary: P1. Add one ore more finanicial transaction items in bulk. + description: Add one ore more finanicial transaction items in bulk. tags: - - Transactions v2 + - Transactions v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TransactionItemsPostRequestBody" + examples: + Add single transaction item: + summary: Add single transaction item + description: Add single transaction item of type sales. + value: + transactionItems: + - transactionType: sales + sourceName: Verkoopengine + transactionId: 1001236 + transactionLineId: 1 + name: HTM Maandkorting 20% + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4031 + Add multiple transaction items: + summary: Add multiple transaction items + description: Add multiple transaction items of type sales. + value: + transactionItems: + - transactionType: sales + sourceName: Verkoopengine + transactionId: 1001236 + transactionLineId: 1 + name: HTM Maandkorting 20% + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4031 + - transactionType: sales + sourceName: Verkoopengine + transactionId: 1001237 + transactionLineId: 1 + name: HTM Maandkorting 20% + quantity: 1 + taxCode: V21 + amountExclTax: 100 + amountInclTax: 121 + amountTax: 21 + occurredOn: 2024-10-04T00:00:00Z + type: debit + articleNumber: 4031 responses: - "201": - description: Created + "202": + description: Accepted content: application/json: schema: $ref: "#/components/schemas/TransactionItemsPostResponseBody" + examples: + Array of transaction items accepted: + summary: Array of transaction items accepted + description: | + The array of transaction items was accepted successfully. + The transaction items will be processed asynchronously. + In the response body the consumer will find information on how to retrieve the processing status. + value: + startTime: 2025-02-14T05:32:47.0672237Z + status: Running + clientTrackingId: 08584620957189579629541919368CU00 + callbackurl: https://api.integratielaag.nl/transactionitems/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c + retryAfter: 10 /transactionitems/{transactionItemId}: parameters: - in: path @@ -209,16 +293,37 @@ paths: required: true description: The id of the transaction item. patch: - summary: Update a transaction item. + summary: P1. Update a transaction item. description: Update a transaction item. tags: - - Transactions v2 + - Transactions v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TransactionItemsPatchRequestBody" + examples: + Return transaction item to transaction database: + summary: Return transaction item to transaction database + description: | + FMT updates the transaction item so that it is returned to the transaction database. + This is done by changing the status to 'returned to trx-db' and emptying the + aggregationReference and accountingSystemReference. + value: + status: returned to trx-db + aggregationReference: null + accountingSystemReference: null + Return transaction item to source: + summary: Return transaction item to source + description: | + FMT updates the transaction item so that it is returned to the source. + This is done by changing the status to 'returned to src' and emptying the + aggregationReference and accountingSystemReference. + value: + status: returned to src + aggregationReference: null + accountingSystemReference: null responses: "200": description: OK @@ -226,6 +331,66 @@ paths: application/json: schema: $ref: "#/components/schemas/TransactionItemsPatchResponseBody" + examples: + Transaction item successfully updated: + summary: Transaction item successfully updated + description: The transaction item was successfully updated in the database. + value: + transactionItemId: 7c3a5b0f-b89e-4f02-8b09-d11c5a050a07 + /transactionitems/responsestatus/{clientTrackingId}: + get: + tags: + - Transactions v2.2 + summary: P1. Get the status of the transaction items POST. + description: Get the status of the asynchronous transaction items POST processing. + parameters: + - in: path + name: clientTrackingId + schema: + type: string + required: true + description: The clientTrackingId of the transaction items POST. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/TransactionItemsResponseStatusGetResponseBody" + examples: + Batch successfully processed: + summary: Batch successfully processed + description: | + Body of a batch of transaction items that was successfully processed. + A number of transaction items were inserted and another number was updated. + value: + summary: + created: 15 + updated: 2 + total: 17 + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/409Response" + examples: + A transaction item already exists: + summary: A transaction item already exists + description: | + In this batch of transaction items, a transaction with same transactionId and + transactionLineId already exists. Therefore, the whole batch is rolled back and + rejected. + value: + code: "409" + type: error + message: conflict + description: A transaction with the same TransactionId and TransactionLineId already exists. + errors: + - detail: Transaction is a duplicate of a transaction already in the system. + pointer: "#/transactionItems/0" + transactionId: 1ad109d3-fd7d-4b6f-872b-220d492f385f + transactionLineId: fee907dd-e59d-44f5-a63b-bbdec38f79b7 /transactionitems/{transactionItemId}/processingfailures: parameters: - in: path @@ -237,16 +402,30 @@ paths: required: true description: The id of the transaction item to process. post: - summary: Add a processing failure. + summary: P1. Add a processing failure. description: Add a processing failure. tags: - - Failures v2 + - Failures v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ProcessingFailuresPostRequestBody" + examples: + Add new processing failure for a transaction item: + summary: Add new processing failure for a transaction item + description: | + Add a new processing failure for a transaction item. This usually happens when + a transaction item has failed validation. In this specific example, the transaction + item has a timestamp in the future. + value: + timestamp: 2025-01-01 12:34:00 + element: occuredOn + value: 2027-01-01 12:34:00 + reasonCode: "012" + reasonDescription: Transaction date is in the future. + resolved: false responses: "201": description: Created @@ -254,6 +433,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ProcessingFailuresPostResponseBody" + examples: + Processing failure successfully added: + summary: Processing failure successfully added + description: The processing failure was successfully added to the database. + value: + processingFailureId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /transactionitems/{transactionItemId}/transactionaudittrails: parameters: - in: path @@ -265,16 +450,37 @@ paths: required: true description: The id of the transaction item to process. post: - summary: Add an audit trail entry. + summary: P1. Add an audit trail entry. description: Add an audit trail entry. tags: - - Audit Trail v2 + - 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 @@ -282,75 +488,78 @@ paths: 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 /transactionaudittrails: get: - summary: Find audit trail entries. + summary: P3. Find audit trail entries. description: Find audit trail entries. tags: - - Audit Trail v2 + - Audit Trail v2.2 parameters: - - in: query - name: transactionAuditTrailId - schema: - type: string - format: uuid - example: 498e11fd-86c7-4e26-8ca9-c5ed9049da9e - description: The id of the audit trail. - - in: query - name: transactionItemId - schema: - type: string - format: uuid - example: 9834b346-d68c-438d-9bd5-6716422c2657 - description: The id of the transaction item. - - in: query - name: user - schema: - type: string - example: fiko - description: The user who created the audit trail. - - in: query - name: timestampBefore - schema: - type: string - example: 2022-01-01 00:00:00 - description: The timestamp before the event occured. - - in: query - name: timestampAfter - schema: - type: string - example: 2022-01-01 00:00:00 - description: The timestamp after the event occured. - - in: query - name: action + - $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 - example: [create, update] + enum: + - transactionAuditTrailRowId + - transactionAuditTrailId + - transactionItemId + - user + - timestamp + - action + - status + - correlationId + - name: $select + in: query + description: Select properties to be returned + required: false + style: form explode: false - description: The action of the event. - - in: query - name: status schema: + uniqueItems: true type: array items: type: string - example: [created, succeeded, failed, returned to trx-db, returned to src, re-entered] + enum: + - transactionAuditTrailRowId + - transactionAuditTrailId + - transactionItemId + - user + - timestamp + - action + - status + - correlationId + - name: $expand + in: query + description: Expand related entities + required: false + style: form explode: false - description: The status of the transaction item. - - in: query - name: description schema: - type: string - example: Transaction created. - description: The description of the event. - - in: query - name: correlationId - schema: - type: string - example: a3891560-3084-42cb-867c-f289e7cda47d - description: The correlation id of the event. + uniqueItems: true + type: array + items: + type: string + enum: + - TransactionItem responses: "200": description: OK @@ -358,75 +567,195 @@ paths: application/json: schema: $ref: "#/components/schemas/TransactionAuditTrailsGetResponseBody" + examples: + No transaction items: + summary: No transaction audit trails were found + description: No transaction audit trails that match the search criteria were found. + value: + transactionAuditTrails: [] + href: null + List containing multiple transaction audit trails: + summary: List containing multiple transaction audit trails + description: List containing multiple transaction audit trails of different transaction items (no filters applied). + value: + transactionAuditTrails: + - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: fiko + timestamp: 2025-01-01 12:34:51 + action: create + status: created + description: Transaction created. + correlationId: null + - transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f + transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b + user: fiko + timestamp: 2025-01-01 12:34:50 + action: create + status: created + description: Transaction created. + correlationId: null + - transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6 + transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd + user: ad.vogelaar + timestamp: 2025-01-01 12:34:48 + action: update + status: return to src + description: Transaction retunred to source. + correlationId: a3891560-3084-42cb-867c-f289e7cda47d + - transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10 + transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b + user: fiko + timestamp: 2025-01-01 12:34:47 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + href: null + ? List containing multiple transaction audit trails of one transaction item + : summary: List containing multiple audit trails of one transaction item + description: List containing multiple audit trail records of one transaction item (with id `d667d293-aa82-4c9e-9b10-77cffc9058a1`). + value: + transactionAuditTrails: + - transactionAuditTrailId: d571ff7c-eaa5-428a-9bc3-5a0fa3e5ee2e + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: fiko + timestamp: 2025-01-07 12:34:59 + action: update + status: re-entered + description: Transaction re-entered. + correlationId: null + - transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: ad.vogelaar + timestamp: 2025-01-04 12:34:54 + action: update + status: return to src + description: Transaction retunred to source. + correlationId: a3891560-3084-42cb-867c-f289e7cda47d + - transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423 + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: fiko + timestamp: 2025-01-02 00:34:50 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: fiko + timestamp: 2025-01-01 12:34:47 + action: create + status: created + description: Transaction created. + correlationId: null + href: null + List containing multiple audit trails of failed transactions: + summary: List containing multiple audit trails of failed transactions + description: List containing multiple audit trails of just failed transactions (status = failed). + value: + transactionAuditTrails: + - transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d + transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1 + user: fiko + timestamp: 2025-01-01 00:34:51 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + - transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f + transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b + user: fiko + timestamp: 2025-01-01 00:34:50 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + - transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6 + transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd + user: fiko + timestamp: 2025-01-01 00:34:48 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + - transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10 + transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b + user: fiko + timestamp: 2025-01-01 00:34:47 + action: update + status: failed + description: Validation XYZ failed. + correlationId: null + href: null /processingfailures: get: - summary: Find processing failures. + summary: P1.Find processing failures. description: Find processing failures. tags: - - Failures v2 + - Failures v2.2 parameters: - - in: query - name: processingFailureId + - $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: - type: string - format: uuid - example: 9834b346-d68c-438d-9bd5-6716422c2657 - description: The id of the processing failure. - - in: query - name: transactionItemId + uniqueItems: true + type: array + items: + type: string + enum: + - processingFailureRowId + - processingFailureId + - transactionItemId + - timestamp + - element + - value + - reasonCode + - reasonDescription + - resolved + - change + - name: $select + in: query + description: Select properties to be returned + required: false + style: form + explode: false schema: - type: string - format: uuid - example: 9834b346-d68c-438d-9bd5-6716422c2657 - description: The id of the transaction item. - - in: query - name: timestampBefore + uniqueItems: true + type: array + items: + type: string + enum: + - processingFailureRowId + - processingFailureId + - transactionItemId + - timestamp + - element + - value + - reasonCode + - reasonDescription + - resolved + - change + - name: $expand + in: query + description: Expand related entities + required: false + style: form + explode: false schema: - type: string - example: 2022-01-01 00:00:00 - description: The timestamp before the event occured. - - in: query - name: timestampAfter - schema: - type: string - example: 2022-01-01 00:00:00 - description: The timestamp after the event occured. - - in: query - name: element - schema: - type: string - example: contraAccount - description: The element on which the validation failed. - - in: query - name: value - schema: - type: string - example: 84955 - description: The value of th element on which the validation failed. - - in: query - name: reasonCode - schema: - type: string - example: "002" - description: The code of the validation failure reason. - - in: query - name: reasonDescription - schema: - type: string - example: Contra account does not exist. - description: The description of the validation failure reason. - - in: query - name: resolved - schema: - type: boolean - example: true - description: Whether the failure is resolved. - - in: query - name: change - schema: - type: string - example: Adapt config - description: Description of what was changed to resolve the failure. + uniqueItems: true + type: array + items: + type: string + enum: + - TransactionItem responses: "200": description: OK @@ -434,6 +763,85 @@ paths: application/json: schema: $ref: "#/components/schemas/ProcessingFailuresGetResponseBody" + examples: + No processing failures: + summary: No processing failures + description: No processing failures were found (for example for a single transaction item). + value: + processingFailures: [] + href: null + Multiple processing failures for a single transaction item: + summary: Multiple processing failures for a single transaction item + description: | + In this example multiple processing failures were found for a single transaction item. + This example shows how a single transaction items has failed validation two times, in which the + the first failure has two validation errors, which have been resolved, and the second failure + hasn't been. Which makes three processing failures total. + value: + processingFailures: + - processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf + transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce + timestamp: 2022-01-01 00:00:00 + element: costType + value: 901 + reasonCode: "004" + reasonDescription: Cost type does not exist. + resolved: false + change: null + - processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193 + transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce + timestamp: 2025-01-01 00:43:01 + element: costCenter + value: 84955 + reasonCode: "002" + reasonDescription: Cost center does not exist. + resolved: true + change: Adapt config + - processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5 + transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce + timestamp: 2025-01-01 00:43:01 + element: department + value: 1337 + reasonCode: "001" + reasonDescription: Department does not exist. + resolved: true + change: Adapt config + href: null + List of unfiltered processing failures: + summary: List of unfiltered processing failures + description: | + In this example there is a list of processing failures where no filters have been applied. + This results in a list of all processing failures, for different transaction items. + value: + processingFailures: + - processingFailureId: 1d0f237e-5fbe-4107-8bdf-a41f43307ac0 + transactionItemId: d0425652-07a3-4b95-bb37-8bb15ea1b9b5 + timestamp: 2022-01-01 00:00:00 + element: occuredOn + value: 2027-01-01 + reasonCode: "009" + reasonDescription: Transaction date is in the future + resolved: false + change: null + - processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3 + transactionItemId: 3f0a8a74-c642-441e-a187-d32fedb77fdf + timestamp: 2025-01-01 00:43:01 + element: costCenter + value: 84955 + reasonCode: "002" + reasonDescription: Cost center does not exist. + resolved: false + change: null + - processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1 + transactionItemId: 446ad396-41f6-4c1f-942c-a131e620075d + timestamp: 2025-01-01 00:43:01 + element: department + value: 1337 + reasonCode: "001" + reasonDescription: Department does not exist. + resolved: false + change: null + href: null /processingfailures/{processingFailureId}: parameters: - in: path @@ -445,15 +853,24 @@ paths: required: true description: The id of the processing failure. patch: - summary: Update processing failure. + summary: P1. Update processing failure. description: Update processing failure. tags: - - Failures v2 + - Failures v2.2 requestBody: content: application/json: schema: $ref: "#/components/schemas/ProcessingFailuresPatchRequestBody" + examples: + Resolve an existing processing failure: + summary: Resolve an existing processing failure + description: | + In this example, the processing failure with the id `37a8095b-19db-498f-9349-5f37d21c5bdf` + has been resolved by chaning the config. + value: + resolved: true + change: Adapt config responses: "200": description: OK @@ -461,395 +878,976 @@ paths: application/json: schema: $ref: "#/components/schemas/ProcessingFailuresPatchResponseBody" - /productmetadata: + examples: + Processing failure updated successfully: + summary: Processing failure updated successfully + description: The processing failure has been updated successfully. + value: + processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf + /bookingprocesses: get: - summary: Find product metadata. - description: Find product metadata. + summary: P1. Find booking processes. + description: Find booking processes. tags: - - Metadata v2 + - Booking Processes v2.2 parameters: - - in: query - name: productMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the product metadata. - - in: query - name: productCode - schema: - type: string - example: 4031 - description: The product code. - - in: query - name: department - schema: - type: string - example: 900 - description: The department. - - in: query - name: costType - schema: - type: string - example: 619031 - description: The cost type. - - in: query - name: description - schema: - type: string - example: O4031_Reisproduct HTM 1 dag Anoniem - description: The description. - - in: query - name: documentCode - schema: - type: string - example: VERK_FACTUUR - description: The document code. - - in: query - name: updatedBefore - schema: - type: string - example: 2022-01-01 00:00:00 - description: Timestamp that the metadata was updated before. - - in: query - name: updatedAfter - schema: - type: string - example: 2022-01-01 00:00:00 - description: Timestamp that the metadata was updated after. - - in: query - name: validAt - schema: - type: string - example: 2024-03-22T09:00:00 - description: Timestamp that the metadata is valid. - - in: query - name: contraAccountMetadataId - schema: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - description: Find product metadata that is linked to this contra account. - - in: query - name: concessionId + - $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: integer - example: [1, 2] + type: string + enum: + - bookingProcessRowId + - bookingProcessId + - name + - transactionType + - identifyingFieldName + - name: $select + in: query + description: Select properties to be returned + required: false + style: form explode: false - description: Find product metadata that is linked to this concession. - - in: query - name: sourceMetadataId - schema: - type: string - format: uuid - example: 08d96f94-f468-467e-9068-c86c34f43097 - description: Find product metadata that is linked to this source metadata. - - in: query - name: costCenter - schema: - type: string - example: 84955 - description: Find product metadata that is linked to this cost center. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ProductMetadataGetResponseBody" - - post: - summary: Add product metadata. - description: Add product metadata. - tags: - - Metadata v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ProductMetadataPostRequestBody" - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/ProductMetadataPostResponseBody" - /productmetadata/{productMetadataId}: - parameters: - - in: path - name: productMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: true - description: The id of the product metadata. - patch: - summary: Update product metadata. - description: Update product metadata. - tags: - - Metadata v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ProductMetadataPatchRequestBody" - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ProductMetadataPatchResponseBody" - /productmetadata/{productMetadataId}/productcontraaccounts: - parameters: - - in: path - name: productMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: true - description: The id of the product metadata. - post: - summary: Add product contra account. - description: Add product contra account. - tags: - - Metadata v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ProductContraAccountsPostRequestBody" - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/ProductContraAccountsPostResponseBody" - /productcontraaccounts: - get: - summary: Find product contra accounts. - description: Find product contra accounts. - tags: - - Metadata v2 - parameters: - - in: query - name: productContraAccountId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the product contra account. - - in: query - name: productMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the product metadata. - - in: query - name: contraAccountMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the contra account metadata. - - in: query - name: concessionId schema: + uniqueItems: true type: array items: - type: integer - example: [1, 2] - explode: false - description: Find product metadata that is linked to this concession. - - in: query - name: sourceMetadataId - schema: - type: string - format: uuid - example: 08d96f94-f468-467e-9068-c86c34f43097 - description: Find product metadata that is linked to this source metadata. - - in: query - name: costCenter - schema: - type: string - example: 84955 - description: Find product metadata that is linked to this cost center. - - in: query - name: validAt - schema: - type: string - example: 2024-03-22T09:00:00 - description: Timestamp that the metadata is valid. + type: string + enum: + - bookingProcessRowId + - bookingProcessId + - name + - transactionType + - identifyingFieldName responses: "200": description: OK content: application/json: schema: - $ref: "#/components/schemas/ProductContraAccountsGetResponseBody" - /productcontraaccounts/{productContraAccountId}: - parameters: - - in: path - name: productContraAccountId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: true - description: The id of the product contra account. - patch: - summary: Update product contra account. - description: Update product contra account. - tags: - - Metadata v2 - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ProductContraAccountsPatchRequestBody" - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ProductContraAccountsPatchResponseBody" - /contraaccountmetadata: - get: - summary: Find contra account metadata. - description: Find contra account metadata. - tags: - - Metadata v2 - parameters: - - in: query - name: contraAccountMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the contra account metadata. - - in: query - name: contraAccountCode - schema: - type: string - example: 123456 - description: The code of the contra account. - - in: query - name: contraAccountNumber - schema: - type: string - example: 220.10419 - description: The number of the contra account. - - in: query - name: validAt - schema: - type: string - format: date-time - example: 2024-03-22T09:00:00 - description: Timestamp that the metadata is valid. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ContraAccountMetadataGetResponseBody" + $ref: "#/components/schemas/BookingProcessesGetResponseBody" + examples: + List containing all booking processes: + summary: List containing all booking processes + description: Returns a list containing all booking processes (no filters applied). + value: + bookingProcesses: + - bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf + name: Verkooptransacties + transactionType: sales + identifyingFieldName: articleNumber + - bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26 + name: Inkooptransacties + transactionType: purchase + identifyingFieldName: null + href: null post: - summary: Add contra account metadata. - description: Add contra account metadata. + summary: P2. Add a booking process. + description: Add a booking process. tags: - - Metadata v2 + - Booking Processes v2.2 requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/ContraAccountMetadataPostRequestBody" + $ref: "#/components/schemas/BookingProcessesPostRequestBody" + examples: + Add a new booking process: + summary: Add a new booking process + description: | + This example shows how a new booking process for purchase orders can be added. + value: + name: Inkooptransacties + transactionType: purchase + identifyingFieldName: articleNumber responses: "201": description: Created content: application/json: schema: - $ref: "#/components/schemas/ContraAccountMetadataPostResponseBody" - /contraaccountmetadata/{contraAccountMetadataId}: + $ref: "#/components/schemas/BookingProcessesPostResponseBody" + examples: + New booking process added successfully: + summary: New booking process added successfully + description: The new booking process was successfully added to the database. + value: + bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26 + /bookingprocesses/{bookingProcessId}: parameters: - in: path - name: contraAccountMetadataId + name: bookingProcessId schema: type: string format: uuid example: 37a8095b-19db-498f-9349-5f37d21c5bdf required: true - description: The id of the contra account metadata. + description: The id of the booking process. patch: - summary: Update contra account metadata. - description: Update contra account metadata. + summary: P2. Update a booking process. + description: Update a booking process. tags: - - Metadata v2 + - Booking Processes v2.2 requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/ContraAccountMetadataPatchRequestBody" + $ref: "#/components/schemas/BookingProcessesPatchRequestBody" + examples: + Update a booking process: + summary: Update a booking process + description: | + This example shows how a booking process can be updated. + value: + identifyingFieldName: orderNumber responses: "200": description: OK content: application/json: schema: - $ref: "#/components/schemas/ContraAccountMetadataPatchResponseBody" + $ref: "#/components/schemas/BookingProcessesPatchResponseBody" + examples: + Booking process successfully updated: + summary: Booking process successfully updated + description: The booking process was successfully updated in the database. + value: + bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf + /bookingprocesses/{bookingProcessId}/bookingmetadata: + parameters: + - in: path + name: bookingProcessId + schema: + type: string + format: uuid + example: 37a8095b-19db-498f-9349-5f37d21c5bdf + required: true + description: The id of the booking process. + post: + summary: P2. Add booking metadata. + description: Add booking metadata. + tags: + - Booking Processes v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BookingMetadataPostRequestBody" + examples: + Add a new booking metadata: + summary: Add a new booking metadata + description: | + This example shows how a new booking metadata for a booking process can be added. + value: + description: Saldoreizen + department: 900 + costType: 84955 + documentCode: OPBR-FIKO + hasSeparateTaxLine: true + hasLinePerIdentifyingField: false + hasLinePerSource: true + hasLinePerConcession: true + validFrom: 2024-03-22T09:00:00 + validUntil: null + responses: + "201": + description: Created + content: + application/json: + schema: + $ref: "#/components/schemas/BookingMetadataPostResponseBody" + examples: + New booking metadata added successfully: + summary: New booking metadata added successfully + description: The new booking metadata was successfully added to the database. + value: + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + /bookingmetadata: + get: + summary: P1. Find booking metadata. + description: Find booking metadata. + tags: + - Booking Processes v2.2 + 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: + - bookingMetadataRowId + - bookingMetadataId + - bookingProcessId + - description + - department + - costType + - documentCode + - hasSeparateTaxLine + - hasLinePerIdentifyingField + - hasLinePerSource + - hasLinePerConcession + - validFrom + - validUntil + - 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: + - bookingMetadataRowId + - bookingMetadataId + - bookingProcessId + - description + - department + - costType + - documentCode + - hasSeparateTaxLine + - hasLinePerIdentifyingField + - hasLinePerSource + - hasLinePerConcession + - validFrom + - validUntil + - name: $expand + in: query + description: Expand related entities + required: false + style: form + explode: false + schema: + uniqueItems: true + type: array + items: + type: string + enum: + - BookingProcess + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/BookingMetadataGetResponseBody" + examples: + List containing all booking metadata: + summary: List containing all booking metadata + description: Returns a list containing all booking metadata (no filters applied). + value: + bookingMetadata: + - bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf + description: Dagkaart + department: 900 + costType: 84956 + documentCode: FIKO-OPBR + hasSeparateTaxLine: true + hasLinePerIdentifyingField: true + hasLinePerSource: true + hasLinePerConcession: true + validFrom: 2022-01-01 00:00:00 + validUntil: null + - bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034 + bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf + description: Saldoreizen + department: 900 + costType: 84955 + documentCode: FIKO-OPBR + hasSeparateTaxLine: true + hasLinePerIdentifyingField: true + hasLinePerSource: true + hasLinePerConcession: true + validFrom: 2022-01-01 00:00:00 + validUntil: null + href: null + /bookingmetadata/{bookingMetadataId}: + parameters: + - in: path + name: bookingMetadataId + schema: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: true + description: The id of the booking metadata. + patch: + summary: P2. Update booking metadata. + description: Update booking metadata. + tags: + - Booking Processes v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BookingMetadataPatchRequestBody" + examples: + Update booking metadata: + summary: Update booking metadata + description: | + In this example the booking metadata is updated. The validUntil field is updated to 2024-03-22T09:00:00. + value: + validUntil: 2024-03-22T09:00:00 + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/BookingMetadataPatchResponseBody" + examples: + Booking metadata updated successfully: + summary: Booking metadata updated successfully + description: The booking metadata was successfully updated in the database. + value: + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + /bookingmetadata/{bookingMetadataId}/bookinggroupfields: + parameters: + - in: path + name: bookingMetadataId + schema: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: true + description: The id of the booking metadata. + post: + summary: P2. Add booking group fields. + description: Add booking group fields. + tags: + - Booking Processes v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BookingGroupFieldsPostRequestBody" + examples: + Add a new booking group field: + summary: Add a new booking group field + description: Add a new booking group field to an existing booking. + value: + identifyingFieldValue: 4135 + responses: + "201": + description: Created + content: + application/json: + schema: + $ref: "#/components/schemas/BookingGroupFieldsPostResponseBody" + examples: + New booking group field added successfully: + summary: New booking group field added successfully + description: The new booking group field was successfully added to the database. + value: + bookingGroupFieldId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + /bookingmetadata/{bookingMetadataId}/bookinglinemetadata: + parameters: + - in: path + name: bookingMetadataId + schema: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: true + description: The id of the booking metadata. + post: + summary: P2. Add booking line metadata. + description: Add booking line metadata. + tags: + - Booking Processes v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BookingLineMetadataPostRequestBody" + examples: + Add a new tax booking line metadata: + summary: Add a new tax booking line metadata + description: In this example a new tax booking line metadata is added to an existing booking. + value: + name: Saldoreizen - BTW + sourceMetadataId: null + identifyingFieldValue: null + concessionId: null + lineType: tax + lineSense: credit + costCenter: 603031 + articleName: null + extRef1: null + extRef2: null + extRef3: null + extRef4: null + extRef5: TLS + extRef6: null + Add a new yield booking line metadata: + summary: Add a new yield booking line metadata + description: In this example a new yield booking line metadata is added to an existing booking. + value: + name: Opbrengst Saldoreizen - RAIL + sourceMetadataId: null + identifyingFieldValue: null + concessionId: 1 + lineType: analysis + lineSense: credit + costCenter: 603031 + articleName: Saldoreizen + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: TLS + extRef6: null + responses: + "201": + description: Created + content: + application/json: + schema: + $ref: "#/components/schemas/BookingLineMetadataPostResponseBody" + examples: + New booking line metadata added successfully: + summary: New booking line metadata added successfully + description: The new booking line metadata was successfully added to the database. + value: + bookingLineMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + /bookinggroupfields: + get: + summary: P1. Find booking group fields. + description: Find booking group fields. + tags: + - Booking Processes v2.2 + 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: + - bookingGroupFieldRowId + - bookingGroupFieldId + - bookingMetadataId + - identifyingFieldValue + - 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: + - bookingGroupFieldRowId + - bookingGroupFieldId + - bookingMetadataId + - identifyingFieldValue + - name: $expand + in: query + description: Expand related entities + required: false + style: form + explode: false + schema: + uniqueItems: true + type: array + items: + type: string + enum: + - BookingMetadata + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/BookingGroupFieldsGetResponseBody" + examples: + List containing all booking group fields: + summary: List containing all booking group fields + description: Returns a list containing all booking group fields for all booking metadata (no filters applied). + value: + bookingGroupFields: + - bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 1737 + - bookingGroupFieldId: 3b9005f4-42c4-4e2b-b472-ba7d0926fe77 + bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034 + identifyingFieldValue: 1748 + - bookingGroupFieldId: ae773282-ac9b-4a0b-a487-b4061ea2a42f + bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034 + identifyingFieldValue: 1750 + - bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 1757 + href: null + List containing all booking group fields for a single booking: + summary: List containing all booking group fields for a single booking + description: | + Returns a list containing all booking group fields for a single booking booking metadata 'Dagkaart' + (identified by the same bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617). + value: + bookingGroupFields: + - bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 1737 + - bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 1757 + - bookingGroupFieldId: fede01e0-86c5-47d0-9466-3093132148e5 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4031 + - bookingGroupFieldId: d7c25182-b64e-4e47-8998-19ddb65b8f2c + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4032 + - bookingGroupFieldId: ea02d3eb-29e6-42fd-b7eb-dfbfd2231090 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4033 + - bookingGroupFieldId: a73407a6-ff8c-4924-a7ac-5cd605e1793c + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4034 + - bookingGroupFieldId: d9af4bf1-4e85-4eb6-ae5d-d2020b18d63c + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4051 + - bookingGroupFieldId: c1ba494b-249a-475b-a542-19918aa36778 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4053 + - bookingGroupFieldId: 69be1be0-c600-492d-aec1-8490409371da + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4054 + - bookingGroupFieldId: d7d00ec1-6d53-44e9-bcd8-01f6a523f771 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + identifyingFieldValue: 4055 + href: null + /bookinggroupfields/{bookingGroupFieldId}: + parameters: + - in: path + name: bookingGroupFieldId + schema: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: true + description: The id of the booking group field. + delete: + summary: P2. Delete booking group field. + description: Delete booking group field. + tags: + - Booking Processes v2.2 + responses: + "200": + description: OK + /bookinglinemetadata: + get: + summary: P1. Find booking line metadata. + description: Find booking line metadata. + tags: + - Booking Processes v2.2 + 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: + - bookingLineMetadataRowId + - bookingLineMetadataId + - bookingMetadataId + - name + - sourceMetadataId + - identifyingFieldValue + - concessionId + - lineType + - lineSense + - costCenter + - articleName + - extRef1 + - extRef2 + - extRef3 + - extRef4 + - extRef5 + - extRef6 + - 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: + - bookingLineMetadataRowId + - bookingLineMetadataId + - bookingMetadataId + - name + - sourceMetadataId + - identifyingFieldValue + - concessionId + - lineType + - lineSense + - costCenter + - articleName + - extRef1 + - extRef2 + - extRef3 + - extRef4 + - extRef5 + - extRef6 + - name: $expand + in: query + description: Expand related entities + required: false + style: form + explode: false + schema: + uniqueItems: true + type: array + items: + type: string + enum: + - BookingMetadata + - SourceMetadata + - Concession + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/BookingLineMetadataGetResponseBody" + examples: + List containing all booking line metadata: + summary: List containing all booking line metadata + description: Returns a list containing all booking line metadata for all bookings (no filters applied). + value: + bookingLineMetadata: + - bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Webshop - Dagkaart - BUS + sourceMetadata: + sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0 + incomingName: HTM-website + incomingEntity: OrderLine + outgoingName: Webshop + businessOwner: Koos Verweg + rejectionProcessing: system + rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc + identifyingFieldValue: null + concession: + concessionId: 2 + name: BUS + lineType: summary + lineSense: credit + costCenter: 603031 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: Webshop + extRef6: null + - bookingLineMetadataId: 1bca01db-40d3-4447-9f28-41475ec6877d + bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034 + name: TLS - Saldoreizen - RAIL + sourceMetadata: + sourceMetadataId: 4b06a325-1078-4a2f-b63e-1d81eae8e5c3 + incomingName: Translink + incomingEntity: Trip + outgoingName: TLS + businessOwner: Koos Verweg + rejectionProcessing: mail + rejectionInfo: helpdesk@translink.nl + identifyingFieldValue: null + concession: + concessionId: 1 + name: RAIL + lineType: summary + lineSense: credit + costCenter: 603007 + articleName: Opbrengst TLS + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: TLS + extRef6: null + href: null + List containing booking line metadata of one booking: + summary: List containing booking line metadata of one booking + description: | + Returns a list containing all booking line metadata a single booking. + This example contains all the booking lines for a 'Dagkaart' booking + (bookingMetadataId: "6ce10520-9a73-4cb4-b8dd-39ee46ceb617"). + value: + bookingLineMetadata: + - bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Webshop Dagkaart - BUS + sourceMetadata: + sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0 + incomingName: HTM-website + incomingEntity: OrderLine + outgoingName: Webshop + businessOwner: Koos Verweg + rejectionProcessing: system + rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc + identifyingFieldValue: null + concession: + concessionId: 2 + name: BUS + lineType: summary + lineSense: credit + costCenter: 619031 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: Webshop + extRef6: null + - bookingLineMetadataId: a4464b5c-9a8e-4e48-a0a0-5500b1ca0885 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Webshop Dagkaart - RAIL + sourceMetadata: + sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0 + incomingName: HTM-website + incomingEntity: OrderLine + outgoingName: Webshop + businessOwner: Koos Verweg + rejectionProcessing: system + rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc + identifyingFieldValue: null + concession: + concessionId: 1 + name: RAIL + lineType: summary + lineSense: credit + costCenter: 603031 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: Webshop + extRef6: null + - bookingLineMetadataId: feaa7b33-ba49-40a2-90f3-5dd70d591f17 + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Ticketapp Dagkaart - BUS + sourceMetadata: + sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc + incomingName: HTM-app + incomingEntity: OrderLine + outgoingName: ticketapp + businessOwner: Danny Negen + rejectionProcessing: mail + rejectionInfo: d.negen@htm.nl + identifyingFieldValue: null + concession: + concessionId: 2 + name: BUS + lineType: summary + lineSense: credit + costCenter: 619031 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: Webshop + extRef6: null + - bookingLineMetadataId: ea6ce4e7-4d52-4b89-bbea-ffe0ef6c48ff + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Ticketapp Dagkaart - RAIL + sourceMetadata: + sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc + incomingName: HTM-app + incomingEntity: OrderLine + outgoingName: ticketapp + businessOwner: Danny Negen + rejectionProcessing: mail + rejectionInfo: d.negen@htm.nl + identifyingFieldValue: null + concession: + concessionId: 1 + name: RAIL + lineType: summary + lineSense: credit + costCenter: 603031 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: Webshop + extRef6: null + - bookingLineMetadataId: 0a8dbb7d-73c8-451e-9028-e4613283c7bd + bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + name: Dagkaart - BTW + sourceMetadata: null + identifyingFieldValue: null + concession: null + lineType: tax + lineSense: credit + costCenter: 1337 + articleName: dagkaart + extRef1: null + extRef2: null + extRef3: 2025-02-17 + extRef4: null + extRef5: null + extRef6: null + href: null + /bookinglinemetadata/{bookingLineMetadataId}: + parameters: + - in: path + name: bookingLineMetadataId + schema: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: true + description: The id of the booking line metadata. + patch: + summary: P2. Update booking line metadata. + description: Update booking line metadata. + tags: + - Booking Processes v2.2 + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BookingLineMetadataPatchRequestBody" + examples: + Update cost center of a booking line: + summary: Update cost center of a booking line + description: | + In this example the cost center of an existing booking line metadata is updated. + value: + costCenter: 84957 + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/BookingLineMetadataPatchResponseBody" + examples: + Booking line metadata updated successfully: + summary: Booking line metadata updated successfully + description: The booking line metadata was successfully updated in the database. + value: + bookingLineMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + delete: + summary: P2. Delete booking line metadata. + description: Delete booking line metadata. + tags: + - Booking Processes v2.2 + responses: + "200": + description: OK /taxmetadata: get: - summary: Find tax metadata. + summary: P1. Find tax metadata. description: Find tax metadata. tags: - - Metadata v2 + - Metadata v2.2 parameters: - - in: query - name: taxMetadataId + - $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: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the tax metadata. - - in: query - name: taxCode + uniqueItems: true + type: array + items: + type: string + enum: + - taxMetadataRowId + - taxMetadataId + - taxCode + - taxPercentageAmount + - description + - validFrom + - validUntil + - name: $select + in: query + description: Select properties to be returned + required: false + style: form + explode: false schema: - type: string - example: V21 - description: The tax code. - - in: query - name: taxPercentageAmount - schema: - type: string - example: 21 - description: The tax percentage amount. - - in: query - name: description - schema: - type: string - example: BTW VERKOOP HOOG 21% - description: The description of the tax metadata. - - in: query - name: validAt - schema: - type: string - format: date-time - example: 2024-03-22T09:00:00 - description: Timestamp that the metadata is valid. + uniqueItems: true + type: array + items: + type: string + enum: + - taxMetadataRowId + - taxMetadataId + - taxCode + - taxPercentageAmount + - description + - validFrom + - validUntil responses: "200": description: OK @@ -857,17 +1855,70 @@ paths: application/json: schema: $ref: "#/components/schemas/TaxMetadataGetResponseBody" + examples: + List containing all tax metadata: + summary: List containing all tax metadata + description: Returns a list containing all tax metadata (no filters applied). + value: + taxMetadata: + - taxMetadataId: 2d444740-4131-4169-bb47-2d125641dc87 + taxCode: V0 + texPercantageAmount: 0 + description: BTW VERKOOP NUL + validFrom: 2024-03-22T09:00:00 + validUntil: null + - taxMetadataId: b5f879d1-043d-4357-9655-2eeca8ebe9bf + taxCode: V09 + taxPercentageAmount: 9 + description: BTW VERKOOP LAAG 9% + validFrom: 2024-03-22T09:00:00 + validUntil: null + - taxMetadataId: 62e1abe7-d76f-4364-9207-591c0601ba55 + taxCode: V21 + taxPercentageAmount: 21 + description: BTW VERKOOP HOOG 21% + validFrom: 2024-03-22T09:00:00 + validUntil: null + - taxMetadataId: 9a253fc3-e562-4c4a-925c-d9caf0dcc549 + taxCode: ?0 + taxPercentageAmount: 0 + description: BTW DEBIT NUL + validFrom: 2024-03-22T09:00:00 + validUntil: null + - taxMetadataId: 6243b848-5ca3-44e0-9860-4fb3a817f148 + taxCode: ?09 + taxPercentageAmount: 9 + description: BTW DEBIT laag 9% + validFrom: 2024-03-22T09:00:00 + validUntil: null + - taxMetadataId: 0240d6e4-6037-4da0-ac10-1fde0229d439 + taxCode: ?21 + taxPercentageAmount: 21 + description: BTW DEBIT hoog 21% + validFrom: 2024-03-22T09:00:00 + validUntil: null + href: null post: - summary: Add tax metadata. + summary: P3. Add tax metadata. description: Add tax metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TaxMetadataPostRequestBody" + examples: + Add new tax metadata: + summary: Add new tax metadata + description: This example adds a new tax metadata record to the database. + value: + taxCode: V21.4 + taxPercentageAmount: 21.4 + description: BTW VERKOOP HOOG 21.4% + validFrom: 2025-03-22T09:00:00 + validUntil: null responses: "201": description: Created @@ -875,6 +1926,12 @@ paths: application/json: schema: $ref: "#/components/schemas/TaxMetadataPostResponseBody" + examples: + Tax metadata created successfully: + summary: Tax metadata created successfully + description: The tax metadata was successfully added to the database. + value: + taxMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /taxmetadata/{taxMetadataId}: parameters: - in: path @@ -886,16 +1943,22 @@ paths: required: true description: The id of the tax metadata. patch: - summary: Update tax metadata. + summary: P3. Update tax metadata. description: Update tax metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TaxMetadataPatchRequestBody" + examples: + Update tax metadata: + summary: Update tax metadata + description: In this example the tax metadata is updated. The validUntil field is updated to 2025-03-22T09:00:00. + value: + validUntil: 2025-03-22T09:00:00 responses: "200": description: OK @@ -903,65 +1966,63 @@ paths: application/json: schema: $ref: "#/components/schemas/TaxMetadataPatchResponseBody" + examples: + Tax metadata updated successfully: + summary: Tax metadata updated successfully + description: The tax metadata was successfully updated in the database. + value: + taxMetadataId: 7c3a5b0f-b89e-4f02-8b09-d11c5a050a07 /sourcemetadata: get: - summary: Find source metadata. + summary: P1. Find source metadata. description: Find source metadata. tags: - - Metadata v2 + - Metadata v2.2 parameters: - - in: query - name: sourceMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the source metadata. - - in: query - name: incomingName - schema: - type: string - example: VerkoopEngine - description: The name of the source. - - in: query - name: incomingEntity - schema: - type: string - example: OrderLine - description: The entity of the source. - - in: query - name: outgoingName - schema: - type: string - example: Website Verkopen - description: The name of the destination. - - in: query - name: businessOwner - schema: - type: string - example: Corneel Verstoep - description: The business owner of the source. - - in: query - name: rejectionProcessing + - $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 - example: [mail, system] + enum: + - sourceMetadataRowId + - sourceMetadataId + - incomingName + - incomingEntity + - outgoingName + - businessOwner + - rejectionProcessing + - rejectionInfo + - name: $select + in: query + description: Select properties to be returned + required: false + style: form explode: false - description: The rejection processing of the source. - - in: query - name: rejectionInfo schema: - type: string - example: api.htm.nl/v2/account/12345/msgs/abc - description: The rejection info of the source. - - in: query - name: validAt - schema: - type: string - example: 2024-01-01T00:00:00.000 - description: Timestamp that the metadata is valid. + uniqueItems: true + type: array + items: + type: string + enum: + - sourceMetadataRowId + - sourceMetadataId + - incomingName + - incomingEntity + - outgoingName + - businessOwner + - rejectionProcessing + - rejectionInfo responses: "200": description: OK @@ -969,17 +2030,56 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceMetadataGetResponseBody" + examples: + List containing all source metadata: + summary: List containing all source metadata + description: Returns a list containing all source metadata (no filters applied). + value: + sourceMetadata: + - sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0 + incomingName: HTM-web + incomingEntity: OrderLine + outgoingName: webshop + businessOwner: Koos Verweg + rejectionProcessing: system + rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc + - sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc + incomingName: HTM-app + incomingEntity: OrderLine + outgoingName: ticketapp + businessOwner: Danny Negen + rejectionProcessing: mail + rejectionInfo: d.negen@htm.nl + - sourceMetadataId: 0b6e3e07-c4e0-42bf-86f2-9c9522b71209 + incomingName: SMP + incomingEntity: OrderLine + outgoingName: balieverkoop + businessOwner: Guus Geluk + rejectionProcessing: mail + rejectionInfo: ao@htm.nl + href: null post: - summary: Add source metadata. + summary: P3. Add source metadata. description: Add source metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/SourceMetadataPostRequestBody" + examples: + Add a new source to the metadata: + summary: Add a new source to the metadata + description: Add a new record to the source metadata in the database. + value: + incomingName: HTM-app + incomingEntity: OrderLine + outgoingName: ticketapp + businessOwner: Danny Negen + rejectionProcessing: mail + rejectionInfo: d.negen@htm.nl responses: "201": description: Created @@ -987,6 +2087,12 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceMetadataPostResponseBody" + examples: + Source metadata created successfully: + summary: Source metadata created successfully + description: The source metadata was successfully added to the database. + value: + sourceMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /sourcemetadata/{sourceMetadataId}: parameters: - in: path @@ -998,16 +2104,22 @@ paths: required: true description: The id of the source metadata. patch: - summary: Update source metadata. + summary: P3. Update source metadata. description: Update source metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/SourceMetadataPatchRequestBody" + examples: + Update a source in the metadata: + summary: Update a source in the metadata + description: In this example we update the business owner of a single source meta data + value: + businessOwner: Chef Erwin responses: "200": description: OK @@ -1015,32 +2127,55 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceMetadataPatchResponseBody" + examples: + Source metadata updated successfully: + summary: Source metadata updated successfully + description: The source metadata was successfully updated in the database. + value: + sourceMetadataId: 37a8095b-19db-498f-9349-5f37d21c5bdf /accountingperiodmetadata: get: - summary: Find accounting period metadata. + summary: P1. Find accounting period metadata. description: Find accounting period metadata. tags: - - Metadata v2 + - Metadata v2.2 parameters: - - in: query - name: accountingPeriodMetadataId + - $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: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the accounting period metadata. - - in: query - name: accountingPeriod + uniqueItems: true + type: array + items: + type: string + enum: + - accountingPeriodMetadataRowId + - accountingPeriodMetadataId + - accountingPeriod + - isOpen + - name: $select + in: query + description: Select properties to be returned + required: false + style: form + explode: false schema: - type: string - example: 2024-01 - description: The accounting period. - - in: query - name: isOpen - schema: - type: boolean - example: true - description: Whether the accounting period is open. + uniqueItems: true + type: array + items: + type: string + enum: + - accountingPeriodMetadataRowId + - accountingPeriodMetadataId + - accountingPeriod + - isOpen responses: "200": description: OK @@ -1048,17 +2183,40 @@ paths: application/json: schema: $ref: "#/components/schemas/AccountingPeriodMetadataGetResponseBody" + examples: + List containing all accounting period metadata: + summary: List containing all accounting period metadata + description: Returns a list containing all accounting period metadata (no filters applied). + value: + accountingPeriodMetadata: + - accountingPeriodMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb + accountingPeriod: 2025/01 + isOpen: true + - accountingPeriodMetadataId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a + accountingPeriod: 2024/12 + isOpen: false + - accountingPeriodMetadataId: 33b4889b-0036-4870-87df-be43f9316cdf + accountingPeriod: 2024/11 + isOpen: false + href: null post: - summary: Add accounting period metadata. + summary: P2. Add accounting period metadata. description: Add accounting period metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AccountingPeriodMetadataPostRequestBody" + examples: + Add a new accounting period metadata: + summary: Add a new accounting period metadata + description: In this example we add a new accounting period metadata. + value: + accountingPeriod: 2025/03 + isOpen: true responses: "201": description: Created @@ -1066,6 +2224,12 @@ paths: application/json: schema: $ref: "#/components/schemas/AccountingPeriodMetadataPostResponseBody" + examples: + Accounting period metadata created successfully: + summary: Accounting period metadata created successfully + description: The accounting period metadata was successfully added to the database. + value: + accountingPeriodMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /accountingperiodmetadata/{accountingPeriodMetadataId}: parameters: - in: path @@ -1077,16 +2241,22 @@ paths: required: true description: The id of the accounting period metadata. patch: - summary: Update accounting period metadata. + summary: P2. Update accounting period metadata. description: Update accounting period metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AccountingPeriodMetadataPatchRequestBody" + examples: + Update an accounting period metadata: + summary: Update an accounting period metadata + description: In this example we close an existing accounting period in the metadata. + value: + isOpen: false responses: "200": description: OK @@ -1094,41 +2264,72 @@ paths: application/json: schema: $ref: "#/components/schemas/AccountingPeriodMetadataPatchResponseBody" + examples: + Accounting period metadata updated successfully: + summary: Accounting period metadata updated successfully + description: The accounting period metadata was successfully updated in the database. + value: + accountingPeriodMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /concessionmetadata: get: - summary: Find concession metadata. + summary: P1. Find concession metadata. description: Find concession metadata. tags: - - Metadata v2 + - Metadata v2.2 parameters: - - in: query - name: concessionMetadataId - schema: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - description: The id of the concession metadata. - - in: query - name: concessionId + - $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: integer - example: [1, 2] + type: string + enum: + - concessionMetadataRowId + - concessionMetadataId + - concessionId + - percentage + - validFrom + - validUntil + - name: $select + in: query + description: Select properties to be returned + required: false + style: form explode: false - description: The id of the concession. - - in: query - name: percentage schema: - type: number - example: 84.021 - description: The percentage of the concession. - - in: query - name: validAt + uniqueItems: true + type: array + items: + type: string + enum: + - concessionMetadataRowId + - concessionMetadataId + - concessionId + - percentage + - validFrom + - validUntil + - name: $expand + in: query + description: Expand related entities + required: false + style: form + explode: false schema: - type: string - example: 2024-01-01T00:00:00.000 - description: Timestamp that the metadata is valid. + uniqueItems: true + type: array + items: + type: string + enum: + - Concession responses: "200": description: OK @@ -1136,17 +2337,77 @@ paths: application/json: schema: $ref: "#/components/schemas/ConcessionMetadataGetResponseBody" + examples: + List containing all concession metadata: + summary: List containing all concession metadata + description: Returns a list containing all concession metadata (no filters applied). + value: + concessionMetadata: + - concessionMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb + concession: + concessionId: 1 + name: RAIL + percentage: 84.021 + validFrom: 2025-01-01T00:00:00.000 + validUntil: null + - concessionMetadataId: 39720be0-af88-486a-b5e2-faea7eb5b352 + concession: + concessionId: 2 + name: BUS + percentage: 15.979 + validFrom: 2025-01-01T00:00:00.000 + validUntil: null + - concessionMetadataId: 274db383-96dd-410e-a07e-0b9e3040ac91 + concession: + concessionId: 1 + name: RAIL + percentage: 83.021 + validFrom: 2024-12-01T00:00:00.000 + validUntil: 2024-12-31T23:59:59.999 + - concessionMetadataId: 03959bc5-83f2-4ac7-9bf5-67e0f2a6eace + concession: + concessionId: 2 + name: BUS + percentage: 16.979 + validFrom: 2024-12-01T00:00:00.000 + validUntil: 2024-12-31T23:59:59.999 + - concessionMetadataId: d5b7d8f6-5cb8-482e-9d9a-68909dc7b5d3 + concession: + concessionId: 1 + name: RAIL + percentage: 85.021 + validFrom: 2024-11-01T00:00:00.000 + validUntil: 2024-11-30T23:59:59.999 + - concessionMetadataId: 5ee5f86f-ab00-4630-b130-4714fd060d1a + concession: + concessionId: 2 + name: BUS + percentage: 14.979 + validFrom: 2024-11-01T00:00:00.000 + validUntil: 2024-11-30T23:59:59.999 + href: null post: - summary: Add concession metadata. + summary: P2. Add concession metadata. description: Add concession metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ConcessionMetadataPostRequestBody" + examples: + Add a new concession distribution: + summary: Add a new concession distribution + description: | + Every month, the administrator determines the concession distribution for the next month. + In this example, a new concession distribution for RAIL is added to the metadata. + value: + concessionId: 1 + percentage: 83.041 + validFrom: 2025-03-01T00:00:00.000 + validUntil: null responses: "201": description: Created @@ -1154,6 +2415,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ConcessionMetadataPostResponseBody" + examples: + Concession metadata added succesfully: + summary: Concession metadata added succesfully + description: The new concession metadata was successfully added to the database. + value: + concessionMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 /concessionmetadata/{concessionMetadataId}: parameters: - in: path @@ -1165,16 +2432,24 @@ paths: required: true description: The id of the concession metadata. patch: - summary: Update concession metadata. + summary: P2. Update concession metadata. description: Update concession metadata. tags: - - Metadata v2 + - Metadata v2.2 requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ConcessionMetadataPatchRequestBody" + examples: + Update a concession distribution: + summary: Update a concession distribution + description: | + Every month, the administrator determines the concession distribution for the next month. + In this example, the concession distribution for last month gets an end date. + value: + validUntil: 2025-02-28T23:59:59.999 responses: "200": description: OK @@ -1182,12 +2457,19 @@ paths: application/json: schema: $ref: "#/components/schemas/ConcessionMetadataPatchResponseBody" + examples: + Concession metadata updated successfully: + summary: Concession metadata updated successfully + description: The concession metadata was successfully updated in the database. + value: + concessionMetadataId: 37a8095b-19db-498f-9349-5f37d21c5bdf /metadataaudittrails: get: summary: Find metadata audit trails. description: Find metadata audit trails. + deprecated: true tags: - - Audit Trail v2 + - Audit Trail v2.2 parameters: - in: query name: metadataAuditTrailId @@ -1247,7 +2529,7 @@ paths: name: user schema: type: string - example: r.meeuws + example: ad.vogelaar description: The id of the user who performed the metadata change. - in: query name: timestampBefore @@ -1279,8 +2561,9 @@ paths: post: summary: Add metadata audit trail. description: Add metadata audit trail. + deprecated: true tags: - - Audit Trail v2 + - Audit Trail v2.2 requestBody: required: true content: @@ -1296,10 +2579,10 @@ paths: $ref: "#/components/schemas/MetadataAuditTrailsPostResponseBody" /concessions: get: - summary: Get all concessions. + summary: P1. Get all concessions. description: Get all concessions. tags: - - References v2 + - References v2.2 responses: "200": description: OK @@ -1307,6 +2590,17 @@ paths: application/json: schema: $ref: "#/components/schemas/ConcessionsGetResponseBody" + examples: + List containing all concessions: + summary: List containing all concessions + description: Returns a list containing all concessions (no filters applied). + value: + concessions: + - concessionId: 1 + name: RAIL + - concessionId: 2 + name: BUS + href: null components: securitySchemes: bearerToken: @@ -1370,10 +2664,10 @@ components: - debit - credit example: debit - productCode: + articleNumber: type: string nullable: true - example: HTM-MND-20 + example: 4031 status: type: string enum: @@ -1412,88 +2706,6 @@ components: description: URI for pagination. example: null TransactionItemsPostRequestBody: - type: object - properties: - transactionType: - type: string - enum: - - sales - example: sales - sourceName: - type: string - example: Verkoopengine - transactionId: - type: string - example: 1001236 - transactionLineId: - type: string - nullable: true - example: 1 - name: - type: string - example: HTM Maandkorting 20% - quantity: - type: integer - example: 1 - taxCode: - type: string - example: V21 - amountExclTax: - type: integer - example: 100 - amountInclTax: - type: integer - example: 121 - amountTax: - type: integer - example: 21 - occurredOn: - type: string - format: date-time - example: 2024-10-04T00:00:00Z - type: - type: string - enum: - - debit - - credit - example: debit - productCode: - type: string - nullable: true - example: HTM-MND-20 - status: - type: string - enum: - - created - - succeeded - - failed - - returned to trx-db - - returned to src - - re-entered - example: created - required: - - transactionType - - sourceName - - transactionId - - name - - quantity - - taxCode - - amountExclTax - - amountInclTax - - amountTax - - occurredOn - - type - - status - TransactionItemsPostResponseBody: - type: object - properties: - transactionItemId: - type: string - format: uuid - example: afce35b2-1dff-4ace-98d0-4b9ac405c87d - required: - - transactionItemId - TransactionItemsBulkPostRequestBody: type: object properties: transactionItems: @@ -1544,10 +2756,10 @@ components: - debit - credit example: debit - productCode: + articleNumber: type: string nullable: true - example: HTM-MND-20 + example: 4031 required: - sourceName - transactionType @@ -1560,28 +2772,32 @@ components: - amountTax - occurredOn - type - - productCode - TransactionItemsBulkPostResponseBody: + TransactionItemsPostResponseBody: type: object properties: - summary: - type: object - properties: - created: - type: integer - example: 15 - updated: - type: integer - example: 2 - total: - type: integer - example: 17 - required: - - created - - updated - - total + startTime: + type: string + format: date-time + example: 2025-02-14T05:32:47.0672237Z + status: + type: string + example: Running + clientTrackingId: + type: string + example: 08584620957189579629541919368CU00 + callbackurl: + type: string + format: uri + example: https://services.api.htm.nl/transactionitems/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c + retryAfter: + type: integer + example: 10 required: - - summary + - startTime + - status + - clientTrackingId + - callbackurl + - retryAfter TransactionItemsBulkBadRequestResponseBody: type: object properties: @@ -1606,7 +2822,7 @@ components: detail: type: string example: Transaction is a duplicate of a transaction already in the system. - pointer: + pointer: type: string example: "#/transactionItems/0" transactionId: @@ -1663,10 +2879,10 @@ components: - debit - credit example: debit - productCode: + articleNumber: type: string nullable: true - example: HTM-MND-20 + example: 4031 status: type: string enum: @@ -1919,6 +3135,555 @@ components: example: null required: - transactionAuditTrails + BookingProcessesGetResponseBody: + type: object + properties: + bookingProcesses: + type: array + items: + type: object + properties: + bookingProcessId: + type: string + format: uuid + example: 37a8095b-19db-498f-9349-5f37d21c5bdf + name: + type: string + example: Verkooptransacties + transactionType: + type: string + enum: + - sales + example: sales + identifyingFieldName: + type: string + nullable: true + example: articleNumber + required: + - bookingProcessId + - name + - transactionType + href: + type: string + nullable: true + description: URI for pagination. + example: null + required: + - bookingProcesses + BookingProcessesPostRequestBody: + type: object + properties: + name: + type: string + example: Verkooptransacties + transactionType: + type: string + enum: + - sales + example: sales + identifyingFieldName: + type: string + nullable: true + example: articleNumber + required: + - name + - transactionType + BookingProcessesPostResponseBody: + type: object + properties: + bookingProcessId: + type: string + format: uuid + example: 37a8095b-19db-498f-9349-5f37d21c5bdf + required: + - bookingProcessId + BookingProcessesPatchRequestBody: + type: object + properties: + name: + type: string + nullable: true + example: Verkooptransacties + transactionType: + type: string + nullable: true + enum: + - sales + example: sales + identifyingFieldName: + type: string + nullable: true + example: articleNumber + BookingProcessesPatchResponseBody: + type: object + properties: + bookingProcessId: + type: string + format: uuid + example: 37a8095b-19db-498f-9349-5f37d21c5bdf + required: + - bookingProcessId + BookingMetadataGetResponseBody: + type: object + properties: + bookingMetadata: + type: array + items: + type: object + properties: + bookingMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + bookingProcessId: + type: string + format: uuid + example: 37a8095b-19db-498f-9349-5f37d21c5bdf + description: + type: string + example: Dagkaart + department: + type: string + example: 900 + costType: + type: string + example: 84956 + documentCode: + type: string + example: FIKO-OPBR + hasSeparateTaxLine: + type: boolean + example: true + hasLinePerIdentifyingField: + type: boolean + example: true + hasLinePerSource: + type: boolean + example: true + hasLinePerConcession: + type: boolean + example: true + validFrom: + type: string + format: date-time + example: 2022-01-01 00:00:00 + validUntil: + type: string + format: date-time + nullable: true + example: null + required: + - bookingMetadataId + - bookingProcessId + - description + - department + - costType + - documentCode + - hasSeparateTaxLine + - hasLinePerIdentifyingField + - hasLinePerSource + - hasLinePerConcession + - validFrom + href: + type: string + nullable: true + example: null + required: + - bookingMetadata + BookingMetadataPostRequestBody: + type: object + properties: + description: + type: string + example: Dagkaart + department: + type: string + example: 900 + costType: + type: string + example: 84956 + documentCode: + type: string + example: FIKO-OPBR + hasSeparateTaxLine: + type: boolean + example: true + hasLinePerIdentifyingField: + type: boolean + example: true + hasLinePerSource: + type: boolean + example: true + hasLinePerConcession: + type: boolean + example: true + validFrom: + type: string + format: date-time + example: 2022-01-01 00:00:00 + validUntil: + type: string + format: date-time + nullable: true + example: null + required: + - description + - department + - costType + - documentCode + - hasSeparateTaxLine + - hasLinePerIdentifyingField + - hasLinePerSource + - hasLinePerConcession + - validFrom + BookingMetadataPostResponseBody: + type: object + properties: + bookingMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: + - bookingMetadataId + BookingMetadataPatchRequestBody: + type: object + properties: + description: + type: string + nullable: true + example: Dagkaart + department: + type: string + nullable: true + example: 900 + costType: + type: string + nullable: true + example: 84956 + documentCode: + type: string + nullable: true + example: FIKO-OPBR + hasSeparateTaxLine: + type: boolean + nullable: true + example: true + hasLinePerIdentifyingField: + type: boolean + nullable: true + example: true + hasLinePerSource: + type: boolean + nullable: true + example: true + hasLinePerConcession: + type: boolean + nullable: true + example: true + validFrom: + type: string + format: date-time + nullable: true + example: 2022-01-01 00:00:00 + validUntil: + type: string + format: date-time + nullable: true + example: null + BookingMetadataPatchResponseBody: + type: object + properties: + bookingMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: + - bookingMetadataId + BookingGroupFieldsPostRequestBody: + type: object + properties: + identifyingFieldValue: + type: string + example: 1737 + required: + - identifyingFieldValue + BookingGroupFieldsPostResponseBody: + type: object + properties: + bookingGroupFieldId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: + - bookingGroupFieldId + BookingGroupFieldsGetResponseBody: + type: object + properties: + bookingGroupFields: + type: array + items: + type: object + properties: + bookingGroupFieldId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + bookingMetadataId: + type: string + format: uuid + example: 12b4d128-0ab8-4a4a-944d-25b83de38b27 + identifyingFieldValue: + type: string + example: 1737 + required: + - bookingGroupFieldId + - bookingMetadataId + - identifyingFieldValue + href: + type: string + nullable: true + example: null + required: + - bookingGroupFields + BookingLineMetadataPostRequestBody: + type: object + properties: + name: + type: string + example: Dagkaart - BUS + sourceMetadataId: + type: string + format: uuid + example: null + nullable: true + identifyingFieldValue: + type: string + example: null + nullable: true + concessionId: + type: integer + example: 1 + nullable: true + lineType: + type: string + enum: + - summary + - analysis + - tax + example: summary + lineSense: + type: string + enum: + - debit + - credit + example: credit + costCenter: + type: string + example: 603031 + nullable: true + articleName: + type: string + example: dagkaart + nullable: true + extRef1: + type: string + example: null + nullable: true + extRef2: + type: string + example: null + nullable: true + extRef3: + type: string + example: 2025-02-17 + nullable: true + extRef4: + type: string + example: null + nullable: true + extRef5: + type: string + example: Webshop + nullable: true + extRef6: + type: string + example: null + nullable: true + required: + - name + - lineType + - lineSense + BookingLineMetadataPostResponseBody: + type: object + properties: + bookingLineMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: + - bookingLineMetadataId + BookingLineMetadataGetResponseBody: + type: object + properties: + bookingLineMetadata: + type: array + items: + type: object + properties: + bookingLineMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + bookingMetadataId: + type: string + format: uuid + example: 12b4d128-0ab8-4a4a-944d-25b83de38b27 + name: + type: string + example: Dagkaart - RAIL + sourceMetadata: + type: object + $ref: "#/components/schemas/SourceMetadata" + identifyingFieldValue: + type: string + example: null + nullable: true + concession: + type: object + $ref: "#/components/schemas/Concession" + lineType: + type: string + enum: + - summary + - analysis + - tax + example: summary + lineSense: + type: string + enum: + - debit + - credit + example: credit + costCenter: + type: string + example: 603031 + nullable: true + articleName: + type: string + example: dagkaart + nullable: true + extRef1: + type: string + example: null + nullable: true + extRef2: + type: string + example: null + nullable: true + extRef3: + type: string + example: 2025-02-17 + nullable: true + extRef4: + type: string + example: null + nullable: true + extRef5: + type: string + example: Webshop + nullable: true + extRef6: + type: string + example: null + nullable: true + required: + - bookingLineMetadataId + - bookingMetadataId + - name + - lineType + - lineSense + href: + type: string + nullable: true + example: null + required: + - bookingLineMetadata + BookingLineMetadataPatchRequestBody: + type: object + properties: + name: + type: string + nullable: true + example: Dagkaart - RAIL + sourceMetadataId: + type: string + format: uuid + nullable: true + example: null + identifyingFieldValue: + type: string + nullable: true + example: null + concessionId: + type: integer + nullable: true + example: 1 + lineType: + type: string + nullable: true + enum: + - summary + - analysis + - tax + example: summary + lineSense: + type: string + nullable: true + enum: + - debit + - credit + example: credit + costCenter: + type: string + nullable: true + example: 603031 + articleName: + type: string + nullable: true + example: dagkaart + extRef1: + type: string + nullable: true + example: null + extRef2: + type: string + nullable: true + example: null + extRef3: + type: string + nullable: true + example: 2025-02-17 + extRef4: + type: string + nullable: true + example: null + extRef5: + type: string + nullable: true + example: Webshop + extRef6: + type: string + nullable: true + example: null + BookingLineMetadataPatchResponseBody: + type: object + properties: + bookingLineMetadataId: + type: string + format: uuid + example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617 + required: + - bookingLineMetadataId MetadataAuditTrailsGetResponseBody: type: object properties: @@ -1959,7 +3724,7 @@ components: example: { "json": "data" } user: type: string - example: r.meeuws + example: ad.vogelaar timestamp: type: string format: date-time @@ -2016,7 +3781,7 @@ components: example: { "json": "data" } user: type: string - example: r.meeuws + example: ad.vogelaar timestamp: type: string format: date-time @@ -2044,366 +3809,6 @@ components: example: b6161270-eb08-4242-90ec-967d5db62070 required: - metadataAuditTrailId - ProductMetadataGetResponseBody: - type: object - properties: - productMetadata: - type: array - items: - type: object - properties: - productMetadataId: - type: string - format: uuid - example: 39a87c2a-9011-4dfd-b35e-1245a98c2e61 - productCode: - type: string - example: 4031 - department: - type: string - example: 900 - costType: - type: string - example: 619031 - description: - type: string - example: O4031_Reisproduct HTM 1 dag Anoniem - documentCode: - type: string - example: VERK_FACTUUR - timestampUpdated: - type: string - format: date-time - example: 2022-01-01T00:00:00 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - productContraAccounts: - type: array - items: - type: object - properties: - contraAccountMetadata: - $ref: "#/components/schemas/ContraAccountMetadata" - concession: - $ref: "#/components/schemas/Concession" - sourceMetadata: - $ref: "#/components/schemas/SourceMetadata" - costCenter: - type: string - example: 84955 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - contraAccountMetadata - - concession - - sourceMetadata - - costCenter - - validFrom - required: - - productMetadataId - - productCode - - department - - costType - - description - - documentCode - - timestampUpdated - - validFrom - - productContraAccounts - href: - type: string - nullable: true - description: URI for pagination. - example: null - ProductMetadataPostRequestBody: - type: object - properties: - productCode: - type: string - example: 4031 - department: - type: string - example: 900 - costType: - type: string - example: 619031 - description: - type: string - example: O4031_Reisproduct HTM 1 dag Anoniem - documentCode: - type: string - example: VERK_FACTUUR - timestampUpdated: - type: string - format: date-time - example: 2022-01-01T00:00:00 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - productCode - - department - - costType - - description - - documentCode - - timestampUpdated - - validFrom - ProductMetadataPostResponseBody: - type: object - properties: - productMetadataId: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: - - productMetadataId - ProductMetadataPatchRequestBody: - type: object - properties: - productCode: - type: string - example: 4031 - department: - type: string - example: 900 - costType: - type: string - example: 619031 - description: - type: string - example: O4031_Reisproduct HTM 1 dag Anoniem - documentCode: - type: string - example: VERK_FACTUUR - timestampUpdated: - type: string - format: date-time - example: 2022-01-01T00:00:00 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: 2024-06-22T09:00:00 - ProductMetadataPatchResponseBody: - type: object - properties: - productMetadataId: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: - - productMetadataId - ProductContraAccountsPostRequestBody: - type: object - properties: - contraAccountMetadataId: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - concessionId: - type: integer - example: 1 - sourceMetadataId: - type: string - format: uuid - example: 08d96f94-f468-467e-9068-c86c34f43097 - costCenter: - type: string - example: 84955 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - contraAccountMetadataId - - concessionId - - sourceMetadataId - - costCenter - - validFrom - ProductContraAccountsPostResponseBody: - type: object - properties: - productContraAccountId: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: - - productContraAccountId - ProductContraAccountsGetResponseBody: - type: object - properties: - productContraAccounts: - type: array - items: - type: object - properties: - productContraAccountId: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - contraAccountMetadata: - $ref: "#/components/schemas/ContraAccountMetadata" - concession: - $ref: "#/components/schemas/Concession" - sourceMetadata: - $ref: "#/components/schemas/SourceMetadata" - costCenter: - type: string - example: 84955 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - productContraAccountId - - contraAccountMetadataId - - concessionId - - sourceMetadataId - - costCenter - - validFrom - href: - type: string - nullable: true - description: URI for pagination. - example: null - ProductContraAccountsPatchRequestBody: - type: object - properties: - contraAccountMetadataId: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - concessionId: - type: integer - example: 1 - sourceMetadataId: - type: string - format: uuid - example: 08d96f94-f468-467e-9068-c86c34f43097 - costCenter: - type: string - example: 84955 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - ProductContraAccountsPatchResponseBody: - type: object - properties: - productContraAccountId: - type: string - format: uuid - example: 37a8095b-19db-498f-9349-5f37d21c5bdf - required: - - productContraAccountId - ContraAccountMetadataGetResponseBody: - type: object - properties: - contraAccountMetadata: - type: array - items: - $ref: "#/components/schemas/ContraAccountMetadata" - href: - type: string - nullable: true - description: URI for pagination. - example: null - ContraAccountMetadataPostRequestBody: - type: object - properties: - contraAccountCode: - type: string - example: 123456 - contraAccountNumber: - type: string - example: 220.10419 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - contraAccountCode - - contraAccountNumber - - validFrom - ContraAccountMetadataPostResponseBody: - type: object - properties: - contraAccountMetadataId: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - required: - - contraAccountMetadataId - ContraAccountMetadataPatchRequestBody: - type: object - properties: - contraAccountCode: - type: string - example: 123456 - contraAccountNumber: - type: string - example: 220.10419 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - ContraAccountMetadataPatchResponseBody: - type: object - properties: - contraAccountMetadataId: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - required: - - contraAccountMetadataId TaxMetadataGetResponseBody: type: object properties: @@ -2420,7 +3825,7 @@ components: type: string example: V21 taxPercentageAmount: - type: integer + type: number example: 21 description: type: string @@ -2486,7 +3891,7 @@ components: taxCode: type: string example: V21 - taxPercentageAmount: + taxPercentageAmount: type: integer example: 21 description: @@ -2516,7 +3921,7 @@ components: sourceMetadata: type: array items: - $ref: '#/components/schemas/SourceMetadata' + $ref: "#/components/schemas/SourceMetadata" href: type: string nullable: true @@ -2536,31 +3941,20 @@ components: example: Website Verkopen businessOwner: type: string - example: Corneel Verstoep + example: Koos Verweg rejectionProcessing: type: string example: system rejectionInfo: type: string example: api.htm.nl/v2/account/12345/msgs/abc - validFrom: - type: string - format: date-time - example: 2024-01-01T00:00:00.000 - validUntil: - type: string - format: date-time - nullable: true - example: null required: - - sourceMetadataId - incomingName - incomingEntity - outgoingName - businessOwner - rejectionProcessing - rejectionInfo - - validFrom SourceMetadataPostResponseBody: type: object properties: @@ -2584,22 +3978,13 @@ components: example: Website Verkopen businessOwner: type: string - example: Corneel Verstoep + example: Koos Verweg rejectionProcessing: type: string example: system rejectionInfo: type: string example: api.htm.nl/v2/account/12345/msgs/abc - validFrom: - type: string - format: date-time - example: 2024-01-01T00:00:00.000 - validUntil: - type: string - format: date-time - nullable: true - example: null SourceMetadataPatchResponseBody: type: object properties: @@ -2623,7 +4008,7 @@ components: example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb accountingPeriod: type: string - example: 2024-01 + example: 2024/01 isOpen: type: boolean example: true @@ -2641,7 +4026,7 @@ components: properties: accountingPeriod: type: string - example: 2024-01 + example: 2024/01 isOpen: type: boolean example: true @@ -2662,7 +4047,7 @@ components: properties: accountingPeriod: type: string - example: 2024-01 + example: 2024/01 isOpen: type: boolean example: true @@ -2685,10 +4070,11 @@ components: properties: concessionMetadataId: type: string - format: uuid + format: en example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb concession: - $ref: '#/components/schemas/Concession' + type: object + $ref: "#/components/schemas/Concession" percentage: type: number example: 84.021 @@ -2775,39 +4161,12 @@ components: concessions: type: array items: - $ref: '#/components/schemas/Concession' + $ref: "#/components/schemas/Concession" href: type: string nullable: true description: URI for pagination. example: null - ContraAccountMetadata: - type: object - properties: - contraAccountMetadataId: - type: string - format: uuid - example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb - contraAccountCode: - type: string - example: 123456 - contraAccountNumber: - type: string - example: 220.10419 - validFrom: - type: string - format: date-time - example: 2024-03-22T09:00:00 - validUntil: - type: string - format: date-time - nullable: true - example: null - required: - - contraAccountMetadataId - - contraAccountCode - - contraAccountNumber - - validFrom Concession: type: object properties: @@ -2816,9 +4175,10 @@ components: example: 1 name: type: string - example: bus + example: RAIL required: - concessionId + - name SourceMetadata: type: object properties: @@ -2837,22 +4197,13 @@ components: example: Website Verkopen businessOwner: type: string - example: Corneel Verstoep + example: Koos Verweg rejectionProcessing: type: string example: system rejectionInfo: type: string example: api.htm.nl/v2/account/12345/msgs/abc - validFrom: - type: string - format: date-time - example: 2024-01-01T00:00:00.000 - validUntil: - type: string - format: date-time - nullable: true - example: null required: - sourceMetadataId - incomingName @@ -2862,6 +4213,63 @@ components: - rejectionProcessing - rejectionInfo - validFrom + TransactionItemsResponseStatusGetResponseBody: + type: object + properties: + summary: + type: object + properties: + created: + type: integer + example: 15 + updated: + type: integer + example: 2 + total: + type: integer + example: 17 + required: + - created + - total + - updated + required: + - summary + 409Response: + type: object + properties: + code: + type: string + example: "409" + type: + type: string + example: error + message: + type: string + example: conflict + description: + type: string + example: >- + A transaction with the same TransactionId and TransactionLineId + already exists. + errors: + type: array + items: + type: object + properties: + detail: + type: string + example: >- + Transaction is a duplicate of a transaction already in the + system. + pointer: + type: string + example: "#/transactionItems/0" + transactionId: + type: string + example: 1ad109d3-fd7d-4b6f-872b-220d492f385f + transactionLineId: + type: string + example: fee907dd-e59d-44f5-a63b-bbdec38f79b7 rfc9457: type: object properties: @@ -2888,3 +4296,42 @@ components: example: - "/account/12345" - "/account/67890" + parameters: + top: + name: $top + in: query + description: Show only the first n items + required: false + style: form + explode: true + schema: + minimum: 0 + type: integer + skip: + name: $skip + in: query + description: Skip the first n items + required: false + style: form + explode: true + schema: + minimum: 0 + type: integer + count: + name: $count + in: query + description: Include count of items + required: false + style: form + explode: true + schema: + type: boolean + filter: + name: $filter + in: query + description: Filter items by property values + required: false + style: form + explode: true + schema: + type: string diff --git a/src/openapi/orders/orders-crud.yaml b/src/openapi/orders/orders-crud.yaml index 8ae1a81..1f4c370 100644 --- a/src/openapi/orders/orders-crud.yaml +++ b/src/openapi/orders/orders-crud.yaml @@ -1395,6 +1395,42 @@ paths: $ref: "#/components/schemas/unavailable" example: { "customerTokenId": "0aedb483-2477-4720-aee6-7abcd016843b" } + /customertokens/{customerTokenId}/personalaccountdata: + parameters: + - in: path + name: customerTokenId + schema: + type: string + format: uuid + example: 510194ef-0038-45ef-94c7-262df93ef1d7 + required: true + description: The id of the customer token. + post: + summary: P3. Add personal account data to token. + description: Add personal account data to token. + tags: + - Order Line + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + } + responses: + "201": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { "personalAccountDataId": "0aedb483-2477-4720-aee6-7abcd016843b" } /personalaccountdata: get: summary: P5. Find personal account data. @@ -1846,6 +1882,43 @@ paths: "place": "Den Haag", }, ] + /payments/{paymentId}/mandateinputs: + parameters: + - in: path + name: paymentId + schema: + type: string + format: uuid + example: fd09f3c5-35d9-4a1b-a98b-e46addb663f2 + required: true + description: The id of the payment to process. + post: + summary: P2. Create a mandateInput. + description: Create a mandateInput.. + tags: + - Payment + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + } + responses: + "201": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: { "mandateInputId": "dbbc3913-414e-4528-9c95-6c11a11e04ac" } /mandateinputs/{mandateInputId}: parameters: - in: path @@ -2171,6 +2244,19 @@ paths: { "orderCustomerAddressId": "d5005529-d4f2-4552-a5b8-477dab7836ec", } + delete: + summary: P3. Delete an address of a customer on an order. + description: Delete an address of a customer on an order. + tags: + - Customer + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: {} components: securitySchemes: bearerToken: diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 058a3dc..1c36967 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -35,30 +35,6 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v1: - summary: Order validation v1 - description: Order validation v1 - value: - [ - { - "ovPayTokenId": 2, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "productId": 2, - "startDate": "2024-03-22T09:00:00z", - "quantity": 1, - }, - { - "ovPayTokenId": 3, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 89, - "ovpasNumber": "OV34567", - "productId": 4, - "startDate": "2024-03-22T09:00:00z", - "quantity": 4, - }, - ] v2: summary: Order validation v2 description: Order validation v2 @@ -125,6 +101,30 @@ paths: ], }, } + v1: + summary: Order validation v1 + description: Order validation v1 + value: + [ + { + "ovPayTokenId": 2, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "productId": 2, + "startDate": "2024-03-22T09:00:00z", + "quantity": 1, + }, + { + "ovPayTokenId": 3, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 89, + "ovpasNumber": "OV34567", + "productId": 4, + "startDate": "2024-03-22T09:00:00z", + "quantity": 4, + }, + ] responses: "200": description: OK @@ -133,9 +133,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v1: - summary: Order validation v1 - description: Order validation v1 + v2: + summary: Order validation v2 + description: Order validation v2 value: { "validContents": true, @@ -166,9 +166,9 @@ paths: }, ], } - v2: - summary: Order validation v2 - description: Order validation v2 + v1: + summary: Order validation v1 + description: Order validation v1 value: { "validContents": true, @@ -322,44 +322,98 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v1: - summary: Order fulfillment v1 - description: Order fulfillment v1 + v2.2: + summary: Order fulfillment v2.2 + description: Order fulfillment v2.2 value: { - "customerProfileID": 123415, - "customerProfileData": { "dateOfBirth": "09-03-1989" }, - "personalAccountData": { "birthdate": "09-03-1989" }, - "directDebitMandate": - { - "consumerName": "J. de Tèster", - "consumerBic": "RABONL2U", - "consumerIban": "NL44RABO0123456789", - }, - "orderContents": + "externalOrderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", + "languageId": 1, + "billingAddressId": 1, + "shippingAddressId": 1, + "createdOn": "2024-03-22T09:00:00", + "orderStatusId": 4, + "orderLines": [ { - "ovPayTokenId": 123, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 450, - "ovpasNumber": "63AW974", - "productId": 2, - "startDate": "2024-03-22T09:00:00Z", + "externalOrderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f", + "productId": 1, "quantity": 1, - "orderlineId": "2d7fadc9-b64b-4516-9a7d-cf550f201372", - }, - { - "ovPayTokenId": 123, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 450, - "ovpasNumber": "63AW974", - "productId": 3, - "startDate": "2024-03-16T09:00:00Z", - "quantity": 1, - "orderlineId": "9d7fadc9-b64b-4516-9a7d-cf550f201378", + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatusId": 4, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], }, ], - "orderStatus": "succeededPayment", + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + }, + ], + }, } v2: summary: Order fulfillment v2 @@ -469,98 +523,44 @@ paths: ], }, } - v2.2: - summary: Order fulfillment v2.2 - description: Order fulfillment v2.2 + v1: + summary: Order fulfillment v1 + description: Order fulfillment v1 value: { - "externalOrderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "orderStatusId": 4, - "orderLines": - [ - { - "externalOrderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f", - "productId": 1, - "quantity": 1, - "createdOn": "2024-03-22T09:00:00", - "validFrom": "2024-03-22T09:00:00", - "validUntil": null, - "orderLineStatusId": 4, - "tokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "name": "Jan de Vries", - "dateOfBirth": "01-01-1970", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - }, - ], - "payments": - [ - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessFul", - }, - ], - "payPush": - { - "consumerIssuer": "ABN AMRO", - "transactionId": "0000000000000001", - "consumerName": "J. de Vries", - "consumerIBAN": "NL44RABO0123456789", - "consumerBIC": "RABONL2U", - }, - }, - ], - "customer": + "customerProfileID": 123415, + "customerProfileData": { "dateOfBirth": "09-03-1989" }, + "personalAccountData": { "birthdate": "09-03-1989" }, + "directDebitMandate": { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "addresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], + "consumerName": "J. de Tèster", + "consumerBic": "RABONL2U", + "consumerIban": "NL44RABO0123456789", }, + "orderContents": + [ + { + "ovPayTokenId": 123, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 450, + "ovpasNumber": "63AW974", + "productId": 2, + "startDate": "2024-03-22T09:00:00Z", + "quantity": 1, + "orderlineId": "2d7fadc9-b64b-4516-9a7d-cf550f201372", + }, + { + "ovPayTokenId": 123, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 450, + "ovpasNumber": "63AW974", + "productId": 3, + "startDate": "2024-03-16T09:00:00Z", + "quantity": 1, + "orderlineId": "9d7fadc9-b64b-4516-9a7d-cf550f201378", + }, + ], + "orderStatus": "succeededPayment", } responses: "201": @@ -685,6 +685,33 @@ paths: ], }, } + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + "ovPayTokenId": 123, + "productId": 2 + }, + { + "detail": "Combination of product and token type is not valid.", + "pointer": "#/1/ovPayTokenId", + "ovPayTokenId": 123, + "productId": 3 + } + ] + } /customers/{customerProfileId}/orders: parameters: - in: path @@ -855,7 +882,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" example: - { + { "orders": [ { @@ -945,18 +972,219 @@ paths: } post: tags: - - Order Creation v2.1 - summary: Create a new order. - description: Create a new order. + - Order Creation v2.0 + summary: Create a new order v2.0. + description: Create a new order v2.0. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2: - summary: Order creation v2.1 - description: Order creation v2.1 + v2.0: + summary: Order creation v2.0 + description: Order creation v2.0 + value: + { + "externalOrderId": null, + "languageId": 1, + "billingAddressId": 1, + "shippingAddressId": 1, + "orderStatusId": 1, + "orderLines": + [ + { + "externalOrderLineId": null, + "productId": 1, + "quantity": 1, + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatusId": 1, + "customerTokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + } + } + ] + } + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + }, + }, + ], + "orderCustomer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "orderCustomerAddresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + summary: Order creation v1.2 + description: Order creation v1.2 + value: + { + "externalOrderId": null, + "languageId": 1, + "billingAddressId": 1, + "shippingAddressId": 1, + "createdOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "orderStatusId": 1, + "createdOn": "2024-03-22T09:00:00", + "description": "Concept order", + }, + ], + "orderLines": + [ + { + "externalOrderLineId": null, + "productId": 1, + "quantity": 1, + "validFrom": "2024-03-22T09:00:00", + "validUntil": "2025-03-22T09:00:00", + "orderLineStatusId": 4, + "createdOn": "2024-03-22T09:00:00", + "customerTokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "orderAccountingStatuses": + [ + { + "accountingStatusId": 1, + "createdOn": "2024-03-22T09:00:00", + "description": "Financiele transactie voor de FIKO.", + }, + ], + }, + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + }, + }, + ], + "orderCustomer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "orderCustomerAddresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + }, + ], + }, + } + v1: + summary: Order creation v1.1 + description: Order creation v1.1 value: { "externalOrderId": null, @@ -1082,126 +1310,179 @@ paths: ], }, } - v2.2: - summary: Order creation v2.2 - description: Order creation v2.2 - value: - { - "externalOrderId": null, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "order_OrderStatus": - [ - { - "orderStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Concept order", - }, - ], - "orderLines": - [ - { - "externalOrderLineId": null, - "productId": 1, - "quantity": 1, - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - "createdOn": "2024-03-22T09:00:00", - "customerTokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "name": "Jan de Vries", - "dateOfBirth": "01-01-1970", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - "orderAccountingStatuses": - [ - { - "accountingStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Financiele transactie voor de FIKO.", - }, - ], - }, - ], - "payments": - [ - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessFul", - }, - ], - "mandateInput": - { - "directDebitMandateTypeId": 1, - "createdOn": "2024-03-22T09:00:00", - "bic": "RABONL2U", - "iban": "NL44RABO0123456789", - "ascription": "J. de Vries", - "place": "Den Haag", - }, - }, - ], - "orderCustomer": - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "orderCustomerAddresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], - }, - } responses: "201": description: Created + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + } + }, + ], + "additionalRemarks" : [] + }, + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "orderNumber": "ORD-123456", + } + "400": + description: Bad request content: application/json: schema: $ref: "#/components/schemas/unavailable" example: - { - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "orderNumber": "ORD-123456", + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + "ovPayTokenId": 123, + "productId": 2 + }, + { + "detail": "Combination of product and token type is not valid.", + "pointer": "#/1/ovPayTokenId", + "ovPayTokenId": 123, + "productId": 3 + } + ] } /orders/{orderId}: parameters: @@ -1222,7 +1503,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). get: tags: - - Order Retrieval v2.1 + - Order Retrieval v1.1 summary: Get a single order. description: Get a single order. responses: @@ -1239,7 +1520,15 @@ paths: "orderNumber": "123456", "customerProfileId": 42, "totalAmount": 121, - "touchPointId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "billingAddressId": 1, + "shippingAddressId": 1, "language": { "languageId": 1, @@ -1247,8 +1536,6 @@ paths: "iso639Code": "nl-NL", "ietfCode": "nl", }, - "billingAddressId": 1, - "shippingAddressId": 1, "createdOn": "2024-03-22T09:00:00", "lastUpdatedOn": "2024-03-22T09:00:00", "order_OrderStatus": @@ -1405,7 +1692,7 @@ paths: } patch: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Update an existing order. description: Update an existing order. requestBody: @@ -1413,35 +1700,234 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "customerProfileId": 1337, - "totalAmount": 121, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "lastUpdatedOn": "2024-03-22T09:00:00", - } + examples: + v2.0: + summary: Order update v2.0 + description: Order update v2.0 + value: { + "languageId": 1, + "billingAddressId": 2, + "shippingAddressId": 1, + "lastUpdatedOn": "2024-03-22T09:00:00", + } + v1.2: + summary: Order update v1.2 + description: Order update v1.2 + value: { + "customerProfileId": 1337, + "totalAmount": 121, + "languageId": 1, + "billingAddressId": 1, + "shippingAddressId": 1, + "lastUpdatedOn": "2024-03-22T09:00:00", + } responses: "200": description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "additionalRemarks" : + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId" + } + ] + }, + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "orderNumber": "ORD-123456", + } + "400": + description: Bad request content: application/json: schema: $ref: "#/components/schemas/unavailable" example: - { - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "orderNumber": "ORD-123456", + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + "ovPayTokenId": 123, + "productId": 2 + }, + { + "detail": "Combination of product and token type is not valid.", + "pointer": "#/1/ovPayTokenId", + "ovPayTokenId": 123, + "productId": 3 + } + ] } delete: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Delete an existing order. description: Delete an existing order. responses: "200": description: OK + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The order can not be deleted.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Order status is paid", + "pointer": "#/order_OrderStatus/1/orderStatus/orderStatusId", + "orderStatusId": 4 + } + ] + } /orders/{orderId}/orderlines: parameters: - in: path @@ -1461,7 +1947,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Add a new order line to an existing order. description: Add a new order line to an existing order. requestBody: @@ -1469,53 +1955,82 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "externalOrderLineId": null, - "productId": 1, - "productName": "HTM Maandkorting 20%", - "productCode": "HTM-MND-20", - "productDescription": "HTM Maandkorting 20%", - "taxAmount": 21, - "taxMetadataId": "1d6f1725-1072-4f08-982c-3df51dd854a1", - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "orderLineTerms": - [{ "termsUrl": "generalTermsAndConditions.pdf" }], - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - "createdOn": "2024-03-22T09:00:00", - "customerTokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": + examples: + v2.0: + summary: Create orderLine v2.0 + description: Create orderLine v2.0 + value: + { + "externalOrderLineId": null, + "productId": 2, + "quantity": 1, + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatusId": 1, + "createdOn": "2024-03-22T09:00:00", + "customerTokens": + [ { - "name": "Jan de Vries", - "dateOfBirth": "01-01-1970", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", + "tokenTypeId": 1, + "ovPayTokenId": 4, + "serviceReferenceId": null, + "amount": null , + "ovpasNumber": null , + "verificationCode": null , + "personalAccountData": null }, - }, - ], - "orderAccountingStatuses": - [ - { - "accountingStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Financiele transactie voor de FIKO.", - }, - ], - } + ] + } + v1.2: + summary: Create orderLine v1.2 + description: Create orderLine v1.2 + value: + { + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxMetadataId": "1d6f1725-1072-4f08-982c-3df51dd854a1", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [{ "termsUrl": "generalTermsAndConditions.pdf" }], + "validFrom": "2024-03-22T09:00:00", + "validUntil": "2025-03-22T09:00:00", + "orderLineStatusId": 4, + "createdOn": "2024-03-22T09:00:00", + "customerTokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "orderAccountingStatuses": + [ + { + "accountingStatusId": 1, + "createdOn": "2024-03-22T09:00:00", + "description": "Financiele transactie voor de FIKO.", + }, + ], + } responses: "200": description: OK @@ -1523,7 +2038,210 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "additionalRemarks" : + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId" + } + ] + }, + { + "orderLineId": "2cb04b38-e9a8-465a-a273-261c55a21b71", + "externalOrderLineId": null, + "productId": 2, + "productName": "HTM Maandkorting 40%", + "productCode": "HTM-MND-40", + "productDescription": "HTM Maandkorting 40%", + "taxAmount": 42, + "taxCode": "V21", + "amountExclTax": 200, + "amountInclTax": 242, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 4, + "serviceReferenceId": null, + "amount": null , + "ovpasNumber": null , + "verificationCode": null , + "personalAccountData": null + } + ], + "additionalRemarks" : [] + } + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + "ovPayTokenId": 123, + "productId": 2 + }, + { + "detail": "Combination of product and token type is not valid.", + "pointer": "#/1/ovPayTokenId", + "ovPayTokenId": 123, + "productId": 3 + } + ] + } /orderlines/{orderLineId}: parameters: - in: path @@ -1543,7 +2261,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Update an existing order line. description: Update an existing order line. requestBody: @@ -1551,17 +2269,30 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "taxAmount": 21, - "taxMetadataId": "0574440e-7fa0-401f-b907-539c91633a5d", - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - } + examples: + v2.0: + summary: Orderline update v2.0 + description: Orderline update v2.0 + value: + { + "quantity": 1, + "validFrom": "2024-03-25T09:00:00", + "validUntil": null + } + v1.2: + summary: Orderline updatev1.2 + description: Orderline update v1.2 + value: + { + "taxAmount": 21, + "taxMetadataId": "0574440e-7fa0-401f-b907-539c91633a5d", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "validFrom": "2024-03-22T09:00:00", + "validUntil": "2025-03-22T09:00:00", + "orderLineStatusId": 4, + } responses: "200": description: OK @@ -1569,15 +2300,260 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-25T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + } + } + ], + "additionalRemarks" : + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId" + } + ] + }, + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The start date of the product is not allowed. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + "ovPayTokenId": 123, + "productId": 2 + } + ] + } delete: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Delete an existing order line. description: Delete an existing order line. responses: "200": description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 0, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": null, + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Product requires product with productId=2", + "pointer": "#/1/orderLine", + "orderLineId": "0574440e-7fa0-401f-b907-539c91633a5d", + "productId": 3 + } + ] + } /orders/{orderId}/payments: parameters: - in: path @@ -1597,7 +2573,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Add a payment to an existing order. description: Add a payment to an existing order. requestBody: @@ -1605,35 +2581,70 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "touchPointId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessFul", - }, - ], - "mandateInput": + examples: + v2.0: + summary: Order creation v2.0 + description: Order creation v2.0 + value: { - "directDebitMandateTypeId": 1, "createdOn": "2024-03-22T09:00:00", - "bic": "RABONL2U", - "iban": "NL44RABO0123456789", - "ascription": "J. de Vries", - "place": "Den Haag", - }, - } + "amountDebit": 121, + "paymentMethodId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + }, + } + v1.2: + summary: Order creation v1.2 + description: Order creation v1.2 + value: + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchpointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + }, + } responses: "201": description: Created @@ -1641,7 +2652,176 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + }, + { + "orderLineId": "2cb04b38-e9a8-465a-a273-261c55a21b71", + "externalOrderLineId": null, + "productId": 2, + "productName": "HTM Maandkorting 40%", + "productCode": "HTM-MND-40", + "productDescription": "HTM Maandkorting 40%", + "taxAmount": 42, + "taxCode": "V21", + "amountExclTax": 200, + "amountInclTax": 242, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 4, + "serviceReferenceId": null, + "amount": null , + "ovpasNumber": null , + "verificationCode": null , + "personalAccountData": null + } + ] + } + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } /payments/{paymentId}: parameters: - in: path @@ -1661,7 +2841,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Update a payment on an existing order. description: Update a payment on an existing order. requestBody: @@ -1669,11 +2849,42 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - } + examples: + v2.0: + summary: Order payment update v2.0 + description: Order payment update v2.0 + value: + { + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + } + } + v1.2: + summary: Order payment update v1.2 + description: Order payment update v1.2 + value: + { + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + } responses: "200": description: OK @@ -1681,7 +2892,142 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchpointId": 3, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + } + ], + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "791", + "statusDescription": "Pending processing", + "statusSubCode": "S001", + "statusSubDescription": "PendingProcessing", + }, + { + "createdOn": "2024-03-22T09:01:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "payPush": + { + "consumerIssuer": "ABN AMRO", + "transactionId": "0000000000000001", + "consumerName": "J. de Vries", + "consumerIBAN": "NL44RABO0123456789", + "consumerBIC": "RABONL2U", + }, + }, + ], + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } /orders/{orderId}/ordercustomers: parameters: - in: path @@ -1701,7 +3047,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Add a customer to an existing order. description: Add a customer to an existing order. requestBody: @@ -1709,26 +3055,53 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "orderCustomerAddresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], - } + examples: + v2.0: + summary: Order payment update v2.0 + description: Order payment update v2.0 + value: + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "orderCustomerAddresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + }, + ], + } + v1.2: + summary: Order payment update v1.2 + description: Order payment update v1.2 + value: + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "orderCustomerAddresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + }, + ], + } responses: "201": description: Created @@ -1736,8 +3109,112 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073" } + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + } + ], + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073" } /ordercustomers/{orderCustomerId}: patch: parameters: @@ -1757,7 +3234,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation v2.1 + - Order Creation v2.0 summary: Update a customer on an existing order. description: Update a customer on an existing order. requestBody: @@ -1765,23 +3242,555 @@ paths: application/json: schema: $ref: "#/components/schemas/unavailable" - example: - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - } + examples: + v2.0: + summary: Order customer update v2.0 + description: Order customer update v2.0 + value: + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + } + v1.2: + summary: Order customer update v1.2 + description: Order customer update v1.2 + value: + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + } responses: "200": description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "additionalRemarks" : [] + } + ], + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + v1.2: + value: + { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073" } + /ordercustomers/{orderCustomerId}/orderCustomerAddress: + post: + parameters: + - in: path + name: orderCustomerId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + tags: + - Order Creation v2.0 + summary: Create a customer address for an existing order. + description: Create a customer address for an existing order. + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + v2.0: + summary: Order customer address create v1.2 + description: Order customer address create v1.2 + value: + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + responses: + "201": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 2, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "additionalRemarks" : + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId" + } + ] + } + ], + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 10, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + /orderCustomerAddress/{orderCustomerAddressId}: + patch: + parameters: + - in: path + name: orderCustomerAddressId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + tags: + - Order Creation v2.0 + summary: Update a customer address for an existing order. + description: Update a customer address for an existing order. + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + v2.0: + summary: Order customer address create v1.2 + description: Order customer address create v1.2 + value: + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 101, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "productCode": "HTM-MND-20", + "productDescription": "HTM Maandkorting 20%", + "taxAmount": 21, + "taxCode": "V21", + "amountExclTax": 100, + "amountInclTax": 121, + "quantity": 1, + "terms": + [ + "generalTermsAndConditions.pdf", + "productTermsAndConditions.pdf", + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "tokens": + [ + { + "tokenTypeId": 1, + "ovPayTokenId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "name": "Jan de Vries", + "dateOfBirth": "01-01-1970", + "photoReference": "DSC_0502.JPG", + "fileType": "image/jpg", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + }, + ], + "additionalRemarks" : + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId" + } + ] + } + ], + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": + [ + { + "addressTypeId": 1, + "street": "Kon. Julianaplein", + "houseNumber": 101, + "houseNumberSuffix": "a", + "postalCode": "2595 AA", + "city": "Den Haag", + "country": "NL", + } + ] + } + } + delete: + tags: + - Order Creation v2.0 + summary: Delete an existing order address + description: Delete an existing order address + parameters: + - in: path + name: orderCustomerAddressId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + v2.0: + value: + { + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 0, + "language": { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl" + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + } + ], + "orderLines": null, + "payments": null, + "customer": + { + "birthname": "Jan", + "surname": "Vries", + "prefix": "de", + "emailAddress": "jandevries@outlook.com", + "dateOfBirth": "1970-01-01", + "addresses": null + } + } + "400": + description: Bad request content: application/json: schema: $ref: "#/components/schemas/unavailable" example: - { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073" } + { + "type": "https://htm.nl/api/v1/probs/validationerror", + "title": "Your request is not valid.", + "detail": "The combination of tokens and/or products chosen is not valid. See errors for more details.", + "instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b", + "errors": [ + { + "detail": "Product requires product with productId=2", + "pointer": "#/1/orderLine", + "orderLineId": "0574440e-7fa0-401f-b907-539c91633a5d", + "productId": 3 + } + ] + } /orders/{orderId}/fulfill: parameters: - in: path @@ -1801,7 +3810,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Fulfillment v2.1 + - Order Fulfillment v1.1 summary: Fulfill an order without creating or updating the order as a resource. description: Fulfill an order without creating or updating the order as a resource. responses: diff --git a/src/openapi/products/purchased_products-crud.yaml b/src/openapi/products/purchased_products-crud.yaml index 1a77eda..2305f96 100644 --- a/src/openapi/products/purchased_products-crud.yaml +++ b/src/openapi/products/purchased_products-crud.yaml @@ -52,6 +52,13 @@ paths: example: 2024-10-04T12:34:56.000 required: false description: The purchased product should be last updated after this timestamp. + - in: query + name: resourceNameId + schema: + type: integer + example: 2 + required: false + description: The id of the resource. - in: query name: resourceName schema: