> ## Documentation Index
> Fetch the complete documentation index at: https://docs.procuros.io/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAPI Specification Download

## 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.

You can also download it in JSON format here: [Procuros-OpenAPI.json](https://docs.procuros.io/Procuros-OpenAPI.json)

```yaml theme={null}
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.'
        category:
          type: string
          description: 'VAT category for this tax. One of VAT, EXEMPT, ZERO_RATED, VAT_REVERSE_CHARGE, VAT_INTRA_COMMUNITY, VAT_EXPORT or VAT_OUT_OF_SCOPE.'
          example: 'VAT'

    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'
        technicalRecipientOrderIdentifier:
          type: string
          description: 'Technical recipient order identifier.'
          example: 'TR-55555'

    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

    ItemSubstitution:
      type: object
      description: 'A reference to the counterpart article in a substitution.'
      properties:
        identifiers:
          type: array
          description: 'Identifiers of the referenced article. Each entry must carry a `domain` and an `identifier`; name the counterpart with the same identifiers used on its own line item.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'

    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.'

    SerialNumber:
      type: object
      description: 'A single serialized unit of a line item.'
      required:
        - identifiers
      properties:
        identifiers:
          type: object
          description: 'Identifiers of the serialized unit. At least one identifier should be provided.'
          properties:
            serial:
              type: string
              maxLength: 255
              description: 'Manufacturer serial number of the unit.'
              example: 'SN-2024-000123'
            imei:
              type: string
              maxLength: 255
              description: 'International Mobile Equipment Identity (IMEI) of the unit.'
              example: '490154203237518'
        batchIdentifier:
          type: string
          maxLength: 255
          description: 'Identifier of the batch this unit belongs to. References the "batchIdentifier" of an entry in "batches".'
          example: 'BATCH-001-2024'

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

    TransportUnitCarrier:
      type: object
      description: 'Carrier information for a transport unit.'
      properties:
        name:
          type: string
          description: 'Carrier name.'
          example: 'DHL Express'
        trackingNumber:
          type: string
          description: 'Tracking number.'
          example: '00340434161234567890'
        trackingUrl:
          type: string
          description: 'Tracking URL.'
          example: 'https://www.dhl.com/en/express/tracking.html?AWB=123456789&brand=DHL'

    TransportLabel:
      type: object
      description: 'Transport label (ZPL + PDF) for a transport unit.'
      readOnly: true
      properties:
        zplUrl:
          type: string
          description: 'URL to the raw ZPL of the transport label.'
          example: 'https://s3.example.com/sscc-labels/340434100000000017.zpl'
        pdfUrl:
          type: string
          description: 'URL to the rendered PDF of the transport label.'
          example: 'https://s3.example.com/sscc-labels/340434100000000017.pdf'

    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'
        eudr:
          type: object
          description: 'EU Deforestation Regulation (EUDR) compliance information'
          properties:
            verificationNumber:
              type: string
              description: 'Number issued by the EU Due Diligence System confirming the submitted due diligence statement'
              example: 'FAHLHGK7'
            referenceNumber:
              type: string
              description: 'Unique number issued by the EU Due Diligence System that identifies the reported product lot'
              example: '24ITYGBJFOS258'

    CertificationsRequired:
      type: object
      description: 'Indicates which certifications are required for the ordered item.'
      properties:
        fairtrade:
          type: boolean
          nullable: true
          description: 'Whether Fairtrade certification is required for this item.'
        supplierQa:
          type: boolean
          nullable: true
          description: 'Whether supplier quality assurance certification is required for this item.'
        eudr:
          type: boolean
          nullable: true
          description: 'Whether EU Deforestation Regulation (EUDR) certification is required for this item.'

    LineItemAttachmentType:
      type: string
      description: 'Type/classification of the line item attachment document.'
      enum:
        - DECLARATION_OF_CONFORMITY
        - ENERGY_LABEL
        - EU_DATASHEET
        - SAFETY_DATASHEET
        - TECHNICAL_DATASHEET
        - PRODUCT_LABEL

    LineItemAttachment:
      type: object
      description: 'Document attachment for a line item, such as technical datasheets, product labels, or compliance documents.'
      properties:
        fileName:
          type: string
          description: 'Name of the attachment file.'
        url:
          type: string
          format: uri
          description: 'URL to the attachment file.'
        mimeType:
          type: string
          description: 'MIME type of the attachment file (e.g., application/pdf).'
        type:
          $ref: '#/components/schemas/LineItemAttachmentType'

    # 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: 'VAT category for this tax amount. One of VAT, EXEMPT, ZERO_RATED, VAT_REVERSE_CHARGE, VAT_INTRA_COMMUNITY, VAT_EXPORT or VAT_OUT_OF_SCOPE.'
                      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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the supplier party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual supplier in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the buyer party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          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:
          description: 'Requested delivery date. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedEarliestDeliveryDate:
          description: 'Earliest date of the requested delivery window. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedLatestDeliveryDate:
          description: 'Latest date of the requested delivery window. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          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.'
        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
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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
        freeQuantity:
          type: number
          format: float
          example: 1.0
          default: null
          description: 'The quantity of this item that is free of charge, in addition to (not part of) `quantity`. For example, an order line with `quantity` 10 and `freeQuantity` 2 means 12 units are delivered in total, 2 of which are 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).'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string
        comments:
          type: string
        unitPrice:
          example: 4.75
          type: number
          format: float
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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:
          description: 'Requested delivery date for this item. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          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.'
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        season:
          type: string
          description: 'The season or collection period this item belongs to. Used to group and filter assortment by seasonal release.'
        gender:
          type: string
          description: 'The target gender this item is designed for (e.g. Male, Female, Unisex). Used to classify and filter assortment by gender segment.'
          example: 'SS27'
        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.'
        certificationsRequired:
          $ref: '#/components/schemas/CertificationsRequired'
        attachments:
          type: array
          description: 'Document attachments for this line item, such as technical datasheets, product labels, or compliance documentation.'
          items:
            $ref: '#/components/schemas/LineItemAttachment'
        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: 'Conditional based on the `type` field in the header: Required when type is `CHANGE`; optional when type is `ACCEPT` (omit to confirm all lines as-is, or include to selectively confirm specific items); prohibited when type is `REJECT` or when type is omitted/null (both treated as a full rejection). 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/OrderResponseItemWithSubSubItems'
        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: 'VAT category for this tax amount. One of VAT, EXEMPT, ZERO_RATED, VAT_REVERSE_CHARGE, VAT_INTRA_COMMUNITY, VAT_EXPORT or VAT_OUT_OF_SCOPE.'
                      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. **If this field is omitted or set to null, the response is treated identically to `REJECT` — items are prohibited and the order is considered fully rejected. It is strongly recommended to always provide an explicit type.**'
          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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        orderResponseIdentifier:
          type: string
          example: 'RE-PO9383-R45'
          description: 'Order response number assigned by the supplier to identify this order response.'
        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: 'Optional. Prohibited for `REJECT` type. The confirmed date on which the goods arrive at the destination. Can be omitted, for example when only the `confirmedShipmentDate` is known. Do not send the shipment date in this field. Whether it is required depends on your trade partner.'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        confirmedShipmentDate:
          description: 'The confirmed date on which the goods leave the supplier (shipment/dispatch date). Distinct from the confirmed delivery date, which is when the goods arrive at the destination.'
          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'
        requestedEarliestDeliveryDate:
          description: 'Earliest date of the requested delivery window. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedLatestDeliveryDate:
          description: 'Latest date of the requested delivery window. Use ISO 8601 date format: YYYY-MM-DD (e.g. 2023-12-06).'
          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
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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'
        confirmedShipmentDate:
          $ref: '#/components/schemas/DateTime'
        unitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
        description:
          type: string
        comments:
          type: string
        unitPrice:
          example: 4.75
          type: number
          format: float
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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.'
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        season:
          type: string
          description: 'The season or collection period this item belongs to. Used to group and filter assortment by seasonal release.'
        gender:
          type: string
          description: 'The target gender this item is designed for (e.g. Male, Female, Unisex). Used to classify and filter assortment by gender segment.'
          example: 'SS27'
        substituteOf:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The originally ordered article that this line item substitutes. Set on the substitute line item.'
        substitutedBy:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The article delivered to substitute this originally ordered line item, which typically carries a shipped or confirmed quantity of 0. Set on the originally ordered line item.'
        modificationGroups:
          type: array
          items:
            $ref: '#/components/schemas/ModificationGroup'
        attachments:
          type: array
          description: 'Document attachments for this line item response, such as technical datasheets, product labels, or compliance documentation.'
          items:
            $ref: '#/components/schemas/LineItemAttachment'

    OrderResponseItemWithSubItems:
      allOf:
        - $ref: '#/components/schemas/OrderResponseItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this sub order response item.'
              items:
                $ref: '#/components/schemas/OrderResponseItem'

    OrderResponseItemWithSubSubItems:
      allOf:
        - $ref: '#/components/schemas/OrderResponseItem'
        - type: object
          properties:
            subItems:
              type: array
              description: 'Sub items of this order response item. Supports two levels of nesting.'
              items:
                $ref: '#/components/schemas/OrderResponseItemWithSubItems'

    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 amount still owed, that is grossAmount minus paidAmount. It equals grossAmount when nothing was paid up front.'
            paidAmount:
              type: number
              format: float
              description: 'The part of the invoice already settled before it was issued, for example a prepayment or a deposit. dueAmount is already net of this value.'
              example: 155.53
            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: 'VAT category for this tax amount. One of VAT, EXEMPT, ZERO_RATED, VAT_REVERSE_CHARGE, VAT_INTRA_COMMUNITY, VAT_EXPORT or VAT_OUT_OF_SCOPE.'
                      description:
                        type: string
            modificationGroups:
              type: array
              items:
                $ref: '#/components/schemas/ModificationGroup'

    InvoiceHeader:
      type: object
      required:
        - buyer
        - supplier
        - invoiceIdentifier
        - invoiceDate
        - 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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        invoiceIdentifier:
          type: string
          description: 'Invoice number/reference.'
          example: 'IV-0001'
        invoiceDate:
          $ref: '#/components/schemas/DateTime'
        invoiceValueDate:
          $ref: '#/components/schemas/DateTime'
        invoiceDueDate:
          $ref: '#/components/schemas/DateTime'
        shippingNoticeIdentifier:
          type: string
          nullable: true
          description: 'Shared shipping notice number/reference for an invoice covering a single shipping notice.'
          example: 'SN-0001'
        shippingNoticeDate:
          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'
          nullable: true
        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'
        paymentMethod:
          type: string
          description: 'How the document is to be paid.'
          enum:
            - CASH
            - CREDIT_TRANSFER
            - BANK_CARD
            - DIRECT_DEBIT
            - CREDIT_CARD
        type:
          type: string
          enum:
            - PARTIAL_INVOICE
        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: 'For invoices covering multiple shipping notices, provide the shipping notice number/reference for this item and omit the header-level shipping notice fields.'
          example: 'SN-0001'
        shippingNoticeDate:
          description: 'For invoices covering multiple shipping notices, provide the shipping notice date for this item and omit the header-level shipping notice fields.'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        shippingNoticeLineNumber:
          type: integer
          description: 'Optional shipping notice line number for this item when the invoice covers multiple shipping notices.'
          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: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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, in addition to (not part of) `quantity`. For example, an order line with `quantity` 10 and `freeQuantity` 2 means 12 units are delivered in total, 2 of which are 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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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.'
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        substituteOf:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The originally ordered article that this line item substitutes. Set on the substitute line item.'
        substitutedBy:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The article delivered to substitute this originally ordered line item, which typically carries a shipped or confirmed quantity of 0. Set on the originally ordered line item.'
        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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'
        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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          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'
        requestedEarliestDeliveryDate:
          description: 'Earliest date of the requested delivery window.'
          allOf:
            - $ref: '#/components/schemas/DateTime'
        requestedLatestDeliveryDate:
          description: 'Latest date of the requested delivery window.'
          allOf:
            - $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. Supported values: EURO_PALLET (Euro Pallet 120×80 cm), EURO_PALLET_HALF (1/2 Euro Pallet 80×60 cm), EURO_PALLET_QUARTER (1/4 Euro Pallet 60×40 cm), PALLET (generic/non-Euro pallet), PACKAGE, CARTON, CONTAINER.'
          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'
        carrier:
          $ref: '#/components/schemas/TransportUnitCarrier'
        transportLabel:
          $ref: '#/components/schemas/TransportLabel'
        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.'
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer.'
        identifiers:
          type: array
          minItems: 1
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'
        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.'
        promotionCode:
          type: string
          maxLength: 255
          description: 'Promotion code applied to this item.'
        contractReference:
          type: string
          maxLength: 255
          description: 'Contract reference for this item.'
        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.'
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        substituteOf:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The originally ordered article that this line item substitutes. Set on the substitute line item.'
        substitutedBy:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The article delivered to substitute this originally ordered line item, which typically carries a shipped or confirmed quantity of 0. Set on the originally ordered line item.'
        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

    ShipToParty:
      type: object
      description: 'A party object where identifiers are optional, used specifically for shipTo fields.'
      properties:
        name:
          type: string
          description: 'Mandatory if the deprecated "name" attribute on the "PostalAddress" object is omitted.'
        identifiers:
          type: array
          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

    FinalRecipientParty:
      type: object
      description: 'A party object where identifiers are optional, used specifically for finalRecipient fields.'
      properties:
        name:
          type: string
          description: 'Mandatory if the deprecated "name" attribute on the "PostalAddress" object is omitted.'
        identifiers:
          type: array
          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:
        firstName:
          type: string
          example: 'Atikin'
        lastName:
          type: string
          example: 'Iar'
        phone:
          type: string
          example: '+491763021548'
        mobile:
          type: string
          example: '+447881561299'
        email:
          type: string
          example: 'orders@buyer.com'
          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
        - isLatestVersion
      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'
        replacesProcurosTransactionId:
          type: string
          format: uuid
          nullable: true
          description: 'ID of the transaction this one replaces (i.e. this is a newer version of that transaction).'
          example: '949b2f25-fd9d-4c58-8899-b4dc277f8cf9'
        replacedByProcurosTransactionId:
          type: string
          format: uuid
          nullable: true
          description: 'ID of the transaction that replaced this one (i.e. a newer version exists).'
          example: null
        isLatestVersion:
          type: boolean
          description: 'Whether this is the latest version of the transaction. False when a newer version exists (see replacedByProcurosTransactionId).'
          example: true
        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
        - isLatestVersion
      properties:
        procurosTransactionId:
          $ref: '#/components/schemas/ProcurosTransactionId'
        type:
          $ref: '#/components/schemas/TransactionType'
        replacesProcurosTransactionId:
          type: string
          format: uuid
          nullable: true
          description: 'ID of the transaction this one replaces (i.e. this is a newer version of that transaction).'
          example: '949b2f25-fd9d-4c58-8899-b4dc277f8cf9'
        replacedByProcurosTransactionId:
          type: string
          format: uuid
          nullable: true
          description: 'ID of the transaction that replaced this one (i.e. a newer version exists).'
          example: null
        isLatestVersion:
          type: boolean
          description: 'Whether this is the latest version of the transaction. False when a newer version exists (see replacedByProcurosTransactionId).'
          example: true
        content:
          $ref: '#/components/schemas/TransactionContent'

    SentTransaction:
      oneOf:
        - $ref: '#/components/schemas/SentOrderTransaction'
        - $ref: '#/components/schemas/SentOrderResponseTransaction'
        - $ref: '#/components/schemas/SentShippingNoticeTransaction'
        - $ref: '#/components/schemas/SentInvoiceTransaction'
        - $ref: '#/components/schemas/SentCreditNoteTransaction'
        - $ref: '#/components/schemas/SentDispatchInstructionTransaction'
        - $ref: '#/components/schemas/SentDispatchInstructionResponseTransaction'
        - $ref: '#/components/schemas/SentReceivalNoticeTransaction'
        - $ref: '#/components/schemas/SentRemittanceAdviceTransaction'
        - $ref: '#/components/schemas/SentProductCatalogTransaction'
        - $ref: '#/components/schemas/SentInventoryReportTransaction'
        - $ref: '#/components/schemas/SentSalesReportTransaction'
      discriminator:
        propertyName: type
        mapping:
          ORDER: '#/components/schemas/SentOrderTransaction'
          ORDER_RESPONSE: '#/components/schemas/SentOrderResponseTransaction'
          SHIPPING_NOTICE: '#/components/schemas/SentShippingNoticeTransaction'
          INVOICE: '#/components/schemas/SentInvoiceTransaction'
          CREDIT_NOTE: '#/components/schemas/SentCreditNoteTransaction'
          DISPATCH_INSTRUCTION: '#/components/schemas/SentDispatchInstructionTransaction'
          DISPATCH_INSTRUCTION_RESPONSE: '#/components/schemas/SentDispatchInstructionResponseTransaction'
          RECEIVAL_NOTICE: '#/components/schemas/SentReceivalNoticeTransaction'
          REMITTANCE_ADVICE: '#/components/schemas/SentRemittanceAdviceTransaction'
          PRODUCT_CATALOG: '#/components/schemas/SentProductCatalogTransaction'
          INVENTORY_REPORT: '#/components/schemas/SentInventoryReportTransaction'
          SALES_REPORT: '#/components/schemas/SentSalesReportTransaction'

    SentOrderTransaction:
      type: object
      title: 'Order'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['ORDER']
        content:
          $ref: '#/components/schemas/Order'

    SentOrderResponseTransaction:
      type: object
      title: 'Order Response'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['ORDER_RESPONSE']
        content:
          $ref: '#/components/schemas/OrderResponse'

    SentShippingNoticeTransaction:
      type: object
      title: 'Shipping Notice'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['SHIPPING_NOTICE']
        content:
          $ref: '#/components/schemas/ShippingNotice'

    SentInvoiceTransaction:
      type: object
      title: 'Invoice'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['INVOICE']
        content:
          $ref: '#/components/schemas/Invoice'

    SentCreditNoteTransaction:
      type: object
      title: 'Credit Note'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['CREDIT_NOTE']
        content:
          $ref: '#/components/schemas/CreditNote'

    SentDispatchInstructionTransaction:
      type: object
      title: 'Dispatch Instruction'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['DISPATCH_INSTRUCTION']
        content:
          $ref: '#/components/schemas/DispatchInstruction'

    SentDispatchInstructionResponseTransaction:
      type: object
      title: 'Dispatch Instruction Response'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['DISPATCH_INSTRUCTION_RESPONSE']
        content:
          $ref: '#/components/schemas/DispatchInstructionResponse'

    SentReceivalNoticeTransaction:
      type: object
      title: 'Receival Notice'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['RECEIVAL_NOTICE']
        content:
          $ref: '#/components/schemas/ReceivalNotice'

    SentRemittanceAdviceTransaction:
      type: object
      title: 'Remittance Advice'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['REMITTANCE_ADVICE']
        content:
          $ref: '#/components/schemas/RemittanceAdvice'

    SentProductCatalogTransaction:
      type: object
      title: 'Product Catalog'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['PRODUCT_CATALOG']
        content:
          $ref: '#/components/schemas/ProductCatalog'

    SentInventoryReportTransaction:
      type: object
      title: 'Inventory Report'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['INVENTORY_REPORT']
        content:
          $ref: '#/components/schemas/InventoryReport'

    SentSalesReportTransaction:
      type: object
      title: 'Sales Report'
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum: ['SALES_REPORT']
        content:
          $ref: '#/components/schemas/SalesReport'

    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 amount still owed, that is grossAmount minus paidAmount. It equals grossAmount when nothing was paid up front.'
            paidAmount:
              type: number
              format: float
              description: 'The part of the invoice already settled before it was issued, for example a prepayment or a deposit. dueAmount is already net of this value.'
              example: 155.53
            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: 'VAT category for this tax amount. One of VAT, EXEMPT, ZERO_RATED, VAT_REVERSE_CHARGE, VAT_INTRA_COMMUNITY, VAT_EXPORT or VAT_OUT_OF_SCOPE.'
                      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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        creditNoteIdentifier:
          type: string
          description: 'Credit note number/reference.'
          example: 'CN-0001'
        creditNoteDate:
          $ref: '#/components/schemas/DateTime'
        creditNoteValueDate:
          $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'
        paymentMethod:
          type: string
          description: 'How the document is to be paid.'
          enum:
            - CASH
            - CREDIT_TRANSFER
            - BANK_CARD
            - DIRECT_DEBIT
            - CREDIT_CARD
        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: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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, in addition to (not part of) `quantity`. For example, an order line with `quantity` 10 and `freeQuantity` 2 means 12 units are delivered in total, 2 of which are 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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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.'
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        certifications:
          $ref: '#/components/schemas/Certifications'
        substituteOf:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The originally ordered article that this line item substitutes. Set on the substitute line item.'
        substitutedBy:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The article delivered to substitute this originally ordered line item, which typically carries a shipped or confirmed quantity of 0. Set on the originally ordered line item.'
        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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'
        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. Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          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
        orderIdentifier:
          type: string
          description: 'Order number assigned to the related purchase order by the buyer. Allows referencing different orders on different line items within the same dispatch instruction.'
          example: 'ORDER_123456'
        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
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'
        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'
        carrier:
          $ref: '#/components/schemas/TransportUnitCarrier'
        transportLabel:
          $ref: '#/components/schemas/TransportLabel'
        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:
          description: 'Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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. Identifiers are optional.'
          allOf:
            - $ref: '#/components/schemas/FinalRecipientParty'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          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
        substituteOf:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The originally ordered article that this line item substitutes. Set on the substitute line item.'
        substitutedBy:
          allOf:
            - $ref: '#/components/schemas/ItemSubstitution'
          description: 'The article delivered to substitute this originally ordered line item, which typically carries a shipped or confirmed quantity of 0. Set on the originally ordered line item.'
        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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        recommendedRetailPrice:
          type: number
          format: float
          default: null
          example: 2.00
        tax:
          $ref: '#/components/schemas/Tax'
        identifiers:
          type: array
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect at least one identifier with domain `GS1` or `BUYER`.'
          items:
            $ref: '#/components/schemas/ItemIdentifier'
        batches:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'

    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
        carrier:
          $ref: '#/components/schemas/TransportUnitCarrier'
        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:
          description: 'Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $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
          description: 'Which identifiers are required depends on your trade partner. Most trade partners expect 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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'

    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'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $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:
          description: 'Note: unlike other party fields, identifiers are optional for shipTo.'
          allOf:
            - $ref: '#/components/schemas/ShipToParty'
        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'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing 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'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the buyer or bill_to party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual buyer or billing party in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'

    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'
        technicalRecipient:
          description: 'Used when the recipient of the message differs from the receiver party. Common in scenarios where invoices or documents need to be sent to a centralized receiving entity (e.g., a group headquarters or shared services center) that differs from the actual receiver in the transaction.'
          allOf:
            - $ref: '#/components/schemas/Party'
        technicalSender:
          description: 'Used when the sender of the message differs from the supplier party. Common in scenarios where orders or documents are sent from a centralized sending entity (e.g., a group headquarters or shared services center) that differs from the actual buyer in the transaction.'
          allOf:
            - $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
        pricingUnitOfMeasure:
          type: string
          maxLength: 255
          description: 'The unit of measure used for pricing. This field specifies the unit that the price refers to, which may differ from the quantity unit (e.g., price per carton when quantity is in pieces).'
        pricingUnitQuantity:
          type: number
          format: float
          description: 'The quantity of base units contained in the pricing unit of measure. For example, if the price is per carton (pricingUnitOfMeasure: "CT") and each carton contains 100 pieces, this field stores 100.'
        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
        cnCode:
          type: string
          description: 'The 8-digit Combined Nomenclature (CN) code classifying this product for EU customs and trade statistics. Suppliers are responsible for providing a valid code.'
        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.'
        mscNumber:
          type: string
          description: 'An MSC number refers to an identification number issued by the Marine Stewardship Council (MSC), an international organization that certifies sustainable fishing practices.'
        season:
          type: string
          description: 'The season or collection period this item belongs to. Used to group and filter assortment by seasonal release.'
        gender:
          type: string
          description: 'The target gender this item is designed for (e.g. Male, Female, Unisex). Used to classify and filter assortment by gender segment.'
          example: 'SS27'
        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'
        ingredients:
          type: string
          description: 'A simple string field to transmit the list of ingredients of a food item'
        allergens:
          type: array
          description: 'An array of allergens that are contained in a food item'
          items:
            type: object
            properties:
              identifiers:
                type: object
                description: 'Identifiers for the allergen'
                properties:
                  gdsn:
                    type: string
                    description: 'GDSN identifier of the allergen'
                  usda:
                    type: string
                    description: 'USDA identifier of the allergen'
                  bls:
                    type: string
                    description: 'BLS identifier of the allergen'
                  senderInternal:
                    type: string
                    description: 'Sender internal identifier of the allergen'
                  receiverInternal:
                    type: string
                    description: 'Receiver internal identifier of the allergen'
              name:
                type: string
                description: 'Name of the allergen'
              presence:
                type: string
                description: 'Presence of the allergen in the product'
                enum:
                  - PRESENT
                  - TRACES
                  - FREE_FROM
                  - UNKNOWN
        nutritionalInformation:
          type: object
          description: 'Comprehensive nutritional information for the product'
          properties:
            energy:
              type: object
              properties:
                totalInKcal:
                  type: number
                  format: float
                  description: 'Total energy in kilocalories'
                totalInKj:
                  type: number
                  format: float
                  description: 'Total energy in kilojoules'
            fats:
              type: object
              properties:
                totalInGrams:
                  type: number
                  format: float
                saturatedInGrams:
                  type: number
                  format: float
                monounsaturatedInGrams:
                  type: number
                  format: float
                polyunsaturatedInGrams:
                  type: number
                  format: float
                transFatsInGrams:
                  type: number
                  format: float
                omega3FattyAcidsInGrams:
                  type: number
                  format: float
                omega6FattyAcidsInGrams:
                  type: number
                  format: float
                omega9FattyAcidsInGrams:
                  type: number
                  format: float
                epaInGrams:
                  type: number
                  format: float
                  description: 'Eicosapentaenoic acid in grams'
                dhaInGrams:
                  type: number
                  format: float
                  description: 'Docosahexaenoic acid in grams'
                cholesterolInMilligrams:
                  type: number
                  format: float
            carbohydrates:
              type: object
              properties:
                totalInGrams:
                  type: number
                  format: float
                sugarsInGrams:
                  type: number
                  format: float
                addedSugarsInGrams:
                  type: number
                  format: float
                polyolsInGrams:
                  type: number
                  format: float
                starchInGrams:
                  type: number
                  format: float
                lactoseInGrams:
                  type: number
                  format: float
            fiber:
              type: object
              properties:
                totalInGrams:
                  type: number
                  format: float
                solubleInGrams:
                  type: number
                  format: float
                insolubleInGrams:
                  type: number
                  format: float
                betaGlucansInGrams:
                  type: number
                  format: float
            proteins:
              type: object
              properties:
                totalInGrams:
                  type: number
                  format: float
                aminoAcids:
                  type: object
                  properties:
                    alanineInGrams:
                      type: number
                      format: float
                    arginineInGrams:
                      type: number
                      format: float
                    asparticAcidInGrams:
                      type: number
                      format: float
                    cysteineInGrams:
                      type: number
                      format: float
                    glutamicAcidInGrams:
                      type: number
                      format: float
                    glycineInGrams:
                      type: number
                      format: float
                    histidineInGrams:
                      type: number
                      format: float
                    isoleucineInGrams:
                      type: number
                      format: float
                    leucineInGrams:
                      type: number
                      format: float
                    lysineInGrams:
                      type: number
                      format: float
                    methionineInGrams:
                      type: number
                      format: float
                    phenylalanineInGrams:
                      type: number
                      format: float
                    prolineInGrams:
                      type: number
                      format: float
                    serineInGrams:
                      type: number
                      format: float
                    threonineInGrams:
                      type: number
                      format: float
                    tryptophanInGrams:
                      type: number
                      format: float
                    tyrosineInGrams:
                      type: number
                      format: float
                    valineInGrams:
                      type: number
                      format: float
            saltInGrams:
              type: number
              format: float
            sodiumInGrams:
              type: number
              format: float
            alcoholInGrams:
              type: number
              format: float
            waterInGrams:
              type: number
              format: float
            caffeineInMilligrams:
              type: number
              format: float
            taurineInMilligrams:
              type: number
              format: float
            vitamins:
              type: object
              properties:
                vitaminAInMicrograms:
                  type: number
                  format: float
                betaCaroteneInMicrograms:
                  type: number
                  format: float
                vitaminDInMicrograms:
                  type: number
                  format: float
                vitaminEInMicrograms:
                  type: number
                  format: float
                vitaminKInMicrograms:
                  type: number
                  format: float
                vitaminCInMicrograms:
                  type: number
                  format: float
                vitaminB1ThiaminInMicrograms:
                  type: number
                  format: float
                vitaminB2RiboflavinInMicrograms:
                  type: number
                  format: float
                vitaminB3NiacinInMicrograms:
                  type: number
                  format: float
                vitaminB5PantothenicAcidInMicrograms:
                  type: number
                  format: float
                vitaminB6PyridoxinInMicrograms:
                  type: number
                  format: float
                vitaminB7BiotinInMicrograms:
                  type: number
                  format: float
                vitaminB9FolicAcidInMicrograms:
                  type: number
                  format: float
                vitaminB12CyanocobalaminInMicrograms:
                  type: number
                  format: float
            minerals:
              type: object
              properties:
                calciumInMilligrams:
                  type: number
                  format: float
                chlorideInMilligrams:
                  type: number
                  format: float
                chromiumInMicrograms:
                  type: number
                  format: float
                cobaltInMicrograms:
                  type: number
                  format: float
                copperInMilligrams:
                  type: number
                  format: float
                fluorideInMilligrams:
                  type: number
                  format: float
                iodineInMicrograms:
                  type: number
                  format: float
                ironInMilligrams:
                  type: number
                  format: float
                lithiumInMicrograms:
                  type: number
                  format: float
                magnesiumInMilligrams:
                  type: number
                  format: float
                manganeseInMilligrams:
                  type: number
                  format: float
                molybdenumInMicrograms:
                  type: number
                  format: float
                nickelInMicrograms:
                  type: number
                  format: float
                phosphorusInMilligrams:
                  type: number
                  format: float
                potassiumInMilligrams:
                  type: number
                  format: float
                seleniumInMicrograms:
                  type: number
                  format: float
                siliconInMilligrams:
                  type: number
                  format: float
                zincInMilligrams:
                  type: number
                  format: float
            otherCompounds:
              type: object
              properties:
                oxalicAcidInMilligrams:
                  type: number
                  format: float
                purinesInMilligrams:
                  type: number
                  format: float
                uricAcidInMilligrams:
                  type: number
                  format: float
                bicarbonateInMilligrams:
                  type: number
                  format: float
            specialDietaryInfo:
              type: object
              properties:
                breadUnitsBe:
                  type: number
                  format: float
                  description: 'Bread units (BE) for diabetic dietary planning'
                meatFishWeightPerUnitInGrams:
                  type: number
                  format: float
        additives:
          type: array
          description: 'Food additives contained in the product'
          items:
            type: object
            properties:
              identifiers:
                type: object
                description: 'Identifiers for the additive'
                properties:
                  gdsn:
                    type: string
                    description: 'GDSN identifier of the additive (e.g., E300)'
                  usda:
                    type: string
                    description: 'USDA identifier of the additive'
                  bls:
                    type: string
                    description: 'BLS (Bundeslebensmittelschlüssel) identifier'
                  senderInternal:
                    type: string
                    description: 'Sender internal identifier of the additive'
                  receiverInternal:
                    type: string
                    description: 'Receiver internal identifier of the additive'
              name:
                type: string
                description: 'Name of the additive'
        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'
        serialNumbers:
          type: array
          description: 'Serial numbers of the individual units of this line item.'
          items:
            $ref: '#/components/schemas/SerialNumber'
        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': 'jane.doe@example.com',
                                              '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': 'jane.doe@example.com',
                                              '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': 'jane.doe@example.com',
                                              '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': 'jane.doe@example.com',
                                      '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',
                                'technicalRecipientOrderIdentifier': 'TR-55555'
                              },
                            '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': 'jane.doe@example.com',
                                      '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',
                                'technicalRecipientOrderIdentifier': 'TR-55555'
                              },
                            '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': 'jane.doe@example.com',
                                      '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',
                                'technicalRecipientOrderIdentifier': 'TR-55555'
                              },
                            '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': 'jane.doe@example.com',
                                      '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',
                                'technicalRecipientOrderIdentifier': 'TR-55555'
                              },
                            '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': 'jane.doe@example.com',
                                      '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': 'jane.doe@example.com',
                                      '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': 'jane.doe@example.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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':
                                  [
                                    {
                                      'firstName': 'Max',
                                      'lastName': 'Muster',
                                      'phone': '+49 12345',
                                      'mobile': '+49 12345',
                                      'email': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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': 'foo@bar.com',
                                      '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.'
                  procurosTransactionId:
                    $ref: '#/components/schemas/ProcurosTransactionId'
                    description: 'Included when a transaction record was created, even if it was not forwarded to the receiving Trade Partner.'
        '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 whether your system processed an incoming transaction.

        Set `success` to `true` once the transaction has been processed, or `false` if processing failed (optionally with an `errorReason`, `errorType`, and `errorContext`).

        If a transaction was previously reported as failed, you can recover it by calling this endpoint again with `success: true` once the issue has been resolved on your side (for example, after correcting missing master data in your system). The payload is reused from your system, so there is no need to fetch the transaction again: it moves to the delivered state and its associated error is resolved automatically.
      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 in a single request.

        For each item, set `success` to `true` once the transaction has been processed, or `false` if processing failed (optionally with an `errorReason`, `errorType`, and `errorContext`).

        Transactions previously reported as failed can be recovered by including them again with `success: true` once the issue has been resolved on your side. They move to the delivered state and their associated errors are resolved automatically.
      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',
                            'replacesProcurosTransactionId': null,
                            'replacedByProcurosTransactionId': null,
                            'isLatestVersion': true,
                            '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': 'jane.doe@example.com',
                                              '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',
                            'replacesProcurosTransactionId': null,
                            'replacedByProcurosTransactionId': null,
                            'isLatestVersion': true,
                            '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': 'jane.doe@example.com',
                                              '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',
                            'replacesProcurosTransactionId': null,
                            'replacedByProcurosTransactionId': null,
                            'isLatestVersion': true,
                            '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': 'jane.doe@example.com',
                                              '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',
                          'replacesProcurosTransactionId': null,
                          'replacedByProcurosTransactionId': null,
                          'isLatestVersion': true,
                          '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': 'jane.doe@example.com',
                                            '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/transactions/{transportLabelUrl}/download:
    get:
      operationId: 'v2_download_transport_label'
      summary: 'Download Transport Label'
      description: 'Download the file content of a transport label. Use the value of the `zplUrl` or `pdfUrl` field from the `transportLabel` object of a transport unit (available on Shipping Notice and Dispatch Instruction Response transactions) as the `transportLabelUrl` path parameter, depending on whether you want the raw ZPL or the rendered PDF. The response is the streamed file content for download.'
      tags: ['Transport Labels']
      parameters:
        - name: 'transportLabelUrl'
          in: path
          required: true
          description: 'Value of the `zplUrl` or `pdfUrl` field from the `transportLabel` object of a transport unit.'
          schema:
            type: string
      responses:
        '200':
          description: 'Success'
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: 'Streamed file content of the transport label, in ZPL or PDF format depending on the URL used.'
        '4XX':
          description: 'Client Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponse'
        '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'
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.