Skip to main content

Complete OpenAPI Specification

Below is the complete OpenAPI specification for the Procuros API v2. You can copy this content and save it as openapi-v2.yaml for use with your development tools.
openapi: 3.0.3
info:
  title: 'Procuros API'
  description: 'Manage Procuros Transactions.'
  version: 2.0.0
servers:
  - url: https://api.procuros.io/
  - url: https://api.procuros-staging.io/
security:
  - api_token: []
components:
  securitySchemes:
    api_token:
      type: http
      scheme: bearer
      description: 'The API Token of your ERP Connection.'
  schemas:
    Attachment:
      type: object
      properties:
        fileName:
          type: string
          description: 'Name of the file.'
        url:
          type: string
          format: uri
          description: 'URL to the file.'
        mimeType:
          type: string
          description: 'MIME type of the file.'
    Date:
      type: string
      format: date
      pattern: '^\d{4}-\d{2}-\d{2}$'
      example: '2021-11-11'

    DateTime:
      type: string
      format: date-time
      pattern: \d{4}(.\d{2}){2}(\s|T)(\d{2}.){2}\d{2}(.\d{6}(Z?))?
      example: '2021-10-23T00:00:00.000000Z'

    Currency:
      type: string
      description: 'ISO 4217 standard three-letter currency code.'
      pattern: '^[A-Z]{3}$'
      example: 'EUR'

    PaymentTerm:
      type: object
      required:
        - payInNumberOfDays
        - percentage
      properties:
        payInNumberOfDays:
          type: integer
          example: 7
        percentage:
          type: number
          description: 'Discount in % which is granted if payment is made not later than payInNumberOfDays after invoice date.'
          format: float
          example: 3.5

    Tax:
      type: object
      required:
        - amount
        - percentage
      properties:
        amount:
          type: number
          format: float
          description: 'Tax value in currency.'
          example: 0.15
        percentage:
          type: number
          format: float
          description: 'Tax value in percentage.'
          example: 19.0
        description:
          type: string
          nullable: true
          example: 'Total item tax.'

    UnitOfMeasure:
      type: string
      description: 'Subset of the the UN/CEFACT Unit of Measure Common Codes.'
      default: EA
      enum:
        - EA
        - GRM
        - HUR
        - KGM
        - LTR
        - MLT
        - MTK
        - MTR
        - PCK
        - SET
        - CS
        - CA
        - DAY
        - WEE
        - MON
        - CT
        - CQ
        - CU
        - BJ
        - BO
        - MTQ
        - PF
        - BG
        - RO
        - TNE
        - BE
        - CMT
        - KMT
        - PR
        - TU

    AdditionalOrderIdentifiers:
      type: object
      description: 'Additional order identifiers for different parties in the transaction.'
      properties:
        supplierOrderIdentifier:
          type: string
          description: 'Supplier order identifier.'
          example: 'SUP-12345'
        shipToOrderIdentifier:
          type: string
          description: 'Ship-to order identifier.'
          example: 'ST-67890'
        shipFromOrderIdentifier:
          type: string
          description: 'Ship-from order identifier.'
          example: 'SF-11111'
        billToOrderIdentifier:
          type: string
          description: 'Bill-to order identifier.'
          example: 'BT-22222'
        billFromOrderIdentifier:
          type: string
          description: 'Bill-from order identifier.'
          example: 'BF-33333'
        finalRecipientOrderIdentifier:
          type: string
          description: 'Final recipient order identifier.'
          example: 'FR-44444'

    ItemIdentifier:
      type: object
      properties:
        identifier:
          type: string
          description: "Party identifier within the 'domain' such as EAN/GTIN on GS1 domain, buyer's internal SKU on BUYER domain, etc."
          example: '43000000000011'
        domain:
          type: string
          description: 'Identification system the identifier belongs to.'
          default: GS1
          enum:
            - GS1
            - BUYER
            - SUPPLIER

    Batch:
      type: object
      properties:
        batchIdentifier:
          type: string
        expirationDate:
          $ref: '#/components/schemas/Date'
        quantity:
          type: number
          format: float
          description: 'How much of the shipping notice line item belongs to this batch. The sum of all batch quantities must be equal to the "shippedQuantity" of the shipping notice line item.'
        netWeight:
          type: number
          format: float
          description: 'Net weight of the batch in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the batch in grams.'

    ModeOfTransport:
      type: string
      description: 'Chosen mode of transport for the shipment.'
      enum:
        - ROAD
        - RAIL
        - AIR
        - SEA
        - MULTIMODAL

    IncoTerms:
      type: string
      description: 'International Commercial Terms (INCOTERMS) as published by the International Chamber of Commerce (ICC).'
      enum:
        - EXW
        - FCA
        - CPT
        - CIP
        - DAP
        - DDP
        - FAS
        - FOB
        - CFR
        - CIF
        - DAT

    Certifications:
      type: object
      description: 'Item certifications for various standards and organizations.'
      properties:
        deBnn:
          type: string
          description: 'DE-BNN (Bundesverband Naturkost Naturwaren) certification number'
          example: 'NUMBER-123'

    # Content Type - Purchase Order
    Order:
      type: object
      title: 'Order'
      description: 'A purchase order is a formal request from a buying organization to a supplier to fulfill a contract. '
      required:
        - header
        - items
      properties:
        header:
          $ref: '#/components/schemas/OrderHeader'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/OrderItem'
        summary:
          description: 'The summary is required if a modificationGroup exists on the order, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
          type: object
          required:
            - subtotalAmount
            - grossAmount
            - netAmount
            - dueAmount
            - totalCharges
            - totalAllowances
            - tax
          properties:
            subtotalAmount:
              type: number
              format: float
              description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
            grossAmount:
              type: number
              format: float
              description: 'The netAmount plus taxes.'
            netAmount:
              type: number
              format: float
              description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
            dueAmount:
              type: number
              format: float
              description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
            totalCharges:
              type: number
              format: float
              description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
            totalAllowances:
              type: number
              format: float
              description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
            tax:
              type: object
              minItems: 1
              required:
                - total
                - items
              properties:
                total:
                  type: number
                  format: float
                description:
                  type: string
                  example: 'Total item tax.'
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - percentage
                      - taxableAmount
                      - taxAmount
                      - category
                    properties:
                      percentage:
                        type: number
                        format: float
                      taxableAmount:
                        type: number
                        format: float
                      taxAmount:
                        type: number
                        format: float
                      category:
                        type: string
                        description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
                      description:
                        type: string
            modificationGroups:
              type: array
              items:
                $ref: '#/components/schemas/ModificationGroup'

    OrderHeader:
      type: object
      required:
        - buyer
        - supplier
        - orderIdentifier
        - orderDate
      properties:
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        orderIdentifier:
          type: string
          example: 'PO9383-R45'
          description: 'Order number assigned to this purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        AdditionalOrderIdentifiers:
          $ref: '#/components/schemas/AdditionalOrderIdentifiers'
        type:
          type: string
          description: 'Type of the order as assigned by sender.'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentTerms:
          type: array
          description: 'Used for defining payment targets and optional discounts.'
          items:
            $ref: '#/components/schemas/PaymentTerm'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within purchase orders'
        deliveryInformation:
          type: string
          maxLength: 100000
          description: 'Delivery information for the order.'
        purchasingInformation:
          type: string
          maxLength: 100000
          description: 'Additional information about purchasing.'
        legalInformation:
          type: string
          maxLength: 100000
          description: 'Legal notices and information.'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to the entire order.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for the order.'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/Attachment'

    OrderItem:
      type: object
      properties:
        lineNumber:
          example: 1
          description: 'LineNumber attribute may remain constant for any item through updates to the order, therefor lineNumbers may not be consecutive.'
          type: integer
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        quantity:
          example: 2.0
          description: 'Defaults to 1.'
          type: number
          format: float
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string
        comments:
          type: string
        unitPrice:
          example: 4.75
          type: number
          format: float
        recommendedRetailPrice:
          example: 5.25
          type: number
          format: float
        tax:
          $ref: '#/components/schemas/Tax'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to this item.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for this item.'
        requestedDeliveryDate:
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedEarliestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedLatestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        deliveryGracePeriodInDays:
          type: integer
          description: 'Delivery grace period in days.'
        minimumRemainingShelfLifeInDays:
          type: integer
          description: 'Minimum remaining shelf life in days.'
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          description: 'Color code of the item.'
        colorName:
          type: string
          description: 'Color name of the item.'
        size:
          type: string
          description: 'Size of the item.'
        dimension:
          type: string
          description: 'Dimension of the item.'
        hsCode:
          type: string
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        brand:
          type: string
          description: 'Brand or manufacturer name of the product (e.g., BOSCH, Kela).'
          example: 'BOSCH'
        consumerGroup:
          type: string
          description: 'Gender for which this item is marketed (e.g., Unisex, Damen, Herren).'
        assortment:
          type: string
          description: 'Collection which the item belongs to (e.g., ME_GEN, COA_FB, COA_G, COA_OR, MB_EP, MB_EX, MB_LS, VCA_CE, LAN_ARP, JCH_IWF, JCH_IWC, LAC_L).'
        category:
          type: string
          description: 'Product category classification (e.g., 1008).'
        subCategory:
          type: string
          description: 'Product sub-category classification.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        modificationGroups:
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'

    OrderResponse:
      type: object
      title: 'Order Response'
      required:
        - header
      properties:
        header:
          $ref: '#/components/schemas/OrderResponseHeader'
        items:
          type: array
          description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. When the type is `CHANGE`, it must contain ALL order line items, regardless whether or not `orderedQuantity` and `confirmedQuantity` are equal.'
          minItems: 1
          items:
            $ref: '#/components/schemas/OrderResponseItem'
        summary:
          description: 'The summary is required if a modificationGroup exists on the order response, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
          type: object
          required:
            - subtotalAmount
            - grossAmount
            - netAmount
            - dueAmount
            - totalCharges
            - totalAllowances
            - tax
          properties:
            subtotalAmount:
              type: number
              format: float
              description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
            grossAmount:
              type: number
              format: float
              description: 'The netAmount plus taxes.'
            netAmount:
              type: number
              format: float
              description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
            dueAmount:
              type: number
              format: float
              description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
            totalCharges:
              type: number
              format: float
              description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
            totalAllowances:
              type: number
              format: float
              description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
            tax:
              type: object
              minItems: 1
              required:
                - total
                - items
              properties:
                total:
                  type: number
                  format: float
                description:
                  type: string
                  example: 'Total item tax.'
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - percentage
                      - taxableAmount
                      - taxAmount
                      - category
                    properties:
                      percentage:
                        type: number
                        format: float
                      taxableAmount:
                        type: number
                        format: float
                      taxAmount:
                        type: number
                        format: float
                      category:
                        type: string
                        description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
                      description:
                        type: string
            modificationGroups:
              type: array
              items:
                $ref: '#/components/schemas/ModificationGroup'

    OrderResponseHeader:
      type: object
      required:
        - buyer
        - supplier
        - orderResponseIdentifier
        - orderResponseDate
        - orderIdentifier
      properties:
        type:
          type: string
          description: 'Type of the order response. `ACCEPT` means the order was accepted exactly as ordered. `REJECT` means the order was fully rejected. `CHANGE` means part of the order was accepted but either line item quantities or delivery date are changed.'
          enum:
            - ACCEPT
            - REJECT
            - CHANGE
        version:
          type: integer
          description: 'If you are sending multiple order responses, this field must be incremented by 1 for each response.'
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        orderResponseIdentifier:
          type: string
          example: 'PO9383-R45'
          description: 'Order number assigned to this purchase order by the buyer.'
        orderResponseDate:
          $ref: '#/components/schemas/DateTime'
        orderIdentifier:
          type: string
          example: 'PO9383-R45'
          description: 'Order number assigned to this purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        AdditionalOrderIdentifiers:
          $ref: '#/components/schemas/AdditionalOrderIdentifiers'
        confirmedDeliveryDate:
          description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. The confirmed delivery date of the order response.'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedDeliveryDate:
          description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. The requested delivery date of the order.'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentTerms:
          type: array
          description: 'Used for defining payment targets and optional discounts.'
          items:
            $ref: '#/components/schemas/PaymentTerm'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within purchase orders'
        deliveryInformation:
          type: string
          maxLength: 100000
          description: 'Delivery information for the order.'
        purchasingInformation:
          type: string
          maxLength: 100000
          description: 'Additional information about purchasing.'
        legalInformation:
          type: string
          maxLength: 100000
          description: 'Legal notices and information.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for the order.'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to the entire order.'

    OrderResponseItem:
      type: object
      properties:
        lineNumber:
          example: 1
          type: integer
        orderLineNumber:
          type: integer
          description: 'The line number of the order item that this response item refers to.'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        orderedQuantity:
          example: 2.0
          type: number
          format: float
        confirmedQuantity:
          example: 2.0
          type: number
          format: float
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedEarliestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedLatestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        confirmedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        confirmedEarliestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        confirmedLatestDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string
        comments:
          type: string
        unitPrice:
          example: 4.75
          type: number
          format: float
        recommendedRetailPrice:
          example: 5.25
          type: number
          format: float
        tax:
          $ref: '#/components/schemas/Tax'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for this item.'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to this item.'
        minimumRemainingShelfLifeInDays:
          type: integer
          description: 'Minimum remaining shelf life in days.'
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          description: 'Color code of the item.'
        colorName:
          type: string
          description: 'Color name of the item.'
        size:
          type: string
          description: 'Size of the item.'
        dimension:
          type: string
          description: 'Dimension of the item.'
        hsCode:
          type: string
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        modificationGroups:
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'
    Invoice:
      type: object
      title: 'Invoice'
      description: 'Invoices describe purchase orders, line items, partners involved, accounting distribution, payment terms, discounts, shipping and special handling, taxes, deposit and prepayment, and remittance information.'
      required:
        - header
        - items
      properties:
        header:
          $ref: '#/components/schemas/InvoiceHeader'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/InvoiceItemWithSubSubItems'
        summary:
          description: 'The summary is required if a modificationGroup exists on the invoice, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
          type: object
          required:
            - dueAmount
          properties:
            subtotalAmount:
              type: number
              format: float
              description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
            grossAmount:
              type: number
              format: float
              description: 'The netAmount plus taxes.'
            netAmount:
              type: number
              format: float
              description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
            dueAmount:
              type: number
              format: float
              description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
            totalCharges:
              type: number
              format: float
              description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
            totalAllowances:
              type: number
              format: float
              description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
            tax:
              type: object
              minItems: 1
              required:
                - total
                - items
              properties:
                total:
                  type: number
                  format: float
                description:
                  type: string
                  example: 'Total item tax.'
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - percentage
                      - taxableAmount
                      - taxAmount
                      - category
                    properties:
                      percentage:
                        type: number
                        format: float
                      taxableAmount:
                        type: number
                        format: float
                      taxAmount:
                        type: number
                        format: float
                      category:
                        type: string
                        description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
                      description:
                        type: string
            modificationGroups:
              type: array
              items:
                $ref: '#/components/schemas/ModificationGroup'

    InvoiceHeader:
      type: object
      required:
        - buyer
        - supplier
        - invoiceIdentifier
        - invoiceDate
        - shippingNoticeIdentifier
        - shippingNoticeDate
        - orderIdentifier
        - orderDate
      properties:
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billFrom:
          description: 'If this is kept empty, the "supplier" is used as the "billFrom" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        invoiceIdentifier:
          type: string
          description: 'Invoice number/reference.'
          example: 'IV-0001'
        invoiceDate:
          $ref: '#/components/schemas/DateTime'
        invoiceDueDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeIdentifier:
          type: string
          description: 'Shipping notice number/reference.'
          example: 'SN-0001'
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        AdditionalOrderIdentifiers:
          $ref: '#/components/schemas/AdditionalOrderIdentifiers'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        paymentTerms:
          type: array
          description: 'Used for defining payment targets and optional discounts.'
          items:
            $ref: '#/components/schemas/PaymentTerm'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within invoices'
        deliveryInformation:
          type: string
          maxLength: 100000
          description: 'Information about the delivery process.'
        purchasingInformation:
          type: string
          maxLength: 100000
          description: 'Additional information about purchasing.'
        legalInformation:
          type: string
          maxLength: 100000
          description: 'Legal notices and information.'
        currency:
          $ref: '#/components/schemas/Currency'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to the entire invoice. Does not affect invoice calculations.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for the invoice.'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    InvoiceItem:
      type: object
      required:
        - lineNumber
        - identifiers
        - isDepositItem
        - isInvoicedItem
        - quantity
        - unitPrice
        - tax
      properties:
        lineNumber:
          type: integer
          example: 1
        shippingNoticeIdentifier:
          type: string
          description: 'Shipping notice number/reference.'
          example: 'SN-0001'
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeLineNumber:
          type: integer
          example: 1
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        orderLineNumber:
          type: integer
          example: 1
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        isInvoicedItem:
          type: boolean
          description: 'Determine if this item is the invoiced item. Only invoiced items can have a unitPrice != 0. If an item is not invoiced and no parent item is invoiced either, sub items must exist.'
        description:
          type: string
          description: 'Item description.'
        comments:
          type: string
        quantity:
          type: number
          format: float
          example: 1.0
          description: 'For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        freeQuantity:
          type: number
          format: float
          example: 1.0
          default: null
          description: 'The quantity of this item that is free of charge. For subitems, this must be the total free quantity of this item. For example, the parent item is a display of chocolate bars and has free quantity set to 2. Each display contains 50 chocolate bars. Therefore, the free quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        orderedQuantity:
          type: number
          format: float
          example: 1.0
          default: null
          description: 'The quantity ordered by the customer.'
        unitPrice:
          type: number
          format: float
          default: null
          example: 2.00
        recommendedRetailPrice:
          type: number
          format: float
          default: null
          example: 2.50
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          maxLength: 255
          description: 'Color code of the item.'
        colorName:
          type: string
          maxLength: 255
          description: 'Color name of the item.'
        size:
          type: string
          maxLength: 255
          description: 'Size of the item.'
        dimension:
          type: string
          maxLength: 255
          description: 'Dimension of the item.'
        hsCode:
          type: string
          maxLength: 255
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to this item. Does not affect invoice calculations.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for this item.'
        tax:
          $ref: '#/components/schemas/Tax'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        modificationGroups:
          description: 'If a Modification Group is provided, the Invoice Summary is required.'
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'

    InvoiceItemWithSubItems:
      allOf:
        - $ref: '#/components/schemas/InvoiceItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this sub invoice item.'
              items:
                $ref: '#/components/schemas/InvoiceItem'

    InvoiceItemWithSubSubItems:
      allOf:
        - $ref: '#/components/schemas/InvoiceItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this invoice item. Supports two levels of nesting.'
              items:
                $ref: '#/components/schemas/InvoiceItemWithSubItems'

    ShippingNotice:
      type: object
      title: 'Shipping Notice'
      required:
        - header
        - transportUnits
      properties:
        header:
          $ref: '#/components/schemas/ShippingNoticeHeader'
        transportUnits:
          type: array
          description: 'Transport units (e.g. pallets, cartons) contained in the shipment. Can be nested in case of sandwich pallets.'
          minItems: 1
          items:
            $ref: '#/components/schemas/ShippingNoticeTransportUnitWithSubTransportUnits'

    ShippingNoticeHeader:
      type: object
      required:
        - buyer
        - supplier
        - shippingNoticeIdentifier
        - shippingNoticeDate
        - orderIdentifier
      properties:
        buyer:
          allOf:
            - $ref: '#/components/schemas/Party'
        supplier:
          allOf:
            - $ref: '#/components/schemas/Party'
        shipFrom:
          description: 'Used in case the shipment is sent by a third-party logistics provider.'
          allOf:
            - $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        shippingNoticeIdentifier:
          type: string
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        AdditionalOrderIdentifiers:
          $ref: '#/components/schemas/AdditionalOrderIdentifiers'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        despatchDate:
          description: 'If this is kept empty, the "shippingNoticeDate" is used as "despatchDate".'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        carrier:
          type: string
          default: null
          description: 'Carriers company name.'
        trackingNumber:
          type: string
          default: null
        trackingUrl:
          type: string
          default: null
        modeOfTransport:
          $ref: '#/components/schemas/ModeOfTransport'
        incoTerms:
          $ref: '#/components/schemas/IncoTerms'
        shippingMethod:
          type: string
        status:
          type: string
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within purchase orders'
        deliveryInformation:
          type: string
          maxLength: 100000
          description: 'Information about the delivery process.'
        purchasingInformation:
          type: string
          maxLength: 100000
          description: 'Additional information about purchasing.'
        legalInformation:
          type: string
          maxLength: 100000
          description: 'Legal notices and information.'
        currency:
          $ref: '#/components/schemas/Currency'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    ShippingNoticeTransportUnit:
      type: object
      description: 'If a TransportUnit does not contain sub items (like packages on a pallet), it must contain a nonempty list of items. '
      required:
        - items
      properties:
        unitIdentifier:
          type: string
          description: 'Transport unit number. (SSCC or NVE)'
          example: '340000000000001'
        unitType:
          type: string
          description: 'Transport unit type.'
          enum:
            - EURO_PALLET
            - EURO_PALLET_HALF
            - EURO_PALLET_QUARTER
            - CARTON
            - PACKAGE
            - PALLET
            - CONTAINER
        containedTradeUnitCount:
          type: integer
          description: 'Number of contained trade units. (cases, cartons, etc.)'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        despatchDate:
          $ref: '#/components/schemas/DateTime'
        items:
          type: array
          description: 'Line items contained in this transport unit.'
          items:
            $ref: '#/components/schemas/ShippingNoticeItemWithSubSubItems'

    ShippingNoticeTransportUnitWithSubTransportUnits:
      allOf:
        - $ref: '#/components/schemas/ShippingNoticeTransportUnit'
        - type: object
          properties:
            transportUnits:
              type: array
              description: 'Contained transport units (e.g. sandwich pallet layers).'
              items:
                $ref: '#/components/schemas/ShippingNoticeTransportUnit'

    ShippingNoticeItem:
      type: object
      required:
        - lineNumber
        - identifiers
        - isDepositItem
        - orderedQuantity
        - shippedQuantity
      properties:
        lineNumber:
          type: integer
        orderLineNumber:
          type: integer
          description: 'Line number used on the order.'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        description:
          type: string
          description: 'Item description.'
        comments:
          type: string
        orderedQuantity:
          type: number
          description: 'The quantity ordered by the customer. For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        shippedQuantity:
          type: number
          description: 'The quantity shipped to the customer. For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        openQuantityAction:
          type: string
          enum:
            - DISCARDED
            - DELIVERED_LATER
          description: 'Method used to handle mismatches between "orderedQuantity" and "shippedQuantity". Required if "orderedQuantity" and "shippedQuantity" mismatch, otherwise prohibited.'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        unitPrice:
          type: number
          example: 1.50
          format: float
          default: null
        recommendedRetailPrice:
          type: number
          example: 1.75
          format: float
          default: null
        tax:
          $ref: '#/components/schemas/Tax'
        minimumRemainingShelfLifeInDays:
          type: integer
          description: 'Minimum remaining shelf life in days.'
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          maxLength: 255
          description: 'Color code of the item.'
        colorName:
          type: string
          maxLength: 255
          description: 'Color name of the item.'
        size:
          type: string
          maxLength: 255
          description: 'Size of the item.'
        dimension:
          type: string
          maxLength: 255
          description: 'Dimension of the item.'
        hsCode:
          type: string
          maxLength: 255
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        breeder:
          allOf:
            - $ref: '#/components/schemas/Party'
            - type: object
              required:
                - identifiers
              properties:
                identifiers:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/ShippingNoticePartyIdentifier'
        fattener:
          allOf:
            - $ref: '#/components/schemas/Party'
            - type: object
              required:
                - identifiers
              properties:
                identifiers:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/ShippingNoticePartyIdentifier'
        slaughterer:
          allOf:
            - $ref: '#/components/schemas/Party'
            - type: object
              required:
                - identifiers
              properties:
                identifiers:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/ShippingNoticePartyIdentifier'
        cutter:
          allOf:
            - $ref: '#/components/schemas/Party'
            - type: object
              required:
                - identifiers
              properties:
                identifiers:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/ShippingNoticePartyIdentifier'
        slaughterDate:
          $ref: '#/components/schemas/Date'
        tradeClass:
          type: string
          maxLength: 255
        earTag:
          type: string
          maxLength: 255
        birthdate:
          $ref: '#/components/schemas/Date'
        gender:
          type: string
          enum:
            - MALE
            - FEMALE

    ShippingNoticeItemWithSubItems:
      allOf:
        - $ref: '#/components/schemas/ShippingNoticeItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this sub shipping notice item.'
              items:
                $ref: '#/components/schemas/ShippingNoticeItem'

    ShippingNoticeItemWithSubSubItems:
      allOf:
        - $ref: '#/components/schemas/ShippingNoticeItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this shipping notice item. Supports two levels of nesting.'
              items:
                $ref: '#/components/schemas/ShippingNoticeItemWithSubItems'

    # Party
    Party:
      type: object
      required:
        - identifiers
      properties:
        name:
          type: string
          description: 'Mandatory if the deprecated "name" attribute on the "PostalAddress" object is omitted.'
        identifiers:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/PartyIdentifier'
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
        contacts:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Contact'
        financialInstitution:
          type: object
          properties:
            name:
              type: string
            institutionId:
              type: string
            institutionIdDomain:
              type: string
            accountNumber:
              type: string
            accountHolder:
              type: string

    PartyIdentifier:
      type: object
      required:
        - identifier
        - domain
      properties:
        identifier:
          type: string
          description: 'Party identifier within the "domain" such as GLN on GS1 domain, DUNS number on DUNS domain, etc.'
          example: '1100001016310'
        domain:
          type: string
          description: 'Identification system the identifier belongs to.'
          default: GS1
          enum:
            - GS1
            - DUNS
            - VAT_DE
            - FED_TAX
            - SENDER_INTERNAL
            - RECEIVER_INTERNAL

    ShippingNoticePartyIdentifier:
      type: object
      required:
        - identifier
        - domain
      properties:
        identifier:
          type: string
          description: 'Party identifier within the "domain" such as GLN on GS1 domain, DUNS number on DUNS domain, etc.'
          example: '1100001016310'
        domain:
          type: string
          description: 'Identification system the identifier belongs to.'
          default: GS1
          enum:
            - GS1
            - DUNS
            - VAT_DE
            - FED_TAX
            - SENDER_INTERNAL
            - RECEIVER_INTERNAL
            - VVVO
            - VETERINARY

    PostalAddress:
      type: object
      description: 'Depending on the transaction different properties are required. Only on an invoice a full address is required.'
      properties:
        name:
          type: string
          example: 'ACME Germany GmbH - Außenstelle Hamburg'
          deprecated: true
          description: 'Use the "name" attribute on the "Party" object instead.'
        street:
          type: string
          example: 'Sternstrasse 23'
        addressExtra:
          type: string
          example: 'E4'
        city:
          type: string
          example: 'Hamburg'
        postalCode:
          type: string
          example: '21571'
        state:
          type: string
          example: 'HH'
        countryCode:
          type: string
          minLength: 2
          maxLength: 2
          pattern: '^[A-Z]{2}$'
          description: 'ISO 3166-1 standard two-letter country code.'
          example: 'DE'

    Contact:
      type: object
      properties:
        title:
          type: string
          example: 'Prof. Dr.'
        salutation:
          type: string
          example: 'Frau'
        firstName:
          type: string
          example: 'Atikin'
        lastName:
          type: string
          example: 'Iar'
        phone:
          type: string
          example: '+491763021548'
        mobile:
          type: string
          example: '+447881561299'
        email:
          type: string
          example: '[email protected]'
          format: email
        fax:
          type: string
          example: '+491763021548-11'
        department:
          type: string
          example: 'Purchasing'

    ProcurosTransactionId:
      type: string
      description: 'Unique ID assigned to every transaction on the Procuros Network.'
      format: uuid
      example: '949b2f25-fd9d-4c58-8899-b4dc277f8cf9'

    TransactionType:
      type: string
      description: 'Type of transaction.'
      enum:
        - 'ORDER'
        - 'ORDER_RESPONSE'
        - 'SHIPPING_NOTICE'
        - 'INVOICE'
        - 'CREDIT_NOTE'
        - 'DISPATCH_INSTRUCTION'
        - 'DISPATCH_INSTRUCTION_RESPONSE'
        - 'RECEIVAL_NOTICE'
        - 'REMITTANCE_ADVICE'
        - 'PRODUCT_CATALOG'
        - 'INVENTORY_REPORT'
        - 'SALES_REPORT'

    TransactionContent:
      oneOf:
        - '$ref': '#/components/schemas/Order'
        - '$ref': '#/components/schemas/OrderResponse'
        - '$ref': '#/components/schemas/ShippingNotice'
        - '$ref': '#/components/schemas/Invoice'
        - '$ref': '#/components/schemas/CreditNote'
        - '$ref': '#/components/schemas/DispatchInstruction'
        - '$ref': '#/components/schemas/DispatchInstructionResponse'
        - '$ref': '#/components/schemas/ReceivalNotice'
        - '$ref': '#/components/schemas/RemittanceAdvice'
        - '$ref': '#/components/schemas/ProductCatalog'
        - '$ref': '#/components/schemas/InventoryReport'
        - '$ref': '#/components/schemas/SalesReport'

    Transaction:
      type: object
      required:
        - procurosTransactionId
        - status
        - flow
        - createdAt
        - type
        - content
      properties:
        procurosTransactionId:
          $ref: '#/components/schemas/ProcurosTransactionId'
        type:
          $ref: '#/components/schemas/TransactionType'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        flow:
          $ref: '#/components/schemas/TransactionFlow'
        createdAt:
          $ref: '#/components/schemas/DateTime'
        content:
          $ref: '#/components/schemas/TransactionContent'

    TransactionFlow:
      type: string
      description: 'Flow (LIVE or TEST) of the transaction.'
      enum:
        - 'LIVE'
        - 'TEST'

    TransactionStatus:
      type: string
      description: 'Current status of the transaction.'
      enum:
        - 'PENDING'
        - 'SUCCESS'
        - 'FAILED'
        - 'DROPPED'
        - 'UNKNOWN'

    ReceivedTransaction:
      type: object
      required:
        - procurosTransactionId
        - type
        - content
      properties:
        procurosTransactionId:
          $ref: '#/components/schemas/ProcurosTransactionId'
        type:
          $ref: '#/components/schemas/TransactionType'
        content:
          $ref: '#/components/schemas/TransactionContent'

    SentTransaction:
      type: object
      required:
        - type
        - content
      properties:
        type:
          $ref: '#/components/schemas/TransactionType'
        content:
          $ref: '#/components/schemas/TransactionContent'

    ErrorType:
      type: string
      description: 'The type of the error. `DATA` indicates that the error is caused by invalid or insufficient data and can be resolved by a user. `INTERNAL` indicates a system-level error that cannot be fixed by a user.'
      enum:
        - 'DATA'
        - 'INTERNAL'

    InternalErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string

    ClientErrorResponse:
      type: object
      required:
        - message
        - errorUrl
      properties:
        message:
          type: string
        errorUrl:
          type: string
          description: 'URL linking to the error on the Procuros Portal.'

    ValidationError:
      type: object
      additionalProperties:
        type: array
        description: 'List of validation errors.'
        minItems: 1
        items:
          type: string

    GeneralValidationErrorResponse:
      type: object
      required:
        - message
        - errors
      properties:
        message:
          type: string
        errors:
          $ref: '#/components/schemas/ValidationError'

    TransactionValidationErrorResponse:
      type: object
      required:
        - message
        - errors
        - errorUrl
      properties:
        message:
          type: string
        errors:
          $ref: '#/components/schemas/ValidationError'
        errorUrl:
          type: string
          description: 'URL linking to the error on the Procuros Portal.'


    ExportCustomersResult: &ExportTradePartnersResult
      type: array
      items:
        type: object
        required:
          - systemIdentifier
          - isEnabled
          - mainParty
        properties:
          systemIdentifier:
            type: string
            example: 'KU-1029'
            description: 'The internal ERP system identifier this trade partner has on your side. Will be supplied back to you through the "SYNC_ENABLED_TRADE_PARTNERS" task.'
          isEnabled:
            type: boolean
            example: false
            description: 'Indicates whether the trade partner is enabled for Procuros.'
          mainParty:
            description: 'Main party (address + contacts) of the trade partner.'
            allOf:
              - $ref: '#/components/schemas/Party'
          additionalParties:
            type: object
            properties:
              shipTo:
                type: array
                description: 'Additional ship-to (delivery) parties that exist for this trade partner.'
                items:
                  $ref: '#/components/schemas/Party'
              billTo:
                type: array
                description: 'Additional bill-to (billing) parties that exist for this trade partner.'
                items:
                  $ref: '#/components/schemas/Party'
              payTo:
                type: array
                description: 'Additional pay-to (remittance) parties that exist for this trade partner.'
                items:
                  $ref: '#/components/schemas/Party'

    ExportSuppliersResult:
      <<: *ExportTradePartnersResult

    SyncEnabledTradePartnersPayload:
      type: object
      required:
        - customers
        - suppliers
      properties:
        customers:
          type: array
          items:
            type: string
            example: 'KU-1092'
            description: 'Your internal ERP system identifier of the trade partner as supplied to Procuros through your response to the "EXPORT_CUSTOMERS" task.'
        suppliers:
          type: array
          items:
            type: string
            example: 'SU-1092'
            description: 'Your internal ERP system identifier of the trade partner as supplied to Procuros through your response to the "EXPORT_SUPPLIERS" task.'

    ModificationGroup:
      type: object
      required:
        - basis
        - level
        - modifications
      properties:
        basis:
          type: number
          format: float
          example: 1.50
          description: 'The net base amount on which the modifications are applied. For item-level modifications on level 1, this equals the line item subtotal (quantity * unitPrice). For document-level modifications on level 1, this equals the subtotalAmount of the invoice.'
        level:
          type: integer
          example: 1
          description: 'Determines in which order the modifications group should be applied. Starting at 1 and continuously increasing. There should be no modification groups with the same level.'
        modifications:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Modification'

    Modification:
      type: object
      description: 'One of percentage and amount is required.'
      properties:
        type:
          type: string
          description: 'Type of the modification'
          enum:
            - ALLOWANCE
            - CHARGE
        calculationType:
          type: string
          description: 'Type of the calculation'
          enum:
            - ABSOLUTE
            - RELATIVE
        reasonCode:
          type: string
          description: 'Reason for the modification'
          enum:
            - SHIPPING
            - PACKAGING
            - HANDLING
            - DISCOUNT
            - INSURANCE
        description:
          type: string
          description: 'Description for the modification'
        percentage:
          type: number
          format: float
          example: 1.5
        amount:
          type: number
          format: float
          example: 5.5
        tax:
          $ref: '#/components/schemas/Tax'

    CreditNote:
      type: object
      title: 'Credit Note'
      description: 'A credit note is a document sent to a customer in order to correct a mistake on an order or an invoice, or to refund an amount paid for products or services.'
      required:
        - header
        - items
        - summary
      properties:
        header:
          $ref: '#/components/schemas/CreditNoteHeader'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CreditNoteItemWithSubSubItems'
        summary:
          description: 'The summary is required if a modificationGroup exists on the invoice, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
          type: object
          required:
            - dueAmount
          properties:
            subtotalAmount:
              type: number
              format: float
              description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
            grossAmount:
              type: number
              format: float
              description: 'The netAmount plus taxes.'
            netAmount:
              type: number
              format: float
              description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
            dueAmount:
              type: number
              format: float
              description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
            totalCharges:
              type: number
              format: float
              description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
            totalAllowances:
              type: number
              format: float
              description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
            tax:
              type: object
              minItems: 1
              required:
                - total
                - items
              properties:
                total:
                  type: number
                  format: float
                description:
                  type: string
                  example: 'Total item tax.'
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - percentage
                      - taxableAmount
                      - taxAmount
                      - category
                    properties:
                      percentage:
                        type: number
                        format: float
                      taxableAmount:
                        type: number
                        format: float
                      taxAmount:
                        type: number
                        format: float
                      category:
                        type: string
                        description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
                      description:
                        type: string
            modificationGroups:
              type: array
              items:
                $ref: '#/components/schemas/ModificationGroup'

    CreditNoteHeader:
      type: object
      required:
        - buyer
        - supplier
        - creditNoteIdentifier
        - creditNoteDate
      properties:
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billFrom:
          description: 'If this is kept empty, the "supplier" is used as the "billFrom" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        creditNoteIdentifier:
          type: string
          description: 'Credit note number/reference.'
          example: 'CN-0001'
        creditNoteDate:
          $ref: '#/components/schemas/DateTime'
        creditNoteDueDate:
          $ref: '#/components/schemas/DateTime'
        type:
          type: string
          description: 'Credit note message type'
          enum:
            - CORRECTION
            - VALUE_CREDIT
        invoiceIdentifier:
          type: string
          description: 'Invoice number/reference.'
          example: 'IV-0001'
        invoiceDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeIdentifier:
          type: string
          description: 'Shipping notice number/reference.'
          example: 'SN-0001'
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        paymentTerms:
          type: array
          description: 'Used for defining payment targets and optional discounts.'
          items:
            $ref: '#/components/schemas/PaymentTerm'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within invoices'
        deliveryInformation:
          type: string
          maxLength: 100000
          description: 'Information about the delivery process.'
        purchasingInformation:
          type: string
          maxLength: 100000
          description: 'Additional information about purchasing.'
        legalInformation:
          type: string
          maxLength: 100000
          description: 'Legal notices and information.'
        currency:
          $ref: '#/components/schemas/Currency'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to the entire invoice. Does not affect invoice calculations.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for the credit note.'
        reason:
          type: string
          maxLength: 255
          description: 'Reason for the credit note'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    CreditNoteItem:
      type: object
      required:
        - lineNumber
        - identifiers
        - isDepositItem
        - isInvoicedItem
        - quantity
        - unitPrice
        - tax
      properties:
        lineNumber:
          type: integer
          example: 1
        shippingNoticeIdentifier:
          type: string
          description: 'Shipping notice number/reference.'
          example: 'SN-0001'
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeLineNumber:
          type: integer
          example: 1
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        orderLineNumber:
          type: integer
          example: 1
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        isInvoicedItem:
          type: boolean
          description: 'Determine if this item is the invoiced item. Only invoiced items can have a unitPrice != 0. If an item is not invoiced and no parent item is invoiced either, sub items must exist.'
        description:
          type: string
          description: 'Item description.'
        comments:
          type: string
        quantity:
          type: number
          format: float
          example: 1.0
          description: 'For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        freeQuantity:
          type: number
          format: float
          example: 1.0
          default: null
          description: 'The quantity of this item that is free of charge. For subitems, this must be the total free quantity of this item. For example, the parent item is a display of chocolate bars and has free quantity set to 2. Each display contains 50 chocolate bars. Therefore, the free quantity of the "Chocolate Bar" subitem is 100 (2x50).'
        orderedQuantity:
          type: number
          format: float
          example: 1.0
          default: null
          description: 'The quantity ordered by the customer.'
        unitPrice:
          type: number
          format: float
          default: null
          example: 2.00
        recommendedRetailPrice:
          type: number
          format: float
          default: null
          example: 2.50
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          minLength: 2
          maxLength: 2
          pattern: '^[A-Z]{2}$'
          description: 'ISO 3166-1 standard two-letter country code.'
          example: 'DE'
        colorCode:
          type: string
          maxLength: 255
          description: 'Color code of the item.'
        colorName:
          type: string
          maxLength: 255
          description: 'Color name of the item.'
        size:
          type: string
          maxLength: 255
          description: 'Size of the item.'
        dimension:
          type: string
          maxLength: 255
          description: 'Dimension of the item.'
        hsCode:
          type: string
          maxLength: 255
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to this item. Does not affect invoice calculations.'
        reason:
          type: string
          maxLength: 255
          description: 'Reason for the credit note'
        tax:
          $ref: '#/components/schemas/Tax'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        modificationGroups:
          description: 'If a Modification Group is provided, the Invoice Summary is required.'
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for the credit note item.'

    CreditNoteItemWithSubItems:
      allOf:
        - $ref: '#/components/schemas/CreditNoteItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this sub credit note item.'
              items:
                $ref: '#/components/schemas/CreditNoteItem'

    CreditNoteItemWithSubSubItems:
      allOf:
        - $ref: '#/components/schemas/CreditNoteItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this credit note item. Supports two levels of nesting.'
              items:
                $ref: '#/components/schemas/CreditNoteItemWithSubItems'

    DispatchInstruction:
      type: object
      title: 'Dispatch Instruction'
      required:
        - header
        - items
      properties:
        header:
          $ref: '#/components/schemas/DispatchInstructionHeader'
        items:
          type: array
          minItems: 1
          items:
            allOf:
              - $ref: '#/components/schemas/DispatchInstructionItem'
              - type: object
                properties:
                  subItems:
                    type: array
                    description: 'Sub items of this dispatch instruction item. Supports two levels of nesting.'
                    items:
                      allOf:
                        - $ref: '#/components/schemas/DispatchInstructionItem'
                        - type: object
                          properties:
                            subItems:
                              type: array
                              description: 'Sub items of this sub dispatch instruction item.'
                              items:
                                $ref: '#/components/schemas/DispatchInstructionItem'

    DispatchInstructionHeader:
      type: object
      required:
        - shipmentIdentifier
        - shipFrom

      properties:
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        shipmentIdentifier:
          type: string
          description: 'Shipment identifier number/reference.'
          example: 'SI-0001'
        noticeDate:
          $ref: '#/components/schemas/DateTime'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        shipFrom:
          $ref: '#/components/schemas/Party'
        shipTo:
          description: 'If this is kept empty, the "customer" is used as the "shipTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        billTo:
          description: 'If this is kept empty, the "customer" is used as the "billTo" party.'
          allOf:
            - $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        customer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        modeOfTransport:
          $ref: '#/components/schemas/ModeOfTransport'
        incoTerms:
          $ref: '#/components/schemas/IncoTerms'
        shippingMethod:
          type: string
        pickingNotes:
          type: string
        deliveryNotes:
          type: string
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within dispatch instructions'
        currency:
          $ref: '#/components/schemas/Currency'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    DispatchInstructionItem:
      type: object
      required:
        - shippingNoticeLineNumber
        - shippedQuantity
        - orderedQuantity
        - identifiers
        - batches
      properties:
        orderLineNumber:
          type: integer
          example: 1
        shippingNoticeLineNumber:
          type: integer
          example: 1
        shippedQuantity:
          type: number
          format: float
          example: 1.00
        orderedQuantity:
          type: number
          format: float
          example: 1.00
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        unitPrice:
          type: number
          format: float
          default: null
          example: 2.00
        recommendedRetailPrice:
          type: number
          format: float
          default: null
          example: 2.00
        tax:
          $ref: '#/components/schemas/Tax'
        currency:
          $ref: '#/components/schemas/Currency'
        description:
          type: string
          description: 'Item description.'
        comments:
          type: string
          maxLength: 100000
        minimumRemainingShelfLifeInDays:
          type: integer
          description: 'Minimum remaining shelf life in days.'
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          maxLength: 255
          description: 'Color code of the item.'
        colorName:
          type: string
          maxLength: 255
          description: 'Color name of the item.'
        size:
          type: string
          maxLength: 255
          description: 'Size of the item.'
        dimension:
          type: string
          maxLength: 255
          description: 'Dimension of the item.'
        hsCode:
          type: string
          maxLength: 255
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        openQuantityAction:
          type: string
          enum:
            - DISCARDED
            - DELIVERED_LATER

    DispatchInstructionResponse:
      type: object
      title: 'Dispatch Instruction Response'
      required:
        - header
        - transportUnits
      properties:
        header:
          $ref: '#/components/schemas/DispatchInstructionResponseHeader'
        transportUnits:
          type: array
          minItems: 1
          items:
            allOf:
              - $ref: '#/components/schemas/DispatchInstructionResponseTransportUnits'
              - type: object

    DispatchInstructionResponseTransportUnits:
      type: object
      required:
        - items
      properties:
        unitIdentifier:
          type: string
        unitType:
          type: string
          enum:
            - EURO_PALLET
            - EURO_PALLET_HALF
            - EURO_PALLET_QUARTER
            - CARTON
        containedTradeUnitCount:
          type: integer
          example: 1
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        despatchDate:
          $ref: '#/components/schemas/DateTime'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/DispatchInstructionResponseItem'

    DispatchInstructionResponseHeader:
      type: object
      required:
        - shippingNoticeIdentifier
        - supplier
      properties:
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeIdentifier:
          type: string
          description: 'Shipment identifier number/reference.'
          example: 'SI-0001'
        requestedDespatchDate:
          $ref: '#/components/schemas/DateTime'
        dispatchInstructionResponseDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeDate:
          $ref: '#/components/schemas/DateTime'
        requestedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        expectedDeliveryDate:
          $ref: '#/components/schemas/DateTime'
        carrier:
          type: string
        trackingNumber:
          type: string
        trackingUrl:
          type: string
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within dispatch instruction responses'
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        shipTo:
          $ref: '#/components/schemas/Party'
        billTo:
          $ref: '#/components/schemas/Party'
        shipFrom:
          $ref: '#/components/schemas/Party'
        finalRecipient:
          description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
          allOf:
            - $ref: '#/components/schemas/Party'
        modeOfTransport:
          $ref: '#/components/schemas/ModeOfTransport'
        incoTerms:
          $ref: '#/components/schemas/IncoTerms'
        shippingMethod:
          type: string
        status:
          type: string

        currency:
          $ref: '#/components/schemas/Currency'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    DispatchInstructionResponseItem:
      type: object
      properties:
        lineNumber:
          type: integer
          example: 1
        instructionLineNumber:
          type: integer
          example: 1
        orderLineNumber:
          type: integer
          example: 1
        isDepositItem:
          type: boolean
          description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
        description:
          type: string
          description: 'Item description.'
        comments:
          type: string
          maxLength: 100000
        netWeight:
          type: number
          format: float
          description: 'Net weight of the item in grams.'
        grossWeight:
          type: number
          format: float
          description: 'Gross weight of the item in grams.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          maxLength: 255
          description: 'Color code of the item.'
        colorName:
          type: string
          maxLength: 255
          description: 'Color name of the item.'
        size:
          type: string
          maxLength: 255
          description: 'Size of the item.'
        dimension:
          type: string
          maxLength: 255
          description: 'Dimension of the item.'
        hsCode:
          type: string
          maxLength: 255
          description: 'Harmonized System Code of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        orderedQuantity:
          type: number
          format: float
          example: 1.00
        shippedQuantity:
          type: number
          format: float
          example: 1.00
        openQuantityAction:
          type: string
          enum:
            - DISCARDED
            - DELIVERED_LATER
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        unitPrice:
          type: number
          format: float
          default: null
          example: 2.00
        recommendedRetailPrice:
          type: number
          format: float
          default: null
          example: 2.00
        tax:
          $ref: '#/components/schemas/Tax'
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'

    ReceivalNotice:
      type: object
      title: 'Receival Notice'
      required:
        - header
        - transportUnits
      properties:
        header:
          $ref: '#/components/schemas/ReceivalNoticeHeader'
        transportUnits:
          type: array
          minItems: 1
          items:
            allOf:
              - $ref: '#/components/schemas/ReceivalNoticeTransportUnits'
              - type: object

    ReceivalNoticeTransportUnits:
      type: object
      required:
        - items
      properties:
        unitIdentifier:
          type: string
        unitType:
          type: string
          enum:
            - EURO_PALLET
            - EURO_PALLET_HALF
            - EURO_PALLET_QUARTER
            - CARTON
        containedTradeUnitCount:
          type: integer
          example: 1
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ReceivalNoticeItem'

    ReceivalNoticeHeader:
      type: object
      required:
        - receivalAdviceNumber
        - receivalDate
        - supplier
        - customer
      properties:
        receivalAdviceNumber:
          type: string
        receivalDate:
          $ref: '#/components/schemas/DateTime'
        deliveryNoteNumber:
          type: string
        customerOrderNumber:
          type: string
        shipTo:
          $ref: '#/components/schemas/Party'
        customer:
          $ref: '#/components/schemas/Party'
        deliveryNoteDate:
          $ref: '#/components/schemas/DateTime'
        orderDate:
          $ref: '#/components/schemas/DateTime'
        shipFrom:
          $ref: '#/components/schemas/Party'
        billTo:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within dispatch instruction responses'
        carrierId:
          type: string
        carrierDomain:
          type: string
        trackingNumber:
          type: string
        trackingUrl:
          type: string
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    ReceivalNoticeItem:
      type: object
      properties:
        lineNumber:
          type: integer
          example: 1
        receivedQuantity:
          type: number
          format: float
          example: 1.00
        shippedQuantity:
          type: number
          format: float
          example: 1.00
        identifiers:
          type: array
          minItems: 1
          description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        orderLineNumber:
          type: integer
          example: 1
        orderedQuantity:
          type: number
          format: float
          example: 1.00
        rejectedQuantity:
          type: number
          format: float
          example: 1.00
        rejectReason:
          type: string
        openQuantityAction:
          type: string
          enum:
            - DISCARDED
            - DELIVERED_LATER
        unitPrice:
          type: number
          format: float
          default: null
          example: 2.00
        currency:
          $ref: '#/components/schemas/Currency'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string
          description: 'Item description.'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'

    RemittanceAdvice:
      type: object
      title: 'Remittance Advice'
      required:
        - header
        - items
        - summary
      properties:
        header:
          $ref: '#/components/schemas/RemittanceAdviceHeader'
        items:
          type: array
          minItems: 1
          items:
            allOf:
              - $ref: '#/components/schemas/RemittanceAdviceItem'
              - type: object
        summary:
          $ref: '#/components/schemas/RemittanceAdviceSummary'

    RemittanceAdviceHeader:
      type: object
      required:
        - adviceNumber
        - adviceDate
      properties:
        adviceNumber:
          type: string
        adviceDate:
          $ref: '#/components/schemas/DateTime'
        paymentMethod:
          type: string
        paymentReference:
          type: string
        remittanceDate:
          $ref: '#/components/schemas/DateTime'
        currency:
          $ref: '#/components/schemas/Currency'
        payFrom:
          $ref: '#/components/schemas/Party'
        payTo:
          $ref: '#/components/schemas/Party'
        buyer:
          $ref: '#/components/schemas/Party'
        supplier:
          $ref: '#/components/schemas/Party'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    RemittanceAdviceItem:
      type: object
      properties:
        documentNumber:
          type: string
        documentDate:
          $ref: '#/components/schemas/DateTime'
        externalDocumentNumber:
          type: string
        documentType:
          type: string
        dueTotal:
          type: number
          format: float
        remittedTotal:
          type: number
          format: float
        tax:
          $ref: '#/components/schemas/Tax'
        correctionTotal:
          type: number
          format: float
        buyer:
          $ref: '#/components/schemas/Party'
        shipTo:
          $ref: '#/components/schemas/Party'
        corrections:
          type: array
          minItems: 1
          items:
            allOf:
              - $ref: '#/components/schemas/RemittanceAdviceItemCorrection'
              - type: object

    RemittanceAdviceItemCorrection:
      type: object
      required:
        - amount
        - total
      properties:
        basis:
          type: number
          format: float
        reason:
          type: string
        amount:
          type: number
          format: float
        total:
          type: number
          format: float
        tax:
          $ref: '#/components/schemas/Tax'

    RemittanceAdviceSummary:
      type: object
      properties:
        dueTotal:
          type: number
          format: float
        remittedTotal:
          type: number
          format: float
        correctionTotal:
          type: number
          format: float

    SalesReport:
      type: object
      title: 'Sales Report'
      required:
        - header
        - locations
      properties:
        header:
          $ref: '#/components/schemas/SalesReportHeader'
        locations:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SalesReportLocation'

    SalesReportHeader:
      type: object
      required:
        - salesReportIdentifier
        - salesReportDate
        - salesPeriodStartDate
        - salesPeriodEndDate
        - supplier
        - buyer
      properties:
        salesReportIdentifier:
          type: string
        salesReportDate:
          $ref: '#/components/schemas/DateTime'
        salesPeriodStartDate:
          $ref: '#/components/schemas/DateTime'
        salesPeriodEndDate:
          $ref: '#/components/schemas/DateTime'
        currency:
          $ref: '#/components/schemas/Currency'
        supplier:
          $ref: '#/components/schemas/Party'
        buyer:
          $ref: '#/components/schemas/Party'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information'

    SalesReportLocation:
      type: object
      required:
        - location
        - items
      properties:
        location:
          $ref: '#/components/schemas/Party'
        salesPeriodStartDate:
          $ref: '#/components/schemas/DateTime'
        salesPeriodEndDate:
          $ref: '#/components/schemas/DateTime'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SalesReportLocationItem'

    SalesReportLocationItem:
      type: object
      required:
        - lineNumber
        - identifiers
        - salesQuantity
      properties:
        lineNumber:
          type: integer
        identifiers:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        description:
          type: string
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        unitPrice:
          type: number
          format: float
        netUnitPrice:
          type: number
          format: float
        recommendedRetailPrice:
          type: number
          format: float
        salesQuantity:
          type: number
          format: float
        lineGrossAmount:
          type: number
          format: float
        lineNetAmount:
          type: number
          format: float
        lineTaxAmount:
          type: number
          format: float
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information'
        netWeight:
          type: integer
          description: 'In grams'
        grossWeight:
          type: integer
          description: 'In grams'
        hsCode:
          type: string
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          description: 'Color code of the item.'
        colorName:
          type: string
          description: 'Color name of the item.'
        size:
          type: string
          description: 'Size of the item.'
        dimension:
          type: string
          description: 'Dimension of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        category:
          type: string
          description: 'Relevant category for the sales report item.'
        subCategory:
          type: string
          description: 'Relevant subcategory for the sales report item.'
        tax:
          $ref: '#/components/schemas/Tax'

    InventoryReport:
      type: object
      title: 'Inventory Report'
      required:
        - header
        - items
      properties:
        header:
          $ref: '#/components/schemas/InventoryReportHeader'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/InventoryReportItem'

    InventoryReportHeader:
      type: object
      required:
        - inventoryReportIdentifier
        - inventoryReportDate
        - warehouse
        - goodsOwner
      properties:
        inventoryReportIdentifier:
          type: string
        inventoryReportDate:
          $ref: '#/components/schemas/DateTime'
        warehouse:
          $ref: '#/components/schemas/Party'
        goodsOwner:
          $ref: '#/components/schemas/Party'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information warehouse can send within inventory reports'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    InventoryReportItem:
      type: object
      properties:
        name:
          type: string
        lineNumber:
          type: integer
        availableQuantity:
          type: number
          format: float
        blockedQuantity:
          type: number
          format: float
        orderedQuantity:
          type: number
          format: float
        identity:
          type: object
          properties:
            senderPartnerId:
              type: string
            receiverPartnerId:
              type: string
            gtin:
              type: string
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        unitPrice:
          type: number
          format: float
        tax:
          $ref: '#/components/schemas/Tax'
        netWeight:
          type: integer
          description: 'In grams'
        grossWeight:
          type: integer
          description: 'In grams'
        hsCode:
          type: string
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          description: 'Color code of the item.'
        colorName:
          type: string
          description: 'Color name of the item.'
        size:
          type: string
          description: 'Size of the item.'
        dimension:
          type: string
          description: 'Dimension of the item.'
        comment:
          type: string
        batches:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/Batch'
              - properties:
                  status:
                    type: string
                  statusReason:
                    type: string

    ProductCatalogIdentity:
      type: object
      description: 'Product identity containing sender partner ID, receiver partner ID, and GTIN.'
      properties:
        senderPartnerId:
          type: string
          description: 'Sender partner product identifier (e.g., supplier SKU).'
          example: 'SUPPLIER-SKU-12345'
        receiverPartnerId:
          type: string
          description: 'Receiver partner product identifier (e.g., buyer SKU).'
          example: 'BUYER-SKU-67890'
        gtin:
          type: string
          description: 'Global Trade Item Number (GTIN/EAN).'
          example: '4260123456789'

    ProductCatalog:
      type: object
      title: 'Product Catalog'
      required:
        - header
        - items
      properties:
        header:
          $ref: '#/components/schemas/ProductCatalogHeader'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ProductCatalogItemWithSubSubItems'

    ProductCatalogHeader:
      type: object
      required:
        - catalogDate
        - sender
        - receiver
      properties:
        catalogNumber:
          type: string
        catalogDate:
          $ref: '#/components/schemas/DateTime'
        sender:
          $ref: '#/components/schemas/Party'
        receiver:
          $ref: '#/components/schemas/Party'
        importer:
          description: 'GPSR Importer Contact Address in a PRICAT refers to the official address of the importer responsible under the General Product Safety Regulation (GPSR). This ensures traceability and compliance with safety requirements for products entering the market.
NAD+IM (Importer) with CTA/COM contact details
'
          $ref: '#/components/schemas/Party'
        manufacturer:
          description: 'GPSR Manufacturer Contact Address in a PRICAT refers to the official address of the product’s manufacturer as required under the General Product Safety Regulation (GPSR). It enables traceability and confirms the manufacturer’s responsibility for product safety.'
          $ref: '#/components/schemas/Party'
        comments:
          type: string
          maxLength: 100000
          description: 'Arbitrary human-readable information buyers can send within product catalogs'
        version:
          type: integer
          description: 'The document version number. Subsequent updates should increment this number by 1.'

    ProductCatalogItemWithSubSubItems:
      allOf:
        - $ref: '#/components/schemas/ProductCatalogItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this product catalog item. Supports two levels of nesting.'
              items:
                $ref: '#/components/schemas/ProductCatalogItemWithSubItems'

    ProductCatalogItemWithSubItems:
      allOf:
        - $ref: '#/components/schemas/ProductCatalogItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this product catalog item.'
              items:
                $ref: '#/components/schemas/ProductCatalogItem'

    ProductCatalogItem:
      type: object
      required:
        - lineNumber
        - quantity
        - identity
      properties:
        name:
          type: string
        lineNumber:
          type: integer
        quantity:
          type: number
          format: float
        identity:
          $ref: '#/components/schemas/ProductCatalogIdentity'
        predecessorIdentity:
          $ref: '#/components/schemas/ProductCatalogIdentity'
        successorIdentity:
          $ref: '#/components/schemas/ProductCatalogIdentity'
        alternativeIdentifiers:
          type: array
          items:
            $ref: '#/components/schemas/ProductCatalogIdentity'
        action:
          type: string
          enum:
            - NEW
            - CHANGED
            - DELETED
        currency:
          $ref: '#/components/schemas/Currency'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        isOrderable:
          type: boolean
        unitPrice:
          type: number
          format: float
        unitPriceValidFromDate:
          $ref: '#/components/schemas/DateTime'
        unitPriceValidUntilDate:
          $ref: '#/components/schemas/DateTime'
        recommendedRetailPrice:
          type: number
          format: float
        recommendedRetailPriceValidFromDate:
          $ref: '#/components/schemas/DateTime'
        recommendedRetailPriceValidUntilDate:
          $ref: '#/components/schemas/DateTime'
        minimumOrderQuantity:
          type: number
          format: float
        taxPercentage:
          type: number
          format: float
        depositAmount:
          type: number
          format: float
          description: 'Deposit amount in the currency of the item.'
        shortDescription:
          type: string
        description:
          type: string
        perUnitQuantity:
          type: number
          format: float
          description: 'Quantity of consumer units (pieces, bottles) contained in this item.'
        length:
          type: integer
          description: 'In millimeters'
        width:
          type: integer
          description: 'In millimeters'
        height:
          type: integer
          description: 'In millimeters'
        netWeight:
          type: integer
          description: 'In grams'
        grossWeight:
          type: integer
          description: 'In grams'
        drainedWeight:
          type: integer
          description: 'In grams'
        volume:
          type: integer
          description: 'In cubic centimeters'
        category:
          type: string
          description: 'Used for product category, commodity group'
        subCategory:
          type: string
        unNumber:
          type: integer
          description: '4-digit number assigned by the United Nations to classify hazardous substances and articles.'
        hsCode:
          type: string
        htsCode:
          type: string
        deliverableFromDate:
          $ref: '#/components/schemas/DateTime'
        isDangerous:
          type: boolean
        hasExpiryDate:
          type: boolean
        hasBatchNumber:
          type: boolean
        hasSerialNumber:
          type: boolean
        minimumRemainingShelfLifeInDays:
          type: integer
          description: 'Minimum remaining shelf life in days.'
        sourceIdentifier:
          type: string
          description: 'Identifies the source (warehouse, supplier, etc.) from which the item can be procured.'
        originCountryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code.'
          example: 'DE'
        colorCode:
          type: string
          description: 'Color code of the item.'
        colorName:
          type: string
          description: 'Color name of the item.'
        size:
          type: string
          description: 'Size of the item.'
        dimension:
          type: string
          description: 'Dimension of the item.'
        organicControlPointNumber:
          type: string
          maxLength: 255
          description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
        fscNumber:
          type: string
          description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
        brand:
          type: string
          description: 'BRAND in a PRICAT (Price Catalogue) refers to the name of the product’s brand or manufacturer. It helps identify the product’s origin and is essential for classification, marketing, and buyer recognition.'
        declarationOfConformity:
          type: string
          description: 'Declaration of Conformity in a PRICAT refers to a formal statement by the manufacturer confirming that the product meets all applicable EU safety, health, and environmental requirements. It is key for regulatory compliance and market approval.'
        userManual:
          type: string
          description: 'User Manual / Instructions in a PRICAT refers to the documentation provided with a product that explains its proper use, safety guidelines, and maintenance. It ensures safe handling and compliance with regulatory requirements.'
        energyLabel:
          type: string
          description: 'Energy Label in a PRICAT refers to the standardized label indicating a product’s energy efficiency class. It helps buyers assess energy consumption and supports compliance with EU energy labeling regulations.'
        safetyDatasheet:
          type: string
          description: 'Safety Datasheet in a PRICAT refers to a document providing detailed information on the safe handling, storage, and disposal of a product. It is essential for compliance with chemical safety regulations and workplace protection.'
        technicalDatasheet:
          type: string
          description: '(Technical) Datasheet in a PRICAT refers to a document outlining the key technical specifications, features, and performance data of a product. It supports accurate product evaluation, comparison, and integration into systems or catalogues.'
        euDatasheet:
          type: string
          description: 'EU Datasheet in a PRICAT refers to a product information sheet tailored to meet EU regulatory and market requirements. It typically includes technical specifications, compliance details, and other essential data for distribution within the EU.'
        safetyInstructions:
          type: string
          description: 'Safety Instructions / Warnings in a PRICAT refer to mandatory information on potential hazards and safe usage of a product. They help ensure user safety and compliance with legal and regulatory standards.'
        materialComposition:
          type: string
          description: 'All material components'
        images:
          type: array
          description: 'Images of the product catalog item.'
          items:
            $ref: '#/components/schemas/Attachment'
        comment:
          type: string
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        packagingUnits:
          type: array
          items:
            $ref: '#/components/schemas/ProductCatalogItemPackagingUnit'
        modificationGroups:
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'
        manufacturer:
          $ref: '#/components/schemas/Party'
        importer:
          $ref: '#/components/schemas/Party'

    ProductCatalogSubItem:
      type: object
      required:
        - lineNumber
        - quantity
        - identity
      properties:
        lineNumber:
          type: integer
        quantity:
          type: number
          format: float
        identity:
          type: object
          properties:
            senderPartnerId:
              type: string
            receiverPartnerId:
              type: string
            gtin:
              type: string
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string

    ProductCatalogItemPackagingUnit:
      type: object
      required:
        - quantity
      properties:
        quantity:
          type: number
          format: float
        identity:
          $ref: '#/components/schemas/ProductCatalogIdentity'
        isOrderable:
          type: boolean
        length:
          type: integer
          description: 'In millimeters'
        width:
          type: integer
          description: 'In millimeters'
        height:
          type: integer
          description: 'In millimeters'
        netWeight:
          type: integer
          description: 'In grams'
        grossWeight:
          type: integer
          description: 'In grams'
        volume:
          type: integer
          description: 'In cubic centimeters'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'

paths:
  /v2/transactions:
    get:
      operationId: 'v2_list_received_transactions' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'List Incoming Transactions'
      description: 'List unprocessed incoming transactions from your trade partners.'
      tags: ['Incoming Transactions']
      parameters:
        - name: 'filter[type]'
          in: query
          required: false
          allowReserved: true
          schema:
            $ref: '#/components/schemas/TransactionType'
        - name: cursor
          in: query
          description: 'Page cursor'
          required: false
          schema:
            type: string
        - name: per_page
          in: query
          description: 'Number of transactions returned per page.'
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: 'Success'
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                  - perPage
                  - count
                  - nextCursor
                  - nextPageUrl
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ReceivedTransaction'
                  hasMore:
                    type: boolean
                    description: 'Whether or not more transactions can be fetched on the next page.'
                  perPage:
                    type: integer
                    description: 'Amount of transactions returned per page.'
                  count:
                    type: integer
                    description: 'Amount of transactions on the current page.'
                  nextCursor:
                    type: string
                    nullable: true
                    description: 'Supplied to the `cursor` query parameter. See [Pagination] for more info.'
                  nextPageUrl:
                    type: string
                    format: url
                    nullable: true
                    description: 'Prebuilt URL to retrieve the next page of transactions.'
              examples:
                List of transactions:
                  value:
                    {
                      'hasMore': false,
                      'perPage': 100,
                      'count': 3,
                      'nextCursor': null,
                      'nextPageUrl': null,
                      'items':
                        [
                          {
                            'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
                            'type': 'ORDER',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                        'postalAddress':
                                          {
                                            'name': 'ACME Co. Ltd.',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'postalCode': '82643',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'John',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-09-30',
                                    'currency': 'EUR',
                                    'requestedDeliveryDate': '2021-10-05',
                                    'comments': 'Something to comment',
                                  },
                                'items':
                                  [
                                    {
                                      'lineNumber': 1,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765432', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 20.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'First product description.',
                                      'unitPrice': 0.15,
                                    },
                                    {
                                      'lineNumber': 2,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765433', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 19.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'Sparkling Water - Crate (6x0.75l).',
                                      'unitPrice': 1.5,
                                    },
                                    {
                                      'lineNumber': 3,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765434', 'domain': 'GS1' },
                                          { 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': true,
                                      'quantity': 19.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'Deposit 1x crate + 6x bottles.',
                                      'unitPrice': 3.3,
                                    },
                                  ],
                              },
                          },
                          {
                            'procurosTransactionId': '94fe13aa-8c9b-40e5-9937-42b852185858',
                            'type': 'SHIPPING_NOTICE',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                        'postalAddress':
                                          {
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'name': 'ACME Co. Ltd.',
                                            'postalCode': '82643',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'Jane',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'shippingNoticeIdentifier': 'SN9383-R45',
                                    'shippingNoticeDate': '2021-11-24',
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-11-20',
                                    'despatchDate': '2021-11-05',
                                    'requestedDeliveryDate': '2021-11-06',
                                    'expectedDeliveryDate': '2021-11-06',
                                    'carrier': 'Example Delivery Solution',
                                    'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
                                    'trackingUrl': 'https://api.procuros.com/example',
                                    'comments': 'Something to comment',
                                  },
                                'transportUnits':
                                  [
                                    {
                                      'items':
                                        [
                                          {
                                            'lineNumber': 1,
                                            'orderLineNumber': 1,
                                            'identifiers':
                                              [
                                                { 'identifier': '4300348765432', 'domain': 'GS1' },
                                                { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                                { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                              ],
                                            'isDepositItem': false,
                                            'orderedQuantity': 20.0,
                                            'shippedQuantity': 20.0,
                                            'unitPrice': 200.0,
                                            'description': 'First product description.',
                                          },
                                          {
                                            'lineNumber': 2,
                                            'orderLineNumber': 2,
                                            'identifiers':
                                              [
                                                { 'identifier': '4300348765433', 'domain': 'GS1' },
                                                { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                                { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                              ],
                                            'isDepositItem': false,
                                            'orderedQuantity': 19.0,
                                            'shippedQuantity': 15.0,
                                            'openQuantityAction': 'DISCARDED',
                                            'unitPrice': 1.5,
                                            'description': 'Second product description.',
                                          },
                                        ],
                                    },
                                  ],
                              },
                          },
                          {
                            'procurosTransactionId': '94fe1224-ae01-4587-8155-8e852cbbe75d',
                            'type': 'INVOICE',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers':
                                          [
                                            { 'identifier': '4522704465331', 'domain': 'GS1' },
                                            { 'identifier': 'DE123456789', 'domain': 'VAT_DE' },
                                          ],
                                        'postalAddress':
                                          {
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'name': 'ACME Co. Ltd.',
                                            'postalCode': '82643',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'Jane',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers':
                                          [
                                            { 'identifier': '4231930775745', 'domain': 'GS1' },
                                            { 'identifier': 'DE234567890', 'domain': 'VAT_DE' },
                                          ],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'invoiceIdentifier': 'IV9383-R45',
                                    'invoiceDate': '2021-11-11',
                                    'shippingNoticeIdentifier': 'SN9383-R45',
                                    'shippingNoticeDate': '2021-11-04',
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-11-10',
                                    'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
                                    'comments': 'Something to comment',
                                  },
                                'items':
                                  [
                                    {
                                      'lineNumber': 1,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765432', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 20,
                                      'unitPrice': 200.0,
                                      'description': 'First product description.',
                                      'tax':
                                        { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
                                    },
                                    {
                                      'lineNumber': 2,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765433', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 15.0,
                                      'unitPrice': 1.5,
                                      'description': 'Second product description.',
                                      'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
                                    },
                                  ],
                              },
                          },
                        ],
                    }
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

    post:
      operationId: 'v2_send_transaction' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Send Transaction'
      description: 'Create and send a new transaction to one of your trade partners.'
      tags: ['Outgoing Transactions']
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SentTransaction'
            examples:
              Order:
                value:
                  {
                    'type': 'ORDER',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-09-30',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'currency': 'EUR',
                            'requestedDeliveryDate': '2021-10-05',
                            'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }]
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765432', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'quantity': 10.0,
                              'unitOfMeasure': 'EA',
                              'description': 'First product description.',
                              'unitPrice': 1.23,
                              'tax': {
                                'percentage': 7,
                                'description': 'Umsatzsteuer'
                              },
                              'brand': 'kela',
                              'assortment': 'ME_GEN',
                              'consumerGroup': 'Unisex',
                              'category': '1008',
                              'subCategory': 'Beverages',
                              'modificationGroups': [
                                {
                                  'modifications': [
                                    {
                                      'type': 'ALLOWANCE',
                                      'reasonCode': 'DISCOUNT',
                                      'description': 'Contract trade discount',
                                      'percentage': 7
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                      },
                  }
              Minimal Order:
                value:
                  {
                    'type': 'ORDER',
                    'content':
                      {
                        'header':
                          {
                            'buyer': { 'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }] },
                            'supplier': { 'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }] },
                            'orderIdentifier': 'PO9383-R46',
                            'orderDate': '2021-09-30',
                            'currency': 'EUR',
                            'requestedDeliveryDate': '2021-10-05',
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'identifiers': [{ 'identifier': '4300348765432', 'domain': 'GS1' }],
                              'isDepositItem': false,
                              'quantity': 20.0,
                              'unitOfMeasure': 'EA',
                            },
                            {
                              'lineNumber': 2,
                              'identifiers': [{ 'identifier': '4300348765433', 'domain': 'GS1' }],
                              'isDepositItem': false,
                              'quantity': 19.0,
                              'unitOfMeasure': 'EA',
                            },
                          ],
                      },
                  }
              Order Response | ACCEPT:
                value:
                  {
                    'type': 'ORDER_RESPONSE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'type': 'ACCEPT',
                            'orderResponseIdentifier': 'RE-PO9383-R45',
                            'orderResponseDate': '2021-10-01',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-09-30',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'requestedDeliveryDate': '2021-10-05',
                            'confirmedDeliveryDate': '2021-10-05',
                            'currency': 'EUR',
                          },
                      },
                  }
              Order Response | REJECT:
                value:
                  {
                    'type': 'ORDER_RESPONSE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'type': 'REJECT',
                            'orderResponseIdentifier': 'RE-PO9383-R45',
                            'orderResponseDate': '2021-10-01',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-09-30',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'currency': 'EUR',
                            'comments': 'Something to comment',
                          },
                      },
                  }
              Order Response | CHANGE:
                value:
                  {
                    'type': 'ORDER_RESPONSE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'type': 'CHANGE',
                            'orderResponseIdentifier': 'RE-PO9383-R45',
                            'orderResponseDate': '2021-10-01',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-09-30',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'requestedDeliveryDate': '2021-10-05',
                            'confirmedDeliveryDate': '2021-10-05',
                            'currency': 'EUR',
                            'comments': 'Something to comment',
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765432', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'orderedQuantity': 20.0,
                              'confirmedQuantity': 15.0,
                              'unitOfMeasure': 'EA',
                              'description': 'First product description.',
                              'unitPrice': 0.15,
                            },
                            {
                              'lineNumber': 2,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765433', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'orderedQuantity': 19.0,
                              'confirmedQuantity': 19.0,
                              'unitOfMeasure': 'EA',
                              'description': 'Second product description.',
                              'unitPrice': 1.5,
                            },
                          ],
                      },
                  }
              Shipping Notice:
                value:
                  {
                    'type': 'SHIPPING_NOTICE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'shippingNoticeIdentifier': 'SN9383-R45',
                            'shippingNoticeDate': '2021-11-24',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-11-20',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipFromOrderIdentifier': 'SF-11111',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'despatchDate': '2021-11-05',
                            'requestedDeliveryDate': '2021-11-06',
                            'expectedDeliveryDate': '2021-11-06',
                            'carrier': 'Example Delivery Solution',
                            'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
                            'trackingUrl': 'https://api.procuros.com/example',
                          },
                        'transportUnits':
                          [
                            {
                              'unitIdentifier': '34000000000001',
                              'unitType': 'EURO_PALLET',
                              'containedTradeUnitCount': 10,
                              'items':
                                [
                                  {
                                    'lineNumber': 1,
                                    'orderLineNumber': 1,
                                    'identifiers':
                                      [
                                        { 'identifier': '4300348765432', 'domain': 'GS1' },
                                        { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                        { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                      ],
                                    'isDepositItem': false,
                                    'orderedQuantity': 20.0,
                                    'shippedQuantity': 20.0,
                                    'description': 'First product description.',
                                    'certifications': { 'deBnn': 'NUMBER-123' },
                                    'batches':
                                      [
                                        {
                                          'batchIdentifier': BATCH_ID_1',
                                          'expirationDate': '2022-12-24',
                                          'quantity': 15.0,
                                        },
                                        {
                                          'batchIdentifier': BATCH_ID_2',
                                          'expirationDate': '2022-12-31',
                                          'quantity': 5.0,
                                        },
                                      ],
                                  },
                                  {
                                    'lineNumber': 2,
                                    'orderLineNumber': 2,
                                    'identifiers':
                                      [
                                        { 'identifier': '4300348765433', 'domain': 'GS1' },
                                        { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                        { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                      ],
                                    'isDepositItem': false,
                                    'orderedQuantity': 19.0,
                                    'shippedQuantity': 15.0,
                                    'openQuantityAction': 'DISCARDED',
                                    'batches':
                                      [
                                        {
                                          'batchIdentifier': BATCH_ID_2',
                                          'expirationDate': '2022-05-01',
                                          'quantity': 15.0,
                                        },
                                      ],
                                    'description': 'Sparkling Water - Crate (6x0.75l).',
                                  },
                                ],
                            },
                          ],
                      },
                  }
              Invoice:
                value:
                  {
                    'type': 'INVOICE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'invoiceIdentifier': 'IV9383-R45',
                            'invoiceDate': '2021-11-11',
                            'shippingNoticeIdentifier': 'SN9383-R45',
                            'shippingNoticeDate': '2021-11-04',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-11-20',
                            'AdditionalOrderIdentifiers':
                              {
                                'supplierOrderIdentifier': 'SUP-12345',
                                'shipToOrderIdentifier': 'ST-67890',
                                'billToOrderIdentifier': 'BT-22222',
                                'billFromOrderIdentifier': 'BF-33333',
                                'finalRecipientOrderIdentifier': 'FR-44444'
                              },
                            'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765432', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'quantity': 20,
                              'unitPrice': 200.0,
                              'description': 'First product description.',
                              'certifications': { 'deBnn': 'NUMBER-123' },
                              'tax': { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
                            },
                            {
                              'lineNumber': 2,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765433', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'quantity': 15.0,
                              'unitPrice': 1.5,
                              'description': 'Second product description.',
                              'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
                            },
                          ],
                      },
                  }
              CreditNote:
                value:
                  {
                    'type': 'CREDIT_NOTE',
                    'content':
                      {
                        'header':
                          {
                            'buyer':
                              {
                                'name': 'ACME Co. Ltd.',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'contacts':
                                  [
                                    {
                                      'firstName': 'Jane',
                                      'lastName': 'Doe',
                                      'email': '[email protected]',
                                      'fax': '(818) 463-6124',
                                      'phone': '+1.352.856.0626',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Testsupplier',
                                'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                              },
                            'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                            'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                            'creditNoteIdentifier': 'CN9383-R45',
                            'creditNoteDate': '2021-11-20',
                            'invoiceIdentifier': 'IV9383-R45',
                            'invoiceDate': '2021-11-11',
                            'shippingNoticeIdentifier': 'SN9383-R45',
                            'shippingNoticeDate': '2021-11-04',
                            'orderIdentifier': 'PO9383-R45',
                            'orderDate': '2021-11-20',
                            'reason': 'customer refund',
                            'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765432', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'quantity': 20,
                              'unitPrice': 200.0,
                              'description': 'First product description.',
                              'certifications': { 'deBnn': 'NUMBER-123' },
                              'tax': { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
                            },
                            {
                              'lineNumber': 2,
                              'identifiers':
                                [
                                  { 'identifier': '4300348765433', 'domain': 'GS1' },
                                  { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                  { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                ],
                              'isDepositItem': false,
                              'quantity': 15.0,
                              'unitPrice': 1.5,
                              'description': 'Second product description.',
                              'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
                            },
                          ],
                      },
                  }
              DispatchInstruction:
                value:
                  {
                    'type': 'DISPATCH_INSTRUCTION',
                    'content':
                      {
                        'header':
                          {
                            'orderIdentifier': 'ORDER-123',
                            'orderDate': '2022-05-01T18:39:09-08:00',
                            'shipmentIdentifier': 'SHIPMENT-123',
                            'noticeDate': '2022-05-01T18:39:09-08:00',
                            'requestedDeliveryDate': '2022-05-01T18:39:09-08:00',
                            'shipFrom':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'shipTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'billTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'customer':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'comments': 'Some Comment',
                          },
                        'items':
                          [
                            {
                              'orderLineNumber': 1,
                              'shippingNoticeLineNumber': 1,
                              'shippedQuantity': 1,
                              'orderedQuantity': 1,
                              'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                              'unitOfMeasure': 'EA',
                              'unitPrice': 1,
                              'currency': 'EUR',
                              'description': 'Some Description',
                              'batches': [{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
                              'openQuantityAction': 'DISCARDED',
                            },
                          ],
                      },
                  }
              DispatchInstructionResponse:
                value:
                  {
                    'type': 'DISPATCH_INSTRUCTION_RESPONSE',
                    'content':
                      {
                        'header':
                          {
                            'orderId': null,
                            'orderDate': null,
                            'shipmentId': '48148',
                            'shippingNoticeIdentifier': 'SHIPMENT-123',
                            'shippingNoticeDate': '2022-10-12T12:53:51.000000Z',
                            'dispatchInstructionResponseDate': '2022-10-12T12:53:51.000000Z',
                            'responseDate': '2022-10-12T12:53:51.000000Z',
                            'shipmentDate': '2022-10-12T12:53:51.000000Z',
                            'requestedDeliveryDate': '2022-10-11T22:00:00.000000Z',
                            'expectedDeliveryDate': '2022-10-11T22:00:00.000000Z',
                            'shipFrom':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'shipTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'billTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'buyer':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'comments': null,
                          },
                        'transportUnits':
                          [
                            {
                              'unitIdentifier': '342601560208144493',
                              'unitType': null,
                              'containedTradeUnitCount': null,
                              'items':
                                [
                                  {
                                    'lineNumber': 4,
                                    'shippingNoticeLineNumber': 1,
                                    'shippedQuantity': 1,
                                    'orderedQuantity': 1,
                                    'isDepositItem': false,
                                    'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                    'unitOfMeasure': 'EA',
                                    'unitPrice': null,
                                    'currency': null,
                                    'description': '',
                                    'batches':
                                      [{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
                                    'parentLineNumber': null,
                                    'openQuantityAction': null,
                                  },
                                ],
                            },
                          ],
                      },
                  }
              ReceivalNotice:
                value:
                  {
                    'type': 'RECEIVAL_NOTICE',
                    'content':
                      {
                        'header':
                          {
                            'receivalAdviceNumber': 'receival-advice-number',
                            'receivalDate': '2022-10-12T12:53:51.000000Z',
                            'deliveryNoteNumber': 'delivery-note-number',
                            'customerOrderNumber': 'customer-order-number',
                            'deliveryNoteDate': '2022-10-12T12:53:51.000000Z',
                            'orderDate': '2022-10-12T12:53:51.000000Z',
                            'comments': 'comment',
                            'carrierId': 'carrierId',
                            'carrierDomain': 'carrierDomain',
                            'trackingNumber': 'trackingNumber',
                            'trackingUrl': 'trackingUrl',
                            'shipFrom':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'shipTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'billTo':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'customer':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                            'supplier':
                              {
                                'name': 'Foo GmbH',
                                'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
                                'postalAddress':
                                  {
                                    'name': 'Foo',
                                    'street': 'Musterstraße 123',
                                    'addressExtra': '1st Floor',
                                    'city': 'Hamburg',
                                    'postalCode': '12345',
                                    'state': 'HH',
                                    'countryCode': 'DE',
                                  },
                                'contacts':
                                  [
                                    {
                                      'title': 'Dr.',
                                      'salutation': 'Herr',
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': '[email protected]',
                                      'fax': '+49 12345',
                                    },
                                  ],
                              },
                          },
                        'transportUnits':
                          [
                            {
                              'unitIdentifier': '342601560208144493',
                              'unitType': null,
                              'containedTradeUnitCount': null,
                              'items':
                                [
                                  {
                                    'lineNumber': 1,
                                    'receivedQuantity': 10,
                                    'shippedQuantity': 10,
                                    'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
                                    'unitOfMeasure': 'EA',
                                    'unitPrice': null,
                                    'currency': null,
                                    'description': '',
                                    'batches':
                                      [{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
                                    'parentLineNumber': null,
                                    'openQuantityAction': null,
                                  },
                                ],
                            },
                          ],
                      },
                  }
              RemittanceAdvice:
                value:
                  {
                    'type': 'REMITTANCE_ADVICE',
                    'content':
                      {
                        'header':
                          {
                            'adviceNumber': 'AdviceNumber-643123',
                            'adviceDate': '2021-09-30',
                            'paymentMethod': 'cash',
                            'paymentReference': 'paymentReference-1234567890',
                            'remittanceDate': '2021-09-30',
                            'payFrom':
                              {
                                'name': 'Max Mustermann',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                                'financialInstitution':
                                  {
                                    'name': 'Deutsche Bank',
                                    'institutionId': 'Deutsche Bank',
                                    'institutionIdDomain': 'SWIFT',
                                    'accountNumber': 'DE123456789',
                                    'accountHolder': 'Foo Bar GmbH',
                                  },
                              },
                            'payTo':
                              {
                                'name': 'John Doe',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                              },
                            'buyer':
                              {
                                'name': 'buyer',
                                'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                              },
                            'supplier':
                              {
                                'name': 'supplier',
                                'identifiers': [{ 'identifier': '3220010000022', 'domain': 'GS1' }],
                                'postalAddress':
                                  {
                                    'city': 'Berlin',
                                    'countryCode': 'DE',
                                    'name': 'ACME Co. Ltd.',
                                    'postalCode': '82643',
                                    'street': 'Elroy-Fritsch-Ring 15',
                                  },
                              },
                            'currency': 'EUR',
                          },
                        'items':
                          [
                            {
                              'documentNumber': 'originalInvoiceNumber-1234567890',
                              'documentDate': '2021-09-30',
                              'externalDocumentNumber': 'externalDocumentNumber-1234567890',
                              'documentType': 'INVOICE',
                              'dueTotal': 100,
                              'remittedTotal': 20,
                              'tax': { 'percentage': 19, 'amount': 1.9, 'description': 'MwSt. 19%' },
                              'correctionTotal': 80,
                              'buyer':
                                {
                                  'name': 'buyer',
                                  'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                  'postalAddress':
                                    {
                                      'city': 'Berlin',
                                      'countryCode': 'DE',
                                      'name': 'ACME Co. Ltd.',
                                      'postalCode': '82643',
                                      'street': 'Elroy-Fritsch-Ring 15',
                                    },
                                },
                              'supplier':
                                {
                                  'name': 'supplier',
                                  'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                  'postalAddress':
                                    {
                                      'city': 'Berlin',
                                      'countryCode': 'DE',
                                      'name': 'ACME Co. Ltd.',
                                      'postalCode': '82643',
                                      'street': 'Elroy-Fritsch-Ring 15',
                                    },
                                },
                              'corrections':
                                [
                                  {
                                    'basis': 20,
                                    'reason': 'reason-1234567890',
                                    'amount': 200,
                                    'tax': { 'percentage': 19, 'amount': 1.9, 'description': 'MwSt. 19%' },
                                    'total': 200,
                                  },
                                ],
                            },
                          ],
                        'summary': { 'dueTotal': 100, 'remittedTotal': 20, 'correctionTotal': 80 },
                      },
                  }
              ProductCatalog:
                value:
                  {
                    'type': 'PRODUCT_CATALOG',
                    'content':
                      {
                        'header':
                          {
                            'catalogDate': '2023-04-19',
                            'catalogNumber': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
                            'sender': { 'identifiers': [{ 'domain': 'GS1', 'identifier': '3220010000001' }] },
                            'receiver': { 'identifiers': [{ 'domain': 'GS1', 'identifier': '4300000000015' }] },
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'quantity': 1,
                              'identity':
                                {
                                  'senderPartnerId': '92a338d2-989e-36b4-a88e-273a170b68d9',
                                  'receiverPartnerId': '880ae9f9-6d4d-3336-9e87-6f7cfccd6716',
                                  'gtin': '4388091401620',
                                },
                              'action': 'NEW',
                            },
                          ],
                      },
                  }
              InventoryReport:
                value:
                  {
                    'type': 'INVENTORY_REPORT',
                    'content':
                      {
                        'header':
                          {
                            'inventoryReportDate': '2023-04-19',
                            'inventoryReportIdentifier': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
                            'warehouse': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '3220010000001' } ] },
                            'goodsOwner': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000015' } ] },
                          },
                        'items':
                          [
                            {
                              'lineNumber': 1,
                              'availableQuantity': 1,
                              'identity':
                                {
                                  'senderPartnerId': '92a338d2-989e-36b4-a88e-273a170b68d9',
                                  'receiverPartnerId': '880ae9f9-6d4d-3336-9e87-6f7cfccd6716',
                                  'gtin': '4388091401620',
                                },
                            },
                          ],
                      },
                  }
              SalesReport:
                value:
                  {
                    'type': 'SALES_REPORT',
                    'content':
                      {
                        'header':
                          {
                            'salesReportDate': '2023-04-19',
                            'salesReportIdentifier': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
                            'salesPeriodStartDate': '2023-04-19',
                            'salesPeriodEndDate': '2023-05-19',
                            'buyer': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '3220010000001' } ] },
                            'supplier': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000015' } ] },
                          },
                        'locations':
                          [
                            {
                              'location': {
                                'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000016' } ]
                              },
                              'items': [
                                {
                                  'salesReportLineIdentifier': 1,
                                  'identifiers': [ { 'domain': 'SUPPLIER', 'identifier': '123456789' } ],
                                  'salesQuantity': 100,
                                  'category': '1008',
                                  'subCategory': 'Beverages'
                                }
                              ],
                            },
                          ],
                      },
                  }

      responses:
        '201':
          description: 'Created'
          content:
            application/json:
              schema:
                type: object
                required:
                  - procurosTransactionId
                properties:
                  procurosTransactionId:
                    $ref: '#/components/schemas/ProcurosTransactionId'
        '202':
          description: 'Accepted'
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                properties:
                  message:
                    type: string
                    description: 'Status message'
                    example: 'Trade relationship not yet active.'
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionValidationErrorResponse'
              examples:
                Invalid Payload:
                  value:
                    {
                      'message': 'The given data was invalid.',
                      'errors': { 'type': ['Transaction type "PAYMENT_ADVICE" is not valid'] },
                      'errorUrl': 'https://portal.procuros.io/.../errors/{procurosErrorId}',
                    }
                Unknown Party:
                  value:
                    {
                      'message': 'The given data was invalid.',
                      'errors': { 'buyer': ['Could not resolve party using provided identifiers'] },
                      'errorUrl': 'https://portal.procuros.io/.../errors/{procurosErrorId}',
                    }
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

  /v2/transactions/{procurosTransactionId}:
    parameters:
      - name: procurosTransactionId
        in: path
        required: true
        schema:
          type: string
          format: uuid
    put:
      operationId: 'v2_mark_transaction_processed' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Mark Transaction Processed'
      description: 'Report processing of incoming transactions.'
      tags: ['Incoming Transactions']
      requestBody:
        description: 'Expected parameters to update a transaction.'
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - success
              properties:
                success:
                  type: boolean
                  description: 'Whether or not your system was able to process the given transaction.'
                errorReason:
                  type: string
                  description: 'Reason your system was not able to process the given transaction.'
                errorType:
                  $ref: '#/components/schemas/ErrorType'
                errorContext:
                  type: object
                  description: 'Additional context/meta data for the error.'
                  additionalProperties:
                    type: string
            examples:
              Successfully Processed:
                value: { 'success': true }
              Failed to Process:
                value:
                  { 'success': false, 'errorReason': "Product GTIN '0001647296281' not found", 'errorType': 'DATA' }
      responses:
        '200':
          description: 'Success'
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: object
                    required:
                      - message
                    properties:
                      message:
                        type: string
                        description: 'Status message'
                      errorUrl:
                        type: string
                        description: 'URL linking to the error on the Procuros Portal.'
              examples:
                Successfully Processed:
                  value: { 'data': { 'message': 'OK.' } }
                Failed to Process:
                  value:
                    {
                      'data':
                        {
                          'message': 'OK.',
                          'errorUrl': 'https://portal.procuros.io/transactions/{{procurosTransactionId}}/errors',
                        },
                    }
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

  /v2/transactions/bulk/mark-processed:
    post:
      operationId: 'v2_bulk_mark_transactions_processed' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Bulk Mark Transactions Processed'
      description: 'Mark a list of incoming transactions as processed.'
      tags: ['Incoming Transactions']
      requestBody:
        description: 'Expected parameters to mark transactions as processed.'
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  minItems: 1
                  maxItems: 1000
                  items:
                    type: object
                    required:
                      - procurosTransactionId
                      - success
                    properties:
                      procurosTransactionId:
                        $ref: '#/components/schemas/ProcurosTransactionId'
                      success:
                        type: boolean
                        description: 'Whether or not your system was able to process the given transaction.'
                      errorReason:
                        type: string
                        description: 'Reason your system was not able to process the given transaction.'
                      errorType:
                        $ref: '#/components/schemas/ErrorType'
                      errorContext:
                        type: object
                        description: 'Additional context/meta data for the error.'
                        additionalProperties:
                          type: string
            examples:
              Example:
                value:
                  [
                    { 'procurosTransactionId': '949b2ef2-3f40-465e-a7ee-ea3f9f189860', 'success': true },
                    {
                      'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
                      'success': false,
                      'errorReason': "Product GTIN '0001647296281' not found",
                      'errorType': 'DATA',
                    },
                  ]

      responses:
        '200':
          description: 'Success'
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      required:
                        - procurosTransactionId
                        - message
                      properties:
                        procurosTransactionId:
                          $ref: '#/components/schemas/ProcurosTransactionId'
                        message:
                          type: string
                          description: 'Status message'
                        errorUrl:
                          type: string

              examples:
                Processed:
                  value:
                    {
                      'data':
                        [
                          { 'procurosTransactionId': '949b2ef2-3f40-465e-a7ee-ea3f9f189860', 'message': 'OK.' },
                          {
                            'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
                            'message': 'OK.',
                            'errorUrl': 'https://portal.procuros.io/transactions/{{procurosTransactionId}}/errors',
                          },
                        ],
                    }

        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

  /v2/all-transactions:
    get:
      operationId: 'v2_list_all_transactions' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'List All Transactions'
      description: 'List all existing transactions to and from your trade partners.'
      tags: ['All Transactions']
      parameters:
        - name: 'filter[type]'
          in: query
          required: false
          allowReserved: true
          schema:
            $ref: '#/components/schemas/TransactionType'
        - name: 'filter[flow]'
          in: query
          required: false
          allowReserved: true
          schema:
            $ref: '#/components/schemas/TransactionFlow'
        - name: 'filter[status]'
          in: query
          required: false
          allowReserved: true
          schema:
            $ref: '#/components/schemas/TransactionStatus'
        - name: 'filter[created_between]'
          in: query
          required: false
          allowReserved: true
          schema:
            type: string
            description: 'Filter transactions created between two dates. Format: YYYY-MM-DD,YYYY-MM-DD'
            example: '2024-01-01,2024-01-31'
        - name: cursor
          in: query
          description: 'Page cursor'
          required: false
          schema:
            type: string
        - name: per_page
          in: query
          description: 'Number of transactions returned per page.'
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: 'Success'
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                  - perPage
                  - count
                  - nextCursor
                  - nextPageUrl
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Transaction'
                  hasMore:
                    type: boolean
                    description: 'Whether or not more transactions can be fetched on the next page.'
                  perPage:
                    type: integer
                    description: 'Amount of transactions returned per page.'
                  count:
                    type: integer
                    description: 'Amount of transactions on the current page.'
                  nextCursor:
                    type: string
                    nullable: true
                    description: 'Supplied to the `cursor` query parameter. See [Pagination] for more info.'
                  nextPageUrl:
                    type: string
                    format: url
                    nullable: true
                    description: 'Prebuilt URL to retrieve the next page of transactions.'
              examples:
                List of transactions:
                  value:
                    {
                      'hasMore': false,
                      'perPage': 100,
                      'count': 3,
                      'nextCursor': null,
                      'nextPageUrl': null,
                      'items':
                        [
                          {
                            'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
                            'type': 'ORDER',
                            'flow': 'LIVE',
                            'status': 'SUCCESS',
                            'createdAt': '2024-01-01T00:00:00+00:00',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                        'postalAddress':
                                          {
                                            'name': 'ACME Co. Ltd.',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'postalCode': '82643',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'John',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-09-30',
                                    'currency': 'EUR',
                                    'requestedDeliveryDate': '2021-10-05',
                                    'comments': 'Something to comment',
                                  },
                                'items':
                                  [
                                    {
                                      'lineNumber': 1,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765432', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 20.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'First product description.',
                                      'unitPrice': 0.15,
                                    },
                                    {
                                      'lineNumber': 2,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765433', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 19.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'Sparkling Water - Crate (6x0.75l).',
                                      'unitPrice': 1.5,
                                    },
                                    {
                                      'lineNumber': 3,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765434', 'domain': 'GS1' },
                                          { 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': true,
                                      'quantity': 19.0,
                                      'unitOfMeasure': 'EA',
                                      'description': 'Deposit 1x crate + 6x bottles.',
                                      'unitPrice': 3.3,
                                    },
                                  ],
                              },
                          },
                          {
                            'procurosTransactionId': '94fe13aa-8c9b-40e5-9937-42b852185858',
                            'type': 'SHIPPING_NOTICE',
                            'flow': 'LIVE',
                            'status': 'SUCCESS',
                            'createdAt': '2024-01-01T00:00:00+00:00',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                        'postalAddress':
                                          {
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'name': 'ACME Co. Ltd.',
                                            'postalCode': '82643',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'Jane',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'shippingNoticeIdentifier': 'SN9383-R45',
                                    'shippingNoticeDate': '2021-11-24',
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-11-20',
                                    'despatchDate': '2021-11-05',
                                    'requestedDeliveryDate': '2021-11-06',
                                    'expectedDeliveryDate': '2021-11-06',
                                    'carrier': 'Example Delivery Solution',
                                    'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
                                    'trackingUrl': 'https://api.procuros.com/example',
                                    'comments': 'Something to comment',
                                  },
                                'transportUnits':
                                  [
                                    {
                                      'items':
                                        [
                                          {
                                            'lineNumber': 1,
                                            'orderLineNumber': 1,
                                            'identifiers':
                                              [
                                                { 'identifier': '4300348765432', 'domain': 'GS1' },
                                                { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                                { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                              ],
                                            'isDepositItem': false,
                                            'orderedQuantity': 20.0,
                                            'shippedQuantity': 20.0,
                                            'unitPrice': 200.0,
                                            'description': 'First product description.',
                                          },
                                          {
                                            'lineNumber': 2,
                                            'orderLineNumber': 2,
                                            'identifiers':
                                              [
                                                { 'identifier': '4300348765433', 'domain': 'GS1' },
                                                { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                                { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                              ],
                                            'isDepositItem': false,
                                            'orderedQuantity': 19.0,
                                            'shippedQuantity': 15.0,
                                            'openQuantityAction': 'DISCARDED',
                                            'unitPrice': 1.5,
                                            'description': 'Second product description.',
                                          },
                                        ],
                                    },
                                  ],
                              },
                          },
                          {
                            'procurosTransactionId': '94fe1224-ae01-4587-8155-8e852cbbe75d',
                            'type': 'INVOICE',
                            'flow': 'LIVE',
                            'status': 'SUCCESS',
                            'createdAt': '2024-01-01T00:00:00+00:00',
                            'content':
                              {
                                'header':
                                  {
                                    'buyer':
                                      {
                                        'name': 'ACME Co. Ltd.',
                                        'identifiers':
                                          [
                                            { 'identifier': '4522704465331', 'domain': 'GS1' },
                                            { 'identifier': 'DE123456789', 'domain': 'VAT_DE' },
                                          ],
                                        'postalAddress':
                                          {
                                            'city': 'Berlin',
                                            'countryCode': 'DE',
                                            'name': 'ACME Co. Ltd.',
                                            'postalCode': '82643',
                                            'street': 'Elroy-Fritsch-Ring 15',
                                          },
                                        'contacts':
                                          [
                                            {
                                              'firstName': 'Jane',
                                              'lastName': 'Doe',
                                              'email': '[email protected]',
                                              'fax': '(818) 463-6124',
                                              'phone': '+1.352.856.0626',
                                            },
                                          ],
                                      },
                                    'supplier':
                                      {
                                        'name': 'Testsupplier',
                                        'identifiers':
                                          [
                                            { 'identifier': '4231930775745', 'domain': 'GS1' },
                                            { 'identifier': 'DE234567890', 'domain': 'VAT_DE' },
                                          ],
                                      },
                                    'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                    'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                    'invoiceIdentifier': 'IV9383-R45',
                                    'invoiceDate': '2021-11-11',
                                    'shippingNoticeIdentifier': 'SN9383-R45',
                                    'shippingNoticeDate': '2021-11-04',
                                    'orderIdentifier': 'PO9383-R45',
                                    'orderDate': '2021-11-10',
                                    'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
                                    'comments': 'Something to comment',
                                  },
                                'items':
                                  [
                                    {
                                      'lineNumber': 1,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765432', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 20,
                                      'unitPrice': 200.0,
                                      'description': 'First product description.',
                                      'tax':
                                        { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
                                    },
                                    {
                                      'lineNumber': 2,
                                      'identifiers':
                                        [
                                          { 'identifier': '4300348765433', 'domain': 'GS1' },
                                          { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                          { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                        ],
                                      'isDepositItem': false,
                                      'quantity': 15.0,
                                      'unitPrice': 1.5,
                                      'description': 'Second product description.',
                                      'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
                                    },
                                  ],
                              },
                          },
                        ],
                    }
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

  /v2/all-transactions/{procurosTransactionId}:
    get:
      operationId: 'v2_show_transaction' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Show Transaction'
      description: 'Show a single transaction.'
      tags: ['All Transactions']
      parameters:
        - name: 'procurosTransactionId'
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: 'Success'
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/Transaction'
              examples:
                Single Transaction:
                  value:
                    {
                      'data':
                        {
                          'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
                          'type': 'ORDER',
                          'flow': 'LIVE',
                          'status': 'SUCCESS',
                          'createdAt': '2024-01-01T00:00:00+00:00',
                          'content':
                            {
                              'header':
                                {
                                  'buyer':
                                    {
                                      'name': 'ACME Co. Ltd.',
                                      'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
                                      'postalAddress':
                                        {
                                          'name': 'ACME Co. Ltd.',
                                          'street': 'Elroy-Fritsch-Ring 15',
                                          'city': 'Berlin',
                                          'countryCode': 'DE',
                                          'postalCode': '82643',
                                        },
                                      'contacts':
                                        [
                                          {
                                            'firstName': 'John',
                                            'lastName': 'Doe',
                                            'email': '[email protected]',
                                            'fax': '(818) 463-6124',
                                            'phone': '+1.352.856.0626',
                                          },
                                        ],
                                    },
                                  'supplier':
                                    {
                                      'name': 'Testsupplier',
                                      'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
                                    },
                                  'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
                                  'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
                                  'orderIdentifier': 'PO9383-R45',
                                  'orderDate': '2021-09-30',
                                  'currency': 'EUR',
                                  'requestedDeliveryDate': '2021-10-05',
                                  'comments': 'Something to comment',
                                },
                              'items':
                                [
                                  {
                                    'lineNumber': 1,
                                    'identifiers':
                                      [
                                        { 'identifier': '4300348765432', 'domain': 'GS1' },
                                        { 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
                                        { 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
                                      ],
                                    'isDepositItem': false,
                                    'quantity': 20.0,
                                    'unitOfMeasure': 'EA',
                                    'description': 'First product description.',
                                    'unitPrice': 0.15,
                                  },
                                  {
                                    'lineNumber': 2,
                                    'identifiers':
                                      [
                                        { 'identifier': '4300348765433', 'domain': 'GS1' },
                                        { 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
                                        { 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
                                      ],
                                    'isDepositItem': false,
                                    'quantity': 19.0,
                                    'unitOfMeasure': 'EA',
                                    'description': 'Sparkling Water - Crate (6x0.75l).',
                                    'unitPrice': 1.5,
                                  },
                                  {
                                    'lineNumber': 3,
                                    'identifiers':
                                      [
                                        { 'identifier': '4300348765434', 'domain': 'GS1' },
                                        { 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
                                      ],
                                    'isDepositItem': true,
                                    'quantity': 19.0,
                                    'unitOfMeasure': 'EA',
                                    'description': 'Deposit 1x crate + 6x bottles.',
                                    'unitPrice': 3.3,
                                  },
                                ],
                            },
                        },
                    }
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'

  /v2/errors:
    post:
      operationId: 'v2_report_error' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Report Outgoing Error'
      description: 'If you encounter an error while building an outgoing transaction payload, you can report it here. The error will enter the same exception handling process as an error reported while processing incoming transactions.'
      tags: ['Outgoing Transactions']
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - errorReason
                - errorType
              properties:
                errorReason:
                  type: string
                  description: 'The reason for the error.'
                errorType:
                  $ref: '#/components/schemas/ErrorType'
                errorContext:
                  type: object
                  description: 'Additional context/meta data for the error.'
                  additionalProperties:
                    type: string
                transactionIdentifier:
                  type: string
                  description: 'Provide if error can be assigned to a specific outgoing transaction. Depending on the transactionType: Order number, Invoice number, etc.'
                  example: 'IV-0001'
                transactionType:
                  description: 'Provide if error can be assigned to a specific outgoing transaction.'
                  allOf:
                    - $ref: '#/components/schemas/TransactionType'

      responses:
        '201':
          description: 'Created'
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                properties:
                  message:
                    type: string
                    description: 'Status message'
                  errorUrl:
                    type: string
                    description: 'URL to the Procuros portal where users can view the error and mark it as resolved.'
              example: { 'message': 'OK.', 'errorUrl': 'https://portal.procuros.io/.../errors/{{procurosErrorId}}' }
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '422':
          description: 'Validation Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralValidationErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'


  /v2/ping:
    get:
      operationId: 'v2_ping' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
      summary: 'Test connection to API'
      description: 'Send an authorized request to the API to test the connectivity.'
      tags: ['Misc']
      responses:
        '204':
          description: 'Success'
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '5XX':
          description: 'Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
I