openapi: 3.1.0
info:
  title: Fourthwall APIs
  description: Service used for management of orders, carts, and payments.
  termsOfService: https://fourthwall.com/terms-of-service
  contact:
    name: Backend team
    url: https://fourthwall.com
    email: backend@fourthwall.com
  version: unspecified
externalDocs:
  description: OpenAPI documentation
  url: https://docs.fourthwall.com
servers:
  - url: https://storefront-api.fourthwall.com
    description: Production server
paths:
  /v1/carts:
    post:
      tags:
        - headless_carts
      summary: Create cart
      externalDocs:
        url: https://docs.fourthwall.com/api-reference/storefront/carts/create-cart
      operationId: create-cart
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.headless.endpoint.HeadlessCart.XRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.app.headless.model.CartV1'
        '400':
          description: >-
            Possible errors: `CART_DUPLICATE_VARIANT_IDS_ERROR`,
            `CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR`,
            `CART_INCOMPLETE_BUNDLE_ERROR`,
            `CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR`, `CART_OFFER_NOT_AVAILABLE`,
            `CART_OFFER_NOT_PURCHASABLE_ERROR`,
            `CART_PROMOTION_REQUIREMENTS_NOT_MET`, `CART_QUANTITY_TOO_HIGH`,
            `CHECKOUT_PROMOTION_ALREADY_USED_BY_CUSTOMER`,
            `CHECKOUT_PROMOTION_AVAILABLE_ONLY_FOR_SIGNED_CUSTOMERS`,
            `CHECKOUT_PROMOTION_FREE_SHIPPING_COUNTRY_NOT_SUPPORTED`,
            `CHECKOUT_PROMOTION_MAXIMUM_USES_LIMIT_EXCEEDED`,
            `CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TIER`,
            `CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TWITCH_TIER`,
            `CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_GIVEN_ITEMS`,
            `PROMOTION_ALREADY_USED_BY_CUSTOMER`,
            `PROMOTION_AVAILABLE_ONLY_FOR_SIGNED_CUSTOMERS`,
            `PROMOTION_FREE_SHIPPING_COUNTRY_NOT_SUPPORTED`,
            `PROMOTION_MAXIMUM_USES_LIMIT_EXCEEDED`,
            `PROMOTION_MISSING_REQUIRED_PRODUCTS`,
            `PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TIER`,
            `PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TWITCH_TIER`,
            `PROMOTION_NOT_ALLOWED_FOR_GIVEN_ITEMS`,
            `VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS`
          content:
            application/json:
              examples:
                cart-duplicate-variant-ids-error:
                  value:
                    code: CART_DUPLICATE_VARIANT_IDS_ERROR
                    variantIds: <set>
                cart-forbidden-members-only-offers-error:
                  value:
                    code: CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR
                    offerIds: <set>
                cart-incomplete-bundle-error:
                  value:
                    code: CART_INCOMPLETE_BUNDLE_ERROR
                    bundleId: <offerid>
                    details: <string>
                cart-item-not-found-for-shop-error:
                  value:
                    code: CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR
                    shopId: <shopid>
                    variantId: <offervariantid>
                cart-offer-not-available:
                  value:
                    code: CART_OFFER_NOT_AVAILABLE
                    variantId: <offervariantid>
                cart-offer-not-purchasable-error:
                  value:
                    code: CART_OFFER_NOT_PURCHASABLE_ERROR
                    variantId: <offervariantid>
                cart-promotion-requirements-not-met:
                  value:
                    code: CART_PROMOTION_REQUIREMENTS_NOT_MET
                    promotionCode: <string>
                    details: <string>
                cart-quantity-too-high:
                  value:
                    code: CART_QUANTITY_TOO_HIGH
                    variantId: <offervariantid>
                    quantity: <int>
                checkout-promotion-already-used-by-customer:
                  value:
                    code: CHECKOUT_PROMOTION_ALREADY_USED_BY_CUSTOMER
                    promotionId: <promotionid>
                    customerId: <string?>
                    normalizedEmailId: <string?>
                checkout-promotion-available-only-for-signed-customers:
                  value:
                    code: CHECKOUT_PROMOTION_AVAILABLE_ONLY_FOR_SIGNED_CUSTOMERS
                    promotionId: <promotionid>
                checkout-promotion-free-shipping-country-not-supported:
                  value:
                    code: CHECKOUT_PROMOTION_FREE_SHIPPING_COUNTRY_NOT_SUPPORTED
                    id: <promotionid>
                    country: <country>
                checkout-promotion-maximum-uses-limit-exceeded:
                  value:
                    code: CHECKOUT_PROMOTION_MAXIMUM_USES_LIMIT_EXCEEDED
                    id: <promotionid>
                checkout-promotion-not-allowed-for-customer-tier:
                  value:
                    code: CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TIER
                    customerTierId: <membershiptierid?>
                checkout-promotion-not-allowed-for-customer-twitch-tier:
                  value:
                    code: CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TWITCH_TIER
                    twitchTier: <string?>
                checkout-promotion-not-allowed-for-given-items:
                  value:
                    code: CHECKOUT_PROMOTION_NOT_ALLOWED_FOR_GIVEN_ITEMS
                promotion-already-used-by-customer:
                  value:
                    code: PROMOTION_ALREADY_USED_BY_CUSTOMER
                    promotionId: <promotionid>
                    customerId: <customeridentifier>
                promotion-available-only-for-signed-customers:
                  value:
                    code: PROMOTION_AVAILABLE_ONLY_FOR_SIGNED_CUSTOMERS
                    promotionId: <promotionid>
                promotion-free-shipping-country-not-supported:
                  value:
                    code: PROMOTION_FREE_SHIPPING_COUNTRY_NOT_SUPPORTED
                    id: <promotionid>
                    country: <country>
                promotion-maximum-uses-limit-exceeded:
                  value:
                    code: PROMOTION_MAXIMUM_USES_LIMIT_EXCEEDED
                    id: <promotionid>
                promotion-missing-required-products:
                  value:
                    code: PROMOTION_MISSING_REQUIRED_PRODUCTS
                promotion-not-allowed-for-customer-tier:
                  value:
                    code: PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TIER
                    customerTierId: <membershiptierid?>
                promotion-not-allowed-for-customer-twitch-tier:
                  value:
                    code: PROMOTION_NOT_ALLOWED_FOR_CUSTOMER_TWITCH_TIER
                    customerTwitchTier: <promotionrequirements.twitchtier?>
                    allowedTwitchTiers: <list>
                promotion-not-allowed-for-given-items:
                  value:
                    code: PROMOTION_NOT_ALLOWED_FOR_GIVEN_ITEMS
                variant-not-allowed-for-free-products:
                  value:
                    code: VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS
        '404':
          description: >-
            Possible errors: `CART_NOT_FOUND`, `CART_OFFER_NOT_FOUND`,
            `CHECKOUT_PROMOTION_CODE_DO_NOT_EXISTS`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`,
            `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                cart-not-found:
                  value:
                    code: CART_NOT_FOUND
                    cartId: <cartid>
                cart-offer-not-found:
                  value:
                    code: CART_OFFER_NOT_FOUND
                    variantId: <offervariantid?>
                    groupedId: <cartitemgroupedid?>
                checkout-promotion-code-do-not-exists:
                  value:
                    code: CHECKOUT_PROMOTION_CODE_DO_NOT_EXISTS
                    shopId: <shopid>
                    promotionCode: <string>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
                shop-team-member-shop-not-found-error:
                  value:
                    code: SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR
                    shopId: <shopid>
        '409':
          description: >-
            Possible errors: `CHECKOUT_PROMOTION_REQUIRE_MINIMUM_ORDER_VALUE`,
            `PROMOTION_REQUIRE_MINIMUM_ORDER_VALUE`
          content:
            application/json:
              examples:
                checkout-promotion-require-minimum-order-value:
                  value:
                    code: CHECKOUT_PROMOTION_REQUIRE_MINIMUM_ORDER_VALUE
                    minimumOrderValue: <money>
                promotion-require-minimum-order-value:
                  value:
                    code: PROMOTION_REQUIRE_MINIMUM_ORDER_VALUE
                    minimumOrderValue: <money>
  /v1/carts/{cartId}/remove:
    post:
      tags:
        - headless_carts
      summary: Remove from cart
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/carts/remove-from-cart
      operationId: remove-from-cart
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: cartId
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.headless.endpoint.HeadlessCart.XRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.app.headless.model.CartV1'
        '400':
          description: >-
            Possible errors: `CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR`,
            `CART_INCOMPLETE_BUNDLE_ERROR`,
            `CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR`, `CART_OFFER_NOT_AVAILABLE`,
            `CART_OFFER_NOT_PURCHASABLE_ERROR`, `CART_QUANTITY_TOO_HIGH`,
            `VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS`
          content:
            application/json:
              examples:
                cart-forbidden-members-only-offers-error:
                  value:
                    code: CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR
                    offerIds: <set>
                cart-incomplete-bundle-error:
                  value:
                    code: CART_INCOMPLETE_BUNDLE_ERROR
                    bundleId: <offerid>
                    details: <string>
                cart-item-not-found-for-shop-error:
                  value:
                    code: CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR
                    shopId: <shopid>
                    variantId: <offervariantid>
                cart-offer-not-available:
                  value:
                    code: CART_OFFER_NOT_AVAILABLE
                    variantId: <offervariantid>
                cart-offer-not-purchasable-error:
                  value:
                    code: CART_OFFER_NOT_PURCHASABLE_ERROR
                    variantId: <offervariantid>
                cart-quantity-too-high:
                  value:
                    code: CART_QUANTITY_TOO_HIGH
                    variantId: <offervariantid>
                    quantity: <int>
                variant-not-allowed-for-free-products:
                  value:
                    code: VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS
        '404':
          description: >-
            Possible errors: `CART_NOT_FOUND`, `CART_OFFER_NOT_FOUND`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`,
            `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                cart-not-found:
                  value:
                    code: CART_NOT_FOUND
                    cartId: <cartid>
                cart-offer-not-found:
                  value:
                    code: CART_OFFER_NOT_FOUND
                    variantId: <offervariantid?>
                    groupedId: <cartitemgroupedid?>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
                shop-team-member-shop-not-found-error:
                  value:
                    code: SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR
                    shopId: <shopid>
  /v1/carts/{cartId}/change:
    post:
      tags:
        - headless_carts
      summary: Change cart items quantity
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/carts/change-cart-quantity
      operationId: change-cart-quantity
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: cartId
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/com.fourthwall.app.headless.endpoint.HeadlessCart.XRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.app.headless.model.CartV1'
        '400':
          description: >-
            Possible errors: `CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR`,
            `CART_INCOMPLETE_BUNDLE_ERROR`,
            `CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR`, `CART_OFFER_NOT_AVAILABLE`,
            `CART_OFFER_NOT_PURCHASABLE_ERROR`, `CART_QUANTITY_TOO_HIGH`,
            `VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS`
          content:
            application/json:
              examples:
                cart-forbidden-members-only-offers-error:
                  value:
                    code: CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR
                    offerIds: <set>
                cart-incomplete-bundle-error:
                  value:
                    code: CART_INCOMPLETE_BUNDLE_ERROR
                    bundleId: <offerid>
                    details: <string>
                cart-item-not-found-for-shop-error:
                  value:
                    code: CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR
                    shopId: <shopid>
                    variantId: <offervariantid>
                cart-offer-not-available:
                  value:
                    code: CART_OFFER_NOT_AVAILABLE
                    variantId: <offervariantid>
                cart-offer-not-purchasable-error:
                  value:
                    code: CART_OFFER_NOT_PURCHASABLE_ERROR
                    variantId: <offervariantid>
                cart-quantity-too-high:
                  value:
                    code: CART_QUANTITY_TOO_HIGH
                    variantId: <offervariantid>
                    quantity: <int>
                variant-not-allowed-for-free-products:
                  value:
                    code: VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS
        '404':
          description: >-
            Possible errors: `CART_NOT_FOUND`, `CART_OFFER_NOT_FOUND`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`,
            `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                cart-not-found:
                  value:
                    code: CART_NOT_FOUND
                    cartId: <cartid>
                cart-offer-not-found:
                  value:
                    code: CART_OFFER_NOT_FOUND
                    variantId: <offervariantid?>
                    groupedId: <cartitemgroupedid?>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
                shop-team-member-shop-not-found-error:
                  value:
                    code: SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR
                    shopId: <shopid>
  /v1/carts/{cartId}/add:
    post:
      tags:
        - headless_carts
      summary: Add to cart
      externalDocs:
        url: https://docs.fourthwall.com/api-reference/storefront/carts/add-to-cart
      operationId: add-to-cart
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: cartId
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/com.fourthwall.cart.usecase.CartAdd.Request'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.app.headless.model.CartV1'
        '400':
          description: >-
            Possible errors: `CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR`,
            `CART_INCOMPLETE_BUNDLE_ERROR`,
            `CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR`, `CART_OFFER_NOT_AVAILABLE`,
            `CART_OFFER_NOT_PURCHASABLE_ERROR`, `CART_QUANTITY_TOO_HIGH`,
            `VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS`
          content:
            application/json:
              examples:
                cart-forbidden-members-only-offers-error:
                  value:
                    code: CART_FORBIDDEN_MEMBERS_ONLY_OFFERS_ERROR
                    offerIds: <set>
                cart-incomplete-bundle-error:
                  value:
                    code: CART_INCOMPLETE_BUNDLE_ERROR
                    bundleId: <offerid>
                    details: <string>
                cart-item-not-found-for-shop-error:
                  value:
                    code: CART_ITEM_NOT_FOUND_FOR_SHOP_ERROR
                    shopId: <shopid>
                    variantId: <offervariantid>
                cart-offer-not-available:
                  value:
                    code: CART_OFFER_NOT_AVAILABLE
                    variantId: <offervariantid>
                cart-offer-not-purchasable-error:
                  value:
                    code: CART_OFFER_NOT_PURCHASABLE_ERROR
                    variantId: <offervariantid>
                cart-quantity-too-high:
                  value:
                    code: CART_QUANTITY_TOO_HIGH
                    variantId: <offervariantid>
                    quantity: <int>
                variant-not-allowed-for-free-products:
                  value:
                    code: VARIANT_NOT_ALLOWED_FOR_FREE_PRODUCTS
        '404':
          description: >-
            Possible errors: `CART_NOT_FOUND`, `CART_OFFER_NOT_FOUND`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`,
            `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                cart-not-found:
                  value:
                    code: CART_NOT_FOUND
                    cartId: <cartid>
                cart-offer-not-found:
                  value:
                    code: CART_OFFER_NOT_FOUND
                    variantId: <offervariantid?>
                    groupedId: <cartitemgroupedid?>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
                shop-team-member-shop-not-found-error:
                  value:
                    code: SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR
                    shopId: <shopid>
  /v1/shop:
    get:
      tags:
        - headless_shop
      summary: Get shop information
      externalDocs:
        url: https://docs.fourthwall.com/api-reference/storefront/shop/get-shop
      operationId: get-shop
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ShopPublicV1
        '404':
          description: 'Possible errors: `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`'
          content:
            application/json:
              examples:
                shop-team-member-shop-not-found-error:
                  value:
                    code: SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR
                    shopId: <shopid>
  /v1/products/{slug}:
    get:
      tags:
        - headless_products
      summary: Get a product by slug
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/products/get-product
      operationId: get-product
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: slug
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.ProductV1
        '404':
          description: >-
            Possible errors: `OFFER_SLUG_NOT_FOUND_ERROR`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                offer-slug-not-found-error:
                  value:
                    code: OFFER_SLUG_NOT_FOUND_ERROR
                    shopId: <shopid>
                    offerSlug: <slug>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
  /v1/collections:
    get:
      tags:
        - headless_collections
      summary: Get all collections
      description: Returns all collections
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/collections/list-collections
      operationId: list-collections
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.HeadlessPageResponseCom.fourthwall.app.headless.model.CollectionPublicV1
  /v1/collections/{slug}:
    get:
      tags:
        - headless_collections
      summary: Get a collection
      description: Returns a collection
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/collections/get-collection
      operationId: get-collection
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: slug
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.CollectionPublicV1
        '404':
          description: 'Possible errors: `COLLECTION_NOT_FOUND_BY_SHOP_ID_AND_SHOP_ERROR`'
          content:
            application/json:
              examples:
                collection-not-found-by-shop-id-and-shop-error:
                  value:
                    code: COLLECTION_NOT_FOUND_BY_SHOP_ID_AND_SHOP_ERROR
                    shopId: <shopid>
                    slug: <slug>
  /v1/collections/{slug}/products:
    get:
      tags:
        - headless_collections
      summary: Get products (offers) in a collection
      description: Returns all products in the collection
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/storefront/collections/get-collection-products
      operationId: get-collection-products
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: slug
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
        - name: page
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: size
          in: query
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/com.fourthwall.app.headless.model.HeadlessPageResponseCom.fourthwall.app.headless.model.ProductV1
        '404':
          description: >-
            Possible errors: `COLLECTION_NOT_FOUND_BY_SHOP_ID_AND_SHOP_ERROR`,
            `OFFER_VARIANT_NOT_FOUND_ERROR`
          content:
            application/json:
              examples:
                collection-not-found-by-shop-id-and-shop-error:
                  value:
                    code: COLLECTION_NOT_FOUND_BY_SHOP_ID_AND_SHOP_ERROR
                    shopId: <shopid>
                    slug: <slug>
                offer-variant-not-found-error:
                  value:
                    code: OFFER_VARIANT_NOT_FOUND_ERROR
                    offerVariantId: <offervariantid>
  /v1/carts/{cartId}:
    get:
      tags:
        - headless_carts
      summary: Get cart by id
      externalDocs:
        url: https://docs.fourthwall.com/api-reference/storefront/carts/get-cart
      operationId: get-cart
      parameters:
        - name: storefront_token
          in: query
          required: true
          schema:
            type: string
            example: ptkn_xxxxxxxxxxxxxxxxxx
        - name: cartId
          in: path
          required: true
          schema:
            type: string
        - name: currency
          in: query
          required: false
          schema:
            type: string
            enum:
              - USD
              - EUR
              - CAD
              - GBP
              - AUD
              - NZD
              - SEK
              - NOK
              - DKK
              - PLN
              - INR
              - JPY
              - MYR
              - SGD
              - MXN
              - BRL
              - CHF
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/com.fourthwall.app.headless.model.CartV1'
        '404':
          description: 'Possible errors: `CART_NOT_FOUND`'
          content:
            application/json:
              examples:
                cart-not-found:
                  value:
                    code: CART_NOT_FOUND
                    cartId: <cartid>
components:
  schemas:
    com.fourthwall.app.headless.endpoint.HeadlessCart.RequestItem:
      type: object
      properties:
        variantId:
          type: string
          format: uuid
          example: 000009c2-0c75-0024-0000-09c20c750024
        quantity:
          type: integer
          format: int32
          example: 1
          maximum: 1000
          minimum: 0
      required:
        - quantity
        - variantId
      title: Request Item
    com.fourthwall.app.headless.endpoint.HeadlessCart.XRequest:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.endpoint.HeadlessCart.RequestItem
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Custom metadata key-value pairs. Max 10 keys, keys must be
            alphanumeric with underscores, max 256 chars per key, max 512 bytes
            per value, max 2KB total.
          example:
            asset_id: abc123
            campaign: summer_2026
      required:
        - items
      title: X Request
    Money:
      type: object
      properties:
        value:
          type: number
          example: 10
          minimum: 0
        currency:
          type: string
          example: USD
      required:
        - currency
        - value
      title: Money
    com.fourthwall.app.headless.model.CartItemGroupedByV1:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
        - type
      title: Cart Item Grouped By
    com.fourthwall.app.headless.model.CartItemGroupedByV1.Bundle:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.CartItemGroupedByV1
        - type: object
          properties:
            bundleId:
              type: string
            groupedId:
              type: string
      required:
        - bundleId
        - groupedId
      title: Bundle
    com.fourthwall.app.headless.model.CartProductVariantV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        sku:
          type: string
        unitPrice:
          $ref: '#/components/schemas/Money'
        compareAtPrice:
          $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'
        product:
          $ref: '#/components/schemas/com.fourthwall.app.headless.model.ProductStubV1'
      required:
        - attributes
        - dimensions
        - id
        - images
        - name
        - product
        - sku
        - stock
        - unitPrice
        - weight
      title: Cart Product Variant
    com.fourthwall.app.headless.model.CartV1:
      type: object
      properties:
        id:
          type: string
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.CartV1.CartItemV1
        metadata:
          type: object
          additionalProperties:
            type: string
      required:
        - id
        - items
      title: Cart
    com.fourthwall.app.headless.model.CartV1.CartItemV1:
      type: object
      properties:
        variant:
          $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.CartProductVariantV1
        quantity:
          type: integer
          format: int32
        groupedBy:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.app.headless.model.CartItemGroupedByV1.Bundle
      required:
        - quantity
        - variant
      title: Cart Item
    com.fourthwall.app.headless.model.ProductStubV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
      required:
        - id
        - name
        - slug
      title: Product Stub
    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
      title: Image
    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
      title: Attributes
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Color:
      type: object
      properties:
        name:
          type: string
          example: Black
        swatch:
          type: string
          example: '#000000'
      required:
        - name
        - swatch
      title: Color
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes.Size:
      type: object
      properties:
        name:
          type: string
          example: L
      required:
        - name
      title: Size
    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
      title: Dimensions
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock:
      discriminator:
        propertyName: type
        mapping:
          UNLIMITED: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited
          LIMITED: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited
      properties:
        type:
          type: string
      required:
        - type
      title: Stock
    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
        - type: object
          properties:
            type:
              type: string
              const: LIMITED
      required:
        - inStock
      title: Limited
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
        - type: object
          properties:
            type:
              type: string
              const: UNLIMITED
      title: Unlimited
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight:
      type: object
      properties:
        value:
          type: number
          example: 1
        unit:
          type: string
          example: kg
      required:
        - unit
        - value
      title: Weight
    com.fourthwall.cart.model.CartItemGroupBy:
      discriminator:
        propertyName: '@type'
        mapping:
          BUNDLE: >-
            #/components/schemas/com.fourthwall.cart.model.CartItemGroupBy.Bundle
      title: Cart Item Group By
    com.fourthwall.cart.model.CartItemGroupBy.Bundle:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.cart.model.CartItemGroupBy'
        - type: object
          properties:
            bundleId:
              type: string
              format: uuid
        - type: object
          properties:
            '@type':
              type: string
              const: BUNDLE
      required:
        - bundleId
      title: Bundle
    com.fourthwall.cart.usecase.CartAdd.Request:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.cart.usecase.CartAdd.RequestItem
      required:
        - items
      title: Request
    com.fourthwall.cart.usecase.CartAdd.RequestItem:
      type: object
      properties:
        variantId:
          type: string
          format: uuid
        quantity:
          type: integer
          format: int32
          maximum: 10000
          minimum: 1
        recStrategy:
          type: string
        groupBy:
          oneOf:
            - $ref: >-
                #/components/schemas/com.fourthwall.cart.model.CartItemGroupBy.Bundle
      required:
        - quantity
        - variantId
      title: Request Item
    com.fourthwall.app.headless.model.ShopPublicV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        domain:
          type: string
        publicDomain:
          type: string
      required:
        - domain
        - id
        - name
        - publicDomain
      title: Shop Public
    com.fourthwall.app.headless.model.ProductAdditionalInformationV1:
      type: object
      properties:
        type:
          type: string
          enum:
            - MORE_DETAILS
            - SIZE_AND_FIT
            - GUARANTEE_AND_RETURNS
        title:
          type: string
        bodyHtml:
          type: string
      required:
        - bodyHtml
        - title
        - type
      title: Product Additional Information
    com.fourthwall.app.headless.model.ProductSizeGuideV1:
      type: object
      properties:
        previewUrl:
          type: string
        fileUrl:
          type: string
        description:
          type: string
        fitGuideDescription:
          type: string
        fitGuideUrls:
          type: array
          items:
            type: string
      required:
        - fitGuideUrls
      title: Product Size Guide
    com.fourthwall.app.headless.model.ProductV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        description:
          type: string
        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.Private
            - $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
        images:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.Image'
        variants:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.ProductVariantV1
        additionalInformation:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.ProductAdditionalInformationV1
        sizeGuide:
          $ref: >-
            #/components/schemas/com.fourthwall.app.headless.model.ProductSizeGuideV1
        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
      title: Product
    com.fourthwall.app.headless.model.ProductVariantV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        sku:
          type: string
        unitPrice:
          $ref: '#/components/schemas/Money'
        compareAtPrice:
          $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'
      required:
        - attributes
        - dimensions
        - id
        - images
        - name
        - sku
        - stock
        - unitPrice
        - weight
      title: Product Variant
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1:
      discriminator:
        propertyName: type
        mapping:
          PUBLIC: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
          HIDDEN: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
          PRIVATE: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private
          ARCHIVED: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
      properties:
        type:
          type: string
      required:
        - type
      title: Offer Access
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: ARCHIVED
      title: Archived
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: HIDDEN
      title: Hidden
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Private:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: PRIVATE
      title: Private
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        - type: object
          properties:
            type:
              type: string
              const: PUBLIC
      title: Public
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1:
      discriminator:
        propertyName: type
        mapping:
          AVAILABLE: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
          SOLD_OUT: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
      properties:
        type:
          type: string
      required:
        - type
      title: Offer State
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
        - type: object
          properties:
            type:
              type: string
              const: AVAILABLE
      title: Available
    com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
        - type: object
          properties:
            type:
              type: string
              const: SOLD_OUT
      title: Sold Out
    com.fourthwall.app.headless.model.CollectionPublicV1:
      type: object
      properties:
        id:
          type: string
          example: col_b1EVARkUTcCTSfspQaXr1Q
        name:
          type: string
          example: My collection
        slug:
          type: string
          example: my-collection
        description:
          type: string
          example: My collection description
      required:
        - description
        - id
        - name
        - slug
      title: Collection Public
    com.fourthwall.app.headless.model.HeadlessPageResponseCom.fourthwall.app.headless.model.CollectionPublicV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.app.headless.model.CollectionPublicV1
        paging:
          $ref: '#/components/schemas/com.fourthwall.support.paging.PageResult'
      required:
        - results
      title: Collection Public
    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
      title: Page Result
    com.fourthwall.app.headless.model.HeadlessPageResponseCom.fourthwall.app.headless.model.ProductV1:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.app.headless.model.ProductV1'
        paging:
          $ref: '#/components/schemas/com.fourthwall.support.paging.PageResult'
      required:
        - results
      title: Product
    com.fourthwall.openapi.model.OrderV1:
      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:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
        trackingParams:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.TrackingParams
        metadata:
          type: object
          additionalProperties:
            type: string
            description: >-
              Custom metadata passed during cart creation. Null for orders
              without metadata.
          description: >-
            Custom metadata passed during cart creation. Null for orders without
            metadata.
        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
      title: Order
    com.fourthwall.openapi.model.Address:
      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'
      title: Address
    com.fourthwall.openapi.model.OfferAbstractV1.OfferOrderV1:
      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
      title: Offer Order
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantWithQuantityV1:
      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
      title: Offer Variant With Quantity
    com.fourthwall.openapi.model.OrderV1.Billing:
      properties:
        address:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Address'
      title: Billing
    com.fourthwall.openapi.model.OrderV1.GiftCard:
      properties:
        code:
          type: string
        amountUsed:
          $ref: '#/components/schemas/Money'
      title: Gift Card
    com.fourthwall.openapi.model.OrderV1.OrderAmounts:
      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'
        giftCards:
          type: array
          items:
            $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.GiftCard'
        total:
          $ref: '#/components/schemas/Money'
      title: Order Amounts
    com.fourthwall.openapi.model.OrderV1.Shipping:
      properties:
        address:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.Address'
      title: Shipping
    com.fourthwall.openapi.model.OrderV1.Source:
      discriminator:
        propertyName: type
        mapping:
          ORDER: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.Order
          SAMPLES_ORDER: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.SamplesOrder
          TWITCH_GIFT_REDEMPTION: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.TwitchGiftRedemption
          GIVEAWAY_LINKS: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.GiveawayLinks
      properties:
        type:
          type: string
      required:
        - type
      title: Source
    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
        - type: object
          properties:
            type:
              type: string
              const: GIVEAWAY_LINKS
      title: Giveaway Links
    com.fourthwall.openapi.model.OrderV1.Source.Order:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
        - type: object
          properties:
            type:
              type: string
              const: ORDER
      title: Order
    com.fourthwall.openapi.model.OrderV1.Source.SamplesOrder:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source'
        - type: object
          properties:
            type:
              type: string
              const: SAMPLES_ORDER
      title: Samples Order
    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
        - type: object
          properties:
            type:
              type: string
              const: TWITCH_GIFT_REDEMPTION
      title: Twitch Gift Redemption
    com.fourthwall.openapi.model.OrderV1.TrackingParams:
      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
      title: Tracking Params
    com.fourthwall.support.money.Money:
      properties:
        currency:
          type: string
          enum:
            - USD
            - EUR
            - CAD
            - GBP
            - AUD
            - NZD
            - SEK
            - NOK
            - DKK
            - PLN
            - INR
            - JPY
            - MYR
            - SGD
            - MXN
            - BRL
            - CHF
        zero:
          type: boolean
        negative:
          type: boolean
        moreThanZero:
          type: boolean
        lessThanZero:
          type: boolean
        zeroOrLess:
          type: boolean
        currencyScale:
          type: integer
          format: int32
      title: Money
    com.fourthwall.openapi.model.OrderUpdatedV1:
      properties:
        order:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1'
        update:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update
      title: Order Updated
    com.fourthwall.openapi.model.OrderUpdatedV1.Update:
      discriminator:
        propertyName: type
        mapping:
          STATUS: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update.Status
          SHIPPING.ADDRESS: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update.ShippingAddress
          EMAIL: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update.Email
      properties:
        type:
          type: string
      required:
        - type
      title: Update
    com.fourthwall.openapi.model.OrderUpdatedV1.Update.Email:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update
        - type: object
          properties:
            type:
              type: string
              const: EMAIL
      title: Email
    com.fourthwall.openapi.model.OrderUpdatedV1.Update.ShippingAddress:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update
        - type: object
          properties:
            type:
              type: string
              const: SHIPPING.ADDRESS
      title: Shipping Address
    com.fourthwall.openapi.model.OrderUpdatedV1.Update.Status:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1.Update
        - type: object
          properties:
            type:
              type: string
              const: STATUS
      title: Status
    com.fourthwall.openapi.model.GiftPurchaseV1:
      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:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        createdAt:
          type: string
          format: date-time
      title: Gift Purchase
    com.fourthwall.openapi.model.GiftPurchaseV1.Amounts:
      properties:
        subtotal:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        tax:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        total:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        profit:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        prepaidShipping:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
      title: Amounts
    com.fourthwall.openapi.model.GiftPurchaseV1.Gift:
      discriminator:
        propertyName: status
        mapping:
          REDEEMED: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Redeemed
          AVAILABLE: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Available
          CANCELLED: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Cancelled
          CHANGED_TO_PROMOTION: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.ChangedToPromotion
      properties:
        status:
          type: string
      required:
        - status
      title: Gift
    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
        - type: object
          properties:
            status:
              type: string
              const: AVAILABLE
      title: Available
    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
        - type: object
          properties:
            status:
              type: string
              const: CANCELLED
      title: Cancelled
    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
        - type: object
          properties:
            status:
              type: string
              const: CHANGED_TO_PROMOTION
      title: Changed To Promotion
    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
        - type: object
          properties:
            status:
              type: string
              const: REDEEMED
      title: Redeemed
    com.fourthwall.openapi.model.GiftPurchaseV1.Winner:
      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
      title: Winner
    com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1:
      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'
      title: Offer Gift Purchase
    com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1:
      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
        type:
          type: string
          enum:
            - STANDARD
            - GIFT_CARD
            - UNKNOWN
        state:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1
        access:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1
        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
        digitalFiles:
          type: array
          description: >-
            Digital files attached to this offer. Only present for digital
            offers.
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.offer.DigitalFileV1
        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
      title: Offer Full
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAdditionalInformationV1:
      properties:
        sizeAndFit:
          type: string
        guaranteeAndReturns:
          type: string
        moreDetails:
          type: string
      title: Offer Additional Information
    com.fourthwall.openapi.model.OfferAbstractV1.OfferSizeGuideV1:
      properties:
        previewUrl:
          type: string
        fileUrl:
          type: string
        description:
          type: string
        fitGuideDescription:
          type: string
        fitGuideUrls:
          type: array
          items:
            type: string
      title: Offer Size Guide
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantV1:
      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/com.fourthwall.support.money.Money'
        compareAtPrice:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        unitCost:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        attributes:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes
        creatorDeclaredCost:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        stock:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock
        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'
      title: Offer Variant
    com.fourthwall.openapi.model.offer.DigitalFileV1:
      description: A digital file attached to an offer
      properties:
        uri:
          type: string
          description: The file URI
          example: https://storage.googleapis.com/bucket/shop/offer/file
        name:
          type: string
          description: The file name
          example: my-ebook.pdf
        fileSize:
          type: string
          description: Human-readable file size
          example: 15.4 MB
        mediaType:
          type: string
          description: MIME type of the file
          example: application/pdf
      title: Digital File
    com.fourthwall.openapi.model.OfferUpdatedV1:
      properties:
        product:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
      title: Offer Updated
    com.fourthwall.openapi.model.DonationV1:
      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.GiftPurchaseV1.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
      title: Donation
    com.fourthwall.openapi.model.DonationV1.Amounts:
      properties:
        total:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
      title: Amounts
    com.fourthwall.openapi.model.MembershipSupporterV1:
      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:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
      title: Membership Supporter
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription:
      discriminator:
        propertyName: type
        mapping:
          ACTIVE: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Active
          CANCELLED: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Cancelled
          SUSPENDED: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Suspended
          NONE: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.None
      properties:
        type:
          type: string
      required:
        - type
      title: Subscription
    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.MembershipTierVariantV1
        - type: object
          properties:
            type:
              type: string
              const: ACTIVE
      title: Active
    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.MembershipTierVariantV1
        - type: object
          properties:
            type:
              type: string
              const: CANCELLED
      title: Cancelled
    com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.None:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription
        - type: object
          properties:
            type:
              type: string
              const: NONE
      title: None
    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.MembershipTierVariantV1
        - type: object
          properties:
            type:
              type: string
              const: SUSPENDED
      title: Suspended
    com.fourthwall.openapi.model.MembershipTierVariantV1:
      properties:
        id:
          type: string
        tierId:
          type: string
        interval:
          type: string
          enum:
            - ANNUAL
            - MONTHLY
        amount:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        offerId:
          type: string
      title: Membership Tier Variant
    com.fourthwall.openapi.model.NewsletterSubscribedV1:
      properties:
        email:
          type: string
      title: Newsletter Subscribed
    com.fourthwall.openapi.model.ThankYouV1:
      properties:
        id:
          type: string
          example: ty_EdJvIXu3SEiXe_QkPavHSA
        mediaUrl:
          type: string
          example: https://fourthwall.com/thankyou/ty_EdJvIXu3SEiXe_QkPavHSA
        contribution:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution
      title: Thank You
    com.fourthwall.openapi.model.ThankYouContribution:
      discriminator:
        propertyName: type
        mapping:
          ORDER: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Order
          DONATION: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Donation
          GIFT_PURCHASE: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.GiftPurchase
          MEMBERSHIP_PAYMENT_CHARGE: >-
            #/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Membership
      properties:
        type:
          type: string
      required:
        - type
      title: Thank You Contribution
    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
        - type: object
          properties:
            type:
              type: string
              const: DONATION
      title: Donation
    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
        - type: object
          properties:
            type:
              type: string
              const: GIFT_PURCHASE
      title: Gift Purchase
    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
        - type: object
          properties:
            type:
              type: string
              const: MEMBERSHIP_PAYMENT_CHARGE
      title: Membership
    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
        - type: object
          properties:
            type:
              type: string
              const: ORDER
      title: Order
    com.fourthwall.openapi.model.ThankYouContribution.Supporter:
      properties:
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
      title: Supporter
    com.fourthwall.openapi.model.GiftDraftV1:
      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.DonationV1.Amounts'
        email:
          type: string
          example: supporter@fourthwall.com
        username:
          type: string
          example: Johnny123
        message:
          type: string
          example: Sample message
        gifts:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        createdAt:
          type: string
          format: date-time
        durationSeconds:
          type: integer
          format: int64
      title: Gift Draft
    com.fourthwall.openapi.model.GiftDraftV1.Amounts:
      properties:
        subtotal:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
        total:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
      title: Amounts
    com.fourthwall.openapi.model.GiftDraftV1.Gift:
      discriminator:
        propertyName: status
        mapping:
          REDEEMED: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Redeemed
          AVAILABLE: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Available
          CANCELLED: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Cancelled
          CHANGED_TO_PROMOTION: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToPromotion
          CHANGED_TO_GIFT_CARD: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToGiftCard
      properties:
        id:
          type: string
        status:
          type: string
      required:
        - status
      title: Gift
    com.fourthwall.openapi.model.GiftDraftV1.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
        - type: object
          properties:
            status:
              type: string
              const: AVAILABLE
      title: Available
    com.fourthwall.openapi.model.GiftDraftV1.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
        - type: object
          properties:
            status:
              type: string
              const: CANCELLED
      title: Cancelled
    com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToGiftCard:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift
        - type: object
          properties:
            id:
              type: string
              example: gft_EdJvIXu3SEiXe_QkPavHSA
            giftCardId:
              type: string
              example: gcrd_EdJvIXu3SEiXe_QkPavHSA
            winner:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Winner
        - type: object
          properties:
            status:
              type: string
              const: CHANGED_TO_GIFT_CARD
      title: Changed To Gift Card
    com.fourthwall.openapi.model.GiftDraftV1.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
        - type: object
          properties:
            status:
              type: string
              const: CHANGED_TO_PROMOTION
      title: Changed To Promotion
    com.fourthwall.openapi.model.GiftDraftV1.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
        - type: object
          properties:
            status:
              type: string
              const: REDEEMED
      title: Redeemed
    com.fourthwall.openapi.model.GiftDraftV1.Winner:
      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
          format: uri
      title: Winner
    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
      title: Promotion
    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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
            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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
            type:
              type: string
              const: SHOP_AUTO_APPLYING
      title: Auto Applying Shop Promotion
    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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1
            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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
            tiers:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1
            type:
              type: string
              const: MEMBERSHIPS_MULTI
      title: Multi Memberships Promotion
    com.fourthwall.openapi.model.promotions.MultiPromoSubCodeV1:
      properties:
        id:
          type: string
        code:
          type: string
        usageCount:
          type: integer
          format: int32
        status:
          type: string
          enum:
            - Live
            - Ended
            - Archived
            - AllUsed
      title: Multi Promo Sub Code
    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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
            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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
            type:
              type: string
              const: SHOP_MULTI
      title: Multi Shop Promotion
    com.fourthwall.openapi.model.promotions.PromotionLimitsV1:
      properties:
        maximumUsesNumber:
          type: integer
          format: int32
        oneUsePerCustomer:
          type: boolean
      title: Promotion Limits
    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
      title: Promotion Memberships Discount Type
    com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1
        - type: object
          properties:
            percentage:
              type: number
        - type: object
          properties:
            type:
              type: string
              const: MEMBERSHIPS_PERCENTAGE
      title: Percentage
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1:
      discriminator:
        propertyName: type
        mapping:
          ALL: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers
          MONTHLY: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly
          ANNUAL: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly
      properties:
        type:
          type: string
      required:
        - type
      title: Promotion Memberships Subscription Type Applies To
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
        - type: object
          properties:
            type:
              type: string
              const: ALL
      title: All Members
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
        - type: object
          properties:
            type:
              type: string
              const: ANNUAL
      title: Annual Members Only
    com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
        - type: object
          properties:
            type:
              type: string
              const: MONTHLY
      title: Monthly Members Only
    com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1:
      discriminator:
        propertyName: type
        mapping:
          ALL: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers
          SELECTED: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers
      properties:
        type:
          type: string
      required:
        - type
      title: Promotion Memberships Tiers Applies To
    com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1
        - type: object
          properties:
            type:
              type: string
              const: ALL
      title: All Tiers
    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
        - type: object
          properties:
            type:
              type: string
              const: SELECTED
      title: Selected Tiers
    com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships:
      properties:
        newMembersOnly:
          type: boolean
      title: Memberships
    com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop:
      properties:
        minimumOrderValue:
          $ref: '#/components/schemas/com.fourthwall.support.money.Money'
      title: Shop
    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
          ENTIRE_ORDER_WITH_EXCLUDED_PRODUCTS: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrderWithExcludedProducts
      properties:
        type:
          type: string
      required:
        - type
      title: Promotion Shop Applies To
    com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
        - type: object
          properties:
            type:
              type: string
              const: ENTIRE_ORDER
      title: Entire Order
    com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrderWithExcludedProducts:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
        - type: object
          properties:
            excludedProducts:
              type: array
              items:
                type: string
        - type: object
          properties:
            type:
              type: string
              const: ENTIRE_ORDER_WITH_EXCLUDED_PRODUCTS
      title: Entire Order With Excluded Products
    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
            oncePerOrder:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: SELECTED_PRODUCTS
      title: Selected 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
      title: Promotion Shop Discount 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/com.fourthwall.support.money.Money'
            freeShipping:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: FLAT_RATE
      title: Fixed Amount
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            freeProductsType:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type
            freeShipping:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: FREE_PRODUCTS
      title: Free Products
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.AutoAddedFreeProduct:
      properties:
        variantId:
          type: string
        quantity:
          type: integer
          format: int32
      title: Auto Added Free Product
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.ManuallyAddedFreeProduct:
      properties:
        availableVariantIds:
          type: array
          items:
            type: string
        quantity:
          type: integer
          format: int32
      title: Manually Added Free Product
    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
      title: 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
        - type: object
          properties:
            type:
              type: string
              const: AUTO_ADDED
      title: Auto Added
    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
        - type: object
          properties:
            type:
              type: string
              const: MANUALLY_ADDED
      title: Manually Added
    com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping:
      allOf:
        - $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
        - type: object
          properties:
            lowestOnly:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: FREE_SHIPPING
      title: Free Shipping
    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
        - type: object
          properties:
            type:
              type: string
              const: PERCENTAGE
      title: Percentage
    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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1
            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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1
            tiers:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1
            type:
              type: string
              const: MEMBERSHIPS_SINGLE
      title: Single Memberships Promotion
    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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1
            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:
              $ref: >-
                #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1
            type:
              type: string
              const: SHOP_SINGLE
      title: Single Shop Promotion
    com.fourthwall.openapi.model.PlatformAppDisconnectedV1:
      properties:
        appId:
          type: string
          example: apps.test_app
        shopId:
          type: string
          example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
      title: Platform App Disconnected
    com.fourthwall.openapi.model.CollectionV1:
      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:
          $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        offerIds:
          type: array
          items:
            type: string
      title: Collection
    com.fourthwall.openapi.model.CollectionStateV1:
      description: Collection state
      discriminator:
        propertyName: type
        mapping:
          PUBLIC: >-
            #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Public
          HIDDEN: >-
            #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Hidden
          PRIVATE: >-
            #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Private
          ARCHIVED: >-
            #/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Archived
      properties:
        type:
          type: string
      required:
        - type
      title: Collection State
    com.fourthwall.openapi.model.CollectionStateV1.Archived:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            type:
              type: string
              const: ARCHIVED
      description: Archived collection state
      title: Archived
    com.fourthwall.openapi.model.CollectionStateV1.Hidden:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            available:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: HIDDEN
      description: Hidden collection state
      title: Hidden
    com.fourthwall.openapi.model.CollectionStateV1.Private:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            available:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: PRIVATE
      description: Private collection state
      title: Private
    com.fourthwall.openapi.model.CollectionStateV1.Public:
      allOf:
        - $ref: '#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1'
        - type: object
          properties:
            available:
              type: boolean
        - type: object
          properties:
            type:
              type: string
              const: PUBLIC
      description: Public collection state
      title: Public
    com.fourthwall.openapi.model.CartAbandonedV1:
      properties:
        cartId:
          type: string
        shopId:
          type: string
        email:
          type: string
        marketingConsent:
          type: boolean
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.CartAbandonedV1.CartItem
        cartOrigin:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: string
        cartCreatedAt:
          type: string
          format: date-time
        cartUpdatedAt:
          type: string
          format: date-time
        checkout:
          $ref: >-
            #/components/schemas/com.fourthwall.openapi.model.CartAbandonedV1.CheckoutContext
      title: Cart Abandoned
    com.fourthwall.openapi.model.CartAbandonedV1.CartItem:
      properties:
        offerVariantId:
          type: string
        quantity:
          type: integer
          format: int32
      title: Cart Item
    com.fourthwall.openapi.model.CartAbandonedV1.CheckoutContext:
      properties:
        checkoutId:
          type: string
        status:
          type: string
        currentStep:
          type: string
        checkoutCreatedAt:
          type: string
          format: date-time
        checkoutUpdatedAt:
          type: string
          format: date-time
      title: Checkout Context
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
webhooks:
  order.placed:
    post:
      tags:
        - Order Events
      summary: Order Placed
      description: Fired when a new order is successfully placed and paid.
      operationId: webhook-order-placed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: ORDER_PLACED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: '#/components/schemas/com.fourthwall.openapi.model.OrderV1'
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  order.updated:
    post:
      tags:
        - Order Events
      summary: Order Updated
      description: Fired when an order's status, shipping address, or email is updated.
      operationId: webhook-order-updated
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: ORDER_UPDATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OrderUpdatedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  gift.purchase:
    post:
      tags:
        - Order Events
      summary: Gift Purchase
      description: Fired when a gift card is purchased.
      operationId: webhook-gift-purchase
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: GIFT_PURCHASE
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  product.created:
    post:
      tags:
        - Product Events
      summary: Product Created
      description: Fired when a new product is created.
      operationId: webhook-product-created
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PRODUCT_CREATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  product.updated:
    post:
      tags:
        - Product Events
      summary: Product Updated
      description: Fired when a product is updated.
      operationId: webhook-product-updated
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PRODUCT_UPDATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.OfferUpdatedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  donation:
    post:
      tags:
        - Order Events
      summary: Donation
      description: Fired when a new donation is received.
      operationId: webhook-donation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: DONATION
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: '#/components/schemas/com.fourthwall.openapi.model.DonationV1'
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  subscription.purchased:
    post:
      tags:
        - Membership Events
      summary: Subscription Purchased
      description: Fired when a new membership subscription is purchased.
      operationId: webhook-subscription-purchased
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: SUBSCRIPTION_PURCHASED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  subscription.expired:
    post:
      tags:
        - Membership Events
      summary: Subscription Expired
      description: Fired when a membership subscription expires.
      operationId: webhook-subscription-expired
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: SUBSCRIPTION_EXPIRED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  subscription.changed:
    post:
      tags:
        - Membership Events
      summary: Subscription Changed
      description: Fired when a membership subscription is changed (e.g., tier change).
      operationId: webhook-subscription-changed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: SUBSCRIPTION_CHANGED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  newsletter.subscribed:
    post:
      tags:
        - Newsletter Events
      summary: Newsletter Subscribed
      description: Fired when someone subscribes to the newsletter.
      operationId: webhook-newsletter-subscribed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: NEWSLETTER_SUBSCRIBED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.NewsletterSubscribedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  thank.you.sent:
    post:
      tags:
        - Thank You Events
      summary: Thank You Sent
      description: Fired when a thank you message is sent to a supporter.
      operationId: webhook-thank-you-sent
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: THANK_YOU_SENT
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: '#/components/schemas/com.fourthwall.openapi.model.ThankYouV1'
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  gift.draw.started:
    post:
      tags:
        - Giveaway Events
      summary: Gift Draw Started
      description: Fired when a giveaway draw is started.
      operationId: webhook-gift-draw-started
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: GIFT_DRAW_STARTED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  gift.draw.ended:
    post:
      tags:
        - Giveaway Events
      summary: Gift Draw Ended
      description: Fired when a giveaway draw ends.
      operationId: webhook-gift-draw-ended
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: GIFT_DRAW_ENDED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.GiftDraftV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  promotion.created:
    post:
      tags:
        - Promotion Events
      summary: Promotion Created
      description: Fired when a new promotion is created.
      operationId: webhook-promotion-created
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PROMOTION_CREATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  promotion.updated:
    post:
      tags:
        - Promotion Events
      summary: Promotion Updated
      description: Fired when a promotion is updated.
      operationId: webhook-promotion-updated
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PROMOTION_UPDATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  promotion.status.changed:
    post:
      tags:
        - Promotion Events
      summary: Promotion Status Changed
      description: Fired when a promotion's status changes (e.g., activated, expired).
      operationId: webhook-promotion-status-changed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PROMOTION_STATUS_CHANGED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  platform.app.disconnected:
    post:
      tags:
        - Platform Events
      summary: Platform App Disconnected
      description: Fired when a platform app is disconnected from a shop.
      operationId: webhook-platform-app-disconnected
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: PLATFORM_APP_DISCONNECTED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.PlatformAppDisconnectedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  collection.updated:
    post:
      tags:
        - Collection Events
      summary: Collection Updated
      description: Fired when a collection is updated.
      operationId: webhook-collection-updated
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: COLLECTION_UPDATED
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.CollectionV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  cart.abandoned.1h:
    post:
      tags:
        - Cart Events
      summary: Cart Abandoned (1 Hour)
      description: Fired when a cart has been inactive for 1 hour.
      operationId: webhook-cart-abandoned-1h
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: CART_ABANDONED_1H
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.CartAbandonedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  cart.abandoned.24h:
    post:
      tags:
        - Cart Events
      summary: Cart Abandoned (24 Hours)
      description: Fired when a cart has been inactive for 24 hours.
      operationId: webhook-cart-abandoned-24h
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: CART_ABANDONED_24H
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.CartAbandonedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
  cart.abandoned.72h:
    post:
      tags:
        - Cart Events
      summary: Cart Abandoned (72 Hours)
      description: >-
        Fired when a cart has been inactive for 72 hours. This is the final
        abandonment signal.
      operationId: webhook-cart-abandoned-72h
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for this webhook event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                webhookId:
                  type: string
                  description: ID of the webhook configuration that triggered this event
                  example: 00aa4abd-5778-4199-8161-0b49b2f212e5
                shopId:
                  type: string
                  description: ID of the shop that generated this event
                  example: sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb
                type:
                  type: string
                  description: The event type
                  example: CART_ABANDONED_72H
                apiVersion:
                  type: string
                  description: API version of the webhook payload
                  example: V1
                createdAt:
                  type: string
                  format: date-time
                  description: When this event was created
                  example: 2020-08-13T09:05:36.939Z
                testMode:
                  description: Whether this event was sent in test mode
                  example: false
                data:
                  $ref: >-
                    #/components/schemas/com.fourthwall.openapi.model.CartAbandonedV1
              required:
                - apiVersion
                - createdAt
                - data
                - id
                - shopId
                - testMode
                - type
                - webhookId
        required: true
      responses:
        '200':
          description: Event received successfully
