openapi: 3.1.0
info:
  description: >
    # Introduction

    The Fourthwall API provides access to your shop's resources including
    products, orders, customers, webhooks, and more.

    # Authentication

    See [Authentication](/platform/authentication) for more information.
externalDocs: {}
servers:
  - url: https://api.fourthwall.com
paths:
  /open-api/v1.0/webhooks/{webhookConfigurationId}:
    get:
      tags:
        - Webhooks
      summary: Get a webhook
      description: Get a webhook
      operationId: getWebhookConfiguration
      parameters:
        - name: webhookConfigurationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - webhook_read: []
        - shopApiKey: []
      externalDocs: null
    put:
      tags:
        - Webhooks
      summary: Update a webhook
      description: Update a webhook
      operationId: updateWebhookConfiguration
      parameters:
        - name: webhookConfigurationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationUpdateRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - webhook_write: []
        - shopApiKey: []
      externalDocs: null
    delete:
      tags:
        - Webhooks
      summary: Delete a webhook
      description: Delete a webhook
      operationId: deleteWebhookConfiguration
      parameters:
        - name: webhookConfigurationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - webhook_write: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/streaming/start:
    put:
      tags:
        - Streaming
      summary: Set streaming status to started
      description: Sets streaming status to started for specified services
      operationId: streamingStarted
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.StreamingStartedRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/streaming/end:
    put:
      tags:
        - Streaming
      summary: Set streaming status to ended
      description: Sets streaming status to ended for specified services
      operationId: streamingEnded
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.StreamingEndedRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/products/{productId}/availability:
    put:
      tags:
        - Products (offers)
      summary: Update product (offer) availability by id
      description: Updates a product (offer) availability
      operationId: updateOfferAvailability
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.OpenApiProductEndpoint.UpdateOfferAvailabilityV1Request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - offer_write: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/order/{orderId}/downloaded:
    put:
      tags:
        - Orders
      summary: Mark digital download as downloaded
      description: Marks digital download as downloaded
      operationId: markDigitalDownloadAsDownloaded
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - order_write: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/gifting/draw/{id}/finish:
    put:
      tags:
        - Gifting
      summary: Finish draw
      description: Finish draw and select winners
      operationId: drawFinished
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.DrawFinishedRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/webhooks:
    get:
      tags:
        - Webhooks
      summary: Get webhooks
      description: Get webhooks
      operationId: getWebhookConfigurations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookConfigurationV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - webhook_read: []
        - shopApiKey: []
      externalDocs: null
    post:
      tags:
        - Webhooks
      summary: Create a webhook
      description: Create a webhook
      operationId: createWebhookConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationCreateRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - webhook_write: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/promotions:
    get:
      tags:
        - Promotions
      summary: Get all promotions
      description: Returns all promotions
      operationId: getPromotions
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.promotions.PromotionV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - promotions_read: []
        - shopApiKey: []
      externalDocs: null
    post:
      tags:
        - Promotions
      summary: Create a promotion
      description: Creates a promotion
      operationId: createPromotion
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/MEMBERSHIPS_MULTI'
                - $ref: '#/components/schemas/MEMBERSHIPS_SINGLE'
                - $ref: '#/components/schemas/SHOP_MULTI'
                - $ref: '#/components/schemas/SHOP_SINGLE'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - promotions_write: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/platform/token:
    post:
      tags:
        - Platform Tokens
      operationId: exchangeToken
      parameters:
        - name: client_id
          in: query
          required: true
          schema:
            type: string
        - name: client_secret
          in: query
          required: true
          schema:
            type: string
        - name: redirect_uri
          in: query
          required: false
          schema:
            type: string
        - name: grant_type
          in: query
          required: true
          schema:
            type: string
        - name: code
          in: query
          required: false
          schema:
            type: string
        - name: refresh_token
          in: query
          required: false
          schema:
            type: string
        - name: access_token
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
  /open-api/v1.0/giveaway-links:
    post:
      tags:
        - Giveaway links
      summary: Create giveaway links
      description: Creates a new package with specified number of giveaway links
      externalDocs: null
      operationId: createGiveawayLinks
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.CreateGiveawayLinksV1Request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
  /open-api/v1.0/fulfillments:
    post:
      tags:
        - Fulfillment
      summary: Create a fulfillment for an order
      description: >-
        Creates a fulfillment with a shipment tracker for provided order items.
        When trackers change their state, order.status will change to
        IN_PRODUCTION, PARTIALLY_IN_PRODUCTION, PARTIALLY_SHIPPED, SHIPPED
        depending on the shipping tracker info. Order updated webhooks will be
        triggered.
      externalDocs: null
      operationId: createFulfillment
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.FulfillmentRequest
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.FulfillmentResponse
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - fulfillment_write: []
        - shopApiKey: []
  /open-api/v1.0/thank-yous/{thankYouId}:
    get:
      tags:
        - Thank yous
      summary: Get Thank You by id
      description: Get Thank You details
      externalDocs: null
      operationId: getGiftPurchaseById
      parameters:
        - name: thankYouId
          in: path
          required: true
          schema:
            type: string
          example: ty_EdJvIXu3SEiXe_QkPavHSA
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.ThankYouV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - thankyou_read: []
        - shopApiKey: []
  /open-api/v1.0/streaming:
    get:
      tags:
        - Streaming
      summary: Get streaming status
      description: Returns streaming status for all services
      operationId: streamingStatus
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/shops/current:
    get:
      tags:
        - Shop
      summary: Get current shop
      description: Returns the current shop
      operationId: getCurrentShop
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.ShopV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - undefined: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/shops/current/contact-info:
    get:
      tags:
        - Shop
      summary: Get current shop contact info
      description: Returns the current shop contact info
      operationId: getCurrentShopContactInfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.ContactInfoV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shop_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/promotions/{promotionId}:
    get:
      tags:
        - Promotions
      summary: Get a promotion by id
      description: Returns a promotion by id
      operationId: getPromotions_1
      parameters:
        - name: promotionId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1
                  - $ref: >-
                      #/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - promotions_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/products:
    get:
      tags:
        - Products (offers)
      summary: Get all products (offers)
      description: Returns all products with pagination
      externalDocs: null
      operationId: getProducts
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
        - name: search
          in: query
          required: false
          schema:
            type: string
          example: search_phrase
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - offer_read: []
        - shopApiKey: []
  /open-api/v1.0/products/{productId}:
    get:
      tags:
        - Products (offers)
      summary: Get product (offer) by id
      description: Returns product by id
      externalDocs: null
      operationId: getProductByProductId
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - offer_read: []
        - shopApiKey: []
  /open-api/v1.0/products/{productId}/inventory:
    get:
      tags:
        - Products (offers)
      summary: Get product (offer) inventory by id
      description: Returns product (offer) inventory by id
      operationId: getProductInventory
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.StockV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - offer_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/order:
    get:
      tags:
        - Orders
      summary: Get all orders
      description: Returns all orders with pagination
      externalDocs: null
      operationId: getOrders
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
        - name: email
          in: query
          required: false
          schema:
            type: string
          example: supporter@fourthwall.com
        - name: createdAt[gt]
          in: query
          required: false
          schema:
            type: string
            format: date-time
          example: '2020-08-13T09:05:36.939Z'
        - name: createdAt[lt]
          in: query
          required: false
          schema:
            type: string
            format: date-time
          example: '2020-08-13T09:05:36.939Z'
        - name: updatedAt[gt]
          in: query
          required: false
          schema:
            type: string
            format: date-time
          example: '2020-08-13T09:05:36.939Z'
        - name: updatedAt[lt]
          in: query
          required: false
          schema:
            type: string
            format: date-time
          example: '2020-08-13T09:05:36.939Z'
        - name: status
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - CONFIRMED
                - PARTIALLY_IN_PRODUCTION
                - IN_PRODUCTION
                - PARTIALLY_SHIPPED
                - SHIPPED
                - PARTIALLY_DELIVERED
                - DELIVERED
                - CANCELLED
                - COMPLETED
            uniqueItems: true
          example: CONFIRMED
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OrderV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - order_read: []
        - shopApiKey: []
  /open-api/v1.0/order/{orderId}:
    get:
      tags:
        - Orders
      summary: Get order by id
      description: Returns order by id
      externalDocs: null
      operationId: getOrderByOrderId
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - order_read: []
        - shopApiKey: []
  /open-api/v1.0/order/by-friendly-id/{friendlyId}:
    get:
      tags:
        - Orders
      summary: Get order by friendly id
      description: Returns order by friendly id
      operationId: getOrderByFriendlyId
      parameters:
        - name: friendlyId
          in: path
          required: true
          schema:
            type: string
          example: D3XZFWPP
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - order_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/memberships/tiers:
    get:
      tags:
        - 'BETA: Memberships'
      summary: List membership tiers
      description: Lists all tiers for the current shop
      operationId: listTiers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.MembershipTierV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - memberships_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/memberships/members:
    get:
      tags:
        - 'BETA: Memberships'
      summary: List members
      description: Lists all members for the current shop
      operationId: listMemberships
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MembershipSupporterV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - memberships_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/memberships/members/{id}:
    get:
      tags:
        - 'BETA: Memberships'
      summary: Get member
      description: Gets a member by id
      operationId: getMember
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: 123456
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - memberships_read: []
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/mailing-list-entries:
    get:
      tags:
        - Mailing Lists
      summary: Get all mailing list entries
      description: Returns all mailing list entries
      operationId: getMailingListEntries
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MailingListEntryV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
        - shop_read: []
      externalDocs: null
  /open-api/v1.0/giveaway-links/packages:
    get:
      tags:
        - Giveaway links
      summary: Get all giveaway packages
      description: Returns all packages with giveaway links
      externalDocs: null
      operationId: getAllGiveawayLinksPackages
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayPackagesV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
  /open-api/v1.0/giveaway-links/packages/{packageId}:
    get:
      tags:
        - Giveaway links
      summary: Get giveaway links
      description: Returns all giveaway links for packageId
      externalDocs: null
      operationId: getGiveawayLinksByPackageId
      parameters:
        - name: packageId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
  /open-api/v1.0/gifting/draw/{id}:
    get:
      tags:
        - Gifting
      summary: Get draw
      description: Get draw details
      operationId: getDraw
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
      externalDocs: null
  /open-api/v1.0/gift-purchase/{giftPurchaseId}:
    get:
      tags:
        - Twitch gift purchases
      summary: Get gift purchase by id
      description: Returns gift purchase details by id
      externalDocs: null
      operationId: getGiftPurchaseById_1
      parameters:
        - name: giftPurchaseId
          in: path
          required: true
          schema:
            type: string
          example: giv_EdJvIXu3SEiXe_QkPavHSA
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - shopApiKey: []
  /open-api/v1.0/donations:
    get:
      tags:
        - Donations
      summary: Get all donations
      description: Returns all donations with pagination
      externalDocs: null
      operationId: getDonations
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
            default: 20
          example: 5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.DonationV1
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - donation_read: []
        - shopApiKey: []
  /open-api/v1.0/donations/{donationId}:
    get:
      tags:
        - Donations
      summary: Get donation by id
      description: Returns donation by id
      externalDocs: null
      operationId: getDonationById
      parameters:
        - name: donationId
          in: path
          required: true
          schema:
            type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.openapi.model.DonationV1'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: object
      security:
        - donation_read: []
        - shopApiKey: []
components:
  schemas:
    com.fourthwall.app.openapi.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationUpdateRequest:
      type: object
      properties:
        url:
          type: string
        allowedTypes:
          type: array
          items:
            type: string
            enum:
              - ORDER_PLACED
              - ORDER_UPDATED
              - GIFT_PURCHASE
              - PRODUCT_CREATED
              - PRODUCT_UPDATED
              - DONATION
              - SUBSCRIPTION_PURCHASED
              - SUBSCRIPTION_EXPIRED
              - SUBSCRIPTION_CHANGED
              - NEWSLETTER_SUBSCRIBED
              - THANK_YOU_SENT
              - GIFT_DRAW_STARTED
              - GIFT_DRAW_ENDED
              - PROMOTION_CREATED
              - PROMOTION_UPDATED
              - PROMOTION_STATUS_CHANGED
              - PLATFORM_APP_DISCONNECTED
      required:
        - allowedTypes
        - url
    com.fourthwall.openapi.model.WebhookConfigurationV1:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        allowedTypes:
          type: array
          items:
            type: string
            enum:
              - ORDER_PLACED
              - ORDER_UPDATED
              - GIFT_PURCHASE
              - PRODUCT_CREATED
              - PRODUCT_UPDATED
              - DONATION
              - SUBSCRIPTION_PURCHASED
              - SUBSCRIPTION_EXPIRED
              - SUBSCRIPTION_CHANGED
              - NEWSLETTER_SUBSCRIBED
              - THANK_YOU_SENT
              - GIFT_DRAW_STARTED
              - GIFT_DRAW_ENDED
              - PROMOTION_CREATED
              - PROMOTION_UPDATED
              - PROMOTION_STATUS_CHANGED
              - PLATFORM_APP_DISCONNECTED
        apiVersion:
          type: string
          enum:
            - V1
      required:
        - allowedTypes
        - apiVersion
        - id
        - url
    com.fourthwall.app.openapi.StreamingStartedRequest:
      type: object
      properties:
        services:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.StreamingStartedRequest.Service.Twitch
      required:
        - services
    com.fourthwall.app.openapi.StreamingStartedRequest.Service:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.StreamingStartedRequest.Service.Twitch:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.StreamingStartedRequest.Service
        - type: object
          properties:
            broadcasterId:
              type: string
            broadcasterLogin:
              type: string
            thumbnailUrl:
              type: string
      required:
        - broadcasterId
        - broadcasterLogin
    com.fourthwall.openapi.model.StreamingStatusV1:
      type: object
      properties:
        shopId:
          type: string
        services:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1.Service.Twitch
      required:
        - services
        - shopId
    com.fourthwall.openapi.model.StreamingStatusV1.Service:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.StreamingStatusV1.Service.Twitch:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1.Service
        - type: object
          properties:
            status:
              type: string
              enum:
                - ONLINE
                - OFFLINE
            broadcasterId:
              type: string
            broadcasterLogin:
              type: string
            thumbnailUrl:
              type: string
      required:
        - status
    com.fourthwall.app.openapi.StreamingEndedRequest:
      type: object
      properties:
        services:
          type: array
          items:
            type: string
            enum:
              - TWITCH
      required:
        - services
    com.fourthwall.app.openapi.OpenApiProductEndpoint.UpdateOfferAvailabilityV1Request:
      type: object
      properties:
        available:
          type: boolean
      required:
        - available
    Money:
      type: object
      properties:
        value:
          type: number
          example: 10
          minimum: 0
        currency:
          type: string
          example: USD
      required:
        - currency
        - value
    com.fourthwall.openapi.model.Image:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        url:
          type: string
          example: https://fourthwall.com/image.png
        width:
          type: integer
          format: int32
          description: The original width of the image in pixels.
          example: 800
        height:
          type: integer
          format: int32
          description: The original height of the image in pixels.
          example: 600
        transformedUrl:
          type: string
          description: >-
            Transformed URL with applied image processing (e.g., resizing,
            optimization)
          example: https://fourthwall.com/image.png
      required:
        - height
        - id
        - transformedUrl
        - url
        - width
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAdditionalInformationV1:
      type: object
      properties:
        sizeAndFit:
          type: string
        guaranteeAndReturns:
          type: string
        moreDetails:
          type: string
    com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
          example: My t-shirt
        slug:
          type: string
          example: my-t-shirt
        description:
          type: string
          example: My t-shirt description
        state:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
        access:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
        thumbnailImage:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
        images:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
        variants:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantV1
        additionalInformation:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAdditionalInformationV1
        sizeGuide:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferSizeGuideV1
        createdAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
        updatedAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
      required:
        - access
        - createdAt
        - description
        - id
        - images
        - name
        - slug
        - state
        - updatedAt
        - variants
    com.fourthwall.openapi.model.OfferAbstractV1.OfferSizeGuideV1:
      type: object
      properties:
        previewUrl:
          type: string
        fileUrl:
          type: string
        description:
          type: string
        fitGuideDescription:
          type: string
        fitGuideUrls:
          type: array
          items:
            type: string
      required:
        - fitGuideUrls
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes:
      type: object
      properties:
        description:
          type: string
          example: Black, L
        color:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Color
        size:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Size
      required:
        - description
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Color:
      type: object
      properties:
        name:
          type: string
          example: Black
        swatch:
          type: string
          example: '#000000'
      required:
        - name
        - swatch
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Size:
      type: object
      properties:
        name:
          type: string
          example: L
      required:
        - name
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions:
      type: object
      properties:
        length:
          type: number
          example: 1
        width:
          type: number
          example: 2
        height:
          type: number
          example: 3
        unit:
          type: string
          example: cm
      required:
        - height
        - length
        - unit
        - width
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
          example: My t-shirt - Black, L
        sku:
          type: string
          example: WDEK-DRE200L
        unitPrice:
          $ref: '#/components/schemas/Money'
        compareAtPrice:
          $ref: '#/components/schemas/Money'
        unitCost:
          $ref: '#/components/schemas/Money'
        attributes:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes
        stock:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited
        weight:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight
        dimensions:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions
        images:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
        thumbnailImage:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
      required:
        - attributes
        - dimensions
        - id
        - images
        - name
        - sku
        - stock
        - unitPrice
        - weight
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
        - type: object
          properties:
            inStock:
              type: integer
              format: int32
              example: 5
      required:
        - inStock
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight:
      type: object
      properties:
        value:
          type: number
          example: 1
        unit:
          type: string
          example: kg
      required:
        - unit
        - value
    com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.FinishGiveawayRequest:
      type: object
      properties:
        participants:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.FinishGiveawayRequest.Participant
      required:
        - participants
    com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.FinishGiveawayRequest.Participant:
      type: object
      properties:
        userId:
          type: string
        userName:
          type: string
      required:
        - userId
        - userName
    com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.CreateGiveawayXResponse:
      type: object
      properties:
        id:
          type: string
        friendlyId:
          type: string
        drawIds:
          type: array
          items:
            type: string
      required:
        - drawIds
        - friendlyId
        - id
    com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.CreateGiveawayCheckoutXRequest:
      type: object
      properties:
        heading:
          type: string
        description:
          type: string
        iconUrl:
          type: string
        buttonText:
          type: string
        disabled:
          type: boolean
      required:
        - buttonText
        - description
        - heading
        - iconUrl
    com.fourthwall.app.openapi.DrawFinishedRequest:
      type: object
      properties:
        participants:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.app.openapi.DrawFinishedRequest.Participant.Twitch
      required:
        - participants
    com.fourthwall.app.openapi.DrawFinishedRequest.Participant:
      discriminator:
        propertyName: service
      properties:
        service:
          type: string
      required:
        - service
    com.fourthwall.app.openapi.DrawFinishedRequest.Participant.Twitch:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.DrawFinishedRequest.Participant
        - type: object
          properties:
            userId:
              type: string
            userName:
              type: string
      required:
        - userId
        - userName
    com.fourthwall.openapi.model.GiftDraftV1:
      type: object
      properties:
        id:
          type: string
          example: gdr_EdJvIXu3SEiXe_QkPavHSA
        type:
          type: string
          enum:
            - INITIAL
            - REDO
        giveawayId:
          type: string
          example: giv_EdJvIXu3SEiXe_QkPavHSA
        giveawayFriendlyId:
          type: string
          example: D3XZFWPP
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        offer:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1
        amounts:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Amounts
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
        gifts:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Available
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Cancelled
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToPromotion
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Redeemed
        createdAt:
          type: string
          format: date-time
        durationSeconds:
          type: integer
          format: int64
      required:
        - amounts
        - createdAt
        - durationSeconds
        - email
        - gifts
        - giveawayFriendlyId
        - giveawayId
        - id
        - offer
        - shopId
        - type
    com.fourthwall.openapi.model.GiftDraftV1.Amounts:
      type: object
      properties:
        subtotal:
          $ref: '#/components/schemas/Money'
        total:
          $ref: '#/components/schemas/Money'
      required:
        - subtotal
        - total
    com.fourthwall.openapi.model.GiftDraftV1.Gift:
      type: object
      discriminator:
        propertyName: status
      properties:
        id:
          type: string
        status:
          type: string
      required:
        - id
        - status
    com.fourthwall.openapi.model.GiftDraftV1.Gift.Available:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift'
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner
      required:
        - id
    com.fourthwall.openapi.model.GiftDraftV1.Gift.Cancelled:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift'
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner
      required:
        - id
    com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToPromotion:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift'
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            promotionId:
              type: string
              example: prm_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner
      required:
        - id
        - promotionId
        - winner
    com.fourthwall.openapi.model.GiftDraftV1.Gift.Redeemed:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift'
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            orderId:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            orderFriendlyId:
              type: string
              example: D3XZFWPP
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner
      required:
        - id
        - orderFriendlyId
        - orderId
        - winner
    com.fourthwall.openapi.model.GiftDraftV1.Winner:
      type: object
      properties:
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        selectedAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
        redeemUri:
          type: string
      required:
        - redeemUri
        - selectedAt
    com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
          example: My t-shirt
        slug:
          type: string
          example: my-t-shirt
        description:
          type: string
          example: My t-shirt description
        primaryImage:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
      required:
        - description
        - id
        - name
        - slug
    com.fourthwall.app.openapi.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationCreateRequest:
      type: object
      properties:
        url:
          type: string
        allowedTypes:
          type: array
          items:
            type: string
            enum:
              - ORDER_PLACED
              - ORDER_UPDATED
              - GIFT_PURCHASE
              - PRODUCT_CREATED
              - PRODUCT_UPDATED
              - DONATION
              - SUBSCRIPTION_PURCHASED
              - SUBSCRIPTION_EXPIRED
              - SUBSCRIPTION_CHANGED
              - NEWSLETTER_SUBSCRIBED
              - THANK_YOU_SENT
              - GIFT_DRAW_STARTED
              - GIFT_DRAW_ENDED
              - PROMOTION_CREATED
              - PROMOTION_UPDATED
              - PROMOTION_STATUS_CHANGED
              - PLATFORM_APP_DISCONNECTED
      required:
        - allowedTypes
        - url
    MEMBERSHIPS_MULTI:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiCreatePromotionRequest
        - type: object
          properties:
            codes:
              type: array
              items:
                type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Memberships
            subscriptionType:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly
            tiers:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers
      required:
        - codes
        - discount
    MEMBERSHIPS_SINGLE:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiCreatePromotionRequest
        - type: object
          properties:
            code:
              type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Memberships
            subscriptionType:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly
            tiers:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers
      required:
        - code
        - discount
    SHOP_MULTI:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiCreatePromotionRequest
        - type: object
          properties:
            codes:
              type: array
              items:
                type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Shop
            appliesToProducts:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionSelectedProducts
            limits:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionLimits
      required:
        - codes
        - discount
    SHOP_SINGLE:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiCreatePromotionRequest
        - type: object
          properties:
            code:
              type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount
                - $ref: >-
                    #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Shop
            appliesToProducts:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionSelectedProducts
            limits:
              $ref: >-
                #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionLimits
      required:
        - code
        - discount
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiCreatePromotionRequest:
      discriminator:
        propertyName: type
        mapping:
          SHOP_SINGLE: '#/components/schemas/SHOP_SINGLE'
          SHOP_MULTI: '#/components/schemas/SHOP_MULTI'
          MEMBERSHIPS_SINGLE: '#/components/schemas/MEMBERSHIPS_SINGLE'
          MEMBERSHIPS_MULTI: '#/components/schemas/MEMBERSHIPS_MULTI'
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships:
      discriminator:
        propertyName: type
        mapping:
          PERCENTAGE: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Memberships
        - type: object
          properties:
            percentage:
              type: number
      required:
        - percentage
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop:
      discriminator:
        propertyName: type
        mapping:
          PERCENTAGE: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage
          FLAT_RATE: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop
        - type: object
          properties:
            money:
              $ref: '#/components/schemas/Money'
            freeShipping:
              type: boolean
      required:
        - freeShipping
        - money
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionDiscountType.Shop
        - type: object
          properties:
            percentage:
              type: number
            shipping:
              type: string
              enum:
                - Excluded
                - Included
                - FreeLowestOnly
                - Free
      required:
        - percentage
        - shipping
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionLimits:
      type: object
      properties:
        maximumUse:
          type: integer
          format: int32
        oneUsePerCustomer:
          type: boolean
      required:
        - oneUsePerCustomer
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo:
      discriminator:
        propertyName: type
        mapping:
          ALL: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers
          MONTHLY: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly
          ANNUAL: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo:
      discriminator:
        propertyName: type
        mapping:
          ALL: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers
          SELECTED: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo
        - type: object
          properties:
            ids:
              type: array
              items:
                type: string
      required:
        - ids
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Memberships:
      type: object
      properties:
        newMembersOnly:
          type: boolean
      required:
        - newMembersOnly
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionRequirements.Shop:
      type: object
      properties:
        minimumOrderValue:
          $ref: '#/components/schemas/Money'
    com.fourthwall.app.openapi.model.requests.promotions.OpenApiPromotionSelectedProducts:
      type: object
      properties:
        productIds:
          type: array
          items:
            type: string
            format: uuid
        oncePerOrder:
          type: boolean
      required:
        - productIds
    com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
        - type: object
          properties:
            id:
              type: string
            title:
              type: string
            code:
              type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage
            status:
              type: string
              enum:
                - Live
                - Ended
                - Archived
                - AllUsed
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop
            usageCount:
              type: integer
              format: int32
            limits:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1
            appliesTo:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts
            type:
              type: string
      required:
        - appliesTo
        - code
        - discount
        - id
        - limits
        - requirements
        - status
        - title
        - type
        - usageCount
    com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
        - type: object
          properties:
            id:
              type: string
            title:
              type: string
            codes:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.MultiPromoSubCodeV1
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage
            status:
              type: string
              enum:
                - Live
                - Ended
                - Archived
                - AllUsed
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships
            usageCount:
              type: integer
              format: int32
            subscriptionType:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly
            tiers:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers
            type:
              type: string
      required:
        - codes
        - discount
        - id
        - requirements
        - status
        - subscriptionType
        - tiers
        - title
        - type
        - usageCount
    com.fourthwall.openapi.model.promotions.MultiPromoSubCodeV1:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        usageCount:
          type: integer
          format: int32
        status:
          type: string
          enum:
            - Live
            - Ended
            - Archived
            - AllUsed
      required:
        - code
        - id
        - status
        - usageCount
    com.fourthwall.openapi.model.promotions.MultiShopPromotionV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
        - type: object
          properties:
            id:
              type: string
            title:
              type: string
            codes:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.MultiPromoSubCodeV1
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage
            status:
              type: string
              enum:
                - Live
                - Ended
                - Archived
                - AllUsed
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop
            limits:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1
            usageCount:
              type: integer
              format: int32
            appliesTo:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts
            type:
              type: string
      required:
        - appliesTo
        - codes
        - discount
        - id
        - limits
        - requirements
        - status
        - title
        - type
        - usageCount
    com.fourthwall.openapi.model.promotions.PromotionLimitsV1:
      type: object
      properties:
        maximumUsesNumber:
          type: integer
          format: int32
        oneUsePerCustomer:
          type: boolean
    com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1:
      discriminator:
        propertyName: type
        mapping:
          MEMBERSHIPS_PERCENTAGE: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1
        - type: object
          properties:
            percentage:
              type: number
      required:
        - percentage
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
    com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1
    com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1
        - type: object
          properties:
            tiersIds:
              type: array
              items:
                type: string
      required:
        - tiersIds
    com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships:
      type: object
      properties:
        newMembersOnly:
          type: boolean
      required:
        - newMembersOnly
    com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop:
      type: object
      properties:
        minimumOrderValue:
          $ref: '#/components/schemas/Money'
    com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1:
      discriminator:
        propertyName: type
        mapping:
          ENTIRE_ORDER: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder
          SELECTED_PRODUCTS: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
    com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
        - type: object
          properties:
            products:
              type: array
              items:
                type: string
                format: uuid
            oncePerOrder:
              type: boolean
      required:
        - oncePerOrder
        - products
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1:
      discriminator:
        propertyName: type
        mapping:
          PERCENTAGE: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage
          FLAT_RATE: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount
          FREE_SHIPPING: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping
          FREE_PRODUCTS: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            money:
              $ref: '#/components/schemas/Money'
            freeShipping:
              type: boolean
      required:
        - freeShipping
        - money
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            freeProductsType:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.AutoAdded
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.ManuallyAdded
            freeShipping:
              type: boolean
      required:
        - freeProductsType
        - freeShipping
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.AutoAddedFreeProduct:
      type: object
      properties:
        variantId:
          type: string
        quantity:
          type: integer
          format: int32
      required:
        - quantity
        - variantId
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.ManuallyAddedFreeProduct:
      type: object
      properties:
        availableVariantIds:
          type: array
          items:
            type: string
            format: uuid
        quantity:
          type: integer
          format: int32
      required:
        - availableVariantIds
        - quantity
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type:
      discriminator:
        propertyName: type
        mapping:
          AUTO_ADDED: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.AutoAdded
          MANUALLY_ADDED: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.ManuallyAdded
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.AutoAdded:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type
        - type: object
          properties:
            products:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.AutoAddedFreeProduct
      required:
        - products
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.ManuallyAdded:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type
        - type: object
          properties:
            products:
              type: array
              items:
                $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.ManuallyAddedFreeProduct
      required:
        - products
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            lowestOnly:
              type: boolean
      required:
        - lowestOnly
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            percentage:
              type: number
            shippingOption:
              type: string
              enum:
                - Included
                - Excluded
                - Free
                - FreeLowestOnly
      required:
        - percentage
    com.fourthwall.openapi.model.promotions.PromotionV1:
      discriminator:
        propertyName: type
        mapping:
          SHOP_SINGLE: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1
          SHOP_MULTI: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1
          SHOP_AUTO_APPLYING: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1
          MEMBERSHIPS_SINGLE: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1
          MEMBERSHIPS_MULTI: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
        - type: object
          properties:
            id:
              type: string
            code:
              type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage
            status:
              type: string
              enum:
                - Live
                - Ended
                - Archived
                - AllUsed
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships
            usageCount:
              type: integer
              format: int32
            subscriptionType:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly
            tiers:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers
            type:
              type: string
      required:
        - code
        - discount
        - id
        - requirements
        - status
        - subscriptionType
        - tiers
        - type
        - usageCount
    com.fourthwall.openapi.model.promotions.SingleShopPromotionV1:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
        - type: object
          properties:
            id:
              type: string
            code:
              type: string
            discount:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage
            status:
              type: string
              enum:
                - Live
                - Ended
                - Archived
                - AllUsed
            requirements:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop
            usageCount:
              type: integer
              format: int32
            limits:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1
            appliesTo:
              oneOf:
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder
                - $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts
            type:
              type: string
      required:
        - appliesTo
        - code
        - discount
        - id
        - limits
        - requirements
        - status
        - type
        - usageCount
    com.fourthwall.app.customization.model.CreateCustomizationRequest:
      type: object
      properties:
        origin:
          $ref: >-
            #/components/schemas/com.fourthwall.app.customization.model.CustomizationOriginRequest
        settings:
          $ref: >-
            #/components/schemas/com.fourthwall.app.customization.model.UpdateCustomizationSettingsRequest
        isMobile:
          type: boolean
    com.fourthwall.app.customization.model.CustomizationOriginRequest:
      type: object
      properties:
        customizationId:
          type: string
        source:
          type: string
          enum:
            - ONE_DESIGN
            - DUPLICATION
            - MIGRATION
            - AUTO_GENERATED_FROM_SKETCH
            - RECENT_DESIGN
      required:
        - customizationId
        - source
    com.fourthwall.app.customization.model.UpdateCustomizationSettingsRequest:
      type: object
      properties:
        synchronizeDesignStates:
          type: boolean
        recommendProductionMethod:
          type: boolean
    com.fourthwall.customization.model.CreatedCustomization:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    com.fourthwall.app.openapi.OpenApiGiveawayEndpoint.CreateGiveawayXRequest:
      type: object
      properties:
        offerId:
          type: string
          format: uuid
        quantity:
          type: integer
          format: int32
        username:
          type: string
        message:
          type: string
      required:
        - offerId
        - quantity
    com.fourthwall.app.openapi.CreateGiveawayLinksV1Request:
      type: object
      properties:
        productId:
          type: string
          format: uuid
        number:
          type: integer
          format: int32
      required:
        - number
        - productId
    com.fourthwall.openapi.model.GiveawayLinksV1:
      type: object
      properties:
        packageId:
          type: string
          example: gpg_EdJvIXu3SEiXe_QkPavHSA
        giveawayLinks:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Available
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Cancelled
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Redeemed
      required:
        - giveawayLinks
        - packageId
    com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1:
      discriminator:
        propertyName: status
      properties:
        status:
          type: string
      required:
        - status
    com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Available:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            link:
              type: string
              example: https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA
            productId:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            createdAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
      required:
        - createdAt
        - id
        - link
        - productId
    com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Cancelled:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            link:
              type: string
              example: https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA
            productId:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            createdAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            cancelledAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
      required:
        - cancelledAt
        - createdAt
        - id
        - link
        - productId
    com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Redeemed:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            link:
              type: string
              example: https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA
            productId:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            createdAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
            redeemedAt:
              type: string
              format: date-time
              example: '2020-08-13T09:05:36.939Z'
      required:
        - createdAt
        - id
        - link
        - productId
        - redeemedAt
    com.fourthwall.app.openapi.FulfillmentItem:
      type: object
      properties:
        variantId:
          type: string
          format: uuid
        quantity:
          type: integer
          format: int32
          minimum: 1
      required:
        - quantity
        - variantId
    com.fourthwall.app.openapi.FulfillmentRequest:
      type: object
      properties:
        orderId:
          type: string
          format: uuid
        items:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.app.openapi.FulfillmentItem'
          minItems: 1
        shippingLabel:
          $ref: '#/components/schemas/com.fourthwall.app.openapi.ShippingLabel'
      required:
        - items
        - orderId
        - shippingLabel
    com.fourthwall.app.openapi.ShippingLabel:
      type: object
      properties:
        trackingNumber:
          type: string
          minLength: 1
        trackingCompany:
          type: string
          example: USPS
          examples:
            - DHL
            - UPS
            - USPS
            - Canada Post
          minLength: 1
      required:
        - trackingCompany
        - trackingNumber
    com.fourthwall.app.openapi.FulfillmentResponse:
      type: object
      properties:
        fulfillmentId:
          type: string
      required:
        - fulfillmentId
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookConfigurationV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.ThankYouContribution:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.ThankYouContribution.Donation:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution
        - type: object
          properties:
            id:
              type: string
              example: don_Kpcjx4HIQ1e4bTIOjX9CsA
            shopId:
              type: string
              example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
            supporter:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Supporter
      required:
        - id
        - shopId
        - supporter
    com.fourthwall.openapi.model.ThankYouContribution.GiftPurchase:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution
        - type: object
          properties:
            id:
              type: string
              example: giv_EdJvIXu3SEiXe_QkPavHSA
            shopId:
              type: string
              example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
            supporter:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Supporter
      required:
        - id
        - shopId
        - supporter
    com.fourthwall.openapi.model.ThankYouContribution.Membership:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution
        - type: object
          properties:
            id:
              type: string
              example: mpc_EdJvIXu3SEiXe_QkPavHSA
            shopId:
              type: string
              example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
            supporter:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Supporter
      required:
        - id
        - shopId
        - supporter
    com.fourthwall.openapi.model.ThankYouContribution.Order:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution
        - type: object
          properties:
            id:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            shopId:
              type: string
              example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
            supporter:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Supporter
      required:
        - id
        - shopId
        - supporter
    com.fourthwall.openapi.model.ThankYouContribution.Supporter:
      type: object
      properties:
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
      required:
        - email
    com.fourthwall.openapi.model.ThankYouV1:
      type: object
      properties:
        id:
          type: string
          example: ty_EdJvIXu3SEiXe_QkPavHSA
        mediaUrl:
          type: string
          example: https://fourthwall.com/thankyou/ty_EdJvIXu3SEiXe_QkPavHSA
        contribution:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Donation
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.GiftPurchase
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Membership
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Order
      required:
        - contribution
        - id
        - mediaUrl
    com.fourthwall.openapi.model.ShopV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
        domain:
          type: string
        publicDomain:
          type: string
      required:
        - domain
        - id
        - name
        - publicDomain
    com.fourthwall.openapi.model.AddressV1:
      type: object
      properties:
        name:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        country:
          type: string
      required:
        - address1
        - address2
        - city
        - country
        - name
        - state
        - zip
    com.fourthwall.openapi.model.ContactInfoV1:
      type: object
      properties:
        shopEmail:
          type: string
        contactEmail:
          type: string
        transactionalEmail:
          type: string
        customerSupportEmail:
          type: string
        phone:
          type: string
        shopName:
          type: string
        domain:
          type: string
        location:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.AddressV1'
      required:
        - contactEmail
        - domain
        - location
        - phone
        - shopEmail
        - shopName
        - transactionalEmail
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.promotions.PromotionV1:
      type: object
      properties:
        results:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.StockV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.StockV1'
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.StockV1:
      type: object
      properties:
        variantId:
          type: string
          format: uuid
        quantity:
          type: integer
          format: int32
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - createdAt
        - quantity
        - updatedAt
        - variantId
    com.fourthwall.app.productcatalog.model.CategoryBreadcrumbsItemXResponse:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
      required:
        - name
        - slug
    com.fourthwall.app.productcatalog.model.ColorXDto:
      type: object
      properties:
        name:
          type: string
        swatch:
          type: string
      required:
        - name
        - swatch
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.BadgeXDto:
      type: object
      properties:
        value:
          type: string
          enum:
            - OUR_PICK
            - BESTSELLER
            - NEW
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ColorXDto:
      type: object
      properties:
        value:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ColorXDto
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.MinimumOrdersRequiredFilterXResponse:
      type: object
      properties:
        value:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.MinimumOrdersRequiredFilterXResponse
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.PrintRegionFilterXDto:
      type: object
      properties:
        value:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.PrintRegionFilterXDto
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ProductionMethodXResponse:
      type: object
      properties:
        value:
          type: string
          enum:
            - SUBLIMATION
            - DTG
            - EMBROIDERY
            - SCREEN_PRINTING
            - PRINTED
            - STICKER
            - OTHER
            - DTFX
            - UV
            - ALL_OVER_PRINT
            - KNITTING
            - DRINKWARE
            - GARMENT_PRINTED
            - ACRYLIC_CUTOUT
            - DIE_CUT_MAGNET
            - HOLO_STICKER
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ShippingAreaXDto:
      type: object
      properties:
        value:
          type: string
          enum:
            - EU
            - US
            - CA
            - AU
            - BR
            - CN
            - JP
            - UK
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.SizeXParam:
      type: object
      properties:
        value:
          type: string
          enum:
            - PlusSizesOnly
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.productcatalog.model.CustomizationTypeFilter:
      type: object
      properties:
        value:
          type: string
          enum:
            - REQUESTABLE
            - INSTANT
        productsCount:
          type: integer
          format: int32
      required:
        - productsCount
        - value
    com.fourthwall.app.productcatalog.model.LinkedProductionMethodListingXResponse:
      type: object
      properties:
        slug:
          type: string
        priceFrom:
          type: number
        priceTo:
          type: number
        minimumOrdersNumber:
          type: integer
          format: int32
        productionMethod:
          type: string
          enum:
            - SUBLIMATION
            - DTG
            - EMBROIDERY
            - SCREEN_PRINTING
            - PRINTED
            - STICKER
            - DTFX
            - UV
            - ALL_OVER_PRINT
            - KNITTING
            - DRINKWARE
            - GARMENT_PRINTED
            - ACRYLIC_CUTOUT
            - DIE_CUT_MAGNET
            - HOLO_STICKER
        colorVariants:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ProductColorVariantsXResponse
        badges:
          type: array
          items:
            type: string
            enum:
              - OUR_PICK
              - BESTSELLER
              - NEW
          uniqueItems: true
      required:
        - badges
        - colorVariants
        - priceFrom
        - priceTo
        - productionMethod
        - slug
    com.fourthwall.app.productcatalog.model.ListingReviewsSummaryXResponse:
      type: object
      properties:
        count:
          type: integer
          format: int32
        rating:
          type: number
      required:
        - count
        - rating
    com.fourthwall.app.productcatalog.model.MinimumOrdersRequiredFilterXResponse:
      type: object
      properties:
        id:
          type: string
          enum:
            - NoMinimum
            - CustomRange1To300
            - CustomRangeOver300
        name:
          type: string
      required:
        - id
        - name
    com.fourthwall.app.productcatalog.model.PriceRangeXResponse:
      type: object
      properties:
        from:
          type: number
        to:
          type: number
      required:
        - from
        - to
    com.fourthwall.app.productcatalog.model.PrintRegionFilterXDto:
      type: object
      properties:
        displayName:
          type: string
        id:
          type: string
          enum:
            - Front
            - Back
            - Left_Sleeve
            - Right_Sleeve
            - Inside_Label
            - Outside_Label
      required:
        - displayName
        - id
    com.fourthwall.app.productcatalog.model.ProductBrandXResponse:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
        productsCount:
          type: integer
          format: int32
      required:
        - name
        - productsCount
        - slug
    com.fourthwall.app.productcatalog.model.ProductCatalogFiltersXResponse:
      type: object
      properties:
        categories:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductCategoryXResponse
        collections:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductCollectionXResponse
        brands:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductBrandXResponse
        badges:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.BadgeXDto
        priceRange:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.PriceRangeXResponse
        colors:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ColorXDto
        sizes:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.SizeXParam
        shippingAreas:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ShippingAreaXDto
        printRegions:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.PrintRegionFilterXDto
        minimumOrdersRequired:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.MinimumOrdersRequiredFilterXResponse
        productionMethods:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.app.productcatalog.model.ProductionMethodXResponse
        customizationType:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CountableElementXResponseCom.fourthwall.productcatalog.model.CustomizationTypeFilter
      required:
        - badges
        - brands
        - categories
        - collections
        - colors
        - customizationType
        - minimumOrdersRequired
        - priceRange
        - printRegions
        - productionMethods
        - shippingAreas
        - sizes
    com.fourthwall.app.productcatalog.model.ProductCatalogListingProductXResponse:
      type: object
      properties:
        id:
          type: string
        brand:
          type: string
        brandModel:
          type: string
        name:
          type: string
        slug:
          type: string
        categoryPath:
          type: array
          items:
            type: string
        productionMethod:
          type: string
          enum:
            - SUBLIMATION
            - DTG
            - EMBROIDERY
            - SCREEN_PRINTING
            - PRINTED
            - STICKER
            - OTHER
            - DTFX
            - UV
            - ALL_OVER_PRINT
            - KNITTING
            - DRINKWARE
            - GARMENT_PRINTED
            - ACRYLIC_CUTOUT
            - DIE_CUT_MAGNET
            - HOLO_STICKER
        priceFrom:
          type: number
        priceTo:
          type: number
        minimumOrdersNumber:
          type: integer
          format: int32
        variants:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ProductColorVariantsXResponse
        groupedProductionMethods:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: >-
                #/components/schemas/com.fourthwall.app.productcatalog.model.LinkedProductionMethodListingXResponse
        reviewsSummary:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ListingReviewsSummaryXResponse
        customizationType:
          type: string
          enum:
            - REQUESTABLE
            - INSTANT
            - DESIGNER_V3_READY
            - PRINTFUL_DESIGNER_READY
        favourite:
          type: boolean
        badges:
          type: array
          items:
            type: string
            enum:
              - OUR_PICK
              - BESTSELLER
              - NEW
          uniqueItems: true
      required:
        - badges
        - brand
        - brandModel
        - categoryPath
        - customizationType
        - favourite
        - groupedProductionMethods
        - id
        - name
        - priceFrom
        - priceTo
        - productionMethod
        - reviewsSummary
        - slug
        - variants
    com.fourthwall.app.productcatalog.model.ProductCatalogPagedListingXResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/com.fourthwall.support.paging.PageResult'
        filters:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ProductCatalogFiltersXResponse
        products:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductCatalogListingProductXResponse
        title:
          type: string
        categoryBreadcrumbs:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.CategoryBreadcrumbsItemXResponse
      required:
        - categoryBreadcrumbs
        - filters
        - page
        - products
        - title
    com.fourthwall.app.productcatalog.model.ProductCategoryXResponse:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
        productsCount:
          type: integer
          format: int32
        children:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductCategoryXResponse
      required:
        - name
        - productsCount
        - slug
    com.fourthwall.app.productcatalog.model.ProductCollectionXResponse:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
        productsCount:
          type: integer
          format: int32
      required:
        - name
        - productsCount
        - slug
    com.fourthwall.app.productcatalog.model.ProductColorVariantXResponse:
      type: object
      properties:
        color:
          $ref: >-
            #/components/schemas/com.fourthwall.app.productcatalog.model.ColorXDto
        photoUrl:
          type: string
      required:
        - color
        - photoUrl
    com.fourthwall.app.productcatalog.model.ProductColorVariantsXResponse:
      type: object
      properties:
        matched:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductColorVariantXResponse
        other:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.productcatalog.model.ProductColorVariantXResponse
      required:
        - matched
        - other
    com.fourthwall.support.paging.PageResult:
      type: object
      properties:
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        elementsSize:
          type: integer
          format: int32
        elementsTotal:
          type: integer
          format: int32
        totalPages:
          type: integer
          format: int32
        hasNextPage:
          type: boolean
      required:
        - elementsSize
        - elementsTotal
        - hasNextPage
        - pageNumber
        - pageSize
        - totalPages
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OrderV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1'
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.Address:
      type: object
      properties:
        name:
          type: string
          example: Joe Doe
        address1:
          type: string
          example: Main Street 1
        address2:
          type: string
        city:
          type: string
          example: San Francisco
        state:
          type: string
          example: CA
        country:
          type: string
          example: US
        zip:
          type: string
          example: 12345
        phone:
          type: string
          example: 123456789
      required:
        - address1
        - city
        - country
        - name
        - state
    com.fourthwall.openapi.model.OfferAbstractV1.OfferOrderV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
          example: My t-shirt
        slug:
          type: string
          example: my-t-shirt
        description:
          type: string
          example: My t-shirt description
        primaryImage:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
        variant:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantWithQuantityV1
      required:
        - description
        - id
        - name
        - slug
        - variant
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantWithQuantityV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        name:
          type: string
          example: My t-shirt - Black, L
        sku:
          type: string
          example: WDEK-DRE200L
        unitPrice:
          $ref: '#/components/schemas/Money'
        unitCost:
          $ref: '#/components/schemas/Money'
        compareAtPrice:
          $ref: '#/components/schemas/Money'
        attributes:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes
        quantity:
          type: integer
          format: int32
          example: 5
        price:
          $ref: '#/components/schemas/Money'
        cost:
          $ref: '#/components/schemas/Money'
        weight:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight
        dimensions:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions
      required:
        - attributes
        - dimensions
        - id
        - name
        - price
        - quantity
        - sku
        - unitPrice
        - weight
    com.fourthwall.openapi.model.OrderV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        friendlyId:
          type: string
          example: D3XZFWPP
        checkoutId:
          type: string
          example: ch_BV44UYrXQA2T_Xcf1288tw
        promotionId:
          type: string
          example: prm_EdJvIXu3SEiXe_QkPavHSA
        status:
          type: string
          enum:
            - CONFIRMED
            - PARTIALLY_IN_PRODUCTION
            - IN_PRODUCTION
            - PARTIALLY_SHIPPED
            - SHIPPED
            - PARTIALLY_DELIVERED
            - DELIVERED
            - CANCELLED
            - COMPLETED
        email:
          type: string
          example: supporter@fourthwall.com
        emailMarketingOptIn:
          type: boolean
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
        amounts:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.OrderAmounts
        billing:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Billing'
        shipping:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Shipping'
        offers:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferOrderV1
        source:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.GiveawayLinks
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.Order
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.SamplesOrder
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.TwitchGiftRedemption
        trackingParams:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.TrackingParams
        createdAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
        updatedAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
      required:
        - amounts
        - checkoutId
        - createdAt
        - email
        - emailMarketingOptIn
        - friendlyId
        - id
        - message
        - offers
        - shopId
        - source
        - status
        - updatedAt
    com.fourthwall.openapi.model.OrderV1.Billing:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Address'
      required:
        - address
    com.fourthwall.openapi.model.OrderV1.OrderAmounts:
      type: object
      properties:
        subtotal:
          $ref: '#/components/schemas/Money'
        shipping:
          $ref: '#/components/schemas/Money'
        tax:
          $ref: '#/components/schemas/Money'
        donation:
          $ref: '#/components/schemas/Money'
        discount:
          $ref: '#/components/schemas/Money'
        total:
          $ref: '#/components/schemas/Money'
      required:
        - discount
        - donation
        - shipping
        - subtotal
        - tax
        - total
    com.fourthwall.openapi.model.OrderV1.Shipping:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Address'
      required:
        - address
    com.fourthwall.openapi.model.OrderV1.Source:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.OrderV1.Source.GiveawayLinks:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
        - type: object
          properties:
            giftId:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
      required:
        - giftId
    com.fourthwall.openapi.model.OrderV1.Source.Order:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
    com.fourthwall.openapi.model.OrderV1.Source.SamplesOrder:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
    com.fourthwall.openapi.model.OrderV1.Source.TwitchGiftRedemption:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
        - type: object
          properties:
            giftPurchaseId:
              type: string
              example: giv_EdJvIXu3SEiXe_QkPavHSA
            giftId:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
      required:
        - giftId
        - giftPurchaseId
    com.fourthwall.openapi.model.OrderV1.TrackingParams:
      type: object
      properties:
        fbc:
          type: string
        fbp:
          type: string
        utm_source:
          type: string
        utm_medium:
          type: string
        utm_campaign:
          type: string
        utm_content:
          type: string
        utm_term:
          type: string
    com.fourthwall.openapi.model.MembershipTierV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        imageUrl:
          type: string
      required:
        - id
        - name
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MembershipSupporterV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.MembershipSupporterV1:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
          example: supporter@fourthwall.com
        nickname:
          type: string
        createdAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
        subscription:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Active
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Cancelled
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.None
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Suspended
      required:
        - createdAt
        - email
        - id
        - nickname
        - subscription
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Active:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
        - type: object
          properties:
            variant:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Variant
      required:
        - variant
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Cancelled:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
        - type: object
          properties:
            variant:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Variant
      required:
        - variant
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.None:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Suspended:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
        - type: object
          properties:
            variant:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Variant
      required:
        - variant
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Variant:
      type: object
      properties:
        id:
          type: string
        tierId:
          type: string
        interval:
          type: string
          enum:
            - ANNUAL
            - MONTHLY
        amount:
          $ref: '#/components/schemas/Money'
      required:
        - amount
        - id
        - interval
        - tierId
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MailingListEntryV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.MailingListEntryV1
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.MailingListEntryV1:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        email:
          type: string
      required:
        - email
        - id
    com.fourthwall.openapi.model.GiveawayPackagesV1:
      type: object
      properties:
        packages:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.GiveawayPackagesV1.GiveawayPackage
      required:
        - packages
    com.fourthwall.openapi.model.GiveawayPackagesV1.GiveawayPackage:
      type: object
      properties:
        packageId:
          type: string
          example: gpg_EdJvIXu3SEiXe_QkPavHSA
        createdAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
      required:
        - createdAt
        - packageId
    com.fourthwall.openapi.model.GiftPurchaseV1:
      type: object
      properties:
        id:
          type: string
          example: giv_EdJvIXu3SEiXe_QkPavHSA
        friendlyId:
          type: string
          example: D3XZFWPP
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        offer:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1
        amounts:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Amounts
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
        quantity:
          type: integer
          format: int32
        gifts:
          type: array
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Available
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Cancelled
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.ChangedToPromotion
              - $ref: >-
                  #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Redeemed
        createdAt:
          type: string
          format: date-time
      required:
        - amounts
        - createdAt
        - email
        - friendlyId
        - gifts
        - id
        - offer
        - quantity
        - shopId
    com.fourthwall.openapi.model.GiftPurchaseV1.Amounts:
      type: object
      properties:
        subtotal:
          $ref: '#/components/schemas/Money'
        tax:
          $ref: '#/components/schemas/Money'
        total:
          $ref: '#/components/schemas/Money'
        profit:
          $ref: '#/components/schemas/Money'
        prepaidShipping:
          $ref: '#/components/schemas/Money'
      required:
        - prepaidShipping
        - profit
        - subtotal
        - tax
        - total
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift:
      discriminator:
        propertyName: status
      properties:
        status:
          type: string
      required:
        - status
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Available:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Winner
      required:
        - id
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Cancelled:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Winner
      required:
        - id
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift.ChangedToPromotion:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            promotionId:
              type: string
              example: prm_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Winner
      required:
        - id
        - promotionId
        - winner
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Redeemed:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            orderId:
              type: string
              example: 00aa4abd-5778-4199-8161-0b49b2f212e5
            orderFriendlyId:
              type: string
              example: D3XZFWPP
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Winner
      required:
        - id
        - orderFriendlyId
        - orderId
        - winner
    com.fourthwall.openapi.model.GiftPurchaseV1.Winner:
      type: object
      properties:
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        selectedAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
      required:
        - selectedAt
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.DonationV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.DonationV1'
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.DonationV1:
      type: object
      properties:
        id:
          type: string
          example: don_Kpcjx4HIQ1e4bTIOjX9CsA
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        status:
          type: string
          enum:
            - OPEN
            - COMPLETED
            - ABANDONED
            - CANCELLED
            - FAILED
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
        amounts:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.DonationV1.Amounts'
        createdAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
        updatedAt:
          type: string
          format: date-time
          example: '2020-08-13T09:05:36.939Z'
      required:
        - amounts
        - createdAt
        - email
        - id
        - shopId
        - status
        - updatedAt
    com.fourthwall.openapi.model.DonationV1.Amounts:
      type: object
      properties:
        total:
          $ref: '#/components/schemas/Money'
      required:
        - total
    com.fourthwall.app.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.CollectionSlimV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionSlimV1'
        total:
          type: integer
          format: int32
      required:
        - results
    com.fourthwall.openapi.model.CollectionSlimV1:
      type: object
      properties:
        id:
          type: string
          example: col_b1EVARkUTcCTSfspQaXr1Q
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        name:
          type: string
          example: My collection
        slug:
          type: string
          example: my-collection
        description:
          type: string
          example: My collection description
        available:
          type: boolean
        state:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Archived
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Hidden
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Public
      required:
        - available
        - description
        - id
        - name
        - shopId
        - slug
        - state
    com.fourthwall.openapi.model.CollectionStateV1:
      description: Collection state
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
    com.fourthwall.openapi.model.CollectionStateV1.Archived:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
      description: Archived collection state
    com.fourthwall.openapi.model.CollectionStateV1.Hidden:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            available:
              type: boolean
      description: Hidden collection state
      required:
        - available
    com.fourthwall.openapi.model.CollectionStateV1.Public:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            available:
              type: boolean
      description: Public collection state
      required:
        - available
    com.fourthwall.openapi.model.CollectionV1:
      type: object
      properties:
        id:
          type: string
          example: col_b1EVARkUTcCTSfspQaXr1Q
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
        name:
          type: string
          example: My collection
        slug:
          type: string
          example: my-collection
        description:
          type: string
          example: My collection description
        available:
          type: boolean
        state:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Archived
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Hidden
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Public
        offerIds:
          type: array
          items:
            type: string
            format: uuid
      required:
        - available
        - description
        - id
        - name
        - offerIds
        - shopId
        - slug
        - state
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: >-
            https://auth.staging.fourthwall.com/auth/realms/Fourthwall/protocol/openid-connect/auth
          scopes:
            donation_read: donation_read
            order_read: order_read
            order_write: order_write
            fulfillment_write: fulfillment_write
            giveaway_read: giveaway_read
            giveaway_write: giveaway_write
            memberships_read: memberships_read
            promotions_write: promotions_write
            promotions_read: promotions_read
            offer_read: offer_read
            offer_write: offer_write
            shop_read: shop_read
            thankyou_read: thankyou_read
            webhook_read: webhook_read
            webhook_write: webhook_write
    basicAuth:
      type: http
      scheme: basic
    donation_read:
      type: oauth2
      description: OAuth2 authorization for donation_read scope
    order_read:
      type: oauth2
      description: OAuth2 authorization for order_read scope
    order_write:
      type: oauth2
      description: OAuth2 authorization for order_write scope
    fulfillment_write:
      type: oauth2
      description: OAuth2 authorization for fulfillment_write scope
    giveaway_read:
      type: oauth2
      description: OAuth2 authorization for giveaway_read scope
    giveaway_write:
      type: oauth2
      description: OAuth2 authorization for giveaway_write scope
    memberships_read:
      type: oauth2
      description: OAuth2 authorization for memberships_read scope
    promotions_write:
      type: oauth2
      description: OAuth2 authorization for promotions_write scope
    promotions_read:
      type: oauth2
      description: OAuth2 authorization for promotions_read scope
    offer_read:
      type: oauth2
      description: OAuth2 authorization for offer_read scope
    offer_write:
      type: oauth2
      description: OAuth2 authorization for offer_write scope
    shop_read:
      type: oauth2
      description: OAuth2 authorization for shop_read scope
    thankyou_read:
      type: oauth2
      description: OAuth2 authorization for thankyou_read scope
    webhook_read:
      type: oauth2
      description: OAuth2 authorization for webhook_read scope
    webhook_write:
      type: oauth2
      description: OAuth2 authorization for webhook_write scope
    shopApiKey:
      type: http
      scheme: basic
tags:
  - name: Donations
    description: >
      Endpoints for handling
      [donations](https://help.fourthwall.com/hc/en-us/articles/13331336000923-How-to-enable-donations-on-your-site).
  - name: Fulfillment
    description: |
      Fulfillment APIs that allow you to manually fulfill orders.
  - name: Gifting
    description: ''
  - name: Giveaway links
    description: ''
  - name: Mailing Lists
    description: >
      Access to your [mailing
      list](https://help.fourthwall.com/hc/en-us/articles/13331257853083-How-do-I-collect-emails-for-my-newsletter)
      via API.
  - name: Orders
    description: |
      Order API to fetch orders.
  - name: Platform Tokens
    description: >
      Endpoint to get access tokens. See
      [Authentication](/platform/start-building/authentication-apps) for clearer
      documentation.
  - name: Products (offers)
    description: >
      Product catalog management, including product listings, pricing,
      availability, and variant configurations for your shop.
  - name: Promotions
    description: |
      Manage promotions for your shop.
  - name: Shop
    description: |
      Get information about your shop.
  - name: Streaming
    description: >
      Set streaming status for your shop, which will be displayed on your
      storefront and enable giveaways (for Twitch).
  - name: Thank yous
    description: ''
  - name: Twitch gift purchases
    description: ''
  - name: Webhooks
    description: |
      Subscribe to webhooks to receive real-time updates about your shop.
  - name: 'BETA: Memberships'
    description: |
      Manage memberships for your shop.
