openapi: "3.0.3" info: title: ABT Contracts CRUD APIs version: "1.0" description: CRUD APIs for ABT Contract database. These are NOT the functional APIs from Service Engine. servers: - url: https://api.integratielaag.nl/v1 paths: /customers/{customerNumber}/contracts: parameters: - in: path name: customerNumber schema: type: integer example: 1001337 required: true description: The customerNumber. get: summary: List all contracts for a certain customer profile. description: List all contracts for a certain customer profile. tags: - Contract parameters: - in: query name: contractStatusId schema: type: integer example: 1 required: false description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated, 6 = pending cancellation, 7 = pending termination. responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contracts": [ { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractNumber": "D123456", "customerProfileId": 42, "orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48", "orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8", "touchpointId": 2, "contractStatus": { "contractStatusId": 2, "name": "active" }, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, "created": "2024-08-01 15:01:00.000", }, { "contractId": "f07253e6-c364-474c-a342-a10a4a7cf305", "contractNumber": "D123456", "customerProfileId": 42, "orderId": "945d43e6-516e-425b-8847-9aba41289acd", "orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8", "touchpointId": 2, "contractStatus": { "contractStatusId": 1, "name": "new" }, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, "created": "2024-08-01 15:01:00.000", }, ], } post: summary: Create a contract for an existing customer profile. description: Create a contract for an existing customer profile. tags: - Contract requestBody: content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contract": { "orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48", "orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8", "touchpointId": 2, "contractStatusId": 1, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 0, "contractVersions": [ { "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1200, "taxCode": "V21", "taxAmount": 108, "termAmountInclTax": 1308, "start": "2024-07-04 15:01:00.000", "end": "", }, ], "contractActions": [ { "actionTypeId": 1, "user": "subid123456", "details": "Contract created", "correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee", }, ], }, } responses: "201": description: CREATED content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contract": { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractNumber": "123456", }, } /contracts: get: summary: Get all contracts. description: Get all contracts. tags: - Contract parameters: - in: query name: contractStatusId schema: type: array items: type: integer explode: false required: false description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated, 6 = pending cancellation, 7 = pending termination. - in: query name: billingDay schema: type: integer example: 13 required: false description: Filter on billingDay. In case of weekly termDuration, Sunday = 0, Monday = 1, etc. - in: query name: termDuration schema: type: string example: P1M required: false description: Filter on termDuration. - in: query name: invoiceLimit schema: type: integer example: 2 required: false description: Number of invoices to include in response body (per contract). - in: query name: pageSize schema: type: integer example: 2 required: false description: Number of contracts to in the response body (per page). responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contracts": [ { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractNumber": "D123456", "customerProfileId": 42, "orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48", "orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8", "touchpointId": 2, "contractStatus": { "contractStatusId": 2, "name": "active" }, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, "contractInvoices": [ { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", "externalReference": "F2024-0001", "term": 1, "invoiceDate": "2024-06-02", "created": "2024-06-02 15:01:00.000", "updated": "2024-06-02 15:01:00.000", "state": "invoice_created", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "32785417-1fb8-42c7-bda1-533f5868809f", "accountingStatus": { "accountingStatusId": 1, "name": "open", }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, { "contractInvoiceId": "1c345237-4d84-47f0-93c2-7b94338e3355", "externalReference": "F2024-0002", "term": 2, "invoiceDate": "2024-07-02", "created": "2024-07-02 15:01:00.000", "updated": "2024-07-02 15:01:00.000", "state": "invoice_created", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "1e95b854-0094-42a4-9268-c16353fb72a8", "accountingStatus": { "accountingStatusId": 1, "name": "open", }, "createdOn": "2024-07-02 15:01:00.000", "description": null, }, ], }, ], "contractVersions": [ { "contractVersionId": 1, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1200, "taxCode": "V21", "taxAmount": 108, "termAmountInclTax": 1308, "start": "2024-07-04 15:01:00.000", "end": "2024-12-31 15:01:00.000", }, { "contractVersionId": 2, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1300, "taxCode": "V21", "taxAmount": 117, "termAmountInclTax": 1417, "start": "2025-01-01 15:01:00.000", }, ], }, { "contractId": "f07253e6-c364-474c-a342-a10a4a7cf305", "contractNumber": "D123456", "customerProfileId": 42, "orderId": "945d43e6-516e-425b-8847-9aba41289acd", "orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8", "touchpointId": 2, "contractStatus": { "contractStatusId": 1, "name": "new" }, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, "contractInvoices": [ { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", "externalReference": "F2024-0003", "term": 1, "invoiceDate": "2024-06-02", "created": "2024-06-02 15:01:00.000", "updated": "2024-06-02 15:01:00.000", "state": "invoice_created", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "32785417-1fb8-42c7-bda1-533f5868809f", "accountingStatus": { "accountingStatusId": 1, "name": "open", }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, { "contractInvoiceId": "1c345237-4d84-47f0-93c2-7b94338e3355", "externalReference": "F2024-0004", "term": 2, "invoiceDate": "2024-07-02", "created": "2024-07-02 15:01:00.000", "updated": "2024-07-02 15:01:00.000", "state": "invoice_created", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "1e95b854-0094-42a4-9268-c16353fb72a8", "accountingStatus": { "accountingStatusId": 1, "name": "open", }, "createdOn": "2024-07-02 15:01:00.000", "description": null, }, ], }, ], "contractVersions": [ { "contractVersionId": 1, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1200, "taxCode": "V21", "taxAmount": 108, "termAmountInclTax": 1308, "start": "2024-07-04 15:01:00.000", "end": "2024-12-31 15:01:00.000", }, { "contractVersionId": 2, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1300, "taxCode": "V21", "taxAmount": 117, "termAmountInclTax": 1417, "start": "2025-01-01 15:01:00.000", }, ], }, ], } /contracts/{contractId}: parameters: - in: path name: contractId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The contractId of the Contract, formatted as UUID. get: summary: Get contract details of a single contract. description: Get contract details of a single contract. tags: - Contract responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contract": { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractNumber": "D123456", "customerProfileId": 42, "orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48", "orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8", "touchpointId": 2, "contractStatus": { "contractStatusId": 2, "name": "active" }, "productId": 1, "productName": "HTM Maand 20% korting", "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, "contractVersions": [ { "contractVersionId": 1, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1200, "taxCode": "V21", "taxAmount": 108, "termAmountInclTax": 1308, "start": "2024-07-04 15:01:00.000", "end": "2024-12-31 15:01:00.000", }, { "contractVersionId": 2, "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1300, "taxCode": "V21", "taxAmount": 117, "termAmountInclTax": 1417, "start": "2025-01-01 15:01:00.000", }, ], "contractActions": [ { "contractActionId": "67687851-59dd-4bbc-aa74-0f7abd26c883", "actionType": { "actionTypeId": 1, "name": "create" }, "user": "subid123456", "timestamp": "2024-07-02 15:01:00.000", "details": "Contract created", "correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee", }, { "contractActionId": "ea9ad287-9cd3-4e76-bcb9-d71db551cf55", "actionType": { "actionTypeId": 2, "name": "change" }, "user": "subid123456", "timestamp": "2024-07-03 15:01:00.000", "details": "Contract changed", "correlationId": "e2462347-6749-4841-b42a-cf8de19ec727", }, ], "contractInvoices": [ { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", "externalReference": "F2024-0001", "term": 1, "invoiceDate": "2024-07-02", "created": "2024-07-02 15:01:00.000", "updated": "2024-07-02 15:01:00.000", "state": "invoice_created", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "32785417-1fb8-42c7-bda1-533f5868809f", "accountingStatus": { "accountingStatusId": 1, "name": "open" }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, ], }, } patch: summary: Update an existing contract. description: Update an existing contract. tags: - Contract requestBody: content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contract": { "contractStatusId": 2, "productId": 1, "productName": "HTM 20% korting 2024", "billingDay": 15, "highestInvoiceTerm": 2, }, } responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contract": { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractNumber": "123456", }, } /contracts/{contractId}/contractversions: parameters: - in: path name: contractId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The contractId of the Contract, formatted as UUID. post: summary: Add a version to an existing contract. description: Add a version to an existing contract. tags: - ContractVersion requestBody: content: application/json: schema: $ref: "#/components/schemas/InvoiceAccountingStatus" example: { "contractVersion": { "termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/", "termAmountExclTax": 1200, "taxCode": "V21", "taxAmount": 108, "termAmountInclTax": 1308, "start": "2024-07-08 15:01:00.000", "end": "", }, } responses: "201": description: CREATED content: application/json: schema: $ref: "#/components/schemas/ContractVersion" example: { "contractVersion": { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractVersionId": 2, }, } /contracts/{contractId}/contractversions/{contractVersionId}: parameters: - in: path name: contractId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The contractId of the Contract, formatted as UUID. - in: path name: contractVersionId schema: type: integer example: 1 required: true description: The id of the ContractVersion, formatted as UUID. patch: summary: Add an existing contract version. description: Add an existing contract version. tags: - ContractVersion requestBody: content: application/json: schema: $ref: "#/components/schemas/ContractVersion" example: { "contractVersion": { "end": "2024-07-03 15:01:00.000" } } responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ContractVersion" example: { "contractVersion": { "contractId": "5a3876a1-e9a1-4278-8983-4679a8d583c2", "contractVersionId": 1, }, } /contracts/{contractId}/contractinvoices: parameters: - in: path name: contractId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The contractId of the Contract, formatted as UUID. get: summary: Get invoices of a single contract. DEPRECATED. description: Get invoices of a single contract. WARNING; This method is deprecated. Please use GET /contractinvoices instead. deprecated: true tags: - ContractInvoice responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "contractInvoices": [ { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", "externalReference": "F2024-0001", "term": 1, "invoiceDate": "2024-07-02", "created": "2024-07-02 15:01:00.000", "updated": "2024-07-02 15:01:00.000", "state": "invoice_sent", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "32785417-1fb8-42c7-bda1-533f5868809f", "accountingStatus": { "accountingStatusId": 1, "name": "open" }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, { "contractInvoiceId": "dadff658-4ff5-4eb8-b516-492f1f6c6245", "externalReference": "F2024-0002", "term": 2, "invoiceDate": "2024-08-02", "created": "2024-08-02 15:01:00.000", "updated": "2024-08-02 15:01:00.000", "state": "invoice_created", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "84af0f01-0416-4860-851a-a0d4b3cf674a", "accountingStatus": { "accountingStatusId": 1, "name": "open" }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, ], } post: summary: Add an invoice to an existing contract. description: Add an invoice to an existing contract. tags: - ContractInvoice requestBody: content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "contractInvoice": { "externalReference": "F2024-0001", "term": 1, "invoiceDate": "2024-07-02", "created": "2024-07-02 15:01:00.000", "updated": "2024-07-02 15:01:00.000", "state": "invoice_created", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": 1, "createdOn", "2024-07-02 15:01:00.000", "description": null, }, ], }, } responses: "201": description: CREATED content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "contractInvoice": { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", }, } /contractinvoices: get: summary: Get all contract invoices. description: Get all contract invoices. 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: type: string format: uuid example: f13dbd2d-315d-4839-b0db-e03a2cade495 required: false description: Id of the contract to fetch invoices for. - in: query name: externalReference schema: type: string example: F2024-0030 required: false description: External reference of the invoice. - in: query name: term schema: type: integer example: 4 required: false description: Term of the invoice. - in: query name: createdFrom schema: type: string format: date-time example: 2024-06-02 15:01:00.000 required: false description: Billing date of the invoice (from). - in: query name: createdUntil schema: type: string format: date-time example: 2024-06-02 15:01:00.000 required: false description: Billing date of the invoice (until). - in: query name: updatedFrom schema: type: string format: date-time example: 2024-06-02 15:01:00.000 required: false description: Updated timestamp of the invoice (from). - in: query name: updatedUntil schema: type: string format: date-time example: 2024-06-02 15:01:00.000 required: false description: Updated timestamp of the invoice (until). - in: query name: state schema: type: string example: created required: false description: Invoice state. - in: query name: isCredit schema: type: boolean example: false required: false description: Whether the invoice is a credit invoice. responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contractInvoices": [ { "contractId": "f13dbd2d-315d-4839-b0db-e03a2cade495", "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", "externalReference": "F2024-0030", "term": 1, "invoiceDate": "2024-06-02", "created": "2024-06-02 15:01:00.000", "updated": "2024-06-02 15:01:00.000", "state": "invoice_created", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "32785417-1fb8-42c7-bda1-533f5868809f", "accountingStatus": { "accountingStatusId": 1, "name": "open" }, "createdOn": "2024-06-02 15:01:00.000", "description": null, }, ], }, { "contractId": "a7452e22-3894-40cc-87d6-869370a92277", "contractInvoiceId": "dadff658-4ff5-4eb8-b516-492f1f6c6245", "externalReference": "F2024-0002", "term": 2, "invoiceDate": "2024-08-02", "created": "2024-08-02 15:01:00.000", "updated": "2024-08-02 15:01:00.000", "state": "invoice_created", "data": "{json}", "isCredit": false, "invoiceAccountingStatuses": [ { "invoiceAccountingStatusId": "84af0f01-0416-4860-851a-a0d4b3cf674a", "accountingStatus": { "accountingStatusId": 1, "name": "open" }, "createdOn": "2024-08-02 15:01:00.000", "description": null, }, ], }, ], } /contractinvoices/{contractInvoiceId}: parameters: - in: path name: contractInvoiceId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The id of the ContractInvoice, formatted as UUID. patch: summary: Update an existing invoice. description: Update an existing invoice. tags: - ContractInvoice requestBody: content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "contractInvoice": { "updated": "2024-07-02 15:01:00.000", "state": "invoice_reopened", "data": "{json}", }, } responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "contractInvoice": { "contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", }, } /contractinvoices/{contractInvoiceId}/invoiceaccountingstatuses: parameters: - in: path name: contractInvoiceId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The id of the ContractInvoice, formatted as UUID. post: summary: Add a new invoice accounting status to a contract invoice. description: Add a new invoice accounting status to a contract invoice. tags: - ContractInvoice requestBody: content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "accountingStatusId": 1, "createdOn": "2024-07-02 15:01:00.000", "description": null, } responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/ContractInvoice" example: { "invoiceAccountingStatusId": "a6836364-4812-4960-9226-69deb2e2b903", } /contracts/{contractId}/contractactions: parameters: - in: path name: contractId schema: type: string format: uuid example: d1dd439b-6072-4b97-89c9-724268865b93 required: true description: The contractId of the Contract, formatted as UUID. get: summary: Get all actions of a single contract. description: Get all actions of a single contract. tags: - ContractAction responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Contract" example: { "contractActions": [ { "contractActionId": "67687851-59dd-4bbc-aa74-0f7abd26c883", "actionType": { "actionTypeId": 1, "name": "create" }, "user": "subid123456", "timestamp": "2024-07-02 15:01:00.000", "details": "Contract created", "correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee", }, { "contractActionId": "ea9ad287-9cd3-4e76-bcb9-d71db551cf55", "actionType": { "actionTypeId": 2, "name": "change" }, "user": "subid123456", "timestamp": "2024-07-03 15:01:00.000", "details": "Contract changed", "correlationId": "e2462347-6749-4841-b42a-cf8de19ec727", }, ], } post: summary: Add a new action to an existing contract. description: Add a new action to an existing contract. tags: - ContractAction requestBody: content: application/json: schema: $ref: "#/components/schemas/ContractAction" example: { "contractAction": { "actionType": 2, "user": "subid123456", "timestamp": "2024-07-02 15:01:00.000", "details": "Contract changed xyz", "correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee", }, } responses: "201": description: CREATED content: application/json: schema: $ref: "#/components/schemas/ContractAction" example: { "contractAction": { "contractActionId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f", }, } /contractstatuses: get: summary: Return a list of all possible values of the ContractStatus reference table. Used for populating drop down lists for example. description: Return a list of all possible values of the ContractStatus reference table. Used for populating drop down lists for example. tags: - Reference Tables responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ContractStatus" example: { "contractStatuses": [ { "contractStatusId": 1, "name": "new" }, { "contractStatusId": 2, "name": "active" }, { "contractStatusId": 3, "name": "suspended" }, { "contractStatusId": 4, "name": "cancelled" }, { "contractStatusId": 5, "name": "terminated" }, { "contractStatusId": 6, "name": "pending cancellation" }, { "contractStatusId": 7, "name": "pending termination" }, ], } /actiontypes: get: summary: Return a list of all possible values of the ActionType reference table. Used for populating drop down lists for example. description: Return a list of all possible values of the ActionType reference table. Used for populating drop down lists for example. tags: - Reference Tables responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ActionType" example: { "actionTypes": [ { "contractActionId": 1, "name": "create" }, { "contractActionId": 2, "name": "change" }, { "contractActionId": 3, "name": "cancel" }, { "contractActionId": 4, "name": "suspend" }, { "contractActionId": 5, "name": "terminate" }, { "contractActionId": 6, "name": "renew" }, { "contractActionId": 7, "name": "invoice" }, ], } components: securitySchemes: bearerToken: type: http scheme: bearer bearerFormat: JWT schemas: Contract: type: object properties: contractId: type: string format: uuid example: 5a3876a1-e9a1-4278-8983-4679a8d583c2 contractNumber: type: string pattern: '^D\d{6}$' example: D123456 customerProfileId: type: integer example: 42 orderId: type: string format: uuid example: eb3d08f7-7feb-4f31-9f5b-daa634e51f48 orderLineId: type: string format: uuid example: 52efbbfc-8c28-4016-9ece-dc3ef9a70bd8 touchpointId: type: integer example: 2 contractStatus: type: object $ref: "#/components/schemas/ContractStatus" productId: type: integer example: 1 productName: type: string example: HTM Maand 20% korting termDuration: type: string format: ISO8601 example: P0Y1M0D billingDay: type: integer example: 15 highestInvoiceTerm: type: integer example: 1 contractVersions: type: array items: $ref: "#/components/schemas/ContractVersion" minItems: 0 contractActions: type: array items: $ref: "#/components/schemas/ContractAction" minItems: 0 contractInvoices: type: array items: $ref: "#/components/schemas/ContractInvoice" minItems: 0 Contracts: type: object properties: contracts: type: array items: $ref: "#/components/schemas/Contract" minItems: 0 ContractAction: type: object properties: contractActionId: type: string format: uuid example: 67687851-59dd-4bbc-aa74-0f7abd26c883 actionType: type: object $ref: "#/components/schemas/ActionType" user: type: string example: subid123456 timestamp: type: string format: date-time example: 2024-07-02 15:01:00.000 details: type: string example: Contract created correlationId: type: string format: uuid example: 976e7a4c-bf24-43d2-b444-55817556e7ee ContractVersion: type: object properties: contractVersionId: type: integer example: 1 termsAndConditions: type: string format: url example: https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/ termAmountExclTax: type: integer example: 1200 taxCode: type: string example: V21 taxAmount: type: integer example: 108 termAmountInclTax: type: integer example: 1308 start: type: string format: date-time example: 2024-07-04 15:01:00.000 end: type: string format: date-time example: 2024-12-31 15:01:00.000 ContractInvoice: type: object properties: contractInvoiceId: type: string format: uuid example: 8699d72a-cf4d-4e6b-9e9c-549d837ca51f externalReference: type: string example: F2024-0001 term: type: integer example: 1 invoiceDate: type: string format: date example: 2024-07-02 created: type: string format: date-time example: 2024-07-02 15:01:00.000 updated: type: string format: date-time example: 2024-07-02 15:01:00.000 state: type: string example: invoice_created data: type: string format: json example: { json } isCredit: type: boolean example: false InvoiceAccountingStatus: type: object properties: invoiceAccountingStatusId: type: string format: uuid example: 6b6f0f5e-5d3f-4a6d-8e7d-6a7d0f9e6c5b contractInvoiceId: type: string format: uuid example: 8699d72a-cf4d-4e6b-9e9c-549d837ca51f accountingStatus: type: object $ref: "#/components/schemas/AccountingStatus" createdOn: type: string format: date-time example: 2024-07-02 15:01:00.000 description: type: string example: Open AccountingStatus: type: object properties: accountingStatusId: type: integer example: 1 name: type: string enum: [open, sent, received, rejected] example: open ContractStatus: type: object properties: contractStatusId: type: integer example: 2 name: type: string enum: [ new, active, suspended, cancelled, terminated, pending cancellation, pending termination, ] example: active ActionType: type: object properties: actionTypeId: type: integer example: 1 name: type: string enum: [create, change, cancel, suspend, terminate, renew, invoice] example: create