openapi: "3.0.3"
info:
  title: FIKO CRUD APIs v2.2
  version: "1.0"
  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/fiko/1.0
paths:
  /Odata/TransactionItem:
    get:
      summary: Find transaction items.
      description: Find transaction items.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - 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
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - transactionItemRowId
                - transactionItemId
                - transactionType
                - sourceName
                - transactionId
                - transactionLineId
                - name
                - quantity
                - taxCode
                - amountExclTax
                - amountInclTax
                - amountTax
                - occurredOn
                - type
                - articleNumber
                - status
                - aggregationReference
                - accountingSystemReference
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#TransactionItem"
                    value: []
                List containing multiple sales transaction items:
                  summary: List containing multiple sales transaction items
                  description: List containing multiple sales transaction items of transaction type 'sales' with different statuses.
                  value:
                    "@odata.context": "$metadata#TransactionItem"
                    value:
                      - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
                        transactionItemRowId: 3231
                        transactionItemId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
                        transactionType: sales
                        sourceName: HTM-website
                        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
                      - "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
                        transactionItemRowId: 3232
                        transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
                        transactionType: sales
                        sourceName: HTM-website
                        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
                      - "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
                        transactionItemRowId: 3233
                        transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
                        transactionType: sales
                        sourceName: HTM-website
                        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
                      - "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
                        transactionItemRowId: 3234
                        transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
                        transactionType: sales
                        sourceName: HTM-website
                        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
                      - "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
                        transactionItemRowId: 3235
                        transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
                        transactionType: sales
                        sourceName: HTM-website
                        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
                      - "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
                        transactionItemRowId: 3236
                        transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
                        transactionType: sales
                        sourceName: HTM-website
                        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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /transactionitems:
    post:
      summary: Add one ore more finanicial transaction items in bulk.
      description: Add one ore more finanicial transaction items in bulk.
      tags:
        - 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: HTM-website
                      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: HTM-website
                      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: HTM-website
                      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:
        "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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /transactionitems/{transactionItemId}:
    parameters:
      - in: path
        name: transactionItemId
        schema:
          type: string
          format: uuid
          example: 9834b346-d68c-438d-9bd5-6716422c2657
        required: true
        description: The id of the transaction item.
    patch:
      summary: Update a transaction item.
      description: Update a transaction item.
      tags:
        - 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /transactionitems/responsestatus/{clientTrackingId}:
    get:
      tags:
        - Transactions v2.2
      summary: 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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /transactionitems/{transactionItemId}/processingfailures:
    parameters:
      - in: path
        name: transactionItemId
        schema:
          type: string
          format: uuid
          example: 9834b346-d68c-438d-9bd5-6716422c2657
        required: true
        description: The id of the transaction item to process.
    post:
      summary: Add a processing failure.
      description: Add a processing failure.
      tags:
        - 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /transactionitems/{transactionItemId}/transactionaudittrails:
    parameters:
      - in: path
        name: transactionItemId
        schema:
          type: string
          format: uuid
          example: 9834b346-d68c-438d-9bd5-6716422c2657
        required: true
        description: The id of the transaction item to process.
    post:
      summary: Add an audit trail entry.
      description: Add an audit trail entry.
      tags:
        - Audit Trail v2.2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransactionAuditTrailsPostRequestBody"
            examples:
              Add new transaction audit trail for created transaction item:
                summary: Add new transaction audit trail for created transaction item
                description: Add a new audit trail record for a newly created transaction item.
                value:
                  user: fiko
                  timestamp: 2022-01-01 12:34:00
                  action: create
                  status: created
                  description: Transaction item created.
                  correlationId: null
              Add new transaction audit trail for updated transaction item:
                summary: Add new transaction audit trail for updated transaction item
                description: Add a new audit trail record for an updated transaction item.
                value:
                  user: ad.vogelaar
                  timestamp: 2022-01-02 12:34:00
                  action: update
                  status: return to src
                  description: Transaction item returned to source.
                  correlationId: 0dc216ea-58e7-4a5e-aa18-449f0304209c
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionAuditTrailsPostResponseBody"
              examples:
                Transaction audit trail record created:
                  summary: Transaction audit trail record created
                  description: |
                    A new audit trail record for this transaction item was successfully created. 
                    The transactionAuditTrailId is returned as a reference for the consumer.
                  value:
                    transactionAuditTrailId: 37a8095b-19db-498f-9349-5f37d21c5bdf
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/TransactionAuditTrail:
    get:
      summary: Find audit trail entries.
      description: Find audit trail entries.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - transactionAuditTrailRowId
                - transactionAuditTrailId
                - transactionItemId
                - user
                - timestamp
                - action
                - status
                - correlationId
        - 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:
                - transactionAuditTrailRowId
                - transactionAuditTrailId
                - transactionItemId
                - user
                - timestamp
                - action
                - status
                - correlationId
        - name: $expand
          in: query
          description: Expand related entities
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - TransactionItem
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionAuditTrailsGetResponseBody"
              examples:
                No transaction item audit trails:
                  summary: No transaction audit trails were found
                  description: No transaction audit trails that match the search criteria were found.
                  value:
                    "@odata.context": "$metadata#TransactionAuditTrail"
                    value: []
                List containing multiple transaction audit trails:
                  summary: List containing multiple transaction audit trails
                  description: List containing multiple transaction audit trails of different transaction items (no filters applied).
                  value:
                    "@odata.context": "$metadata#TransactionAuditTrail"
                    value:
                      - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
                        transactionAuditTrailRowId: 8218
                        transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: fiko
                        timestamp: 2025-01-01 12:34:51
                        action: create
                        status: created
                        description: Transaction created.
                        correlationId: null
                      - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
                        transactionAuditTrailRowId: 8219
                        transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
                        transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
                        user: fiko
                        timestamp: 2025-01-01 12:34:50
                        action: create
                        status: created
                        description: Transaction created.
                        correlationId: null
                      - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
                        transactionAuditTrailRowId: 8220
                        transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
                        transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd
                        user: ad.vogelaar
                        timestamp: 2025-01-01 12:34:48
                        action: update
                        status: return to src
                        description: Transaction retunred to source.
                        correlationId: a3891560-3084-42cb-867c-f289e7cda47d
                      - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
                        transactionAuditTrailRowId: 8221
                        transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
                        transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b
                        user: fiko
                        timestamp: 2025-01-01 12:34:47
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: 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:
                    "@odata.context": "$metadata#TransactionAuditTrail"
                    value:
                      - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
                        transactionAuditTrailRowId: 8218
                        transactionAuditTrailId: d571ff7c-eaa5-428a-9bc3-5a0fa3e5ee2e
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: fiko
                        timestamp: 2025-01-07 12:34:59
                        action: update
                        status: re-entered
                        description: Transaction re-entered.
                        correlationId: null
                      - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
                        transactionAuditTrailRowId: 8219
                        transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: ad.vogelaar
                        timestamp: 2025-01-04 12:34:54
                        action: update
                        status: return to src
                        description: Transaction retunred to source.
                        correlationId: a3891560-3084-42cb-867c-f289e7cda47d
                      - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
                        transactionAuditTrailRowId: 8220
                        transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: fiko
                        timestamp: 2025-01-02 00:34:50
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: null
                      - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
                        transactionAuditTrailRowId: 8221
                        transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: fiko
                        timestamp: 2025-01-01 12:34:47
                        action: create
                        status: created
                        description: Transaction created.
                        correlationId: null
                ? List containing multiple audit trails of different failed transactions
                : summary: List containing multiple audit trails of different failed transactions
                  description: List containing multiple audit trails of different failed transactions (status = failed).
                  value:
                    "@odata.context": "$metadata#TransactionAuditTrail"
                    value:
                      - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
                        transactionAuditTrailRowId: 8218
                        transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
                        transactionItemId: d667d293-aa82-4c9e-9b10-77cffc9058a1
                        user: fiko
                        timestamp: 2025-01-01 00:34:51
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: null
                      - "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
                        transactionAuditTrailRowId: 8219
                        transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
                        transactionItemId: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
                        user: fiko
                        timestamp: 2025-01-01 00:34:50
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: null
                      - "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
                        transactionAuditTrailRowId: 8220
                        transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
                        transactionItemId: e8891be1-1b8a-4a0f-91e2-6b523b6497dd
                        user: fiko
                        timestamp: 2025-01-01 00:34:48
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: null
                      - "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
                        transactionAuditTrailRowId: 8221
                        transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
                        transactionItemId: 34ba3d7c-3ca1-4fa4-aa42-23d4c4fc767b
                        user: fiko
                        timestamp: 2025-01-01 00:34:47
                        action: update
                        status: failed
                        description: Validation XYZ failed.
                        correlationId: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/ProcessingFailure:
    get:
      summary: Find processing failures.
      description: Find processing failures.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - 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:
            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:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - TransactionItem
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProcessingFailuresGetResponseBody"
              examples:
                No processing failures were found:
                  summary: No processing failures were found
                  description: No processing failures were found (for example for a single transaction item).
                  value:
                    "@odata.context": "$metadata#ProcessingFailure"
                    value: []
                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:
                    "@odata.context": "$metadata#ProcessingFailure"
                    value:
                      - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
                        processingFailureRowId: 9
                        processingFailureId: 37a8095b-19db-498f-9349-5f37d21c5bdf
                        transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
                        timestamp: 2022-01-01 00:00:00
                        element: costType
                        value: 901
                        reasonCode: "004"
                        reasonDescription: Cost type does not exist.
                        resolved: false
                        change: null
                      - "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
                        processingFailureRowId: 10
                        processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
                        transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
                        timestamp: 2025-01-01 00:43:01
                        element: costCenter
                        value: 84955
                        reasonCode: "002"
                        reasonDescription: Cost center does not exist.
                        resolved: true
                        change: Adapt config
                      - "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
                        processingFailureRowId: 11
                        processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
                        transactionItemId: 2d77d978-7141-499a-84ad-93fad8ee03ce
                        timestamp: 2025-01-01 00:43:01
                        element: department
                        value: 1337
                        reasonCode: "001"
                        reasonDescription: Department does not exist.
                        resolved: true
                        change: Adapt config
                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:
                    "@odata.context": "$metadata#ProcessingFailure"
                    value:
                      - "@odata.etag": 0d22aa9e-2183-4f2d-aa5b-98c362683529
                        processingFailureRowId: 9
                        processingFailureId: 1d0f237e-5fbe-4107-8bdf-a41f43307ac0
                        transactionItemId: d0425652-07a3-4b95-bb37-8bb15ea1b9b5
                        timestamp: 2022-01-01 00:00:00
                        element: occuredOn
                        value: 2027-01-01
                        reasonCode: "009"
                        reasonDescription: Transaction date is in the future
                        resolved: false
                        change: null
                      - "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
                        processingFailureRowId: 10
                        processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
                        transactionItemId: 3f0a8a74-c642-441e-a187-d32fedb77fdf
                        timestamp: 2025-01-01 00:43:01
                        element: costCenter
                        value: 84955
                        reasonCode: "002"
                        reasonDescription: Cost center does not exist.
                        resolved: false
                        change: null
                      - "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
                        processingFailureRowId: 11
                        processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
                        transactionItemId: 446ad396-41f6-4c1f-942c-a131e620075d
                        timestamp: 2025-01-01 00:43:01
                        element: department
                        value: 1337
                        reasonCode: "001"
                        reasonDescription: Department does not exist.
                        resolved: false
                        change: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /processingfailures/{processingFailureId}:
    parameters:
      - in: path
        name: processingFailureId
        schema:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        required: true
        description: The id of the processing failure.
    patch:
      summary: Update processing failure.
      description: Update processing failure.
      tags:
        - 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
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProcessingFailuresPatchResponseBody"
              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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/BookingProcess:
    get:
      summary: Find booking processes.
      description: Find booking processes.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - bookingProcessRowId
                - bookingProcessId
                - name
                - transactionType
                - identifyingFieldName
        - 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:
                - bookingProcessRowId
                - bookingProcessId
                - name
                - transactionType
                - identifyingFieldName
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $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:
                    "@odata.context": "$metadata#BookingProcess"
                    value:
                      - "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
                        bookingProcessRowId: 10
                        bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
                        name: Verkooptransacties
                        transactionType: sales
                        identifyingFieldName: articleNumber
                      - "@odata.etag": 97c65a01-f5ac-4081-b731-137622c4630d
                        bookingProcessRowId: 11
                        bookingProcessId: 03105285-3c4c-477a-821c-0fae801d9d26
                        name: Inkooptransacties
                        transactionType: purchase
                        identifyingFieldName: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /bookingprocesses:
    post:
      summary: Add a booking process.
      description: Add a booking process.
      tags:
        - Booking Processes v2.2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $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/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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /bookingprocesses/{bookingProcessId}:
    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.
    patch:
      summary: Update a booking process.
      description: Update a booking process.
      tags:
        - Booking Processes v2.2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $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:
                  name: Verkooptransacties
                  transactionType: sales
                  identifyingFieldName: orderNumber
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: 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:
                  name: Saldoreizen
                  description: Saldoreizen nov. 2024
                  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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/BookingMetadata:
    get:
      summary: Find booking metadata.
      description: Find booking metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - bookingMetadataRowId
                - bookingMetadataId
                - bookingProcessId
                - name
                - description
                - 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
                - name
                - description
                - 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:
                    "@odata.context": "$metadata#BookingMetadata"
                    value:
                      - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
                        bookingMetadataRowId: 13
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
                        name: Dagkaarten
                        description: Dagkaarten nov. 2024
                        documentCode: OPBR-FIKO
                        hasSeparateTaxLine: true
                        hasLinePerIdentifyingField: true
                        hasLinePerSource: true
                        hasLinePerConcession: true
                        validFrom: 2022-01-01 00:00:00
                        validUntil: null
                      - "@odata.etag": 2fc41131-e875-4365-b4b4-f5babc7349b1
                        bookingMetadataRowId: 14
                        bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
                        bookingProcessId: 37a8095b-19db-498f-9349-5f37d21c5bdf
                        name: Saldoreizen
                        description: Saldoreizen nov. 2024
                        documentCode: OPBR-FIKO
                        hasSeparateTaxLine: true
                        hasLinePerIdentifyingField: true
                        hasLinePerSource: true
                        hasLinePerConcession: true
                        validFrom: 2022-01-01 00:00:00
                        validUntil: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: 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. All fields are updated.
                value:
                  name: Dagkaarten
                  description: Dagkaarten nov. 2024
                  documentCode: OPBR-FIKO
                  hasSeparateTaxLine: true
                  hasLinePerIdentifyingField: true
                  hasLinePerSource: true
                  hasLinePerConcession: true
                  validFrom: 2022-01-01 00:00:00
                  validUntil: 2024-03-22T09:00:00
              Update valid until:
                summary: Update valid until
                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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      summary: Delete booking metadata.
      description: |
        Delete booking metadata. Note that booking metadata can only be deleted
        if the validFrom is in the future.
      tags:
        - Booking Processes v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: 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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: 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
                  description: BTW 9%
                  sourceMetadataId: null
                  identifyingFieldValue: null
                  concessionId: null
                  isContraAccount: false
                  lineType: tax
                  lineSense: credit
                  department: 140
                  costType: 15427
                  costCenter: null
                  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
                  description: Saldoreizen nov. 2024
                  sourceMetadataId: null
                  identifyingFieldValue: null
                  concessionId: 1
                  isContraAccount: false
                  lineType: analysis
                  lineSense: credit
                  department: 900
                  costType: 84956
                  costCenter: 603031
                  articleName: Saldoreizen
                  extRef1: null
                  extRef2: null
                  extRef3: 2025-02-17
                  extRef4: null
                  extRef5: TLS
                  extRef6: null
              Add a new contra account booking line metadata:
                summary: Add a new contra account booking line metadata
                description: In this example a new contra account booking line metadata is added to an existing booking.
                value:
                  name: Tegenrekening productverkopen
                  description: ST20 produktverkopen nov 2024
                  sourceMetadataId: null
                  identifyingFieldValue: null
                  concessionId: null
                  isContraAccount: true
                  lineType: analysis
                  lineSense: debet
                  department: 140
                  costType: 15427
                  costCenter: null
                  articleName: null
                  extRef1: null
                  extRef2: null
                  extRef3: null
                  extRef4: null
                  extRef5: null
                  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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/BookingGroupField:
    get:
      summary: Find booking group fields.
      description: Find booking group fields.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - 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:
                    "@odata.context": "$metadata#BookingGroupField"
                    value:
                      - "@odata.etag": 2e52e353-bf49-4296-8dc3-bd5e6096be4e
                        bookingGroupFieldRowId: 8
                        bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 1737
                      - "@odata.etag": 3f285dc2-6ae3-4613-a759-68fada2afcdf
                        bookingGroupFieldRowId: 9
                        bookingGroupFieldId: 3b9005f4-42c4-4e2b-b472-ba7d0926fe77
                        bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
                        identifyingFieldValue: 1748
                      - "@odata.etag": f6f303f9-6685-44be-9c44-aec14a59e461
                        bookingGroupFieldRowId: 10
                        bookingGroupFieldId: ae773282-ac9b-4a0b-a487-b4061ea2a42f
                        bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
                        identifyingFieldValue: 1750
                      - "@odata.etag": 39d5bf02-0ac3-47a2-8ba4-e00a18108e98
                        bookingGroupFieldRowId: 11
                        bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 1757
                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:
                    "@odata.context": "$metadata#BookingGroupField"
                    value:
                      - "@odata.etag": 2e52e353-bf49-4296-8dc3-bd5e6096be4e
                        bookingGroupFieldRowId: 8
                        bookingGroupFieldId: b34d0fc2-96fc-409b-93b6-ae51fb8c694a
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 1737
                      - "@odata.etag": d269b9e9-2f8e-4c3d-9874-599d2e7553aa
                        bookingGroupFieldRowId: 9
                        bookingGroupFieldId: fe1aca8c-3ef5-4e15-962b-202d28d3d761
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 1757
                      - "@odata.etag": 8110f2ee-a37a-4e56-a3d8-5ae113675923
                        bookingGroupFieldRowId: 10
                        bookingGroupFieldId: fede01e0-86c5-47d0-9466-3093132148e5
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4031
                      - "@odata.etag": 89e9ef54-138a-479d-a4ce-5e01d3f8bb14
                        bookingGroupFieldRowId: 11
                        bookingGroupFieldId: d7c25182-b64e-4e47-8998-19ddb65b8f2c
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4032
                      - "@odata.etag": ab2242f7-b891-40fe-86c0-34e0f4453316
                        bookingGroupFieldRowId: 12
                        bookingGroupFieldId: ea02d3eb-29e6-42fd-b7eb-dfbfd2231090
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4033
                      - "@odata.etag": 9244dd72-fcc0-4578-97cc-9dcc55429eb4
                        bookingGroupFieldRowId: 13
                        bookingGroupFieldId: a73407a6-ff8c-4924-a7ac-5cd605e1793c
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4034
                      - "@odata.etag": 057281d9-65ef-46b9-b7d3-efee2968a438
                        bookingGroupFieldRowId: 14
                        bookingGroupFieldId: d9af4bf1-4e85-4eb6-ae5d-d2020b18d63c
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4051
                      - "@odata.etag": 95e91fe2-e990-4b9e-a146-b44142d66b90
                        bookingGroupFieldRowId: 15
                        bookingGroupFieldId: c1ba494b-249a-475b-a542-19918aa36778
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4053
                      - "@odata.etag": c346c96d-acac-4e2b-a652-219983fc5bca
                        bookingGroupFieldRowId: 16
                        bookingGroupFieldId: 69be1be0-c600-492d-aec1-8490409371da
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4054
                      - "@odata.etag": 39635b84-551e-4927-9787-28f6868d3b18
                        bookingGroupFieldRowId: 17
                        bookingGroupFieldId: d7d00ec1-6d53-44e9-bcd8-01f6a523f771
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        identifyingFieldValue: 4055
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: Delete booking group field.
      description: Delete booking group field.
      tags:
        - Booking Processes v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/BookingLineMetadata:
    get:
      summary: Find booking line metadata.
      description: Find booking line metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - bookingLineMetadataRowId
                - bookingLineMetadataId
                - bookingMetadataId
                - name
                - description
                - sourceMetadataId
                - identifyingFieldValue
                - concessionId
                - isContraAccount
                - lineType
                - lineSense
                - department
                - costType
                - 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
                - description
                - sourceMetadataId
                - identifyingFieldValue
                - concessionId
                - isContraAccount
                - lineType
                - lineSense
                - department
                - costType
                - 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 two different booking lines:
                  summary: List containing two different booking lines
                  description: List containing two different booking line metadata records, for two different booking processes (no filters applied).
                  value:
                    "@odata.context": "$metadata#BookingLineMetadata"
                    value:
                      - "@odata.etag": 511fb29c-47d6-4af9-bc54-cbbf3de27dae
                        bookingLineMetadataRowId: 10
                        bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Webshop - Dagkaart - BUS
                        description: Dagkaarten nov. 2024 BUS
                        sourceMetadataId: 2c55f374-8ef8-4615-bc0a-5c92184ff4b2
                        identifyingFieldValue: null
                        concessionId: 2
                        isContraAccount: false
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84956
                        costCenter: 603031
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: Webshop
                        extRef6: null
                      - "@odata.etag": 42b91a85-0771-4cde-92ff-fe4a42bb6cf7
                        bookingLineMetadataRowId: 11
                        bookingLineMetadataId: 1bca01db-40d3-4447-9f28-41475ec6877d
                        bookingMetadataId: bd290c3f-4a27-4898-911e-1aadacc4a034
                        name: TLS - Saldoreizen - RAIL
                        description: Saldoreizen nov. 2024 RAIL
                        sourceMetadataId: 4dab350d-a47c-4cc0-80e8-404e099f5c24
                        identifyingFieldValue: null
                        concessionId: 1
                        isContraAccount: false
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84955
                        costCenter: 603007
                        articleName: Opbrengst TLS
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: TLS
                        extRef6: 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:
                    "@odata.context": "$metadata#BookingLineMetadata"
                    value:
                      - "@odata.etag": 42b91a85-0771-4cde-92ff-fe4a42bb6cf7
                        bookingLineMetadataRowId: 11
                        bookingLineMetadataId: 98dccb4c-f24f-4acd-a036-f4b465124842
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Webshop - Dagkaart - BUS
                        description: Dagkaarten nov. 2024 BUS
                        sourceMetadataId: 2c55f374-8ef8-4615-bc0a-5c92184ff4b2
                        identifyingFieldValue: null
                        concessionId: 2
                        isContraAccount: false
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84956
                        costCenter: 619031
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: Webshop
                        extRef6: null
                      - "@odata.etag": 8513d1aa-5cba-4765-81ca-56ca1272cc05
                        bookingLineMetadataRowId: 12
                        bookingLineMetadataId: a4464b5c-9a8e-4e48-a0a0-5500b1ca0885
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Webshop - Dagkaart - RAIL
                        description: Dagkaarten nov. 2024 RAIL
                        sourceMetadataId: 2c55f374-8ef8-4615-bc0a-5c92184ff4b2
                        identifyingFieldValue: null
                        concessionId: 1
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84956
                        costCenter: 603031
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: Webshop
                        extRef6: null
                      - "@odata.etag": 63e1c54d-7c6b-4b77-ab7f-86a5e9ce9e53
                        bookingLineMetadataRowId: 13
                        bookingLineMetadataId: feaa7b33-ba49-40a2-90f3-5dd70d591f17
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Ticketapp - Dagkaart - BUS
                        description: Dagkaarten nov. 2024 BUS
                        sourceMetadataId: 2c55f374-8ef8-4615-bc0a-5c92184ff4b2
                        identifyingFieldValue: null
                        concessionId: 2
                        isContraAccount: false
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84956
                        costCenter: 619031
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: Webshop
                        extRef6: null
                      - "@odata.etag": 576446b0-b3c4-4a63-bff4-939d44104572
                        bookingLineMetadataRowId: 14
                        bookingLineMetadataId: ea6ce4e7-4d52-4b89-bbea-ffe0ef6c48ff
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Ticketapp - Dagkaart - RAIL
                        description: Dagkaarten nov. 2024 RAIL
                        sourceMetadataId: 2c55f374-8ef8-4615-bc0a-5c92184ff4b2
                        identifyingFieldValue: null
                        concessionId: 1
                        isContraAccount: false
                        lineType: summary
                        lineSense: credit
                        department: 900
                        costType: 84956
                        costCenter: 603031
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: Webshop
                        extRef6: null
                      - "@odata.etag": cbd3968b-8e73-4c43-847b-a680e43e67cb
                        bookingLineMetadataRowId: 15
                        bookingLineMetadataId: 0a8dbb7d-73c8-451e-9028-e4613283c7bd
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Dagkaart - BTW
                        description: BTW 9%
                        sourceMetadataId: null
                        identifyingFieldValue: null
                        concessionId: null
                        isContraAccount: false
                        lineType: tax
                        lineSense: credit
                        department: 140
                        costType: 15427
                        costCenter: null
                        articleName: dagkaart
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: null
                        extRef6: null
                      - "@odata.etag": 26c89ff7-2fc3-4cc5-ae80-7e1e90886148
                        bookingLineMetadataRowId: 16
                        bookingLineMetadataId: d8c8b3b8-e996-463e-9c32-f0878ebfbcbb
                        bookingMetadataId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
                        name: Dagkaart - Tegenrekening
                        description: ST20 produktverkopen nov 2024
                        sourceMetadataId: null
                        identifyingFieldValue: null
                        concessionId: null
                        isContraAccount: true
                        lineType: analysis
                        lineSense: credit
                        department: 220
                        costType: 10486
                        costCenter: null
                        articleName: null
                        extRef1: null
                        extRef2: null
                        extRef3: 2025-02-17
                        extRef4: null
                        extRef5: null
                        extRef6: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /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: 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 a booking line:
                summary: Update a booking line
                description: |
                  In this example an existing booking line metadata is updated.
                value:
                  name: Ticketapp - Dagkaart - RAIL
                  description: Dagkaarten nov. 2024 RAIL
                  sourceMetadataId: 8cddd157-c9ea-4027-9e8b-f1c5201440f1
                  identifyingFieldValue: null
                  concessionId: 1
                  isContraAccount: false
                  lineType: summary
                  lineSense: credit
                  department: 900
                  costType: 84956
                  costCenter: 603031
                  articleName: dagkaart
                  extRef1: null
                  extRef2: null
                  extRef3: 2025-02-17
                  extRef4: null
                  extRef5: Webshop
                  extRef6: null
              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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      summary: Delete booking line metadata.
      description: Delete booking line metadata.
      tags:
        - Booking Processes v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/TaxMetadata:
    get:
      summary: Find tax metadata.
      description: Find tax metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - taxMetadataRowId
                - taxMetadataId
                - taxCode
                - taxPercentage
                - description
                - weFactTaxCode
                - 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:
                - taxMetadataRowId
                - taxMetadataId
                - taxCode
                - taxPercentage
                - description
                - validFrom
                - validUntil
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#TaxMetadata"
                    value:
                      - "@odata.etag": 4a758689-c28f-47d1-a230-e5422e9ad3be
                        taxMetadataRowId: 13
                        taxMetadataId: 2d444740-4131-4169-bb47-2d125641dc87
                        taxCode: V00
                        taxPercentage: 0
                        description: BTW VERKOOP NUL
                        weFactTaxCode: V0
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
                      - "@odata.etag": f848cce9-7fbe-4371-a70c-085fefe4613e
                        taxMetadataRowId: 14
                        taxMetadataId: b5f879d1-043d-4357-9655-2eeca8ebe9bf
                        taxCode: V09
                        taxPercentage: 9
                        description: BTW VERKOOP LAAG 9%
                        weFactTaxCode: V9
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
                      - "@odata.etag": db06ae45-710d-4a4b-958b-cba61a8ba027
                        taxMetadataRowId: 15
                        taxMetadataId: 62e1abe7-d76f-4364-9207-591c0601ba55
                        taxCode: V21
                        taxPercentage: 21
                        description: BTW VERKOOP HOOG 21%
                        weFactTaxCode: V21
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
                      - "@odata.etag": 3bc97433-06f8-431c-b931-f5e33641bf88
                        taxMetadataRowId: 16
                        taxMetadataId: 9a253fc3-e562-4c4a-925c-d9caf0dcc549
                        taxCode: I00
                        taxPercentage: 0
                        description: BTW DEBIT NUL
                        weFactTaxCode: I0
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
                      - "@odata.etag": 2262ab02-57a8-4425-a823-88d3c8d956bf
                        taxMetadataRowId: 17
                        taxMetadataId: 6243b848-5ca3-44e0-9860-4fb3a817f148
                        taxCode: I09
                        taxPercentage: 9
                        description: BTW DEBIT laag 9%
                        weFactTaxCode: I9
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
                      - "@odata.etag": 261794fa-11fa-47a2-9429-1e671638cb9d
                        taxMetadataRowId: 18
                        taxMetadataId: 0240d6e4-6037-4da0-ac10-1fde0229d439
                        taxCode: I21
                        taxPercentage: 21
                        description: BTW DEBIT hoog 21%
                        weFactTaxCode: I21
                        validFrom: 2024-03-22T09:00:00
                        validUntil: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /taxmetadata:
    post:
      summary: Add tax metadata.
      description: Add tax metadata.
      tags:
        - 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
                  taxPercentage: 21.4
                  description: BTW VERKOOP HOOG 21.4%
                  weFactTaxCode: V21.4
                  validFrom: 2025-03-22T09:00:00
                  validUntil: null
      responses:
        "201":
          description: Created
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /taxmetadata/{taxMetadataId}:
    parameters:
      - in: path
        name: taxMetadataId
        schema:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        required: true
        description: The id of the tax metadata.
    patch:
      summary: Update tax metadata.
      description: Update tax metadata.
      tags:
        - 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.
                value:
                  taxCode: V09
                  taxPercentage: 9
                  description: BTW VERKOOP LAAG 9%
                  weFactTaxCode: V9
                  validFrom: 2024-03-22T09:00:00
                  validUntil: 2025-03-22T09:00:00
              Update tax metadata validity:
                summary: Update tax metadata validity
                description: In this example the validity of a 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      summary: Delete tax metadata.
      description: |
        Delete tax metadata. Note that tax metadata can only be deleted
        if the validFrom is in the future.
      tags:
        - Metadata v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/SourceMetadata:
    get:
      summary: Find source metadata.
      description: Find source metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - sourceMetadataRowId
                - sourceMetadataId
                - incomingName
                - incomingEntity
                - outgoingName
                - businessOwner
                - rejectionProcessing
                - rejectionInfo
                - 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:
                - sourceMetadataRowId
                - sourceMetadataId
                - incomingName
                - incomingEntity
                - outgoingName
                - businessOwner
                - rejectionProcessing
                - rejectionInfo
                - validFrom
                - validUntil
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#SourceMetadata"
                    value:
                      - "@odata.etag": 309ac952-12ad-4f13-a19d-f7443b8a1e93
                        sourceMetadataRowId: 2
                        sourceMetadataId: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
                        incomingName: HTM-web
                        incomingEntity: OrderLine
                        outgoingName: webshop
                        businessOwner: Koos Verweg
                        rejectionProcessing: system
                        rejectionInfo: api.htm.nl/v2/account/12345/msgs/abc
                        validFrom: 2025-01-01T00:00.000
                        validUntil: null
                      - "@odata.etag": 4b743da5-4195-4b2e-a11b-6e5393a94c0a
                        sourceMetadataRowId: 3
                        sourceMetadataId: c3a9ef01-06c6-4c05-8fc7-df825f676dfc
                        incomingName: HTM-app
                        incomingEntity: OrderLine
                        outgoingName: ticketapp
                        businessOwner: Danny Negen
                        rejectionProcessing: mail
                        rejectionInfo: d.negen@htm.nl
                        validFrom: 2025-01-01T00:00.000
                        validUntil: null
                      - "@odata.etag": 502e2f58-b4e1-4dd0-947a-db6eea726e3a
                        sourceMetadataRowId: 4
                        sourceMetadataId: 0b6e3e07-c4e0-42bf-86f2-9c9522b71209
                        incomingName: SMP
                        incomingEntity: OrderLine
                        outgoingName: balieverkoop
                        businessOwner: Guus Geluk
                        rejectionProcessing: mail
                        rejectionInfo: ao@htm.nl
                        validFrom: 2025-01-01T00:00.000
                        validUntil: null
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /sourcemetadata:
    post:
      summary: Add source metadata.
      description: Add source metadata.
      tags:
        - 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
                  validFrom: 2025-01-01T00:00.000
                  validUntil: null
      responses:
        "201":
          description: Created
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /sourcemetadata/{sourceMetadataId}:
    parameters:
      - in: path
        name: sourceMetadataId
        schema:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        required: true
        description: The id of the source metadata.
    patch:
      summary: Update source metadata.
      description: Update source metadata.
      tags:
        - Metadata v2.2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SourceMetadataPatchRequestBody"
            examples:
              Update a source:
                summary: Update a source
                description: In this example we update a single source.
                value:
                  incomingName: HTM-app
                  incomingEntity: OrderLine
                  outgoingName: ticketapp
                  businessOwner: Danny Negen
                  rejectionProcessing: mail
                  rejectionInfo: d.negen@htm.nl
                  validFrom: 2025-01-01T00:00.000
                  validUntil: 2025-01-31T23:59:59.999
              Update a source validity:
                summary: Update a source validity
                description: In this example we update the validity of a single source.
                value:
                  validUntil: 2025-01-31T23:59:59.999
              Update a business owner of a source:
                summary: Update a business owner of a source
                description: In this example we update the business owner of a single source.
                value:
                  businessOwner: Chef Erwin
      responses:
        "200":
          description: OK
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      summary: Delete source metadata.
      description: |
        Delete source metadata. Note that source metadata can only be deleted
        if the validFrom is in the future.
      tags:
        - Metadata v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/AccountingPeriodMetadata:
    get:
      summary: Find accounting period metadata.
      description: Find accounting period metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - accountingPeriodMetadataRowId
                - accountingPeriodMetadataId
                - accountingPeriod
                - isOpen
        - 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:
                - accountingPeriodMetadataRowId
                - accountingPeriodMetadataId
                - accountingPeriod
                - isOpen
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#AccountingPeriodMetadata"
                    value:
                      - "@odata.etag": 8f085711-eeae-44ed-bac1-06779bedb480
                        accountingPeriodMetadataRowId: 1
                        accountingPeriodMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
                        accountingPeriod: 2025/01
                        isOpen: true
                      - "@odata.etag": 66c033af-fc67-4eb2-9d17-d74a0166470f
                        accountingPeriodMetadataRowId: 2
                        accountingPeriodMetadataId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a
                        accountingPeriod: 2024/12
                        isOpen: false
                      - "@odata.etag": fc1aa814-ede9-4f99-b09b-b969c8738003
                        accountingPeriodMetadataRowId: 3
                        accountingPeriodMetadataId: 33b4889b-0036-4870-87df-be43f9316cdf
                        accountingPeriod: 2024/11
                        isOpen: false
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /accountingperiodmetadata:
    post:
      summary: Add accounting period metadata.
      description: Add accounting period metadata.
      tags:
        - 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /accountingperiodmetadata/{accountingPeriodMetadataId}:
    parameters:
      - in: path
        name: accountingPeriodMetadataId
        schema:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        required: true
        description: The id of the accounting period metadata.
    patch:
      summary: Update accounting period metadata.
      description: Update accounting period metadata.
      tags:
        - 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/ConcessionMetadata:
    get:
      summary: Find concession metadata.
      description: Find concession metadata.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - concessionMetadataRowId
                - concessionMetadataId
                - concessionId
                - percentage
                - 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:
                - concessionMetadataRowId
                - concessionMetadataId
                - concessionId
                - percentage
                - 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:
                - Concession
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#ConcessionMetadata"
                    value:
                      - "@odata.etag": 8a7c6124-574b-4725-9105-834924437087
                        concessionMetadataRowId: 14
                        concessionMetadataId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
                        concessionId: 1
                        percentage: 84.021
                        validFrom: 2025-01-01T00:00:00.000
                        validUntil: null
                      - "@odata.etag": 90d4cf7b-86c8-4111-975b-af332b1507e5
                        concessionMetadataRowId: 15
                        concessionMetadataId: 39720be0-af88-486a-b5e2-faea7eb5b352
                        concessionId: 2
                        percentage: 15.979
                        validFrom: 2025-01-01T00:00:00.000
                        validUntil: null
                      - "@odata.etag": 08b684af-7fe5-44ee-ad99-dab0f57c42bb
                        concessionMetadataRowId: 16
                        concessionMetadataId: 274db383-96dd-410e-a07e-0b9e3040ac91
                        concessionId: 1
                        percentage: 83.021
                        validFrom: 2024-12-01T00:00:00.000
                        validUntil: 2024-12-31T23:59:59.999
                      - "@odata.etag": 640270c1-8dff-468e-9a5b-459e57b3ae13
                        concessionMetadataRowId: 17
                        concessionMetadataId: 03959bc5-83f2-4ac7-9bf5-67e0f2a6eace
                        concessionId: 2
                        percentage: 16.979
                        validFrom: 2024-12-01T00:00:00.000
                        validUntil: 2024-12-31T23:59:59.999
                      - "@odata.etag": a03c2a52-d65d-40c6-828b-18ce07df1d68
                        concessionMetadataRowId: 18
                        concessionMetadataId: d5b7d8f6-5cb8-482e-9d9a-68909dc7b5d3
                        concessionId: 1
                        percentage: 85.021
                        validFrom: 2024-11-01T00:00:00.000
                        validUntil: 2024-11-30T23:59:59.999
                      - "@odata.etag": 4eb2fbe7-8dca-4ac9-a59d-379d56611bb4
                        concessionMetadataRowId: 19
                        concessionMetadataId: 5ee5f86f-ab00-4630-b130-4714fd060d1a
                        concessionId: 2
                        percentage: 14.979
                        validFrom: 2024-11-01T00:00:00.000
                        validUntil: 2024-11-30T23:59:59.999
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /concessionmetadata:
    post:
      summary: Add concession metadata.
      description: Add concession metadata.
      tags:
        - 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /concessionmetadata/{concessionMetadataId}:
    parameters:
      - in: path
        name: concessionMetadataId
        schema:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        required: true
        description: The id of the concession metadata.
    patch:
      summary: Update concession metadata.
      description: Update concession metadata.
      tags:
        - 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: |
                  In this example, the whole concession distribution is updated.
                value:
                  concessionId: 1
                  percentage: 80.042
                  validFrom: 2025-02-01T00:00:00.000
                  validUntil: 2025-02-28T23:59:59.999
              Update the validity of a concession distribution:
                summary: Update the validity of 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
          content:
            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
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
    delete:
      summary: Delete concession metadata.
      description: |
        Delete concession metadata. Note that concession metadata can only be deleted
        if the validFrom is in the future.
      tags:
        - Metadata v2.2
      responses:
        "200":
          description: OK
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
  /Odata/Concession:
    get:
      summary: Find concessions.
      description: Find concessions.
      tags:
        - Odata
      parameters:
        - $ref: "#/components/parameters/top"
        - $ref: "#/components/parameters/skip"
        - $ref: "#/components/parameters/filter"
        - $ref: "#/components/parameters/count"
        - name: $orderby
          in: query
          description: Order items by property values
          required: false
          style: form
          explode: false
          schema:
            uniqueItems: true
            type: array
            items:
              type: string
              enum:
                - concessionMetadataRowId
                - concessionMetadataId
                - concessionId
                - percentage
                - 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:
                - concessionMetadataRowId
                - concessionMetadataId
                - concessionId
                - percentage
                - validFrom
                - validUntil
      responses:
        "200":
          description: OK
          content:
            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:
                    "@odata.context": "$metadata#Concession"
                    value:
                      - "@odata.etag": 6962e56b-c7dd-3336-9627-6687f007ee07
                        concessionRowId: 1
                        concessionId: 1
                        name: RAIL
                      - "@odata.etag": b4eb7b82-9ecb-424f-a3e3-c532f0b763a4
                        concessionRowId: 2
                        concessionId: 2
                        name: BUS
      security:
        - default: []
      x-auth-type: Application & Application User
      x-throttling-tier: Unlimited
components:
  securitySchemes:
    default:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://api.integratielaag.nl/authorize
          scopes: {}
  schemas:
    unavailable:
      type: object
    TransactionItemsGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#TransactionItem
        value:
          type: array
          items:
            $ref: "#/components/schemas/TransactionItem"
    TransactionItem:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 6962e56b-c7dd-3336-9627-6687f007ee07
        transactionItemRowId:
          type: integer
          example: 3231
        transactionItemId:
          type: string
          example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
        transactionType:
          type: string
          enum:
            - sales
          example: sales
        sourceName:
          type: string
          example: HTM-website
        transactionId:
          type: string
          example: 1001236
        transactionLineId:
          type: string
          nullable: true
          example: 1
        name:
          type: string
          example: HTM Maandkorting 20%
        quantity:
          type: integer
          example: 1
        taxCode:
          type: string
          example: V21
        amountExclTax:
          type: integer
          example: 100
        amountInclTax:
          type: integer
          example: 121
        amountTax:
          type: integer
          example: 21
        occurredOn:
          type: string
          format: date-time
          example: 2024-10-04T00:00:00Z
        type:
          type: string
          enum:
            - debit
            - credit
          example: debit
        articleNumber:
          type: string
          nullable: true
          example: 4031
        status:
          type: string
          enum:
            - created
            - succeeded
            - failed
            - returned to trx-db
            - returned to src
            - re-entered
          example: created
        aggregationReference:
          type: string
          nullable: true
          example: FIKO-123456
        accountingSystemReference:
          type: string
          nullable: true
          example: U4F-123456
          required:
            - transactionItemId
            - transactionType
            - sourceName
            - transactionId
            - name
            - quantity
            - taxCode
            - amountExclTax
            - amountInclTax
            - amountTax
            - occurredOn
            - type
            - status
    TransactionItemsPostRequestBody:
      type: object
      properties:
        transactionItems:
          type: array
          items:
            type: object
            properties:
              transactionType:
                type: string
                enum:
                  - sales
                example: sales
              sourceName:
                type: string
                example: HTM-website
              transactionId:
                type: string
                example: 1001236
              transactionLineId:
                type: string
                nullable: true
                example: 1
              name:
                type: string
                example: HTM Maandkorting 20%
              quantity:
                type: integer
                example: 1
              taxCode:
                type: string
                example: V21
              amountExclTax:
                type: integer
                example: 100
              amountInclTax:
                type: integer
                example: 121
              amountTax:
                type: integer
                example: 21
              occurredOn:
                type: string
                format: date-time
                example: 2024-10-04T00:00:00Z
              type:
                type: string
                enum:
                  - debit
                  - credit
                example: debit
              articleNumber:
                type: string
                nullable: true
                example: 4031
            required:
              - sourceName
              - transactionType
              - transactionId
              - name
              - quantity
              - taxCode
              - amountExclTax
              - amountInclTax
              - amountTax
              - occurredOn
              - type
    TransactionItemsPostResponseBody:
      type: object
      properties:
        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:
        - startTime
        - status
        - clientTrackingId
        - callbackurl
        - retryAfter
    TransactionItemsBulkBadRequestResponseBody:
      type: object
      properties:
        type:
          type: string
          format: url
          example: https://htm.nl/api/v1/probs/fiko/validationerror
        title:
          type: string
          example: Transaction validation failed.
        detail:
          type: string
          example: One ore more transactions in the request are invalid.
        instance:
          type: string
          example: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
        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
            required:
              - detail
              - pointer
              - transactionId
      required:
        - type
        - title
        - detail
        - instance
    TransactionItemsPatchRequestBody:
      type: object
      properties:
        name:
          type: string
          nullable: true
          example: HTM Maandkorting 20%
        quantity:
          type: integer
          nullable: true
          example: 1
        taxCode:
          type: string
          nullable: true
          example: V21
        amountExclTax:
          type: integer
          nullable: true
          example: 100
        amountInclTax:
          type: integer
          nullable: true
          example: 121
        amountTax:
          type: integer
          nullable: true
          example: 21
        occurredOn:
          type: string
          nullable: true
          format: date-time
          example: 2024-10-04T00:00:00Z
        type:
          type: string
          nullable: true
          enum:
            - debit
            - credit
          example: debit
        articleNumber:
          type: string
          nullable: true
          example: 4031
        status:
          type: string
          enum:
            - created
            - succeeded
            - failed
            - returned to trx-db
            - returned to src
            - re-entered
          example: created
        aggregationReference:
          type: string
          nullable: true
          example: FIKO-123456
        accountingSystemReference:
          type: string
          nullable: true
          example: U4F-123456
    TransactionItemsPatchResponseBody:
      type: object
      properties:
        transactionItemId:
          type: string
          format: uuid
          example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
      required:
        - transactionItemId
    ProcessingFailuresPostRequestBody:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          example: 2022-01-01 00:00:00
        element:
          type: string
          example: costCenter
        value:
          type: string
          example: 84955
        reasonCode:
          type: string
          example: "002"
        reasonDescription:
          type: string
          example: Contra account does not exist.
        resolved:
          type: boolean
          example: false
        change:
          type: string
          nullable: true
          example: Adapt config
      required:
        - timestamp
        - element
        - value
        - reasonCode
        - reasonDescription
        - resolved
    ProcessingFailuresPostResponseBody:
      type: object
      properties:
        processingFailureId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
      required:
        - processingFailureId
    ProcessingFailuresGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#ProcessingFailure
        value:
          type: array
          items:
            $ref: "#/components/schemas/ProcessingFailure"
    ProcessingFailure:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 464155e4-0018-3676-8102-42429f14f2ed
        processingFailureRowId:
          type: integer
          example: 9
        processingFailureId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        transactionItemId:
          type: string
          format: uuid
          example: 2d77d978-7141-499a-84ad-93fad8ee03ce
        timestamp:
          type: string
          format: date-time
          example: 2022-01-01 00:00:00
        element:
          type: string
          example: costCenter
        value:
          type: string
          example: 84955
        reasonCode:
          type: string
          example: "002"
        reasonDescription:
          type: string
          example: Contra account does not exist.
        resolved:
          type: boolean
          example: false
        change:
          type: string
          nullable: true
          example: Adapt config
      required:
        - processingFailureId
        - transactionItemId
        - timestamp
        - element
        - value
        - reasonCode
        - reasonDescription
        - resolved
    ProcessingFailuresPatchRequestBody:
      type: object
      properties:
        resolved:
          type: boolean
          nullable: true
          example: true
        change:
          type: string
          nullable: true
          example: Adapt config
    ProcessingFailuresPatchResponseBody:
      type: object
      properties:
        processingFailureId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
      required:
        - processingFailureId
    TransactionAuditTrailsPostRequestBody:
      type: object
      properties:
        user:
          type: string
          example: fiko
        timestamp:
          type: string
          format: date-time
          example: 2022-01-01 00:00:00
        action:
          type: string
          enum:
            - create
            - update
          example: create
        status:
          type: string
          enum:
            - created
            - succeeded
            - failed
            - returned to trx-db
            - returned to src
            - re-entered
          example: created
        description:
          type: string
          nullable: true
          example: Transaction created.
        correlationId:
          type: string
          format: uuid
          nullable: true
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
      required:
        - user
        - timestamp
        - action
        - status
    TransactionAuditTrailsPostResponseBody:
      type: object
      properties:
        transactionAuditTrailId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
      required:
        - transactionAuditTrailId
    TransactionAuditTrailsGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#TransactionAuditTrail
        value:
          type: array
          items:
            $ref: "#/components/schemas/TransactionAuditTrail"
    TransactionAuditTrail:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: a669b92c-1a10-3dd6-b4d1-efaed0629db8
        transactionAuditTrailRowId:
          type: integer
          example: 8218
        transactionAuditTrailId:
          type: string
          format: uuid
          example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
        transactionItemId:
          type: string
          format: uuid
          example: d667d293-aa82-4c9e-9b10-77cffc9058a1
        user:
          type: string
          example: fiko
        timestamp:
          type: string
          format: date-time
          example: 2022-01-01 00:00:00
        action:
          type: string
          enum:
            - create
            - update
          example: create
        status:
          type: string
          enum:
            - created
            - succeeded
            - failed
            - returned to trx-db
            - returned to src
            - re-entered
          example: created
        description:
          type: string
          nullable: true
          example: Transaction created.
        correlationId:
          type: string
          format: uuid
          nullable: true
          example: a3891560-3084-42cb-867c-f289e7cda47d
      required:
        - transactionAuditTrailId
        - transactionItemId
        - user
        - timestamp
        - action
        - status
    BookingProcessesGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#BookingProcess
        value:
          type: array
          items:
            $ref: "#/components/schemas/BookingProcess"
    BookingProcess:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 9e8b14cf-c03a-3be7-b9ec-ef5dd6948217
        bookingProcessRowId:
          type: integer
          example: 10
        bookingProcessId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        name:
          type: string
          example: Verkooptransacties
        transactionType:
          type: string
          enum:
            - sales
          example: sales
        identifyingFieldName:
          type: string
          nullable: true
          example: articleNumber
      required:
        - bookingProcessId
        - name
        - transactionType
    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:
        "@odata.context":
          type: string
          example: $metadata#BookingMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/BookingMetadata"
    BookingMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: f477014f-8bf2-3e72-b9b6-1bb609840b61
        bookingMetadataRowId:
          type: integer
          example: 13
        bookingMetadataId:
          type: string
          format: uuid
          example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
        bookingProcessId:
          type: string
          format: uuid
          example: 37a8095b-19db-498f-9349-5f37d21c5bdf
        name:
          type: string
          example: Dagkaarten
        description:
          type: string
          example: Dagkaarten nov. 2024
        documentCode:
          type: string
          example: OPBR-FIKO
        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
        - name
        - description
        - documentCode
        - hasSeparateTaxLine
        - hasLinePerIdentifyingField
        - hasLinePerSource
        - hasLinePerConcession
        - validFrom
    BookingMetadataPostRequestBody:
      type: object
      properties:
        name:
          type: string
          example: Dagkaarten
        description:
          type: string
          example: Dagkaarten nov. 2024
        documentCode:
          type: string
          example: OPBR-FIKO
        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:
        - name
        - description
        - 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:
        name:
          type: string
          nullable: true
          example: Dagkaarten
        description:
          type: string
          nullable: true
          example: Dagkaarten nov. 2024
        documentCode:
          type: string
          nullable: true
          example: OPBR-FIKO
        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:
        "@odata.context":
          type: string
          example: $metadata#BookingGroupField
        value:
          type: array
          items:
            $ref: "#/components/schemas/BookingGroupField"
    BookingGroupField:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: ef520db0-4e3d-39a0-926f-f37ad49bb7cf
        bookingGroupFieldRowId:
          type: integer
          example: 8
        bookingGroupFieldId:
          type: string
          format: uuid
          example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
        bookingMetadataId:
          type: string
          format: uuid
          example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
        identifyingFieldValue:
          type: string
          example: 1737
      required:
        - bookingGroupFieldId
        - bookingMetadataId
        - identifyingFieldValue
    BookingLineMetadataPostRequestBody:
      type: object
      properties:
        name:
          type: string
          example: Dagkaart - BUS
        description:
          type: string
          example: Dagkaarten nov. 2024 BUS
        sourceMetadataId:
          type: string
          format: uuid
          example: null
          nullable: true
        identifyingFieldValue:
          type: string
          example: null
          nullable: true
        concessionId:
          type: integer
          example: 1
          nullable: true
        isContraAccount:
          type: boolean
          example: false
        lineType:
          type: string
          enum:
            - summary
            - analysis
            - tax
          example: summary
        lineSense:
          type: string
          enum:
            - debit
            - credit
          example: credit
        department:
          type: string
          example: 900
        costType:
          type: string
          example: 84956
        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
        - description
        - isContraAccount
        - lineType
        - lineSense
        - department
        - costType
    BookingLineMetadataPostResponseBody:
      type: object
      properties:
        bookingLineMetadataId:
          type: string
          format: uuid
          example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
      required:
        - bookingLineMetadataId
    BookingLineMetadataGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#BookingLineMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/BookingLineMetadata"
    BookingLineMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: c0afe2d6-f4b2-321a-ae6b-2dc72b25ebc1
        bookingLineMetadataRowId:
          type: integer
          example: 10
        bookingLineMetadataId:
          type: string
          format: uuid
          example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
        bookingMetadataId:
          type: string
          format: uuid
          example: 12b4d128-0ab8-4a4a-944d-25b83de38b27
        name:
          type: string
          example: Dagkaart - RAIL
        description:
          type: string
          example: Dagkaarten nov. 2024 RAIL
        sourceMetadataId:
          type: string
          format: uuid
          example: db7e5899-3904-4b53-bd62-a56aef34c66d
          nullable: true
        identifyingFieldValue:
          type: string
          example: null
          nullable: true
        concessionId:
          type: integer
          example: 1
          nullable: true
        isContraAccount:
          type: boolean
          example: false
        lineType:
          type: string
          enum:
            - summary
            - analysis
            - tax
          example: summary
        lineSense:
          type: string
          enum:
            - debit
            - credit
          example: credit
        department:
          type: string
          example: 900
        costType:
          type: string
          example: 84956
        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
        - description
        - isContraAccount
        - lineType
        - lineSense
        - department
        - costType
    BookingLineMetadataPatchRequestBody:
      type: object
      properties:
        name:
          type: string
          example: Dagkaart - RAIL
          nullable: true
        description:
          type: string
          example: Dagkaarten nov. 2024 RAIL
          nullable: true
        sourceMetadataId:
          type: string
          format: uuid
          example: null
          nullable: true
        identifyingFieldValue:
          type: string
          example: null
          nullable: true
        concessionId:
          type: integer
          example: 1
          nullable: true
        isContraAccount:
          type: boolean
          example: false
          nullable: true
        lineType:
          type: string
          enum:
            - summary
            - analysis
            - tax
          example: summary
          nullable: true
        lineSense:
          type: string
          enum:
            - debit
            - credit
          example: credit
          nullable: true
        department:
          type: string
          example: 900
          nullable: true
        costType:
          type: string
          example: 84956
          nullable: true
        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
    BookingLineMetadataPatchResponseBody:
      type: object
      properties:
        bookingLineMetadataId:
          type: string
          format: uuid
          example: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
      required:
        - bookingLineMetadataId
    MetadataAuditTrailsGetResponseBody:
      type: object
      properties:
        metadataAuditTrails:
          type: array
          items:
            type: object
            properties:
              metadataAuditTrailId:
                type: string
                format: uuid
                example: b6161270-eb08-4242-90ec-967d5db62070
              source:
                type: string
                example: FMT
              endpoint:
                type: string
                format: url
                example: https://dev.api.htm.nl/v2/productmetadata
              operation:
                type: string
                enum:
                  - GET
                  - POST
                  - PATCH
                  - DELETE
                example: POST
              requestBody:
                type: string
                format: json
                example: { "json": "data" }
              responseCode:
                type: integer
                example: 200
              responseBody:
                type: string
                format: json
                example: { "json": "data" }
              user:
                type: string
                example: ad.vogelaar
              timestamp:
                type: string
                format: date-time
                example: 2022-01-01 00:00:00
              correlationId:
                type: string
                format: uuid
                nullable: true
                example: 662de47c-d809-41bd-b3f6-5c7e1dc5c030
            required:
              - metadataAuditTrailId
              - source
              - endpoint
              - operation
              - requestBody
              - responseCode
              - responseBody
              - user
              - timestamp
        href:
          type: string
          nullable: true
          example: null
      required:
        - metadataAuditTrails
    MetadataAuditTrailsPostRequestBody:
      type: object
      properties:
        source:
          type: string
          example: FMT
        endpoint:
          type: string
          format: url
          example: https://dev.api.htm.nl/v2/productmetadata
        operation:
          type: string
          enum:
            - GET
            - POST
            - PATCH
            - DELETE
          example: POST
        requestBody:
          type: string
          format: json
          example: { "json": "data" }
        responseCode:
          type: integer
          example: 200
        responseBody:
          type: string
          format: json
          example: { "json": "data" }
        user:
          type: string
          example: ad.vogelaar
        timestamp:
          type: string
          format: date-time
          example: 2022-01-01 00:00:00
        correlationId:
          type: string
          format: uuid
          nullable: true
          example: 662de47c-d809-41bd-b3f6-5c7e1dc5c030
      required:
        - source
        - endpoint
        - operation
        - requestBody
        - responseCode
        - responseBody
        - user
        - timestamp
    MetadataAuditTrailsPostResponseBody:
      type: object
      properties:
        metadataAuditTrailId:
          type: string
          format: uuid
          example: b6161270-eb08-4242-90ec-967d5db62070
      required:
        - metadataAuditTrailId
    TaxMetadataGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#TaxMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/TaxMetadata"
    TaxMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: e4e7c773-eb7a-3fe0-960d-df1744127a7b
        taxMetadataRowId:
          type: integer
          example: 13
        taxMetadataId:
          type: string
          format: uuid
          example: 192882fe-3f51-46bb-bfdb-2e4cb31ef925
        taxCode:
          type: string
          example: V21
        taxPercentage:
          type: number
          example: 21
        description:
          type: string
          example: BTW VERKOOP HOOG 21%
        weFactTaxCode:
          type: string
          example: V21
          nullable: true
        validFrom:
          type: string
          format: date-time
          example: 2024-03-22T09:00:00
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
      required:
        - taxMetadataId
        - taxCode
        - taxPercentageAmount
        - description
        - validFrom
    TaxMetadataPostRequestBody:
      type: object
      properties:
        taxCode:
          type: string
          example: V21
        taxPercentage:
          type: number
          example: 21
        description:
          type: string
          example: BTW VERKOOP HOOG 21%
        weFactTaxCode:
          type: string
          example: V21
          nullable: true
        validFrom:
          type: string
          format: date-time
          example: 2024-03-22T09:00:00
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
      required:
        - taxCode
        - taxPercentageAmount
        - description
        - validFrom
    TaxMetadataPostResponseBody:
      type: object
      properties:
        taxMetadataId:
          type: string
          format: uuid
          example: 192882fe-3f51-46bb-bfdb-2e4cb31ef925
      required:
        - taxMetadataId
    TaxMetadataPatchRequestBody:
      type: object
      properties:
        taxCode:
          type: string
          example: V21
          nullable: true
        taxPercentageAmount:
          type: number
          example: 21
          nullable: true
        description:
          type: string
          example: BTW VERKOOP HOOG 21%
          nullable: true
        weFactTaxCode:
          type: string
          example: V21
          nullable: true
        validFrom:
          type: string
          format: date-time
          example: 2024-03-22T09:00:00
          nullable: true
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
    TaxMetadataPatchResponseBody:
      type: object
      properties:
        taxMetadataId:
          type: string
          format: uuid
          example: 192882fe-3f51-46bb-bfdb-2e4cb31ef925
      required:
        - taxMetadataId
    SourceMetadataGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#SourceMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/SourceMetadata"
    SourceMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: d7df8249-3e72-35f2-a069-d845e8e2cbba
        sourceMetadataRowId:
          type: integer
          example: 2
        sourceMetadataId:
          type: string
          format: uuid
          example: bc4ea24a-27a5-40e8-bbbc-57a105afaaa0
        incomingName:
          type: string
          example: HTM-website
        incomingEntity:
          type: string
          example: OrderLine
        outgoingName:
          type: string
          example: Website Verkopen
        businessOwner:
          type: string
          example: Koos Verweg
        rejectionProcessing:
          type: string
          example: system
        rejectionInfo:
          type: string
          example: api.htm.nl/v2/account/12345/msgs/abc
        validFrom:
          type: string
          format: date-time
          example: 2025-01-01T00:00:00.000
        validUntil:
          type: string
          format: date-time
          example: null
          nullable: true
      required:
        - sourceMetadataId
        - incomingName
        - incomingEntity
        - outgoingName
        - businessOwner
        - rejectionProcessing
        - rejectionInfo
        - validFrom
    SourceMetadataPostRequestBody:
      type: object
      properties:
        incomingName:
          type: string
          example: HTM-website
        incomingEntity:
          type: string
          example: OrderLine
        outgoingName:
          type: string
          example: Website Verkopen
        businessOwner:
          type: string
          example: Koos Verweg
        rejectionProcessing:
          type: string
          example: system
        rejectionInfo:
          type: string
          example: api.htm.nl/v2/account/12345/msgs/abc
        validFrom:
          type: string
          format: date-time
          example: 2025-01-01T00:00:00.000
        validUntil:
          type: string
          format: date-time
          example: null
          nullable: true
      required:
        - incomingName
        - incomingEntity
        - outgoingName
        - businessOwner
        - rejectionProcessing
        - rejectionInfo
        - validFrom
    SourceMetadataPostResponseBody:
      type: object
      properties:
        sourceMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - sourceMetadataId
    SourceMetadataPatchRequestBody:
      type: object
      properties:
        incomingName:
          type: string
          example: HTM-website
          nullable: true
        incomingEntity:
          type: string
          example: OrderLine
          nullable: true
        outgoingName:
          type: string
          example: Website Verkopen
          nullable: true
        businessOwner:
          type: string
          example: Koos Verweg
          nullable: true
        rejectionProcessing:
          type: string
          example: system
          nullable: true
        rejectionInfo:
          type: string
          example: api.htm.nl/v2/account/12345/msgs/abc
          nullable: true
        validFrom:
          type: string
          format: date-time
          example: 2025-01-01T00:00:00.000
          nullable: true
        validUntil:
          type: string
          format: date-time
          example: null
          nullable: true
    SourceMetadataPatchResponseBody:
      type: object
      properties:
        sourceMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - sourceMetadataId
    AccountingPeriodMetadataGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#AccountingPeriodMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/AccountingPeriodMetadata"
    AccountingPeriodMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 333d6b7d-b709-3b89-89e0-bcb3d5fdddfc
        accountingPeriodMetadataRowId:
          type: integer
          example: 1
        accountingPeriodMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
        accountingPeriod:
          type: string
          example: 2024/01
        isOpen:
          type: boolean
          example: true
      required:
        - accountingPeriodMetadataId
        - accountingPeriod
        - isOpen
    AccountingPeriodMetadataPostRequestBody:
      type: object
      properties:
        accountingPeriod:
          type: string
          example: 2024/01
        isOpen:
          type: boolean
          example: true
      required:
        - accountingPeriod
        - isOpen
    AccountingPeriodMetadataPostResponseBody:
      type: object
      properties:
        accountingPeriodMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - accountingPeriodMetadataId
    AccountingPeriodMetadataPatchRequestBody:
      type: object
      properties:
        isOpen:
          type: boolean
          example: true
      required:
        - isOpen
    AccountingPeriodMetadataPatchResponseBody:
      type: object
      properties:
        accountingPeriodMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - accountingPeriodMetadataId
    ConcessionMetadataGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#ConcessionMetadata
        value:
          type: array
          items:
            $ref: "#/components/schemas/ConcessionMetadata"
    ConcessionMetadata:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 77c78584-7ce8-3cf5-b89e-73b888d72d70
        concessionMetadataRowId:
          type: integer
          example: 14
        concessionMetadataId:
          type: string
          format: en
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
        concessionId:
          type: integer
          example: 1
        percentage:
          type: number
          example: 84.021
        validFrom:
          type: string
          format: date-time
          example: 2024-01-01T00:00:00.000
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
      required:
        - concessionMetadataId
        - concessionId
        - percentage
        - validFrom
    ConcessionMetadataPostRequestBody:
      type: object
      properties:
        concessionId:
          type: integer
          example: 1
        percentage:
          type: number
          example: 84.021
        validFrom:
          type: string
          format: date-time
          example: 2024-01-01T00:00:00.000
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
      required:
        - concessionId
        - percentage
        - validFrom
    ConcessionMetadataPostResponseBody:
      type: object
      properties:
        concessionMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - concessionMetadataId
    ConcessionMetadataPatchRequestBody:
      type: object
      properties:
        concessionId:
          type: integer
          example: 1
        percentage:
          type: number
          example: 84.021
        validFrom:
          type: string
          format: date-time
          example: 2024-01-01T00:00:00.000
        validUntil:
          type: string
          format: date-time
          nullable: true
          example: null
    ConcessionMetadataPatchResponseBody:
      type: object
      properties:
        concessionMetadataId:
          type: string
          format: uuid
          example: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
      required:
        - concessionMetadataId
    ConcessionsGetResponseBody:
      type: object
      properties:
        "@odata.context":
          type: string
          example: $metadata#Concession
        value:
          type: array
          items:
            $ref: "#/components/schemas/Concession"
    Concession:
      type: object
      properties:
        "@odata.etag":
          type: string
          example: 49bfa10d-b80d-3f2f-b3c2-9a5da3182cc3
        concessionRowId:
          type: integer
          example: 1
        concessionId:
          type: integer
          example: 1
        name:
          type: string
          example: RAIL
      required:
        - concessionId
        - name
    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:
        type:
          type: string
          format: url
          example: "https://example.com/probs/out-of-credit"
        title:
          type: string
          example: "You do not have enough credit."
        detail:
          type: string
          example: "Your current balance is 30, but that costs 50."
        instance:
          type: string
          example: "/account/12345/msgs/abc"
        balance:
          type: string
          example: "30"
        accounts:
          type: array
          items:
            type: string
            example:
              - "/account/12345"
              - "/account/67890"
  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
