> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jtl-software.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Seller Events


> API Endpoint to retrieve events from registered sellers. Events are various different actions which may occur when 
sellers are processing channel data such as orders. After receiving a seller events response, each event in the response
needs to be acknowledged using `PATCH /v1/channel/event` request. Unacknowledged events will be delivered again after a
period of time.




## OpenAPI

````yaml /openapi/scx/channel.json get /v1/channel/event
openapi: 3.0.2
info:
  title: JTL-Channel API
  version: 1.0.0
  x-logo:
    url: https://scx-sandbox.ui.jtl-software.com/docs/scx.png
  description: >
    JTL-Channel API is a REST-based API that helps a Channel Integrator to
    connect Marketplace with the JTL-Wawi 

    ERP System.


    # Key Features


    With the JTL-Channel API, you can:

      * Describe connected Marketplace Data Structure by providing Category and Attribute Data
      * Manage Product and Offer Listings
      * Manage Orders 
      * Handle the Post Order Process

    # Development Guide


    There is a detailed development guide available at
    [developer.jtl-software.com](https://developer.jtl-software.com/products/marketplaces/scx-channel-api/change_log).
servers:
  - url: https://scx-sbx.api.jtl-software.com
    description: Sandbox
  - url: https://scx.api.jtl-software.com
    description: Production
security: []
tags:
  - name: Seller
    description: |
      Seller Management
  - name: Channel
    description: Meta channel routes
  - name: Notification
    description: Channel notifications
  - name: Supported Prices
    description: Price type management
  - name: Meta
    description: meta
  - name: Attributes
    description: Channel attributes
  - name: Categories
    description: Channel categories
  - name: Order
    description: Orders
  - name: Return
    description: Order returns
  - name: Events
    description: SCX events
  - name: Offer
    description: Channel offers
  - name: Report
    description: SCX reports
  - name: Ticket
    description: Channel tickets
  - name: Stock Updates
    description: Stock update operations
paths:
  /v1/channel/event:
    get:
      tags:
        - Events
      summary: |
        Seller Events
      description: >
        API Endpoint to retrieve events from registered sellers. Events are
        various different actions which may occur when 

        sellers are processing channel data such as orders. After receiving a
        seller events response, each event in the response

        needs to be acknowledged using `PATCH /v1/channel/event` request.
        Unacknowledged events will be delivered again after a

        period of time.
      operationId: GetEvents
      parameters:
        - in: query
          description: >
            List seller events created after a specified time. If no
            createdAfter parameter is set, all 

            unacknowledged events will be returned.
          name: createdAfter
          schema:
            type: string
            format: date-time
          example: '2019-07-01T12:00:32+00:00'
          required: false
        - in: query
          description: >
            Optional parameter to request only a subset of available Seller
            Events. We recommend requesting only

            events by using the `eventTypeFilter` parameter to process only
            events which can be processed by the

            current channel implementation.
          name: eventTypeFilter
          schema:
            type: string
          explode: true
          example: SellerTestEvent,System:Notification,Seller:Order.Confirmed
          required: false
      responses:
        '200':
          $ref: '#/components/responses/SellerEventList'
        '401':
          $ref: '#/components/responses/AccessForbidden'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - ChannelAuth: []
components:
  responses:
    SellerEventList:
      description: Seller events retrieved
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SellerEventList'
    AccessForbidden:
      description: Access forbidden, invalid or unknown Token was used.
    ServerError:
      description: Unexpected Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseList'
          example:
            errorList:
              - code: GEN500
                message: Internal Server Error
                severity: error
                hint: null
  schemas:
    SellerEventList:
      description: >-
        Paginated list of events relevant to a seller (e.g. listing failed,
        order received) emitted by the channel.
      type: object
      properties:
        eventList:
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: object
            required:
              - id
              - createdAt
              - type
              - event
            properties:
              id:
                type: string
                example: 5cde84164d811d00144581f8
              createdAt:
                type: string
                format: date-time
                example: '2019-07-01T12:43:23+00:00'
              clientVersion:
                $ref: '#/components/schemas/ClientVersion'
              type:
                $ref: '#/components/schemas/SellerEventTypeList'
              event:
                type: object
                oneOf:
                  - $ref: '#/components/schemas/SellerEventOrderShipping'
                  - $ref: '#/components/schemas/SellerEventOrderPayment'
                  - $ref: '#/components/schemas/SellerEventOfferEnd'
                  - $ref: '#/components/schemas/SellerEventOfferNew'
                  - $ref: '#/components/schemas/SellerEventOfferUpdate'
                  - $ref: '#/components/schemas/SellerEventOfferStockUpdate'
                  - $ref: '#/components/schemas/SellerEventOfferPriceUpdate'
                  - $ref: '#/components/schemas/SellerEventTest'
                  - $ref: '#/components/schemas/SellerEventReportRequest'
                  - $ref: '#/components/schemas/SystemEventNotification'
                  - $ref: '#/components/schemas/SellerEventChannelUnlinked'
                  - $ref: >-
                      #/components/schemas/SellerEventSellerAttributesUpdateRequest
                  - $ref: '#/components/schemas/SellerEventOrderCancellationRequest'
                  - $ref: '#/components/schemas/SellerEventOrderCancellationAccepted'
                  - $ref: '#/components/schemas/SellerEventOrderCancellationDenied'
                  - $ref: '#/components/schemas/SellerEventOrderConfirmed'
                  - $ref: '#/components/schemas/SellerEventOrderInvoice'
                  - $ref: '#/components/schemas/SellerEventOrderReturnReceived'
                  - $ref: '#/components/schemas/SellerEventOrderRefund'
                  - $ref: '#/components/schemas/SellerEventTicketReply'
    ErrorResponseList:
      type: object
      properties:
        errorList:
          nullable: true
          type: array
          example:
            - code: GEN700
              message: Seller SELLER_4711 does not exist on channel kaufland.
              severity: error
              hint: i9n-order22
          items:
            title: Error
            type: object
            properties:
              code:
                type: string
                example: GEN700
              message:
                type: string
                example: Seller SELLER_4711 does not exist on channel kaufland.
              severity:
                type: string
                enum:
                  - error
                  - warning
                  - info
                default: error
              hint:
                type: string
                nullable: true
                example: i9n-order22
    ClientVersion:
      description: |
        ERP-Client Version.
      type: string
      example: 1.11.0.6
      pattern: ^\w{1,25}$
    SellerEventTypeList:
      type: string
      enum:
        - System:Test
        - System:Notification
        - Seller:Order.Confirmed
        - Seller:Order.Shipping
        - Seller:Order.Payment
        - Seller:Order.Cancellation.Request
        - Seller:Order.Cancellation.Accepted
        - Seller:Order.Cancellation.Denied
        - Seller:Order.Refund
        - Seller:Order.Invoice
        - Seller:Order.ReturnReceived
        - Seller:Offer.New
        - Seller:Offer.Update
        - Seller:Offer.End
        - Seller:Offer.StockUpdate
        - Seller:Offer.PriceUpdate
        - Seller:Report.Request
        - Seller:Channel.Unlinked
        - Seller:Meta.SellerAttributesUpdateRequest
        - Seller:Ticket.Reply
    SellerEventOrderShipping:
      title: SellerEventOrderShipping
      type: object
      allOf:
        - $ref: '#/components/schemas/EventSellerRelated'
        - $ref: '#/components/schemas/OrderShipping'
    SellerEventOrderPayment:
      title: SellerEventOrderPayment
      type: object
      allOf:
        - $ref: '#/components/schemas/EventSellerRelated'
        - $ref: '#/components/schemas/OrderPayment'
    SellerEventOfferEnd:
      title: SellerEventOfferEnd
      type: object
      required:
        - sellerId
        - offerId
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        offerId:
          $ref: '#/components/schemas/OfferId'
        channelOfferId:
          $ref: '#/components/schemas/ChannelOfferId'
    SellerEventOfferNew:
      title: SellerEventOfferNew
      type: object
      description: >
        List Offer on Channel.


        If your current channel implementation process listing in asychronous
        manner it is recommended to call

        `/channel/offer/received` afterwards to mark wating Offers as
        in-progress. If a channel process an Offer

        directly you do not need to mark a Offer as `in-progress`. But it is
        important to mark an Offer as `successful`

        listed. If there are any errors during the listing process it is
        importand to mark a offer as `failed`.
      allOf:
        - $ref: '#/components/schemas/EventSellerRelated'
        - $ref: '#/components/schemas/OfferIdRelated'
        - $ref: '#/components/schemas/SalesChannelOffer'
        - $ref: '#/components/schemas/Product'
      required:
        - sellerId
        - offerId
    SellerEventOfferUpdate:
      title: SellerEventOfferUpdate
      type: object
      description: >
        Update existing Offer.


        If your current channel implementation process listing in asychronous
        manner it is recommended to call

        `/channel/offer/received` afterwards to mark wating Offers as
        in-progress. If a channel process an Offer

        directly you do not need to mark a Offer as `in-progress`. But it is
        important to mark an Offer as `successful`

        listed. If there are any errors during the listing process it is
        importand to mark a offer as `failed`.
      allOf:
        - $ref: '#/components/schemas/EventSellerRelated'
        - $ref: '#/components/schemas/OfferIdRelated'
        - $ref: '#/components/schemas/SalesChannelOffer'
        - $ref: '#/components/schemas/Product'
      required:
        - sellerId
        - offerId
    SellerEventOfferStockUpdate:
      title: SellerEventOfferStockUpdate
      type: object
      description: |
        Update stock for a list of existing Offers
      required:
        - sellerId
        - offerId
        - quantity
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        offerId:
          $ref: '#/components/schemas/OfferId'
        channelOfferId:
          $ref: '#/components/schemas/ChannelOfferId'
        quantity:
          type: string
          nullable: false
          example: '100'
    SellerEventOfferPriceUpdate:
      title: SellerEventOfferPriceUpdate
      type: object
      description: |
        Update price for a list of existing Offers
      required:
        - sellerId
        - offerId
        - priceList
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        offerId:
          $ref: '#/components/schemas/OfferId'
        channelOfferId:
          $ref: '#/components/schemas/ChannelOfferId'
        priceList:
          type: array
          items:
            $ref: '#/components/schemas/PriceContainer'
    SellerEventTest:
      title: SellerEventTest
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/Channel'
        sellerId:
          $ref: '#/components/schemas/SellerId'
    SellerEventReportRequest:
      title: SellerEventReportRequest
      type: object
      allOf:
        - $ref: '#/components/schemas/ReportRequest'
        - $ref: '#/components/schemas/ReportIdRelated'
    SystemEventNotification:
      title: SystemEventNotification
      type: object
      required:
        - channel
        - message
        - severity
        - sellerId
      properties:
        channel:
          $ref: '#/components/schemas/Channel'
        sellerId:
          $ref: '#/components/schemas/SellerId'
        message:
          type: string
          example: More beer available
        severity:
          type: string
          enum:
            - INFO
            - WARNING
            - ERROR
    SellerEventChannelUnlinked:
      title: SellerEventChannelUnlinked
      type: object
      required:
        - sellerId
        - reason
        - unlinkedAt
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        reason:
          type: string
          example: DEACTIVATED_BY_ACCOUNT
          description: >
            Specifies the reason for the SellerId being removed or marked as
            inactive. 

            This field can contain predefined values such as
            'DEACTIVATED_BY_ACCOUNT', which indicates that the 

            deactivation was initiated by the account holder. This information
            is crucial for understanding the context 

            of the SellerId's status change and for taking appropriate actions
            based on the reason provided.
        unlinkedAt:
          type: string
          format: date-time
          example: '2019-01-16T13:00:00+01:00'
          description: >
            Records the exact date and time when the SellerId was either removed
            from the system or flagged as inactive. 

            The timestamp follows the ISO 8601 format, providing both date and
            time
        permanentlyRemoved:
          type: boolean
          default: false
          example: false
          description: >
            Indicates whether the SellerId has been permanently removed from the
            JTL-Account. 

            If set to true, the SellerId is considered invalid within the SCX
            System. Consequently, Channel Connections 

            must either delete the SellerId or flag it as inactive in their
            systems. Any attempt to use a permanently 

            removed SellerId will result in an error (GEN700 - Seller {sellerId}
            does not exist on channel {channel}), 

            indicating that the SellerId is no longer valid for transactions on
            the specified channel.
    SellerEventSellerAttributesUpdateRequest:
      title: SellerEventSellerAttributesUpdateRequest
      type: object
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
    SellerEventOrderCancellationRequest:
      title: SellerEventOrderCancellationRequest
      type: object
      allOf:
        - $ref: '#/components/schemas/OrderCancellationRequest'
    SellerEventOrderCancellationAccepted:
      type: object
      title: OrderCancellationAccepted
      required:
        - sellerId
        - orderCancellationRequestId
      allOf:
        - $ref: '#/components/schemas/CancellationAccept'
    SellerEventOrderCancellationDenied:
      type: object
      title: OrderCancellationDenied
      required:
        - sellerId
        - orderCancellationRequestId
        - reason
      allOf:
        - $ref: '#/components/schemas/CancellationDenied'
    SellerEventOrderConfirmed:
      title: SellerEventOrderConfirmed
      type: object
      required:
        - orderId
      allOf:
        - $ref: '#/components/schemas/EventSellerRelated'
        - $ref: '#/components/schemas/OrderConfirm'
    SellerEventOrderInvoice:
      type: object
      title: OrderInvoice
      required:
        - type
        - sellerId
        - orderId
        - invoiceNumber
        - documentId
        - documentExpiresAt
      properties:
        type:
          $ref: '#/components/schemas/InvoiceDocumentType'
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        invoiceNumber:
          type: string
          minLength: 1
          maxLength: 256
        documentId:
          type: string
          example: f8132e70-24f6-4f27-b78c-56bc3f286daf
        documentExpiresAt:
          type: string
          format: date-time
          example: '2020-11-13T13:37:00+00:00'
    SellerEventOrderReturnReceived:
      type: object
      title: ReturnReceived
      allOf:
        - $ref: '#/components/schemas/ReturnReceived'
    SellerEventOrderRefund:
      type: object
      title: SendRefund
      allOf:
        - $ref: '#/components/schemas/Refund'
    SellerEventTicketReply:
      title: TicketReply
      type: object
      allOf:
        - $ref: '#/components/schemas/TicketReply'
    EventSellerRelated:
      title: EventSellerRelated
      type: object
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
      required:
        - sellerId
    OrderShipping:
      type: object
      required:
        - sellerId
        - orderId
        - shippingComplete
        - shippedAt
        - shippingItems
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        shippingComplete:
          description: |
            When shipping is completed set to "true".
          type: boolean
          example: true
        shippingItems:
          type: array
          minItems: 1
          items:
            title: OrderShippingPosition
            type: object
            required:
              - carrier
            properties:
              carrier:
                type: string
                example: DHL
              trackingNumber:
                type: string
                example: '23435833543343222322'
              returnTracking:
                description: >
                  The return tracking number and carrier for the return process.
                  Each orderItemId may have its own return

                  tracking.
                type: object
                nullable: true
                required:
                  - carrier
                  - trackingNumber
                properties:
                  carrier:
                    type: string
                    example: DHL
                  trackingNumber:
                    type: string
                    example: '432353833232443222322'
              shippedAt:
                type: string
                format: date-time
                example: '2019-01-13T12:00:00+00:00'
              orderItemIdList:
                description: |
                  Container to describe what items are included.
                nullable: true
                type: array
                minItems: 0
                items:
                  title: OrderShippingPositionItem
                  type: object
                  required:
                    - orderItemId
                    - quantity
                  properties:
                    orderItemId:
                      $ref: '#/components/schemas/OrderItemId'
                    quantity:
                      type: integer
              shippedFrom:
                description: The adress from where the shipment is sent.
                type: object
                nullable: true
                required:
                  - country
                  - city
                  - postcode
                properties:
                  city:
                    type: string
                    example: Köln
                  country:
                    type: string
                    example: DE
                  postcode:
                    type: string
                    example: '51107'
    OrderPayment:
      type: object
      required:
        - sellerId
        - orderId
        - paymentComplete
        - paidAt
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        paymentComplete:
          type: boolean
          example: true
        paidAt:
          type: string
          format: date-time
          example: '2019-01-16T13:00:00+01:00'
    SellerId:
      description: >
        A unique Id identify a Seller on a specific SalesChannel. The SellerId
        is generated

        from the Channel itself during the Seller SignUp Process.
      type: string
      example: '4711'
      pattern: ^\w{1,50}$
    OfferId:
      description: |
        Unique Offer Id to identify an Offer on a Sales Channel.
      type: integer
      example: 5437233
      format: int64
      minimum: 1
      maxLength: 50
    ChannelOfferId:
      description: |
        Channel defined unique Offer Id to identify an Offer on a Sales Channel.
      type: string
      example: XCD233554
      minLength: 1
      maxLength: 100
    OfferIdRelated:
      type: object
      properties:
        offerId:
          $ref: '#/components/schemas/OfferId'
    SalesChannelOffer:
      type: object
      required:
        - channel
        - sellerId
        - offerId
        - priceList
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        offerId:
          $ref: '#/components/schemas/OfferId'
        parentOfferId:
          $ref: '#/components/schemas/ParentOfferId'
        channelOfferId:
          $ref: '#/components/schemas/ChannelOfferId'
        channelCategoryId:
          type: string
          example: '4355111'
        quantity:
          description: Offer Quantity
          type: string
          example: '1.0'
        taxPercent:
          type: string
          example: '19.00'
        priceList:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/PriceContainer'
        title:
          description: >
            Title used for this specific SalesChannel. If no title is provided,
            the product title should be used.
          type: string
          example: One of the best Beer in the World.
          maxLength: 512
        subTitle:
          description: >
            Subtitle used for this specific SalesChannel. If no subtitle is
            provided, the product description

            should be used.
          type: string
          example: Maybe the best!
          maxLength: 1024
        description:
          description: >
            Description used for this specific SalesChannel. If no description
            is provided, the product description

            should be used.
          type: string
          example: |
            This Offer description is for this specific SalesChannel
          maxLength: 50000
        mainPicture:
          type: string
          example: 48dd485e-bab9-48fa-8c03-3736fca1323d.png
        pictureList:
          type: array
          maxItems: 50
          items:
            type: string
            example: b61525f4-8114-4cc2-bccd-9c627ebdc077.png
        channelAttributeList:
          description: >
            A List of SalesChannel related attributes. Typically all required
            attributes need to be passed through this

            objects. Required (and also optional) attributes can be requested
            using the /meta Data API endpoints.
          type: array
          minItems: 0
          maxItems: 250
          items:
            $ref: '#/components/schemas/ChannelAttribute'
        variationList:
          type: array
          minItems: 0
          maxItems: 500
          items:
            $ref: '#/components/schemas/Variation'
    Product:
      type: object
      required:
        - sku
      properties:
        sku:
          $ref: '#/components/schemas/SKU'
        title:
          type: string
          example: Best Beer of the World
          minLength: 1
          maxLength: 512
        subTitle:
          type: string
          example: Probably the best!
          maxLength: 1024
        description:
          type: string
          example: |
            So lovely and tasty! Properly the best beer you will ever have.
            You will never stop drinking.
          maxLength: 50000
        gtin:
          type: string
          example: '4003227021106'
        mpn:
          type: string
          example: null
        isbn:
          type: string
          example: null
        brand:
          type: string
          example: null
        srp:
          $ref: '#/components/schemas/Price'
        productAttributeList:
          type: array
          items:
            $ref: '#/components/schemas/ProductAttribute'
    PriceContainer:
      type: object
      required:
        - id
        - quantityPriceList
      properties:
        id:
          type: string
          example: B2C
          nullable: false
        quantityPriceList:
          type: array
          minItems: 1
          maxItems: 50
          items:
            $ref: '#/components/schemas/QuantityPrice'
    Channel:
      description: |
        This is the unique Channel name.
      type: string
      example: MYBESTDEALCOMDE
      pattern: ^\w{5,15}$
    ReportRequest:
      title: ReportRequest
      type: object
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        reportType:
          $ref: '#/components/schemas/ReportType'
        options:
          type: object
          properties:
            ResultsAsChannelEvent:
              type: boolean
              description: >
                If true, the report will be generated as a channel event.

                This means that the report will be sent to the seller via the
                channel event system.

                If false, the report will be generated as a file.

                This means that the report will be available for download via
                the report endpoint.
        startDate:
          type: string
          format: date
          nullable: true
        endDate:
          type: string
          format: date
          nullable: true
      required:
        - sellerId
        - reportType
    ReportIdRelated:
      type: object
      required:
        - reportId
      properties:
        reportId:
          $ref: '#/components/schemas/ReportId'
    OrderCancellationRequest:
      type: object
      title: OrderCancellationRequest
      required:
        - orderCancellationRequestId
        - channel
        - sellerId
        - orderId
        - orderItem
        - reason
      properties:
        orderCancellationRequestId:
          $ref: '#/components/schemas/OrderCancellationRequestId'
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        orderItem:
          type: array
          nullable: true
          minItems: 1
          items:
            type: object
            title: OrderCancellationItem
            required:
              - orderItemId
            properties:
              orderItemId:
                $ref: '#/components/schemas/OrderItemId'
              quantity:
                type: string
                default: '1.0'
                example: '2.0'
        cancelReason:
          $ref: '#/components/schemas/CancelReason'
        message:
          type: string
          minLength: 0
          maxLength: 1024
    CancellationAccept:
      required:
        - sellerId
        - orderCancellationRequestId
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderCancellationRequestId:
          $ref: '#/components/schemas/OrderCancellationRequestId'
    CancellationDenied:
      required:
        - sellerId
        - orderCancellationRequestId
        - reason
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderCancellationRequestId:
          $ref: '#/components/schemas/OrderCancellationRequestId'
        reason:
          type: string
          maxLength: 250
    OrderConfirm:
      title: OrderConfirm
      type: object
      required:
        - sellerId
        - orderId
        - orderConfirmed
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          type: string
          example: 43523-43432-43532
        orderAccepted:
          type: boolean
          example: false
        reason:
          $ref: '#/components/schemas/CancelReason'
    InvoiceDocumentType:
      type: string
      enum:
        - INVOICE
        - CREDITNOTE
      default: INVOICE
    ChannelOrderId:
      type: string
      minLength: 1
      maxLength: 150
      example: 43523-43432-43532
    ReturnReceived:
      type: object
      required:
        - sellerId
        - orderId
        - sellerReturnId
        - orderItem
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        sellerReturnId:
          $ref: '#/components/schemas/SellerReturnId'
        channelReturnId:
          $ref: '#/components/schemas/ChannelReturnId'
        orderItem:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ReturnReceivedOrderItem'
    Refund:
      title: OrderRefund
      type: object
      required:
        - refundId
        - sellerId
        - orderId
        - orderItem
      properties:
        refundId:
          $ref: '#/components/schemas/RefundId'
        sellerId:
          $ref: '#/components/schemas/SellerId'
        orderId:
          $ref: '#/components/schemas/ChannelOrderId'
        orderItem:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RefundOrderItem'
    TicketReply:
      title: TicketReply
      type: object
      required:
        - sellerId
        - ticketId
        - createdAt
        - from
        - message
      properties:
        sellerId:
          $ref: '#/components/schemas/SellerId'
        ticketId:
          $ref: '#/components/schemas/TicketId'
        replyRequested:
          type: boolean
          example: true
          default: true
        createdAt:
          type: string
          format: date-time
        from:
          $ref: '#/components/schemas/TicketFrom'
        message:
          type: string
          minLength: 1
          maxLength: 1024
          example: Open the pod bay doors HAL.
        attachment:
          type: array
          minItems: 0
          maxItems: 10
          items:
            $ref: '#/components/schemas/TicketAttachment'
    OrderItemId:
      description: >-
        A unique identifier to identify a order item. This ID is provided by the
        Channel itself an should be used to identify a order item id.
      type: string
      example: '5437233'
      format: string
      minLength: 1
      maxLength: 50
    ParentOfferId:
      description: >
        In case the current offer has an reference to a parent offer. This
        ParentOfferId must be used to identify the

        Parent Offer. The ParentOfferId is conditionally mandatory for variation
        Offers in case you add a new Item

        to a existing Variation Offer Listing.
      type: integer
      example: 3434223
      format: int64
      minimum: 1
      nullable: true
    ChannelAttribute:
      type: object
      required:
        - attributeId
        - value
      properties:
        attributeId:
          type: string
          example: '1332'
        value:
          type: string
          example: MyBeerBrand
        group:
          type: string
          nullable: true
          example: '1'
    Variation:
      type: object
      properties:
        offerId:
          $ref: '#/components/schemas/OfferId'
        sku:
          $ref: '#/components/schemas/SKU'
        gtin:
          type: string
          example: '4003227021106'
        variationDimensionList:
          description: >
            A List of SalesChannel related attributes. These attributes are used
            to define variation dimensions.

            You can use up to 10 dimensions to build a multi-variation listing.
          type: array
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/ChannelAttribute'
        quantity:
          description: Offer Quantity
          type: string
          example: '1.0'
        priceList:
          type: array
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/PriceContainer'
        taxPercent:
          type: string
          example: '19.00'
        pictureList:
          type: array
          maxItems: 50
          items:
            type: string
            example: b61525f4-8114-4cc2-bccd-9c627ebdc077.png
        title:
          description: >
            Title used for this variation listing on SalesChannel. If no title
            is provided, the SalesChannelOffer title should be used.
          type: string
          example: One of the best Beer Variation in the Variation Listing World.
          maxLength: 512
        subTitle:
          description: >
            Subtitle used for this variation listing on SalesChannel. If no
            subtitle is provided, the SalesChannelOffer Subtitel

            should be used.
          type: string
          example: Maybe the best Variation List SubTitle!
          maxLength: 1024
        description:
          description: >
            Description used for this variation listing on SalesChannel. If no
            description is provided, the SalesChannelOffer description

            should be used.
          type: string
          example: |
            This Offer Variation description is for this specific SalesChannel
          maxLength: 50000
        channelAttributeList:
          description: >
            A List of SalesChannel related attributes. Typically all required
            attributes need to be passed through this

            objects. Required (and also optional) attributes can be requested
            using the /meta Data API endpoints.


            A Channel should merge the SalesChannelOffer channelAttributeList
            with this Attribute List. This List extends

            the Attributes from the SalesChannelOffer channelAttributeList
            property and should be overwrite existing

            Attributes.
          type: array
          minItems: 0
          maxItems: 256
          items:
            $ref: '#/components/schemas/ChannelAttribute'
      required:
        - offerId
        - sku
        - variationDimensionList
        - quantity
        - priceList
    SKU:
      description: |
        Stock keeping unit is a unique Id used to identify one product.
      type: string
      example: BEER-001
      minLength: 1
      maxLength: 150
    Price:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: string
          example: '14.65'
          nullable: false
        currency:
          type: string
          example: EUR
          nullable: false
    ProductAttribute:
      type: object
      properties:
        name:
          type: string
          example: Color
        value:
          type: string
          example: Red
      required:
        - name
        - value
    QuantityPrice:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: string
          example: '14.65'
          nullable: false
        currency:
          type: string
          example: EUR
          nullable: false
        quantity:
          type: string
          example: '1.0'
          nullable: true
          default: '1.0'
    ReportType:
      type: string
      enum:
        - SELLER_INVENTORY
    ReportId:
      type: string
      description: |
        A system wide unique Id to identify and download a report
      example: 910390cc-c3b3-45ba-8be2-ab1824b6c499
    OrderCancellationRequestId:
      type: string
      description: >
        A unique identifier for the order cancellation request. This ID should
        by used by Seller to identify the cancellation response from the
        Channel.
      format: uuid
      example: 82992d3a-b153-4422-b539-f4d1f1b4aecb
    CancelReason:
      type: string
      description: >
        * BUYER_CANCELLED: the buyer cancelled the order.

        * UNDELIVERABLE_TO_SHIPPING_ADDRESS: Could not deliver to the address
        given by the buyer.

        * UNDELIVERABLE_BY_CARRIER: Carrier do not ship to the buyerss location.

        * OUT_OF_STOCK: The item is out of stock, for example because you are
        temporarily or permenantly sold out.

        * DELAYED_INVENTORY: The item is not in your inventory and there is a
        delay in delivery by the supplier.

        * PRICING_ERROR: The price on the connected marketplace was incorrect.

        * OTHER: Well, objvoiusly there is some reason missing in this list.
      enum:
        - BUYER_CANCELLED
        - UNDELIVERABLE_TO_SHIPPING_ADDRESS
        - UNDELIVERABLE_BY_CARRIER
        - OUT_OF_STOCK
        - DELAYED_INVENTORY
        - PRICING_ERROR
        - OTHER
    SellerReturnId:
      type: string
      description: |
        Id used to identify an order return on Seller side.
      example: '123'
    ChannelReturnId:
      type: string
      description: |
        Id used to identify an order return on Marketplace.
      example: R12343
    ReturnReceivedOrderItem:
      type: object
      required:
        - condition
        - acceptReturn
        - requireReturnShipping
        - orderItemId
        - quantity
        - returnReason
      properties:
        orderItemId:
          $ref: '#/components/schemas/OrderItemId'
        quantity:
          type: string
          example: '1.0'
        returnReason:
          $ref: '#/components/schemas/ReturnReason'
        note:
          type: string
          maxLength: 1024
        condition:
          $ref: '#/components/schemas/Condition'
        acceptReturn:
          type: boolean
          example: true
        requireReturnShipping:
          type: boolean
          example: true
          default: true
    RefundId:
      type: string
      description: >
        Seller created unique Id to identify the processing Result of a Refund
        processing from a Channel.
      minLength: 1
      maxLength: 128
    RefundOrderItem:
      title: OrderItemRefund
      type: object
      required:
        - orderItemId
        - quantity
        - reason
        - refund
        - refundCurrency
      properties:
        orderItemId:
          $ref: '#/components/schemas/OrderItemId'
        quantity:
          type: string
          example: '1.0'
        reason:
          $ref: '#/components/schemas/RefundReason'
        refund:
          type: string
          example: '19.90'
        refundCurrency:
          type: string
          example: EUR
    TicketId:
      type: string
      description: |
        Unique identifcation for Ticket Id
      minLength: 1
      maxLength: 256
      example: CASE-01071982
    TicketFrom:
      title: TicketFrom
      type: object
      required:
        - role
      properties:
        role:
          type: string
          enum:
            - BUYER
            - SELLER
            - CHANNEL
          example: BUYER
        name:
          type: string
          maxLength: 100
          example: Dave
    TicketAttachment:
      title: TicketAttachment
      type: object
      required:
        - filename
        - contentType
      properties:
        filename:
          type: string
          minLength: 1
          maxLength: 256
          example: RedDot.png
        contentType:
          type: string
          minLength: 1
          maxLength: 128
          example: image/png
    ReturnReason:
      type: string
      enum:
        - NO_REASON
        - DEFECT
        - WRONG_ITEM
        - WRONG_SIZE
        - TOO_LATE
        - BAD_QUALITY
    Condition:
      type: string
      enum:
        - ORIGINAL_PACKAGING
        - MINT_CONDITION
        - SLIGHTLY_USED
        - HEAVILY_USED
        - DAMAGED
        - INCOMPLETE_DELIVERY
        - FRAUD
    RefundReason:
      type: string
      example: NO_REASON
      enum:
        - NO_REASON
        - DEFECT
        - WRONG_ITEM
        - WRONG_SIZE
        - TOO_LATE
        - BAD_QUALITY
        - OTHER
  securitySchemes:
    ChannelAuth:
      description: >
        As a Channel Integrator you will receive a API Refresh Token. With such
        a Refresh Token you

        need to request an Access Token with a limited Lifetime (see POST
        /v1/auth). This Access Token

        must be provided as a Bearer Token in the Authorization Header with
        every request.
      type: http
      scheme: bearer
      bearerFormat: JWT

````