{
  "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://api.fourthwall.com",
      "description": "Production server"
    }
  ],
  "paths": {
    "/open-api/v1.0/webhooks/{webhookConfigurationId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet a webhook",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/get-webhook"
        },
        "operationId": "get-webhook",
        "parameters": [
          {
            "name": "webhookConfigurationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `WEBHOOK_CONFIGURATION_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-configuration-not-found": {
                    "value": {
                      "code": "WEBHOOK_CONFIGURATION_NOT_FOUND",
                      "webhookConfigurationId": "<webhookconfigurationid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update a webhook",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nUpdate a webhook",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/update-webhook"
        },
        "operationId": "update-webhook",
        "parameters": [
          {
            "name": "webhookConfigurationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_CONFIGURATION_NOT_UPDATABLE_OR_DELETABLE`, `WEBHOOK_URI_IP_NOT_ALLOWED`, `WEBHOOK_URI_PORT_NOT_ALLOWED`, `WEBHOOK_URI_UNALLOWED_DOMAIN`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-configuration-not-updatable-or-deletable": {
                    "value": {
                      "code": "WEBHOOK_CONFIGURATION_NOT_UPDATABLE_OR_DELETABLE",
                      "webhookConfigurationId": "<webhookconfigurationid>",
                      "shopId": "<shopid>"
                    }
                  },
                  "webhook-uri-ip-not-allowed": {
                    "value": {
                      "code": "WEBHOOK_URI_IP_NOT_ALLOWED"
                    }
                  },
                  "webhook-uri-port-not-allowed": {
                    "value": {
                      "code": "WEBHOOK_URI_PORT_NOT_ALLOWED"
                    }
                  },
                  "webhook-uri-unallowed-domain": {
                    "value": {
                      "code": "WEBHOOK_URI_UNALLOWED_DOMAIN"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `WEBHOOK_CONFIGURATION_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-configuration-not-found": {
                    "value": {
                      "code": "WEBHOOK_CONFIGURATION_NOT_FOUND",
                      "webhookConfigurationId": "<webhookconfigurationid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nDelete a webhook",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/delete-webhook"
        },
        "operationId": "delete-webhook",
        "parameters": [
          {
            "name": "webhookConfigurationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_CONFIGURATION_NOT_UPDATABLE_OR_DELETABLE`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-configuration-not-updatable-or-deletable": {
                    "value": {
                      "code": "WEBHOOK_CONFIGURATION_NOT_UPDATABLE_OR_DELETABLE",
                      "webhookConfigurationId": "<webhookconfigurationid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `WEBHOOK_CONFIGURATION_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-configuration-not-found": {
                    "value": {
                      "code": "WEBHOOK_CONFIGURATION_NOT_FOUND",
                      "webhookConfigurationId": "<webhookconfigurationid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/streaming/start": {
      "put": {
        "tags": [
          "Streaming"
        ],
        "summary": "Set streaming status to started",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nSets streaming status to started for specified services",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/streaming/start-streaming"
        },
        "operationId": "start-streaming",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.StreamingStartedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/streaming/end": {
      "put": {
        "tags": [
          "Streaming"
        ],
        "summary": "Set streaming status to ended",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nSets streaming status to ended for specified services",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/streaming/end-streaming"
        },
        "operationId": "end-streaming",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.StreamingEndedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/public-token": {
      "put": {
        "tags": [
          "Shop"
        ],
        "summary": "Get or create a public token",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns an existing public token for the shop, or creates a new one if none exists",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/shop/get-public-token"
        },
        "operationId": "get-public-token",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiShopEndpoint.PublicTokenResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "shop_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/promotions/{promotionId}": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "Get a promotion by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns a promotion by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/promotions/get-promotion"
        },
        "operationId": "get-promotion",
        "parameters": [
          {
            "name": "promotionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `CHECKOUT_PROMOTION_DOES_NOT_EXISTS`",
            "content": {
              "application/json": {
                "examples": {
                  "checkout-promotion-does-not-exists": {
                    "value": {
                      "code": "CHECKOUT_PROMOTION_DOES_NOT_EXISTS",
                      "id": "<promotionid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "promotions_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/products/{productId}/state": {
      "put": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Update product (offer) lifecycle state",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nTransitions the product between `PUBLIC` and `HIDDEN`. Use `DELETE /products/{productId}` to archive — `ARCHIVED` is not reachable here. The sold-out (`available`) flag is preserved; flip it via `PUT /products/{productId}/availability`. Idempotent: no-op if the product is already in the requested state.",
        "operationId": "update-product-state",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductStateV1Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `OFFER_INVALID_STATE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-invalid-state-error": {
                    "value": {
                      "code": "OFFER_INVALID_STATE_ERROR",
                      "offerId": "<offerid>",
                      "state": "<offersimplestatus>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  },
                  "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: `SQL_CONSTRAINTS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "sql-constraints-error": {
                    "value": {
                      "code": "SQL_CONSTRAINTS_ERROR",
                      "table": "<string?>",
                      "constraint": "<string?>",
                      "msg": "<string?>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/products/{productId}/availability": {
      "put": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Update product (offer) availability by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nUpdates a product (offer) availability",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/products/update-product-availability"
        },
        "operationId": "update-product-availability",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiProductEndpoint.UpdateOfferAvailabilityV1Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `OFFER_MUST_HAVE_COSTS_ERROR`, `OFFER_NOT_BUYABLE_WHEN_A_DEMO_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-must-have-costs-error": {
                    "value": {
                      "code": "OFFER_MUST_HAVE_COSTS_ERROR",
                      "offerId": "<offerid>"
                    }
                  },
                  "offer-not-buyable-when-a-demo-error": {
                    "value": {
                      "code": "OFFER_NOT_BUYABLE_WHEN_A_DEMO_ERROR",
                      "offerId": "<offerid>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Possible errors: `SQL_CONSTRAINTS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "sql-constraints-error": {
                    "value": {
                      "code": "SQL_CONSTRAINTS_ERROR",
                      "table": "<string?>",
                      "constraint": "<string?>",
                      "msg": "<string?>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/order/{orderId}/downloaded": {
      "put": {
        "tags": [
          "Orders"
        ],
        "summary": "Mark digital download as downloaded",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nMarks digital download as downloaded. If no downloads exist for a digital order and defaultFileUrl is provided in the request body, creates a download with that URL and marks it as downloaded.",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/orders/mark-download-complete"
        },
        "operationId": "mark-download-complete",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiOrderEndpoint.MarkDownloadAsDownloadedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Possible errors: `ORDER_HAS_NO_DOWNLOADS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "order-has-no-downloads-error": {
                    "value": {
                      "code": "ORDER_HAS_NO_DOWNLOADS_ERROR",
                      "orderId": "<orderid>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `DOWNLOAD_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "download-not-found-error": {
                    "value": {
                      "code": "DOWNLOAD_NOT_FOUND_ERROR",
                      "downloadId": "<downloadid>"
                    }
                  },
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "order_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/gifting/draw/{id}/finish": {
      "put": {
        "tags": [
          "Gifting"
        ],
        "summary": "Finish draw",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nFinish draw and select winners",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/gifting/finish-draw"
        },
        "operationId": "finish-draw",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.DrawFinishedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `GIVEAWAY_DRAW_ALREADY_FINISHED`, `GIVEAWAY_DRAW_FINISHED_DATA_MISMATCH`, `GIVEAWAY_DRAW_UNSUPPORTED_PLATFORM_OPERATION`",
            "content": {
              "application/json": {
                "examples": {
                  "giveaway-draw-already-finished": {
                    "value": {
                      "code": "GIVEAWAY_DRAW_ALREADY_FINISHED",
                      "drawId": "<giveawaydrawid>"
                    }
                  },
                  "giveaway-draw-finished-data-mismatch": {
                    "value": {
                      "code": "GIVEAWAY_DRAW_FINISHED_DATA_MISMATCH",
                      "availableGifts": "<int>",
                      "participants": "<int>"
                    }
                  },
                  "giveaway-draw-unsupported-platform-operation": {
                    "value": {
                      "code": "GIVEAWAY_DRAW_UNSUPPORTED_PLATFORM_OPERATION",
                      "platform": "<giveawaydraw.platform>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `GIVEAWAY_DRAW_NOT_FOUND`, `GIVEAWAY_NOT_FOUND_FOR_DRAW_ID`, `OFFER_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "giveaway-draw-not-found": {
                    "value": {
                      "code": "GIVEAWAY_DRAW_NOT_FOUND",
                      "drawId": "<giveawaydrawid>"
                    }
                  },
                  "giveaway-not-found-for-draw-id": {
                    "value": {
                      "code": "GIVEAWAY_NOT_FOUND_FOR_DRAW_ID",
                      "shopId": "<shopid>",
                      "drawId": "<giveawaydrawid>"
                    }
                  },
                  "offer-not-found-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_ERROR",
                      "offerId": "<offerid>"
                    }
                  },
                  "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get webhooks",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet webhooks",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/list-webhooks"
        },
        "operationId": "list-webhooks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookConfigurationV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a webhook",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreate a webhook",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/create-webhook"
        },
        "operationId": "create-webhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_URI_IP_NOT_ALLOWED`, `WEBHOOK_URI_PORT_NOT_ALLOWED`, `WEBHOOK_URI_UNALLOWED_DOMAIN`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-uri-ip-not-allowed": {
                    "value": {
                      "code": "WEBHOOK_URI_IP_NOT_ALLOWED"
                    }
                  },
                  "webhook-uri-port-not-allowed": {
                    "value": {
                      "code": "WEBHOOK_URI_PORT_NOT_ALLOWED"
                    }
                  },
                  "webhook-uri-unallowed-domain": {
                    "value": {
                      "code": "WEBHOOK_URI_UNALLOWED_DOMAIN"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/promotions": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "Get all promotions",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all promotions",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/promotions/list-promotions"
        },
        "operationId": "list-promotions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          },
          {
            "name": "codes",
            "in": "query",
            "description": "Filter by promotion code(s)",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.promotions.PromotionV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "promotions_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "post": {
        "tags": [
          "Promotions"
        ],
        "summary": "Create a promotion",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreates a promotion",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/promotions/create-promotion"
        },
        "operationId": "create-promotion",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MEMBERSHIPS_MULTI"
                  },
                  {
                    "$ref": "#/components/schemas/MEMBERSHIPS_SINGLE"
                  },
                  {
                    "$ref": "#/components/schemas/SHOP_MULTI"
                  },
                  {
                    "$ref": "#/components/schemas/SHOP_SINGLE"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `PROMOTION_ONCE_PER_ORDER_CONFIGURATION_NOT_SUPPORTER_FOR_DISCOUNT_TYPE`, `PROMOTION_ONLY_ONE_TIERS_REQUIREMENT_TYPE_ALLOWED`",
            "content": {
              "application/json": {
                "examples": {
                  "promotion-once-per-order-configuration-not-supporter-for-discount-type": {
                    "value": {
                      "code": "PROMOTION_ONCE_PER_ORDER_CONFIGURATION_NOT_SUPPORTER_FOR_DISCOUNT_TYPE"
                    }
                  },
                  "promotion-only-one-tiers-requirement-type-allowed": {
                    "value": {
                      "code": "PROMOTION_ONLY_ONE_TIERS_REQUIREMENT_TYPE_ALLOWED"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Possible errors: `PROMOTION_CODE_DUPLICATION`, `PROMOTION_CODES_DUPLICATION`",
            "content": {
              "application/json": {
                "examples": {
                  "promotion-code-duplication": {
                    "value": {
                      "code": "PROMOTION_CODE_DUPLICATION",
                      "promotionCode": "<string>"
                    }
                  },
                  "promotion-codes-duplication": {
                    "value": {
                      "code": "PROMOTION_CODES_DUPLICATION"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "promotions_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/products": {
      "get": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Get all products (offers)",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all products with pagination",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/products/list-products"
        },
        "operationId": "list-products",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "search_phrase"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_VARIANT_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "post": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Create a product",
        "description": "*Rate limit: 5 requests / minute per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreates a product from a design or a digital product.",
        "operationId": "create-product",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.CreateProductRequestV1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.CreateProductResponseV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `CUSTOMIZATION_ALREADY_USED_ERROR`, `CUSTOMIZATION_FOR_REQUESTABLE_PRODUCT_ERROR`, `CUSTOMIZATION_OPTION_DO_NOT_EXISTS`, `CUSTOMIZATION_REGIONS_DUPLICATION`, `CUSTOMIZATION_TOO_MANY_VARIANTS`, `DESIGN_PIPELINE_BACKEND_RENDERING_NOT_SUPPORTED`, `DESIGN_PIPELINE_INVALID_REGIONS`, `DESIGNER_NOT_SUPPORTED_PRODUCT_ERROR`, `DIGITAL_ITEMS_NOT_VALID_ERROR`, `DIGITAL_ITEMS_SIZE_LIMIT_ERROR`, `MISSING_VERSION_ERROR`, `OFFER_CREATION_NOT_ALLOWED_ERROR`, `RENDERING_PRODUCT_NOT_SUPPORTED_ERROR`, `TOTAL_DIGITAL_STORAGE_LIMIT_ERROR`, `UNTRUSTED_ASSET_SOURCE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "customization-already-used-error": {
                    "value": {
                      "code": "CUSTOMIZATION_ALREADY_USED_ERROR",
                      "customizationId": "<customizationid?>"
                    }
                  },
                  "customization-for-requestable-product-error": {
                    "value": {
                      "code": "CUSTOMIZATION_FOR_REQUESTABLE_PRODUCT_ERROR",
                      "productId": "<productid>"
                    }
                  },
                  "customization-option-do-not-exists": {
                    "value": {
                      "code": "CUSTOMIZATION_OPTION_DO_NOT_EXISTS",
                      "type": "<string>",
                      "name": "<string>",
                      "productId": "<productid>"
                    }
                  },
                  "customization-regions-duplication": {
                    "value": {
                      "code": "CUSTOMIZATION_REGIONS_DUPLICATION",
                      "regions": "<list>"
                    }
                  },
                  "customization-too-many-variants": {
                    "value": {
                      "code": "CUSTOMIZATION_TOO_MANY_VARIANTS",
                      "newColorCount": "<int>",
                      "newSizeCount": "<int>",
                      "newVariantCount": "<int>",
                      "max": "<int>"
                    }
                  },
                  "design-pipeline-backend-rendering-not-supported": {
                    "value": {
                      "code": "DESIGN_PIPELINE_BACKEND_RENDERING_NOT_SUPPORTED",
                      "reason": "<string>"
                    }
                  },
                  "design-pipeline-invalid-regions": {
                    "value": {
                      "code": "DESIGN_PIPELINE_INVALID_REGIONS",
                      "invalidRegions": "<set>",
                      "validRegions": "<set>"
                    }
                  },
                  "designer-not-supported-product-error": {
                    "value": {
                      "code": "DESIGNER_NOT_SUPPORTED_PRODUCT_ERROR",
                      "productId": "<productid>"
                    }
                  },
                  "digital-items-not-valid-error": {
                    "value": {
                      "code": "DIGITAL_ITEMS_NOT_VALID_ERROR",
                      "offerId": "<offerid>",
                      "digitalFiles": "<collection>"
                    }
                  },
                  "digital-items-size-limit-error": {
                    "value": {
                      "code": "DIGITAL_ITEMS_SIZE_LIMIT_ERROR",
                      "offerId": "<offerid>",
                      "sizeLimit": "<long>"
                    }
                  },
                  "missing-version-error": {
                    "value": {
                      "code": "MISSING_VERSION_ERROR",
                      "customizationId": "<customizationid>"
                    }
                  },
                  "offer-creation-not-allowed-error": {
                    "value": {
                      "code": "OFFER_CREATION_NOT_ALLOWED_ERROR",
                      "shopId": "<shopid>"
                    }
                  },
                  "rendering-product-not-supported-error": {
                    "value": {
                      "code": "RENDERING_PRODUCT_NOT_SUPPORTED_ERROR",
                      "productId": "<string>"
                    }
                  },
                  "total-digital-storage-limit-error": {
                    "value": {
                      "code": "TOTAL_DIGITAL_STORAGE_LIMIT_ERROR",
                      "offerId": "<offerid>",
                      "sizeLimit": "<long>"
                    }
                  },
                  "untrusted-asset-source-error": {
                    "value": {
                      "code": "UNTRUSTED_ASSET_SOURCE_ERROR",
                      "uri": "<uri>"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Possible errors: `SAAS_OPERATION_NOT_ALLOWED_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "saas-operation-not-allowed-error": {
                    "value": {
                      "code": "SAAS_OPERATION_NOT_ALLOWED_ERROR",
                      "operation": "<saasoperation.type>",
                      "shopId": "<shopid>",
                      "planUpgradeable": "<boolean>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `MEDIA_FILE_DO_NOT_EXISTS`, `PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND`, `RENDERING_NOT_SCHEDULED_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "media-file-do-not-exists": {
                    "value": {
                      "code": "MEDIA_FILE_DO_NOT_EXISTS",
                      "uri": "<uri>"
                    }
                  },
                  "product-catalog-product-id-not-found": {
                    "value": {
                      "code": "PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND",
                      "id": "<productid>"
                    }
                  },
                  "rendering-not-scheduled-error": {
                    "value": {
                      "code": "RENDERING_NOT_SCHEDULED_ERROR",
                      "customizationId": "<string>"
                    }
                  }
                }
              }
            }
          },
          "406": {
            "description": "Possible errors: `PRICING_CALCULATION_NOT_SUPPORTED`",
            "content": {
              "application/json": {
                "examples": {
                  "pricing-calculation-not-supported": {
                    "value": {
                      "code": "PRICING_CALCULATION_NOT_SUPPORTED",
                      "customizationType": "<customizationversiontype>"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Possible errors: `OFFER_SLUG_DUPLICATION_ERROR`, `SQL_CONSTRAINTS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-slug-duplication-error": {
                    "value": {
                      "code": "OFFER_SLUG_DUPLICATION_ERROR",
                      "shopId": "<shopid>",
                      "offerSlug": "<slug>"
                    }
                  },
                  "sql-constraints-error": {
                    "value": {
                      "code": "SQL_CONSTRAINTS_ERROR",
                      "table": "<string?>",
                      "constraint": "<string?>",
                      "msg": "<string?>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 5 requests / minute per shop (effective limit).\n\nAll applicable limits:\n- `open-api-heavy-rate-limiter` — 5 requests / minute per shop\n- `open-api-rate-limiter` — 100 requests / 10 seconds per shop",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 5,
          "periodSeconds": 60,
          "dimension": "shopId",
          "cacheName": "open-api-heavy-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-heavy-rate-limiter",
              "filterOrder": 10,
              "capacity": 5,
              "periodSeconds": 60,
              "dimension": "shopId"
            },
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/platform/token": {
      "post": {
        "tags": [
          "Platform Tokens"
        ],
        "summary": "Exchange authorization code or refresh token for access token",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nOAuth 2.0 token endpoint. Supports 'authorization_code' grant type for exchanging authorization codes for tokens, and 'refresh_token' grant type for refreshing access tokens.",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/platform-token/exchange-token"
        },
        "operationId": "exchange-token",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.TokenRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.TokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/media/upload-url": {
      "post": {
        "tags": [
          "Media Library"
        ],
        "summary": "Request a pre-signed upload URL",
        "description": "*Rate limit: 20 requests / minute per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns a pre-signed upload URL for uploading a new image. After receiving the response, PUT the image bytes directly to the uploadUrl.",
        "operationId": "request-media-upload-url",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.media.RequestUploadUrlV1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.media.UploadUrlResponseV1"
                }
              }
            }
          },
          "406": {
            "description": "Possible errors: `MEDIA_FILE_SIZE_EXCEEDED_ERROR`, `UNSUPPORTED_ASSET_TYPE_ERROR`, `UNSUPPORTED_MEDIA_TYPE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "media-file-size-exceeded-error": {
                    "value": {
                      "code": "MEDIA_FILE_SIZE_EXCEEDED_ERROR",
                      "maxFileSize": "<long>",
                      "fileSize": "<long>"
                    }
                  },
                  "unsupported-asset-type-error": {
                    "value": {
                      "code": "UNSUPPORTED_ASSET_TYPE_ERROR",
                      "assetType": "<assettype>"
                    }
                  },
                  "unsupported-media-type-error": {
                    "value": {
                      "code": "UNSUPPORTED_MEDIA_TYPE_ERROR",
                      "mediaType": "<string>",
                      "supportedMediaTypes": "<list>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 20 requests / minute per shop (effective limit).\n\nAll applicable limits:\n- `open-api-medium-rate-limiter` — 20 requests / minute per shop\n- `open-api-rate-limiter` — 100 requests / 10 seconds per shop",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "media_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 20,
          "periodSeconds": 60,
          "dimension": "shopId",
          "cacheName": "open-api-medium-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-medium-rate-limiter",
              "filterOrder": 10,
              "capacity": 20,
              "periodSeconds": 60,
              "dimension": "shopId"
            },
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/media/images": {
      "get": {
        "tags": [
          "Media Library"
        ],
        "summary": "List media library images",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nRetrieves all images from the shop's media library",
        "operationId": "list-media-images",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.media.MediaImageV1"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "media_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "post": {
        "tags": [
          "Media Library"
        ],
        "summary": "Save an uploaded image to the media library",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nPersists an uploaded image in the media library after the client has PUT it to the signed URL",
        "operationId": "save-media-image",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.media.SaveMediaImageRequestV1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.media.MediaImageV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `UNTRUSTED_ASSET_SOURCE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "untrusted-asset-source-error": {
                    "value": {
                      "code": "UNTRUSTED_ASSET_SOURCE_ERROR",
                      "uri": "<uri>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `MEDIA_FILE_DO_NOT_EXISTS`",
            "content": {
              "application/json": {
                "examples": {
                  "media-file-do-not-exists": {
                    "value": {
                      "code": "MEDIA_FILE_DO_NOT_EXISTS",
                      "uri": "<uri>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "media_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/giveaway-links": {
      "post": {
        "tags": [
          "Giveaway links"
        ],
        "summary": "Create giveaway links",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreates a new package with specified number of giveaway links",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/giveaway-links/create-giveaway-links"
        },
        "operationId": "create-giveaway-links",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.CreateGiveawayLinksV1Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `GIFT_INVALID_OFFER`",
            "content": {
              "application/json": {
                "examples": {
                  "gift-invalid-offer": {
                    "value": {
                      "code": "GIFT_INVALID_OFFER",
                      "offerId": "<offerid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_ERROR",
                      "offerId": "<offerid>"
                    }
                  },
                  "shop-team-member-shop-not-found-error": {
                    "value": {
                      "code": "SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/fulfillments": {
      "post": {
        "tags": [
          "Fulfillment"
        ],
        "summary": "Create a fulfillment for an order",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreates a fulfillment with a shipment tracker for provided order items. When trackers change their state, order.status will change to IN_PRODUCTION, PARTIALLY_IN_PRODUCTION, PARTIALLY_SHIPPED, SHIPPED depending on the shipping tracker info. Order updated webhooks will be triggered.",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/fulfillment/create-fulfillment"
        },
        "operationId": "create-fulfillment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.FulfillmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.FulfillmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `FULFILLMENT_ALREADY_EXISTS`, `FULFILLMENT_ORDER_INVALID_VARIANT`, `FULFILLMENT_VARIANT_QUANTITY_TO_HIGH`",
            "content": {
              "application/json": {
                "examples": {
                  "fulfillment-already-exists": {
                    "value": {
                      "code": "FULFILLMENT_ALREADY_EXISTS",
                      "fulfillmentId": "<fulfillmentid>",
                      "orderId": "<orderid>"
                    }
                  },
                  "fulfillment-order-invalid-variant": {
                    "value": {
                      "code": "FULFILLMENT_ORDER_INVALID_VARIANT",
                      "orderId": "<orderid>",
                      "variantId": "<offervariantid>",
                      "groupedId": "<cartitemgroupedid?>"
                    }
                  },
                  "fulfillment-variant-quantity-to-high": {
                    "value": {
                      "code": "FULFILLMENT_VARIANT_QUANTITY_TO_HIGH",
                      "orderId": "<orderid>",
                      "variantId": "<offervariantid>",
                      "fulfillable": "<int>",
                      "quantity": "<int>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `FULFILLMENT_INVALID_SHOP_ORDER`, `FULFILLMENT_ORDER_NOT_FOUND`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `ORDER_ID_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "fulfillment-invalid-shop-order": {
                    "value": {
                      "code": "FULFILLMENT_INVALID_SHOP_ORDER",
                      "shopId": "<shopid?>",
                      "orderId": "<orderid>"
                    }
                  },
                  "fulfillment-order-not-found": {
                    "value": {
                      "code": "FULFILLMENT_ORDER_NOT_FOUND",
                      "orderId": "<orderid>"
                    }
                  },
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  },
                  "order-id-not-found": {
                    "value": {
                      "code": "ORDER_ID_NOT_FOUND",
                      "id": "<orderid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "fulfillment_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/customizations": {
      "post": {
        "tags": [
          "Customizations"
        ],
        "summary": "Create a customization (design sketch)",
        "description": "*Rate limit: 5 requests / minute per shop. See [Rate limiting](/guides/rate-limiting).*\n\nCreates a shop-bound customization sketch on a product template. When `regions` are supplied, the sync design pipeline runs immediately and the response carries the rendered preview images. With no regions, only the sketch is created (`pipelineId: null`, `images: []`). Iteration = re-POST with adjusted selections; there is no update-in-place.",
        "operationId": "create-customization",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomizationRequestV1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCustomizationResponseV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `CUSTOMIZATION_ALREADY_USED_ERROR`, `CUSTOMIZATION_FOR_REQUESTABLE_PRODUCT_ERROR`, `CUSTOMIZATION_OPTION_DO_NOT_EXISTS`, `CUSTOMIZATION_REGIONS_DUPLICATION`, `CUSTOMIZATION_TOO_MANY_VARIANTS`, `DESIGN_PIPELINE_BACKEND_RENDERING_NOT_SUPPORTED`, `DESIGN_PIPELINE_INVALID_REGIONS`, `DESIGNER_NOT_SUPPORTED_PRODUCT_ERROR`, `MISSING_PRICE_FOR_SIZE_ERROR`, `MISSING_VERSION_ERROR`, `OFFER_INVALID_STATE_ERROR`, `RENDERING_PRODUCT_NOT_SUPPORTED_ERROR`, `UNTRUSTED_ASSET_SOURCE_ERROR`, `VARIANT_MISSING_SIZE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "customization-already-used-error": {
                    "value": {
                      "code": "CUSTOMIZATION_ALREADY_USED_ERROR",
                      "customizationId": "<customizationid?>"
                    }
                  },
                  "customization-for-requestable-product-error": {
                    "value": {
                      "code": "CUSTOMIZATION_FOR_REQUESTABLE_PRODUCT_ERROR",
                      "productId": "<productid>"
                    }
                  },
                  "customization-option-do-not-exists": {
                    "value": {
                      "code": "CUSTOMIZATION_OPTION_DO_NOT_EXISTS",
                      "type": "<string>",
                      "name": "<string>",
                      "productId": "<productid>"
                    }
                  },
                  "customization-regions-duplication": {
                    "value": {
                      "code": "CUSTOMIZATION_REGIONS_DUPLICATION",
                      "regions": "<list>"
                    }
                  },
                  "customization-too-many-variants": {
                    "value": {
                      "code": "CUSTOMIZATION_TOO_MANY_VARIANTS",
                      "newColorCount": "<int>",
                      "newSizeCount": "<int>",
                      "newVariantCount": "<int>",
                      "max": "<int>"
                    }
                  },
                  "design-pipeline-backend-rendering-not-supported": {
                    "value": {
                      "code": "DESIGN_PIPELINE_BACKEND_RENDERING_NOT_SUPPORTED",
                      "reason": "<string>"
                    }
                  },
                  "design-pipeline-invalid-regions": {
                    "value": {
                      "code": "DESIGN_PIPELINE_INVALID_REGIONS",
                      "invalidRegions": "<set>",
                      "validRegions": "<set>"
                    }
                  },
                  "designer-not-supported-product-error": {
                    "value": {
                      "code": "DESIGNER_NOT_SUPPORTED_PRODUCT_ERROR",
                      "productId": "<productid>"
                    }
                  },
                  "missing-price-for-size-error": {
                    "value": {
                      "code": "MISSING_PRICE_FOR_SIZE_ERROR",
                      "size": "<string>"
                    }
                  },
                  "missing-version-error": {
                    "value": {
                      "code": "MISSING_VERSION_ERROR",
                      "customizationId": "<customizationid>"
                    }
                  },
                  "offer-invalid-state-error": {
                    "value": {
                      "code": "OFFER_INVALID_STATE_ERROR",
                      "offerId": "<offerid>",
                      "state": "<offersimplestatus>"
                    }
                  },
                  "rendering-product-not-supported-error": {
                    "value": {
                      "code": "RENDERING_PRODUCT_NOT_SUPPORTED_ERROR",
                      "productId": "<string>"
                    }
                  },
                  "untrusted-asset-source-error": {
                    "value": {
                      "code": "UNTRUSTED_ASSET_SOURCE_ERROR",
                      "uri": "<uri>"
                    }
                  },
                  "variant-missing-size-error": {
                    "value": {
                      "code": "VARIANT_MISSING_SIZE_ERROR"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `MEDIA_FILE_DO_NOT_EXISTS`, `OFFER_BY_CUSTOMIZATION_ID_AND_SHOP_ID_NOT_FOUND`, `OFFER_BY_CUSTOMIZATION_ID_NOT_FOUND_ERROR`, `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`, `PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND`, `RENDERING_NOT_SCHEDULED_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "media-file-do-not-exists": {
                    "value": {
                      "code": "MEDIA_FILE_DO_NOT_EXISTS",
                      "uri": "<uri>"
                    }
                  },
                  "offer-by-customization-id-and-shop-id-not-found": {
                    "value": {
                      "code": "OFFER_BY_CUSTOMIZATION_ID_AND_SHOP_ID_NOT_FOUND",
                      "customizationId": "<customizationid>",
                      "shopId": "<shopid>"
                    }
                  },
                  "offer-by-customization-id-not-found-error": {
                    "value": {
                      "code": "OFFER_BY_CUSTOMIZATION_ID_NOT_FOUND_ERROR",
                      "customizationId": "<customizationid>"
                    }
                  },
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  },
                  "product-catalog-product-id-not-found": {
                    "value": {
                      "code": "PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND",
                      "id": "<productid>"
                    }
                  },
                  "rendering-not-scheduled-error": {
                    "value": {
                      "code": "RENDERING_NOT_SCHEDULED_ERROR",
                      "customizationId": "<string>"
                    }
                  },
                  "shop-team-member-shop-not-found-error": {
                    "value": {
                      "code": "SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "406": {
            "description": "Possible errors: `PRICING_CALCULATION_NOT_SUPPORTED`",
            "content": {
              "application/json": {
                "examples": {
                  "pricing-calculation-not-supported": {
                    "value": {
                      "code": "PRICING_CALCULATION_NOT_SUPPORTED",
                      "customizationType": "<customizationversiontype>"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Possible errors: `SQL_CONSTRAINTS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "sql-constraints-error": {
                    "value": {
                      "code": "SQL_CONSTRAINTS_ERROR",
                      "table": "<string?>",
                      "constraint": "<string?>",
                      "msg": "<string?>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 5 requests / minute per shop (effective limit).\n\nAll applicable limits:\n- `customization-unauth-rate-limiter` — 50 requests / 10 seconds per client IP\n- `open-api-heavy-rate-limiter` — 5 requests / minute per shop\n- `open-api-rate-limiter` — 100 requests / 10 seconds per shop",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 5,
          "periodSeconds": 60,
          "dimension": "shopId",
          "cacheName": "open-api-heavy-rate-limiter",
          "applies": [
            {
              "cacheName": "customization-unauth-rate-limiter",
              "filterOrder": 10,
              "capacity": 50,
              "periodSeconds": 10,
              "dimension": "clientIp"
            },
            {
              "cacheName": "open-api-heavy-rate-limiter",
              "filterOrder": 10,
              "capacity": 5,
              "periodSeconds": 60,
              "dimension": "shopId"
            },
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/collections": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get all collections",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all collections with pagination",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/collections/list-collections"
        },
        "operationId": "list-collections",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "search_phrase"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.CollectionSlimV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/webhook-events": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get webhook events",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet webhook events with pagination and optional filtering by one or more webhook types (repeat or comma-separate the `type` param).",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/list-webhook-events"
        },
        "operationId": "list-webhook-events",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ORDER_PLACED",
                  "ORDER_UPDATED",
                  "GIFT_PURCHASE",
                  "PRODUCT_CREATED",
                  "PRODUCT_UPDATED",
                  "DONATION",
                  "SUBSCRIPTION_PURCHASED",
                  "SUBSCRIPTION_EXPIRED",
                  "SUBSCRIPTION_CHANGED",
                  "NEWSLETTER_SUBSCRIBED",
                  "THANK_YOU_SENT",
                  "GIFT_DRAW_STARTED",
                  "GIFT_DRAW_ENDED",
                  "PROMOTION_CREATED",
                  "PROMOTION_UPDATED",
                  "PROMOTION_STATUS_CHANGED",
                  "PLATFORM_APP_DISCONNECTED",
                  "MEMBERSHIP_POST_UPSERTED",
                  "MEMBERSHIP_SERIES_UPSERTED",
                  "MEMBERSHIP_SERIES_DELETED",
                  "MEMBERSHIP_TAG_CREATED",
                  "MEMBERSHIP_TAG_UPDATED",
                  "MEMBERSHIP_TAG_DELETED",
                  "MEMBERSHIP_TIER_UPSERTED",
                  "MEMBERSHIP_TIER_DELETED",
                  "COLLECTION_UPDATED",
                  "CART_ABANDONED_1H",
                  "CART_ABANDONED_24H",
                  "CART_ABANDONED_72H"
                ]
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookEventV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/webhook-events/{webhookEventId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook event",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet a single webhook event by ID",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/webhooks/get-webhook-event"
        },
        "operationId": "get-webhook-event",
        "parameters": [
          {
            "name": "webhookEventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookEventV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `WEBHOOK_EVENT_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-event-not-found": {
                    "value": {
                      "code": "WEBHOOK_EVENT_NOT_FOUND",
                      "webhookEventId": "<webhookeventid>",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "webhook_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/thank-yous/{thankYouId}": {
      "get": {
        "tags": [
          "Thank yous"
        ],
        "summary": "Get Thank You by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet Thank You details",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/thank-yous/get-thank-you"
        },
        "operationId": "get-thank-you",
        "parameters": [
          {
            "name": "thankYouId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ty_EdJvIXu3SEiXe_QkPavHSA"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.ThankYouV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `KUDOS_CONTRIBUTION_DOES_NOT_EXIST`, `KUDOS_THANK_YOU_DOES_NOT_EXIST`",
            "content": {
              "application/json": {
                "examples": {
                  "kudos-contribution-does-not-exist": {
                    "value": {
                      "code": "KUDOS_CONTRIBUTION_DOES_NOT_EXIST",
                      "kudosId": "<kudosid>"
                    }
                  },
                  "kudos-thank-you-does-not-exist": {
                    "value": {
                      "code": "KUDOS_THANK_YOU_DOES_NOT_EXIST",
                      "thankYouId": "<thankyouid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "thankyou_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/streaming": {
      "get": {
        "tags": [
          "Streaming"
        ],
        "summary": "Get streaming status",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns streaming status for all services",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/streaming/get-streaming-status"
        },
        "operationId": "get-streaming-status",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/shops/current": {
      "get": {
        "tags": [
          "Shop"
        ],
        "summary": "Get current shop",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns the current shop",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/shop/get-current-shop"
        },
        "operationId": "get-current-shop",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.ShopV1"
                }
              }
            }
          },
          "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": []
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/shops/current/contact-info": {
      "get": {
        "tags": [
          "Shop"
        ],
        "summary": "Get current shop contact info",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns the current shop contact info",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/shop/get-shop-contact-info"
        },
        "operationId": "get-shop-contact-info",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.ContactInfoV1"
                }
              }
            }
          },
          "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "shop_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/products/{productId}": {
      "get": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Get product (offer) by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns product by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/products/get-product"
        },
        "operationId": "get-product",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  },
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  },
                  "product-catalog-product-id-not-found": {
                    "value": {
                      "code": "PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND",
                      "id": "<productid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      },
      "delete": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Archive a product (offer)",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nSoft-archives the product — sets it to `Archived`. Terminal at this surface: once archived, the product cannot be returned to `PUBLIC`/`HIDDEN` through the open-api (restoration stays admin-only). Idempotent: re-DELETE on an already-archived product also returns 204.",
        "operationId": "archive-product",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Possible errors: `OFFER_INVALID_STATE_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-invalid-state-error": {
                    "value": {
                      "code": "OFFER_INVALID_STATE_ERROR",
                      "offerId": "<offerid>",
                      "state": "<offersimplestatus>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  },
                  "shop-team-member-shop-not-found-error": {
                    "value": {
                      "code": "SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR",
                      "shopId": "<shopid>"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Possible errors: `SQL_CONSTRAINTS_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "sql-constraints-error": {
                    "value": {
                      "code": "SQL_CONSTRAINTS_ERROR",
                      "table": "<string?>",
                      "constraint": "<string?>",
                      "msg": "<string?>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_write"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/products/{productId}/inventory": {
      "get": {
        "tags": [
          "Products (offers)"
        ],
        "summary": "Get product (offer) inventory by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns product (offer) inventory by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/products/get-product-inventory"
        },
        "operationId": "get-product-inventory",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.StockV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-not-found-by-shop-id-and-id-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR",
                      "shopId": "<shopid>",
                      "offerId": "<offerid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "offer_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/product-templates/{productId}": {
      "get": {
        "tags": [
          "Product Templates"
        ],
        "summary": "Get product template details",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\n\n            Get detailed information about a specific product template.\n\n            This endpoint is public and does not require authentication.\n            Returns full product details including variants, customizable areas,\n            size guide, and images.\n        ",
        "operationId": "get-product-template",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "Product template ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `GENERATOR_ID_NOT_FOUND`, `PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "generator-id-not-found": {
                    "value": {
                      "code": "GENERATOR_ID_NOT_FOUND",
                      "id": "<generatorid>"
                    }
                  },
                  "product-catalog-product-id-not-found": {
                    "value": {
                      "code": "PRODUCT_CATALOG_PRODUCT_ID_NOT_FOUND",
                      "id": "<productid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop (effective limit).\n\nAll applicable limits:\n- `open-api-rate-limiter` — 100 requests / 10 seconds per shop\n- `product-templates-rate-limiter` — 100 requests / 10 seconds per client IP",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            },
            {
              "cacheName": "product-templates-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "clientIp"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/product-templates/page/{page}": {
      "get": {
        "tags": [
          "Product Templates"
        ],
        "summary": "List product templates by page",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nList available product templates with pagination. This endpoint is public and does not require authentication.",
        "operationId": "list-product-templates-paged",
        "parameters": [
          {
            "name": "page",
            "in": "path",
            "description": "Page number (1-indexed)",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateListV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop (effective limit).\n\nAll applicable limits:\n- `open-api-rate-limiter` — 100 requests / 10 seconds per shop\n- `product-templates-rate-limiter` — 100 requests / 10 seconds per client IP",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            },
            {
              "cacheName": "product-templates-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "clientIp"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/order": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get all orders",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all orders with pagination",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/orders/list-orders"
        },
        "operationId": "list-orders",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          },
          {
            "name": "email",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "supporter@fourthwall.com"
          },
          {
            "name": "createdAt[gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2020-08-13T09:05:36.939Z"
          },
          {
            "name": "createdAt[lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2020-08-13T09:05:36.939Z"
          },
          {
            "name": "updatedAt[gt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2020-08-13T09:05:36.939Z"
          },
          {
            "name": "updatedAt[lt]",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2020-08-13T09:05:36.939Z"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CONFIRMED",
                  "PARTIALLY_IN_PRODUCTION",
                  "IN_PRODUCTION",
                  "PARTIALLY_SHIPPED",
                  "SHIPPED",
                  "PARTIALLY_DELIVERED",
                  "DELIVERED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              "uniqueItems": true
            },
            "example": "CONFIRMED"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OrderV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_NOT_SUPPORTED_ORDER_STATUS`, `WEBHOOK_NOT_SUPPORTED_ORDER_TYPE`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-not-supported-order-status": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_STATUS",
                      "orderStatus": "<string>"
                    }
                  },
                  "webhook-not-supported-order-type": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_TYPE",
                      "orderType": "<string>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `OFFER_VARIANT_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "order_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/order/{orderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get order by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns order by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/orders/get-order"
        },
        "operationId": "get-order",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_NOT_SUPPORTED_ORDER_STATUS`, `WEBHOOK_NOT_SUPPORTED_ORDER_TYPE`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-not-supported-order-status": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_STATUS",
                      "orderStatus": "<string>"
                    }
                  },
                  "webhook-not-supported-order-type": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_TYPE",
                      "orderType": "<string>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `APPROVAL_SHEET_NOT_FOUND`, `CHECKOUT_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "approval-sheet-not-found": {
                    "value": {
                      "code": "APPROVAL_SHEET_NOT_FOUND",
                      "id": "<approvalsheetid>"
                    }
                  },
                  "checkout-not-found-error": {
                    "value": {
                      "code": "CHECKOUT_NOT_FOUND_ERROR",
                      "checkoutId": "<checkoutid>"
                    }
                  },
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "order_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/order/by-friendly-id/{friendlyId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get order by friendly id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns order by friendly id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/orders/get-order-by-friendly-id"
        },
        "operationId": "get-order-by-friendly-id",
        "parameters": [
          {
            "name": "friendlyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "D3XZFWPP"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1"
                }
              }
            }
          },
          "400": {
            "description": "Possible errors: `WEBHOOK_NOT_SUPPORTED_ORDER_STATUS`, `WEBHOOK_NOT_SUPPORTED_ORDER_TYPE`",
            "content": {
              "application/json": {
                "examples": {
                  "webhook-not-supported-order-status": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_STATUS",
                      "orderStatus": "<string>"
                    }
                  },
                  "webhook-not-supported-order-type": {
                    "value": {
                      "code": "WEBHOOK_NOT_SUPPORTED_ORDER_TYPE",
                      "orderType": "<string>"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `APPROVAL_SHEET_NOT_FOUND`, `CHECKOUT_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `ORDER_FRIENDLY_ID_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "approval-sheet-not-found": {
                    "value": {
                      "code": "APPROVAL_SHEET_NOT_FOUND",
                      "id": "<approvalsheetid>"
                    }
                  },
                  "checkout-not-found-error": {
                    "value": {
                      "code": "CHECKOUT_NOT_FOUND_ERROR",
                      "checkoutId": "<checkoutid>"
                    }
                  },
                  "offer-variant-not-found-error": {
                    "value": {
                      "code": "OFFER_VARIANT_NOT_FOUND_ERROR",
                      "offerVariantId": "<offervariantid>"
                    }
                  },
                  "order-friendly-id-not-found": {
                    "value": {
                      "code": "ORDER_FRIENDLY_ID_NOT_FOUND",
                      "id": "<orderfriendlyid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "order_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/memberships/tiers": {
      "get": {
        "tags": [
          "BETA: Memberships"
        ],
        "summary": "List membership tiers",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nLists all tiers for the current shop",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/memberships/list-tiers"
        },
        "operationId": "list-tiers",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipTierV1"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "memberships_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/memberships/members": {
      "get": {
        "tags": [
          "BETA: Memberships"
        ],
        "summary": "List members",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nLists all members for the current shop",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/memberships/list-members"
        },
        "operationId": "list-members",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MembershipSupporterV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "memberships_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/memberships/members/{id}": {
      "get": {
        "tags": [
          "BETA: Memberships"
        ],
        "summary": "Get member",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGets a member by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/memberships/get-member"
        },
        "operationId": "get-member",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": 123456
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `MEMBERSHIP_SUPPORTER_NOT_FOUND_BY_ID_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "membership-supporter-not-found-by-id-error": {
                    "value": {
                      "code": "MEMBERSHIP_SUPPORTER_NOT_FOUND_BY_ID_ERROR",
                      "supporterId": "<supporterid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "memberships_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/mailing-list-entries": {
      "get": {
        "tags": [
          "Mailing Lists"
        ],
        "summary": "Get all mailing list entries",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all mailing list entries",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/mailing-lists/list-entries"
        },
        "operationId": "list-entries",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MailingListEntryV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          },
          {
            "oauth": [
              "shop_read"
            ]
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/giveaway-links/packages": {
      "get": {
        "tags": [
          "Giveaway links"
        ],
        "summary": "Get all giveaway packages",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all packages with giveaway links",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/giveaway-links/list-packages"
        },
        "operationId": "list-packages",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayPackagesV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/giveaway-links/packages/{packageId}": {
      "get": {
        "tags": [
          "Giveaway links"
        ],
        "summary": "Get giveaway links",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all giveaway links for packageId",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/giveaway-links/get-package"
        },
        "operationId": "get-package",
        "parameters": [
          {
            "name": "packageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1"
                }
              }
            }
          },
          "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/gifting/draw/{id}": {
      "get": {
        "tags": [
          "Gifting"
        ],
        "summary": "Get draw",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nGet draw details",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/gifting/get-draw"
        },
        "operationId": "get-draw",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `GIVEAWAY_NOT_FOUND_FOR_DRAW_ID`, `OFFER_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "giveaway-not-found-for-draw-id": {
                    "value": {
                      "code": "GIVEAWAY_NOT_FOUND_FOR_DRAW_ID",
                      "shopId": "<shopid>",
                      "drawId": "<giveawaydrawid>"
                    }
                  },
                  "offer-not-found-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_ERROR",
                      "offerId": "<offerid>"
                    }
                  },
                  "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "giveaway_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/gift-purchase/{giftPurchaseId}": {
      "get": {
        "tags": [
          "Twitch gift purchases"
        ],
        "summary": "Get gift purchase by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns gift purchase details by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/gift-purchases/get-gift-purchase"
        },
        "operationId": "get-gift-purchase",
        "parameters": [
          {
            "name": "giftPurchaseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "giv_EdJvIXu3SEiXe_QkPavHSA"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `GIVEAWAY_NOT_FOUND`, `OFFER_NOT_FOUND_ERROR`, `OFFER_VARIANT_NOT_FOUND_ERROR`, `SHOP_TEAM_MEMBER_SHOP_NOT_FOUND_ERROR`",
            "content": {
              "application/json": {
                "examples": {
                  "giveaway-not-found": {
                    "value": {
                      "code": "GIVEAWAY_NOT_FOUND",
                      "shopId": "<shopid?>",
                      "giveawayId": "<giveawayid>",
                      "giveawayFriendlyId": "<giveawayfriendlyid?>",
                      "email": "<string?>"
                    }
                  },
                  "offer-not-found-error": {
                    "value": {
                      "code": "OFFER_NOT_FOUND_ERROR",
                      "offerId": "<offerid>"
                    }
                  },
                  "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>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/donations": {
      "get": {
        "tags": [
          "Donations"
        ],
        "summary": "Get all donations",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns all donations with pagination",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/donations/list-donations"
        },
        "operationId": "list-donations",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 5
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.DonationV1"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "donation_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    },
    "/open-api/v1.0/donations/{donationId}": {
      "get": {
        "tags": [
          "Donations"
        ],
        "summary": "Get donation by id",
        "description": "*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*\n\nReturns donation by id",
        "externalDocs": {
          "url": "https://docs.fourthwall.com/api-reference/platform/donations/get-donation"
        },
        "operationId": "get-donation",
        "parameters": [
          {
            "name": "donationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.DonationV1"
                }
              }
            }
          },
          "404": {
            "description": "Possible errors: `DONATION_NOT_FOUND`",
            "content": {
              "application/json": {
                "examples": {
                  "donation-not-found": {
                    "value": {
                      "code": "DONATION_NOT_FOUND",
                      "id": "<donationid>"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited: 100 requests / 10 seconds per shop.",
            "content": {
              "application/json": {
                "examples": {
                  "too-many-requests": {
                    "value": {
                      "code": "OPEN_API_TOO_MANY_REQUESTS",
                      "title": "Too many requests",
                      "status": 429
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth": [
              "donation_read"
            ]
          },
          {
            "basicAuth": []
          }
        ],
        "x-rate-limit": {
          "capacity": 100,
          "periodSeconds": 10,
          "dimension": "shopId",
          "cacheName": "open-api-rate-limiter",
          "applies": [
            {
              "cacheName": "open-api-rate-limiter",
              "filterOrder": 10,
              "capacity": 100,
              "periodSeconds": 10,
              "dimension": "shopId"
            }
          ]
        }
      }
    }
  },
  "components": {
    "schemas": {
      "com.fourthwall.app.openapi.endpoint.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationUpdateRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "allowedTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ORDER_PLACED",
                "ORDER_UPDATED",
                "GIFT_PURCHASE",
                "PRODUCT_CREATED",
                "PRODUCT_UPDATED",
                "DONATION",
                "SUBSCRIPTION_PURCHASED",
                "SUBSCRIPTION_EXPIRED",
                "SUBSCRIPTION_CHANGED",
                "NEWSLETTER_SUBSCRIBED",
                "THANK_YOU_SENT",
                "GIFT_DRAW_STARTED",
                "GIFT_DRAW_ENDED",
                "PROMOTION_CREATED",
                "PROMOTION_UPDATED",
                "PROMOTION_STATUS_CHANGED",
                "PLATFORM_APP_DISCONNECTED",
                "MEMBERSHIP_POST_UPSERTED",
                "MEMBERSHIP_SERIES_UPSERTED",
                "MEMBERSHIP_SERIES_DELETED",
                "MEMBERSHIP_TAG_CREATED",
                "MEMBERSHIP_TAG_UPDATED",
                "MEMBERSHIP_TAG_DELETED",
                "MEMBERSHIP_TIER_UPSERTED",
                "MEMBERSHIP_TIER_DELETED",
                "COLLECTION_UPDATED",
                "CART_ABANDONED_1H",
                "CART_ABANDONED_24H",
                "CART_ABANDONED_72H"
              ]
            }
          }
        },
        "required": [
          "allowedTypes",
          "url"
        ],
        "title": "Webhook Configuration Update Request"
      },
      "com.fourthwall.openapi.model.WebhookConfigurationV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "allowedTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ORDER_PLACED",
                "ORDER_UPDATED",
                "GIFT_PURCHASE",
                "PRODUCT_CREATED",
                "PRODUCT_UPDATED",
                "DONATION",
                "SUBSCRIPTION_PURCHASED",
                "SUBSCRIPTION_EXPIRED",
                "SUBSCRIPTION_CHANGED",
                "NEWSLETTER_SUBSCRIBED",
                "THANK_YOU_SENT",
                "GIFT_DRAW_STARTED",
                "GIFT_DRAW_ENDED",
                "PROMOTION_CREATED",
                "PROMOTION_UPDATED",
                "PROMOTION_STATUS_CHANGED",
                "PLATFORM_APP_DISCONNECTED",
                "MEMBERSHIP_POST_UPSERTED",
                "MEMBERSHIP_SERIES_UPSERTED",
                "MEMBERSHIP_SERIES_DELETED",
                "MEMBERSHIP_TAG_CREATED",
                "MEMBERSHIP_TAG_UPDATED",
                "MEMBERSHIP_TAG_DELETED",
                "MEMBERSHIP_TIER_UPSERTED",
                "MEMBERSHIP_TIER_DELETED",
                "COLLECTION_UPDATED",
                "CART_ABANDONED_1H",
                "CART_ABANDONED_24H",
                "CART_ABANDONED_72H"
              ]
            }
          },
          "apiVersion": {
            "type": "string",
            "enum": [
              "V1"
            ]
          }
        },
        "required": [
          "allowedTypes",
          "apiVersion",
          "id",
          "url"
        ],
        "title": "Webhook Configuration"
      },
      "com.fourthwall.app.openapi.endpoint.StreamingStartedRequest": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.StreamingStartedRequest.Service.Twitch"
                }
              ]
            }
          }
        },
        "required": [
          "services"
        ],
        "title": "Streaming Started Request"
      },
      "com.fourthwall.app.openapi.endpoint.StreamingStartedRequest.Service": {
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Service"
      },
      "com.fourthwall.app.openapi.endpoint.StreamingStartedRequest.Service.Twitch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.StreamingStartedRequest.Service"
          },
          {
            "type": "object",
            "properties": {
              "broadcasterId": {
                "type": "string"
              },
              "broadcasterLogin": {
                "type": "string"
              },
              "thumbnailUrl": {
                "type": "string"
              }
            }
          }
        ],
        "required": [
          "broadcasterId",
          "broadcasterLogin"
        ],
        "title": "Twitch"
      },
      "com.fourthwall.openapi.model.StreamingStatusV1": {
        "type": "object",
        "properties": {
          "shopId": {
            "type": "string"
          },
          "services": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1.Service.Twitch"
                }
              ]
            }
          }
        },
        "required": [
          "services",
          "shopId"
        ],
        "title": "Streaming Status"
      },
      "com.fourthwall.openapi.model.StreamingStatusV1.Service": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "TWITCH": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1.Service.Twitch"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Service"
      },
      "com.fourthwall.openapi.model.StreamingStatusV1.Service.Twitch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.StreamingStatusV1.Service"
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "ONLINE",
                  "OFFLINE"
                ]
              },
              "broadcasterId": {
                "type": "string"
              },
              "broadcasterLogin": {
                "type": "string"
              },
              "thumbnailUrl": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "TWITCH"
              }
            }
          }
        ],
        "required": [
          "status"
        ],
        "title": "Twitch"
      },
      "com.fourthwall.app.openapi.endpoint.StreamingEndedRequest": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "TWITCH"
              ]
            }
          }
        },
        "required": [
          "services"
        ],
        "title": "Streaming Ended Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiShopEndpoint.PublicTokenResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "Public Token Response"
      },
      "Money": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "example": 10,
            "minimum": 0
          },
          "currency": {
            "type": "string",
            "example": "USD"
          }
        },
        "required": [
          "currency",
          "value"
        ],
        "title": "Money"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionLimits": {
        "type": "object",
        "properties": {
          "maximumUse": {
            "type": "integer",
            "format": "int32"
          },
          "oneUsePerCustomer": {
            "type": "boolean"
          }
        },
        "required": [
          "oneUsePerCustomer"
        ],
        "title": "Open Api Promotion Limits"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Shop": {
        "type": "object",
        "properties": {
          "minimumOrderValue": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "title": "Shop"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo": {
        "title": "Open Api Update Promotion Applies To"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo.EntireOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              }
            }
          }
        ],
        "required": [
          "type"
        ],
        "title": "Entire Order"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo.SelectedProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "productIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "oncePerOrder": {
                "type": "boolean"
              }
            }
          }
        ],
        "required": [
          "productIds"
        ],
        "title": "Selected Products"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionRequest": {
        "type": "object",
        "properties": {
          "limits": {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionLimits"
          },
          "requirements": {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Shop"
          },
          "appliesTo": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo.EntireOrder"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiUpdatePromotionAppliesTo.SelectedProducts"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "LIVE",
              "ENDED"
            ]
          }
        },
        "title": "Open Api Update Promotion Request"
      },
      "com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "Live",
                  "Ended",
                  "Archived",
                  "AllUsed"
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop"
              },
              "usageCount": {
                "type": "integer",
                "format": "int32"
              },
              "limits": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1"
              },
              "appliesTo": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrderWithExcludedProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts"
                  }
                ]
              },
              "type": {
                "type": "string",
                "const": "SHOP_AUTO_APPLYING"
              }
            }
          }
        ],
        "required": [
          "appliesTo",
          "code",
          "discount",
          "id",
          "limits",
          "requirements",
          "status",
          "title",
          "type",
          "usageCount"
        ],
        "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": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "Live",
                  "Ended",
                  "Archived",
                  "AllUsed"
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships"
              },
              "usageCount": {
                "type": "integer",
                "format": "int32"
              },
              "subscriptionType": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly"
                  }
                ]
              },
              "tiers": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers"
                  }
                ]
              },
              "type": {
                "type": "string",
                "const": "MEMBERSHIPS_MULTI"
              }
            }
          }
        ],
        "required": [
          "codes",
          "discount",
          "id",
          "requirements",
          "status",
          "subscriptionType",
          "tiers",
          "title",
          "type",
          "usageCount"
        ],
        "title": "Multi Memberships Promotion"
      },
      "com.fourthwall.openapi.model.promotions.MultiPromoSubCodeV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "usageCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "enum": [
              "Live",
              "Ended",
              "Archived",
              "AllUsed"
            ]
          }
        },
        "required": [
          "code",
          "id",
          "status",
          "usageCount"
        ],
        "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": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "Live",
                  "Ended",
                  "Archived",
                  "AllUsed"
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop"
              },
              "limits": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1"
              },
              "usageCount": {
                "type": "integer",
                "format": "int32"
              },
              "appliesTo": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrderWithExcludedProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts"
                  }
                ]
              },
              "type": {
                "type": "string",
                "const": "SHOP_MULTI"
              }
            }
          }
        ],
        "required": [
          "appliesTo",
          "codes",
          "discount",
          "id",
          "limits",
          "requirements",
          "status",
          "title",
          "type",
          "usageCount"
        ],
        "title": "Multi Shop Promotion"
      },
      "com.fourthwall.openapi.model.promotions.PromotionLimitsV1": {
        "type": "object",
        "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"
              }
            }
          }
        ],
        "required": [
          "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"
              }
            }
          }
        ],
        "required": [
          "tiersIds"
        ],
        "title": "Selected Tiers"
      },
      "com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships": {
        "type": "object",
        "properties": {
          "newMembersOnly": {
            "type": "boolean"
          }
        },
        "required": [
          "newMembersOnly"
        ],
        "title": "Memberships"
      },
      "com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop": {
        "type": "object",
        "properties": {
          "minimumOrderValue": {
            "$ref": "#/components/schemas/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",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ENTIRE_ORDER_WITH_EXCLUDED_PRODUCTS"
              }
            }
          }
        ],
        "required": [
          "excludedProducts"
        ],
        "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",
                  "format": "uuid"
                }
              },
              "oncePerOrder": {
                "type": "boolean"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SELECTED_PRODUCTS"
              }
            }
          }
        ],
        "required": [
          "oncePerOrder",
          "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/Money"
              },
              "freeShipping": {
                "type": "boolean"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "FLAT_RATE"
              }
            }
          }
        ],
        "required": [
          "freeShipping",
          "money"
        ],
        "title": "Fixed Amount"
      },
      "com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1"
          },
          {
            "type": "object",
            "properties": {
              "freeProductsType": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.AutoAdded"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.Type.ManuallyAdded"
                  }
                ]
              },
              "freeShipping": {
                "type": "boolean"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "FREE_PRODUCTS"
              }
            }
          }
        ],
        "required": [
          "freeProductsType",
          "freeShipping"
        ],
        "title": "Free Products"
      },
      "com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.AutoAddedFreeProduct": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "Auto Added Free Product"
      },
      "com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts.ManuallyAddedFreeProduct": {
        "type": "object",
        "properties": {
          "availableVariantIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "availableVariantIds",
          "quantity"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "products"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "products"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "lowestOnly"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "percentage"
        ],
        "title": "Percentage"
      },
      "com.fourthwall.openapi.model.promotions.PromotionV1": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "SHOP_SINGLE": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1",
            "SHOP_MULTI": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1",
            "SHOP_AUTO_APPLYING": "#/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1",
            "MEMBERSHIPS_SINGLE": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1",
            "MEMBERSHIPS_MULTI": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Promotion"
      },
      "com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionV1"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsDiscountTypeV1.Percentage"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "Live",
                  "Ended",
                  "Archived",
                  "AllUsed"
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Memberships"
              },
              "usageCount": {
                "type": "integer",
                "format": "int32"
              },
              "subscriptionType": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AllMembers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.AnnualMembersOnly"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsSubscriptionTypeAppliesToV1.MonthlyMembersOnly"
                  }
                ]
              },
              "tiers": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.AllTiers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionMembershipsTiersAppliesToV1.SelectedTiers"
                  }
                ]
              },
              "type": {
                "type": "string",
                "const": "MEMBERSHIPS_SINGLE"
              }
            }
          }
        ],
        "required": [
          "code",
          "discount",
          "id",
          "requirements",
          "status",
          "subscriptionType",
          "tiers",
          "type",
          "usageCount"
        ],
        "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": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FixedAmount"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.FreeShipping"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopDiscountTypeV1.Percentage"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "Live",
                  "Ended",
                  "Archived",
                  "AllUsed"
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionRequirementsV1.Shop"
              },
              "usageCount": {
                "type": "integer",
                "format": "int32"
              },
              "limits": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionLimitsV1"
              },
              "appliesTo": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrder"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.EntireOrderWithExcludedProducts"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.PromotionShopAppliesToV1.SelectedProducts"
                  }
                ]
              },
              "type": {
                "type": "string",
                "const": "SHOP_SINGLE"
              }
            }
          }
        ],
        "required": [
          "appliesTo",
          "code",
          "discount",
          "id",
          "limits",
          "requirements",
          "status",
          "type",
          "usageCount"
        ],
        "title": "Single Shop Promotion"
      },
      "UpdateProductStateV1Request": {
        "type": "object",
        "description": "Request to transition a product (offer) lifecycle state. Only `PUBLIC` and `HIDDEN` are reachable via this endpoint — use `DELETE /products/{productId}` to archive.",
        "properties": {
          "state": {
            "type": "string",
            "description": "Target lifecycle state. `PUBLIC` makes the product visible on the storefront; `HIDDEN` keeps it unlisted. The sold-out (`available`) flag is preserved across the transition — use `PUT /products/{productId}/availability` to flip it.",
            "enum": [
              "PUBLIC",
              "HIDDEN"
            ],
            "example": "PUBLIC"
          }
        },
        "required": [
          "state"
        ],
        "title": "Update Product State V1Request"
      },
      "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.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.OfferAdditionalInformationV1": {
        "type": "object",
        "properties": {
          "sizeAndFit": {
            "type": "string"
          },
          "guaranteeAndReturns": {
            "type": "string"
          },
          "moreDetails": {
            "type": "string"
          }
        },
        "title": "Offer Additional Information"
      },
      "com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt"
          },
          "slug": {
            "type": "string",
            "example": "my-t-shirt"
          },
          "description": {
            "type": "string",
            "example": "My t-shirt description"
          },
          "type": {
            "type": "string",
            "enum": [
              "STANDARD",
              "GIFT_CARD",
              "UNKNOWN"
            ]
          },
          "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"
              }
            ]
          },
          "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"
          }
        },
        "required": [
          "access",
          "createdAt",
          "description",
          "id",
          "images",
          "name",
          "slug",
          "state",
          "type",
          "updatedAt",
          "variants"
        ],
        "title": "Offer Full"
      },
      "com.fourthwall.openapi.model.OfferAbstractV1.OfferSizeGuideV1": {
        "type": "object",
        "properties": {
          "previewUrl": {
            "type": "string"
          },
          "fileUrl": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "fitGuideDescription": {
            "type": "string"
          },
          "fitGuideUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "fitGuideUrls"
        ],
        "title": "Offer Size Guide"
      },
      "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.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.OfferVariantV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt - Black, L"
          },
          "sku": {
            "type": "string",
            "example": "WDEK-DRE200L"
          },
          "unitPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "compareAtPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "unitCost": {
            "$ref": "#/components/schemas/Money"
          },
          "attributes": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes"
          },
          "creatorDeclaredCost": {
            "$ref": "#/components/schemas/Money",
            "description": "Product cost as declared by the creator. Null if not set."
          },
          "stock": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited"
              }
            ]
          },
          "weight": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight"
          },
          "dimensions": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.Image"
            }
          },
          "thumbnailImage": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.Image"
          }
        },
        "required": [
          "attributes",
          "dimensions",
          "id",
          "images",
          "name",
          "sku",
          "stock",
          "unitPrice",
          "weight"
        ],
        "title": "Offer Variant"
      },
      "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.openapi.model.offer.DigitalFileV1": {
        "type": "object",
        "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"
          }
        },
        "required": [
          "name",
          "uri"
        ],
        "title": "Digital File"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiProductEndpoint.UpdateOfferAvailabilityV1Request": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          }
        },
        "required": [
          "available"
        ],
        "title": "Update Offer Availability V1Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiOrderEndpoint.MarkDownloadAsDownloadedRequest": {
        "type": "object",
        "properties": {
          "defaultFileUrl": {
            "type": "string"
          }
        },
        "title": "Mark Download As Downloaded Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.FinishGiveawayRequest": {
        "type": "object",
        "properties": {
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.FinishGiveawayRequest.Participant"
            }
          }
        },
        "required": [
          "participants"
        ],
        "title": "Finish Giveaway Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.FinishGiveawayRequest.Participant": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          }
        },
        "required": [
          "userId",
          "userName"
        ],
        "title": "Participant"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.CreateGiveawayXResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "friendlyId": {
            "type": "string"
          },
          "drawIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "drawIds",
          "friendlyId",
          "id"
        ],
        "title": "Create Giveaway X Response"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.CreateGiveawayCheckoutXRequest": {
        "type": "object",
        "properties": {
          "heading": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "iconUrl": {
            "type": "string"
          },
          "buttonText": {
            "type": "string"
          },
          "disabled": {
            "type": "boolean"
          }
        },
        "required": [
          "buttonText",
          "description",
          "heading",
          "iconUrl"
        ],
        "title": "Create Giveaway Checkout X Request"
      },
      "com.fourthwall.app.openapi.endpoint.DrawFinishedRequest": {
        "type": "object",
        "properties": {
          "participants": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.DrawFinishedRequest.Participant.Twitch"
                }
              ]
            }
          }
        },
        "required": [
          "participants"
        ],
        "title": "Draw Finished Request"
      },
      "com.fourthwall.app.openapi.endpoint.DrawFinishedRequest.Participant": {
        "discriminator": {
          "propertyName": "service"
        },
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "required": [
          "service"
        ],
        "title": "Participant"
      },
      "com.fourthwall.app.openapi.endpoint.DrawFinishedRequest.Participant.Twitch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.DrawFinishedRequest.Participant"
          },
          {
            "type": "object",
            "properties": {
              "userId": {
                "type": "string"
              },
              "userName": {
                "type": "string"
              }
            }
          }
        ],
        "required": [
          "userId",
          "userName"
        ],
        "title": "Twitch"
      },
      "com.fourthwall.openapi.model.GiftDraftV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "gdr_EdJvIXu3SEiXe_QkPavHSA"
          },
          "type": {
            "type": "string",
            "enum": [
              "INITIAL",
              "REDO"
            ]
          },
          "giveawayId": {
            "type": "string",
            "example": "giv_EdJvIXu3SEiXe_QkPavHSA"
          },
          "giveawayFriendlyId": {
            "type": "string",
            "example": "D3XZFWPP"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "offer": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1"
          },
          "amounts": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Amounts"
          },
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "message": {
            "type": "string",
            "example": "Sample message"
          },
          "gifts": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Available"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Cancelled"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToGiftCard"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToPromotion"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift.Redeemed"
                }
              ]
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationSeconds": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "amounts",
          "createdAt",
          "durationSeconds",
          "email",
          "gifts",
          "giveawayFriendlyId",
          "giveawayId",
          "id",
          "offer",
          "shopId",
          "type"
        ],
        "title": "Gift Draft"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Amounts": {
        "type": "object",
        "properties": {
          "subtotal": {
            "$ref": "#/components/schemas/Money"
          },
          "total": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "subtotal",
          "total"
        ],
        "title": "Amounts"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift": {
        "type": "object",
        "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": [
          "id",
          "status"
        ],
        "title": "Gift"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift.Available": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "winner": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "AVAILABLE"
              }
            }
          }
        ],
        "required": [
          "id"
        ],
        "title": "Available"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift.Cancelled": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "winner": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "CANCELLED"
              }
            }
          }
        ],
        "required": [
          "id"
        ],
        "title": "Cancelled"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToGiftCard": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.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.GiftDraftV1.Winner"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "CHANGED_TO_GIFT_CARD"
              }
            }
          }
        ],
        "required": [
          "giftCardId",
          "id",
          "winner"
        ],
        "title": "Changed To Gift Card"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift.ChangedToPromotion": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "promotionId": {
                "type": "string",
                "example": "prm_EdJvIXu3SEiXe_QkPavHSA"
              },
              "winner": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "CHANGED_TO_PROMOTION"
              }
            }
          }
        ],
        "required": [
          "id",
          "promotionId",
          "winner"
        ],
        "title": "Changed To Promotion"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Gift.Redeemed": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Gift"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "orderId": {
                "type": "string",
                "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
              },
              "orderFriendlyId": {
                "type": "string",
                "example": "D3XZFWPP"
              },
              "winner": {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftDraftV1.Winner"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "REDEEMED"
              }
            }
          }
        ],
        "required": [
          "id",
          "orderFriendlyId",
          "orderId",
          "winner"
        ],
        "title": "Redeemed"
      },
      "com.fourthwall.openapi.model.GiftDraftV1.Winner": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "selectedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          },
          "redeemUri": {
            "type": "string"
          }
        },
        "required": [
          "redeemUri",
          "selectedAt"
        ],
        "title": "Winner"
      },
      "com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt"
          },
          "slug": {
            "type": "string",
            "example": "my-t-shirt"
          },
          "description": {
            "type": "string",
            "example": "My t-shirt description"
          },
          "primaryImage": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.Image"
          }
        },
        "required": [
          "description",
          "id",
          "name",
          "slug"
        ],
        "title": "Offer Gift Purchase"
      },
      "ProductsPolicyXRequest": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.AllProducts",
            "SELECTED": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.SelectedProducts",
            "EXCLUDED": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.ExcludedProducts"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Products Policy X Request"
      },
      "ShippingPolicyXRequest": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL_WINNER": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllWinner",
            "ALL_CREATOR": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllCreator",
            "MAX_CREATOR": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.MaxCreator"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Shipping Policy X Request"
      },
      "UpdateGiftingConfigXRequest": {
        "type": "object",
        "description": "The gifting rules to save.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Master flag. Off pauses purchasability without losing the rest."
          },
          "entryTimeLimitSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Entry time limit in seconds. Validated 20-180."
          },
          "shipping": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllCreator"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllWinner"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.MaxCreator"
              }
            ]
          },
          "products": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.AllProducts"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.ExcludedProducts"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.SelectedProducts"
              }
            ]
          }
        },
        "required": [
          "enabled",
          "entryTimeLimitSeconds",
          "products",
          "shipping"
        ],
        "title": "Update Gifting Config X Request"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.AllProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL"
              }
            }
          }
        ],
        "title": "All Products"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.ExcludedProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "offerIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "EXCLUDED"
              }
            }
          }
        ],
        "required": [
          "offerIds"
        ],
        "title": "Excluded Products"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXRequest.SelectedProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "offerIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SELECTED"
              }
            }
          }
        ],
        "required": [
          "offerIds"
        ],
        "title": "Selected Products"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllCreator": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL_CREATOR"
              }
            }
          }
        ],
        "title": "All Creator"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.AllWinner": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL_WINNER"
              }
            }
          }
        ],
        "title": "All Winner"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXRequest.MaxCreator": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXRequest"
          },
          {
            "type": "object",
            "properties": {
              "max": {
                "type": "number",
                "format": "double"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "MAX_CREATOR"
              }
            }
          }
        ],
        "required": [
          "max"
        ],
        "title": "Max Creator"
      },
      "GiftingConfigXResponse": {
        "type": "object",
        "description": "A shop's saved gifting rules.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Master \"gift while live\" flag."
          },
          "entryTimeLimitSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Entry time limit in seconds (20-180), maps to the giveaway duration."
          },
          "shipping": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllCreator"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllWinner"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.MaxCreator"
              }
            ]
          },
          "products": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.AllProducts"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.ExcludedProducts"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.SelectedProducts"
              }
            ]
          },
          "platform": {
            "type": "string",
            "description": "Current giveaway platform owning the shop's single gifting slot. Read-only conflict signal — TWITCH or STREAMELEMENTS means another integration owns the slot. A Kick shop operates on the OPEN_API slot.",
            "enum": [
              "TWITCH",
              "STREAMELEMENTS",
              "OPEN_API",
              "NOT_SELECTED"
            ]
          }
        },
        "required": [
          "enabled",
          "entryTimeLimitSeconds",
          "platform",
          "products",
          "shipping"
        ],
        "title": "Gifting Config X Response"
      },
      "ProductsPolicyXResponse": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.AllProducts",
            "SELECTED": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.SelectedProducts",
            "EXCLUDED": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.ExcludedProducts"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Products Policy X Response"
      },
      "ShippingPolicyXResponse": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL_WINNER": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllWinner",
            "ALL_CREATOR": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllCreator",
            "MAX_CREATOR": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.MaxCreator"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Shipping Policy X Response"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.AllProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL"
              }
            }
          }
        ],
        "title": "All Products"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.ExcludedProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "offerIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "EXCLUDED"
              }
            }
          }
        ],
        "required": [
          "offerIds"
        ],
        "title": "Excluded Products"
      },
      "com.fourthwall.app.openapi.endpoint.ProductsPolicyXResponse.SelectedProducts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductsPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "offerIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SELECTED"
              }
            }
          }
        ],
        "required": [
          "offerIds"
        ],
        "title": "Selected Products"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllCreator": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL_CREATOR"
              }
            }
          }
        ],
        "title": "All Creator"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.AllWinner": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL_WINNER"
              }
            }
          }
        ],
        "title": "All Winner"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingPolicyXResponse.MaxCreator": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ShippingPolicyXResponse"
          },
          {
            "type": "object",
            "properties": {
              "max": {
                "type": "number",
                "format": "double"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "MAX_CREATOR"
              }
            }
          }
        ],
        "required": [
          "max"
        ],
        "title": "Max Creator"
      },
      "com.fourthwall.openapi.model.UpdateCollectionV1Request": {
        "type": "object",
        "description": "Request to update a collection",
        "properties": {
          "name": {
            "type": "string",
            "example": "My collection"
          },
          "description": {
            "type": "string",
            "example": "My collection description"
          },
          "offerIds": {
            "type": "array",
            "description": "List of product IDs to set in the collection",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "title": "Update Collection V1Request"
      },
      "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",
        "required": [
          "available"
        ],
        "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",
        "required": [
          "available"
        ],
        "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",
        "required": [
          "available"
        ],
        "title": "Public"
      },
      "com.fourthwall.openapi.model.CollectionV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "col_b1EVARkUTcCTSfspQaXr1Q"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "name": {
            "type": "string",
            "example": "My collection"
          },
          "slug": {
            "type": "string",
            "example": "my-collection"
          },
          "description": {
            "type": "string",
            "example": "My collection description"
          },
          "available": {
            "type": "boolean"
          },
          "state": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Archived"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Hidden"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Private"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Public"
              }
            ]
          },
          "offerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "available",
          "description",
          "id",
          "name",
          "offerIds",
          "shopId",
          "slug",
          "state"
        ],
        "title": "Collection"
      },
      "com.fourthwall.openapi.model.UpdateCollectionProductsV1Request": {
        "type": "object",
        "description": "Request to set the products in a collection",
        "properties": {
          "offerIds": {
            "type": "array",
            "description": "Full list of product IDs to set in the collection",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "offerIds"
        ],
        "title": "Update Collection Products V1Request"
      },
      "com.fourthwall.openapi.model.UpdateCollectionAvailabilityV1Request": {
        "type": "object",
        "description": "Request to update collection availability",
        "properties": {
          "available": {
            "type": "boolean"
          }
        },
        "required": [
          "available"
        ],
        "title": "Update Collection Availability V1Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiWebhookConfigurationEndpoint.WebhookConfigurationCreateRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "allowedTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ORDER_PLACED",
                "ORDER_UPDATED",
                "GIFT_PURCHASE",
                "PRODUCT_CREATED",
                "PRODUCT_UPDATED",
                "DONATION",
                "SUBSCRIPTION_PURCHASED",
                "SUBSCRIPTION_EXPIRED",
                "SUBSCRIPTION_CHANGED",
                "NEWSLETTER_SUBSCRIBED",
                "THANK_YOU_SENT",
                "GIFT_DRAW_STARTED",
                "GIFT_DRAW_ENDED",
                "PROMOTION_CREATED",
                "PROMOTION_UPDATED",
                "PROMOTION_STATUS_CHANGED",
                "PLATFORM_APP_DISCONNECTED",
                "MEMBERSHIP_POST_UPSERTED",
                "MEMBERSHIP_SERIES_UPSERTED",
                "MEMBERSHIP_SERIES_DELETED",
                "MEMBERSHIP_TAG_CREATED",
                "MEMBERSHIP_TAG_UPDATED",
                "MEMBERSHIP_TAG_DELETED",
                "MEMBERSHIP_TIER_UPSERTED",
                "MEMBERSHIP_TIER_DELETED",
                "COLLECTION_UPDATED",
                "CART_ABANDONED_1H",
                "CART_ABANDONED_24H",
                "CART_ABANDONED_72H"
              ]
            }
          }
        },
        "required": [
          "allowedTypes",
          "url"
        ],
        "title": "Webhook Configuration Create Request"
      },
      "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "shopId",
          "supporter"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "shopId",
          "supporter"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "shopId",
          "supporter"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "shopId",
          "supporter"
        ],
        "title": "Order"
      },
      "com.fourthwall.openapi.model.ThankYouContribution.Supporter": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "message": {
            "type": "string",
            "example": "Sample message"
          }
        },
        "required": [
          "email"
        ],
        "title": "Supporter"
      },
      "com.fourthwall.openapi.model.ThankYouV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "ty_EdJvIXu3SEiXe_QkPavHSA"
          },
          "mediaUrl": {
            "type": "string",
            "example": "https://fourthwall.com/thankyou/ty_EdJvIXu3SEiXe_QkPavHSA"
          },
          "contribution": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Donation"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.GiftPurchase"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Membership"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.ThankYouContribution.Order"
              }
            ]
          }
        },
        "required": [
          "contribution",
          "id",
          "mediaUrl"
        ],
        "title": "Thank You"
      },
      "com.fourthwall.openapi.model.samples.SampleCheckoutItemV1": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "Sample Checkout Item"
      },
      "com.fourthwall.openapi.model.samples.SampleCheckoutRequestV1": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.samples.SampleCheckoutItemV1"
            }
          },
          "challengeDefinitionId": {
            "type": "string"
          }
        },
        "required": [
          "items"
        ],
        "title": "Sample Checkout Request"
      },
      "com.fourthwall.openapi.model.samples.SampleCheckoutResponseV1": {
        "type": "object",
        "properties": {
          "checkoutPath": {
            "type": "string"
          }
        },
        "required": [
          "checkoutPath"
        ],
        "title": "Sample Checkout Response"
      },
      "MEMBERSHIPS_MULTI": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiCreatePromotionRequest"
          },
          {
            "type": "object",
            "properties": {
              "codes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage"
                  }
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Memberships"
              },
              "subscriptionType": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly"
                  }
                ]
              },
              "tiers": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers"
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "MEMBERSHIPS_MULTI"
              }
            }
          }
        ],
        "required": [
          "codes",
          "discount"
        ],
        "title": "MEMBERSHIPS_MULTI"
      },
      "MEMBERSHIPS_SINGLE": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiCreatePromotionRequest"
          },
          {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage"
                  }
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Memberships"
              },
              "subscriptionType": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly"
                  }
                ]
              },
              "tiers": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers"
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "MEMBERSHIPS_SINGLE"
              }
            }
          }
        ],
        "required": [
          "code",
          "discount"
        ],
        "title": "MEMBERSHIPS_SINGLE"
      },
      "SHOP_MULTI": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiCreatePromotionRequest"
          },
          {
            "type": "object",
            "properties": {
              "codes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FreeShipping"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage"
                  }
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Shop"
              },
              "appliesToProducts": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionSelectedProducts"
              },
              "limits": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionLimits"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SHOP_MULTI"
              }
            }
          }
        ],
        "required": [
          "codes",
          "discount"
        ],
        "title": "SHOP_MULTI"
      },
      "SHOP_SINGLE": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiCreatePromotionRequest"
          },
          {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "discount": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FreeShipping"
                  },
                  {
                    "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage"
                  }
                ]
              },
              "requirements": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Shop"
              },
              "appliesToProducts": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionSelectedProducts"
              },
              "limits": {
                "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionLimits"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SHOP_SINGLE"
              }
            }
          }
        ],
        "required": [
          "code",
          "discount"
        ],
        "title": "SHOP_SINGLE"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiCreatePromotionRequest": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "SHOP_SINGLE": "#/components/schemas/SHOP_SINGLE",
            "SHOP_MULTI": "#/components/schemas/SHOP_MULTI",
            "MEMBERSHIPS_SINGLE": "#/components/schemas/MEMBERSHIPS_SINGLE",
            "MEMBERSHIPS_MULTI": "#/components/schemas/MEMBERSHIPS_MULTI"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Open Api Create Promotion Request"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "PERCENTAGE": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Memberships"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships.Percentage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Memberships"
          },
          {
            "type": "object",
            "properties": {
              "percentage": {
                "type": "number"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "PERCENTAGE"
              }
            }
          }
        ],
        "required": [
          "percentage"
        ],
        "title": "Percentage"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "PERCENTAGE": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage",
            "FLAT_RATE": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount",
            "FREE_SHIPPING": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FreeShipping"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Shop"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FixedAmount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop"
          },
          {
            "type": "object",
            "properties": {
              "money": {
                "$ref": "#/components/schemas/Money"
              },
              "freeShipping": {
                "type": "boolean"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "FLAT_RATE"
              }
            }
          }
        ],
        "required": [
          "freeShipping",
          "money"
        ],
        "title": "Fixed Amount"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.FreeShipping": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "FREE_SHIPPING"
              }
            }
          }
        ],
        "title": "Free Shipping"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop.Percentage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionDiscountType.Shop"
          },
          {
            "type": "object",
            "properties": {
              "percentage": {
                "type": "number"
              },
              "shipping": {
                "type": "string",
                "enum": [
                  "Excluded",
                  "Included",
                  "FreeLowestOnly",
                  "Free"
                ]
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "PERCENTAGE"
              }
            }
          }
        ],
        "required": [
          "percentage",
          "shipping"
        ],
        "title": "Percentage"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers",
            "MONTHLY": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly",
            "ANNUAL": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Open Api Promotion Membership Subscription Type Applies To"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AllMembers": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL"
              }
            }
          }
        ],
        "title": "All Members"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.AnnualMembersOnly": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ANNUAL"
              }
            }
          }
        ],
        "title": "Annual Members Only"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo.MonthlyMembersOnly": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipSubscriptionTypeAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "MONTHLY"
              }
            }
          }
        ],
        "title": "Monthly Members Only"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo": {
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ALL": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers",
            "SELECTED": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Open Api Promotion Membership Tiers Applies To"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.AllTiers": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "ALL"
              }
            }
          }
        ],
        "title": "All Tiers"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo.SelectedTiers": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionMembershipTiersAppliesTo"
          },
          {
            "type": "object",
            "properties": {
              "ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "SELECTED"
              }
            }
          }
        ],
        "required": [
          "ids"
        ],
        "title": "Selected Tiers"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionRequirements.Memberships": {
        "type": "object",
        "properties": {
          "newMembersOnly": {
            "type": "boolean"
          }
        },
        "required": [
          "newMembersOnly"
        ],
        "title": "Memberships"
      },
      "com.fourthwall.app.openapi.endpoint.model.requests.promotions.OpenApiPromotionSelectedProducts": {
        "type": "object",
        "properties": {
          "productIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "oncePerOrder": {
            "type": "boolean"
          }
        },
        "required": [
          "productIds"
        ],
        "title": "Open Api Promotion Selected Products"
      },
      "CreateCustomizationProductRequestV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.CreateProductRequestV1"
          },
          {
            "type": "object",
            "properties": {
              "customizationId": {
                "type": "string",
                "description": "Id of the customization to build the product from, from `POST /open-api/v1.0/customizations`.",
                "example": "cud_k66ZW4fsRm6c2def3itltA"
              },
              "name": {
                "type": "string",
                "description": "Product name. Defaults to the product template name when omitted.",
                "example": "My Awesome Design Tee"
              },
              "description": {
                "type": "string",
                "description": "Product description"
              },
              "profitMargin": {
                "type": "number",
                "description": "Profit margin in USD applied on top of the base cost.",
                "example": 10
              },
              "publishOnCreate": {
                "type": "boolean",
                "description": "Publish the product immediately on creation. Defaults to false (product stays hidden)."
              }
            }
          }
        ],
        "description": "Create a product from an existing customization (design sketch). The design pipeline renders the customization's stored design into mockups and creates a purchasable product — no regions or product template are supplied here, they come from the customization. Create the customization first via `POST /open-api/v1.0/customizations`. The product is created hidden unless `publishOnCreate` is true.",
        "required": [
          "customizationId",
          "type"
        ],
        "title": "Create Customization Product Request"
      },
      "CreateDesignProductRequestV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.CreateProductRequestV1"
          },
          {
            "type": "object",
            "properties": {
              "productTemplateId": {
                "type": "string",
                "description": "Id of the product template to render the design onto, from `GET /open-api/v1.0/product-templates`.",
                "example": "pro_k66ZW4fsRm6c2def3itltA"
              },
              "regions": {
                "type": "array",
                "description": "Design regions to place on the product. Each region references a registered media image by id (register it via `POST /open-api/v1.0/media/images` and pass the returned id as `imageId`).",
                "items": {
                  "$ref": "#/components/schemas/ProductDesignRegionV1"
                }
              },
              "colors": {
                "type": "array",
                "description": "Colors to render. Defaults to all available product colors when omitted. Values not offered by the product are ignored; the request is rejected with 400 if none of the supplied colors are available.",
                "items": {
                  "type": "string"
                }
              },
              "sizes": {
                "type": "array",
                "description": "Sizes to include. Defaults to all available product sizes when omitted. Values not offered by the product are ignored; the request is rejected with 400 if none of the supplied sizes are available. When both colors and sizes are supplied, the request is also rejected with 400 if no requested color/size combination is an available variant.",
                "items": {
                  "type": "string"
                }
              },
              "name": {
                "type": "string",
                "description": "Product name",
                "example": "My Awesome Design Tee"
              },
              "description": {
                "type": "string",
                "description": "Product description",
                "example": "Limited edition design"
              },
              "profitMargin": {
                "type": "number",
                "description": "Profit margin in USD applied on top of the base cost.",
                "example": 10
              },
              "publishOnCreate": {
                "type": "boolean",
                "description": "Publish the product immediately on creation. Defaults to false (product stays hidden)."
              }
            }
          }
        ],
        "description": "Create a product by running the design pipeline: renders each region's registered image into mockups and creates a purchasable product. The product is created hidden unless `publishOnCreate` is true.",
        "required": [
          "name",
          "productTemplateId",
          "regions",
          "type"
        ],
        "title": "Create Design Product Request"
      },
      "CreateDigitalProductRequestV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.CreateProductRequestV1"
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Product name",
                "example": "My Digital Product"
              },
              "description": {
                "type": "string",
                "description": "Product description",
                "example": "A detailed description of my digital product"
              },
              "price": {
                "type": "number",
                "description": "Price set by the creator, in USD.",
                "example": 19.99
              },
              "publishOnCreate": {
                "type": "boolean",
                "description": "Publish the product immediately on creation. Defaults to false (product stays hidden)."
              }
            }
          }
        ],
        "description": "Create a digital product with a creator-set price in USD and digital fulfillment. Attach files and images via the /products/{productId}/digital-files and /products/{productId}/images endpoints.",
        "required": [
          "description",
          "name",
          "price",
          "type"
        ],
        "title": "Create Digital Product Request"
      },
      "ProductDesignRegionV1": {
        "type": "object",
        "description": "A product region paired with the registered media image to render on it.",
        "properties": {
          "region": {
            "type": "string",
            "description": "Name of the product region to place the image on, e.g. `front` or `back`.",
            "example": "front"
          },
          "imageId": {
            "type": "string",
            "description": "Id of a registered media-library image to render on the region. Register the image first via `POST /open-api/v1.0/media/images` and pass the returned id here.",
            "example": "img_k66ZW4fsRm6c2def3itltA"
          },
          "placementId": {
            "type": "string",
            "description": "Placement to target when `placementStrategy` is `PLACEMENT_ID`. Required for that strategy and ignored by the others."
          },
          "placementStrategy": {
            "type": "string",
            "description": "How the image is placed on the region. Defaults to `AUTO` when omitted, and takes precedence over `placementId`/`fillAllPlacements`.\n- `AUTO` — let the renderer decide using the product's automation defaults (its preferred placement, or fill-all for products like mugs/stickers).\n- `FILL_ALL` — apply the image to every placement in the region.\n- `FULL_REGION` — render the image across the full region, skipping the preferred placement.\n- `PLACEMENT_ID` — target the single placement named by `placementId` (required for this strategy).",
            "enum": [
              "AUTO",
              "FILL_ALL",
              "FULL_REGION",
              "PLACEMENT_ID"
            ],
            "example": "AUTO"
          }
        },
        "required": [
          "imageId",
          "region"
        ],
        "title": "Product Design Region"
      },
      "com.fourthwall.openapi.model.offer.CreateProductRequestV1": {
        "type": "object",
        "description": "Request to create a product. The shape is discriminated by the `type` field.",
        "discriminator": {
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/CreateDesignProductRequestV1"
          },
          {
            "$ref": "#/components/schemas/CreateDigitalProductRequestV1"
          },
          {
            "$ref": "#/components/schemas/CreateCustomizationProductRequestV1"
          }
        ],
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Create Product Request"
      },
      "com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "style": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "size": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "required": [
          "color",
          "height",
          "style",
          "url",
          "width"
        ],
        "title": "Design Pipeline Image"
      },
      "com.fourthwall.openapi.model.offer.CreateProductResponseV1": {
        "type": "object",
        "description": "Response returned after creating a product.",
        "properties": {
          "productId": {
            "type": "string",
            "description": "ID of the created product"
          },
          "customizationId": {
            "type": "string",
            "description": "Customization used to back the product, when applicable"
          },
          "images": {
            "type": "array",
            "description": "Rendered product images",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1"
            }
          }
        },
        "required": [
          "images"
        ],
        "title": "Create Product Response"
      },
      "com.fourthwall.openapi.model.offer.AttachProductImagesRequestV1": {
        "type": "object",
        "description": "Request to attach images to a product",
        "properties": {
          "images": {
            "type": "array",
            "description": "List of images to attach",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.offer.AttachProductImagesRequestV1.ImageInput"
            }
          }
        },
        "required": [
          "images"
        ],
        "title": "Attach Product Images Request"
      },
      "com.fourthwall.openapi.model.offer.AttachProductImagesRequestV1.ImageInput": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Image URL",
            "example": "https://fourthwall.com/image.png"
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "description": "Image width in pixels",
            "example": 800
          },
          "height": {
            "type": "integer",
            "format": "int32",
            "description": "Image height in pixels",
            "example": 600
          }
        },
        "required": [
          "height",
          "url",
          "width"
        ],
        "title": "Image Input"
      },
      "com.fourthwall.openapi.model.offer.ConfirmDigitalFileRequestV1": {
        "type": "object",
        "description": "Request to confirm and link an uploaded digital file to an offer",
        "properties": {
          "fileUrl": {
            "type": "string",
            "description": "The file URL returned from the upload-url endpoint"
          },
          "fileName": {
            "type": "string",
            "description": "Display name for the file",
            "example": "my-ebook.pdf"
          }
        },
        "required": [
          "fileName",
          "fileUrl"
        ],
        "title": "Confirm Digital File Request"
      },
      "com.fourthwall.openapi.model.offer.DigitalFileUploadRequestV1": {
        "type": "object",
        "description": "Request for a presigned upload URL for a digital file",
        "properties": {
          "fileName": {
            "type": "string",
            "description": "Name of the file",
            "example": "artwork.png"
          },
          "contentType": {
            "type": "string",
            "description": "MIME type of the file",
            "example": "image/png"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "description": "Size of the file in bytes. Must match the `x-goog-content-length-range` header sent when uploading the bytes to `uploadUrl`.",
            "example": 1048576
          }
        },
        "required": [
          "contentType",
          "fileName",
          "size"
        ],
        "title": "Digital File Upload Request"
      },
      "com.fourthwall.openapi.model.offer.DigitalFileUploadResponseV1": {
        "type": "object",
        "description": "Response containing a presigned upload URL for a digital file",
        "properties": {
          "uploadUrl": {
            "type": "string",
            "description": "Presigned URL to upload the file to via HTTP PUT"
          },
          "fileUrl": {
            "type": "string",
            "description": "The file URL reference to use when confirming the upload"
          }
        },
        "required": [
          "fileUrl",
          "uploadUrl"
        ],
        "title": "Digital File Upload Response"
      },
      "com.fourthwall.app.openapi.endpoint.TokenRequest": {
        "type": "object",
        "description": "OAuth 2.0 token request",
        "properties": {
          "client_id": {
            "type": "string",
            "description": "OAuth application client ID",
            "example": "app_12345"
          },
          "client_secret": {
            "type": "string",
            "description": "OAuth application client secret (required for confidential clients)"
          },
          "redirect_uri": {
            "type": "string",
            "description": "Redirect URI used during authorization (required for authorization_code grant)",
            "example": "https://example.com/callback"
          },
          "grant_type": {
            "type": "string",
            "description": "OAuth grant type",
            "enum": [
              "authorization_code",
              "refresh_token"
            ],
            "example": "authorization_code"
          },
          "code": {
            "type": "string",
            "description": "Authorization code (required for authorization_code grant)"
          },
          "refresh_token": {
            "type": "string",
            "description": "Refresh token (required for refresh_token grant)"
          },
          "code_verifier": {
            "type": "string",
            "description": "PKCE code verifier (required for public clients using authorization_code grant)"
          }
        },
        "required": [
          "client_id",
          "grant_type"
        ],
        "title": "Token Request"
      },
      "com.fourthwall.openapi.model.media.RequestUploadUrlV1": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "description": "Name of the file",
            "example": "artwork.png"
          },
          "contentType": {
            "type": "string",
            "description": "MIME type of the file",
            "example": "image/png"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "description": "Size of the file in bytes. Must match the `x-goog-content-length-range` header sent when uploading the bytes to `uploadUrl`.",
            "example": 1048576
          }
        },
        "required": [
          "contentType",
          "fileName",
          "size"
        ],
        "title": "Request Upload Url"
      },
      "com.fourthwall.openapi.model.media.UploadUrlResponseV1": {
        "type": "object",
        "properties": {
          "uploadUrl": {
            "type": "string"
          },
          "fileUrl": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "fileUrl",
          "uploadUrl"
        ],
        "title": "Upload Url Response"
      },
      "com.fourthwall.openapi.model.media.SaveMediaImageRequestV1": {
        "type": "object",
        "properties": {
          "fileUrl": {
            "type": "string"
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "fileUrl",
          "height",
          "width"
        ],
        "title": "Save Media Image Request"
      },
      "com.fourthwall.openapi.model.media.MediaImageV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "thumbnail": {
            "type": "string"
          },
          "preview": {
            "type": "string"
          }
        },
        "required": [
          "height",
          "id",
          "preview",
          "thumbnail",
          "uri",
          "width"
        ],
        "title": "Media Image"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiGiveawayEndpoint.CreateGiveawayXRequest": {
        "type": "object",
        "properties": {
          "offerId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "username": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "offerId",
          "quantity"
        ],
        "title": "Create Giveaway X Request"
      },
      "com.fourthwall.app.openapi.endpoint.CreateGiveawayLinksV1Request": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "number",
          "productId"
        ],
        "title": "Create Giveaway Links V1Request"
      },
      "com.fourthwall.openapi.model.GiveawayLinksV1": {
        "type": "object",
        "properties": {
          "packageId": {
            "type": "string",
            "example": "gpg_EdJvIXu3SEiXe_QkPavHSA"
          },
          "giveawayLinks": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Available"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Cancelled"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Redeemed"
                }
              ]
            }
          }
        },
        "required": [
          "giveawayLinks",
          "packageId"
        ],
        "title": "Giveaway Links"
      },
      "com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1": {
        "discriminator": {
          "propertyName": "status",
          "mapping": {
            "AVAILABLE": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Available",
            "CANCELLED": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Cancelled",
            "REDEEMED": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Redeemed"
          }
        },
        "properties": {
          "status": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "title": "Giveaway Link"
      },
      "com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Available": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "link": {
                "type": "string",
                "example": "https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "productId": {
                "type": "string",
                "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "example": "2020-08-13T09:05:36.939Z"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "AVAILABLE"
              }
            }
          }
        ],
        "required": [
          "createdAt",
          "id",
          "link",
          "productId"
        ],
        "title": "Available"
      },
      "com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Cancelled": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "link": {
                "type": "string",
                "example": "https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "productId": {
                "type": "string",
                "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "example": "2020-08-13T09:05:36.939Z"
              },
              "cancelledAt": {
                "type": "string",
                "format": "date-time",
                "example": "2020-08-13T09:05:36.939Z"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "CANCELLED"
              }
            }
          }
        ],
        "required": [
          "cancelledAt",
          "createdAt",
          "id",
          "link",
          "productId"
        ],
        "title": "Cancelled"
      },
      "com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1.Redeemed": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayLinksV1.GiveawayLinkV1"
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "link": {
                "type": "string",
                "example": "https://fourthwall.com/gifts/gft_EdJvIXu3SEiXe_QkPavHSA"
              },
              "productId": {
                "type": "string",
                "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "example": "2020-08-13T09:05:36.939Z"
              },
              "redeemedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2020-08-13T09:05:36.939Z"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "REDEEMED"
              }
            }
          }
        ],
        "required": [
          "createdAt",
          "id",
          "link",
          "productId",
          "redeemedAt"
        ],
        "title": "Redeemed"
      },
      "com.fourthwall.app.openapi.endpoint.CreateGiftingCheckoutV1Request": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "description": "The product variant to gift. Its owning product is derived from this; the recipient's checkout is pre-set to this variant.",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "description": "How many of the variant to gift.",
            "example": 1,
            "maximum": 10000,
            "minimum": 1
          },
          "currency": {
            "type": "string",
            "description": "Display currency for the checkout. Defaults to the shop's currency.",
            "enum": [
              "USD",
              "EUR",
              "CAD",
              "GBP",
              "AUD",
              "NZD",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "INR",
              "JPY",
              "MYR",
              "SGD",
              "MXN",
              "BRL",
              "CHF"
            ],
            "example": "USD"
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "Create Gifting Checkout V1Request"
      },
      "GiftingCheckoutV1": {
        "type": "object",
        "properties": {
          "checkoutId": {
            "type": "string",
            "description": "Id of the created checkout.",
            "example": "ch_BV44UYrXQA2T_Xcf1288tw"
          },
          "checkoutUrl": {
            "type": "string",
            "description": "Absolute, directable checkout URL on the shop's domain.",
            "example": "https://shop.fourthwall.com/checkout/ch_BV44UYrXQA2T_Xcf1288tw"
          }
        },
        "required": [
          "checkoutId",
          "checkoutUrl"
        ],
        "title": "Gifting Checkout"
      },
      "com.fourthwall.app.openapi.endpoint.FulfillmentItem": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "Fulfillment Item"
      },
      "com.fourthwall.app.openapi.endpoint.FulfillmentRequest": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.FulfillmentItem"
            },
            "minItems": 1
          },
          "shippingLabel": {
            "$ref": "#/components/schemas/com.fourthwall.app.openapi.endpoint.ShippingLabel"
          }
        },
        "required": [
          "items",
          "orderId",
          "shippingLabel"
        ],
        "title": "Fulfillment Request"
      },
      "com.fourthwall.app.openapi.endpoint.ShippingLabel": {
        "type": "object",
        "properties": {
          "trackingNumber": {
            "type": "string",
            "minLength": 1
          },
          "trackingCompany": {
            "type": "string",
            "example": "USPS",
            "examples": [
              "DHL",
              "UPS",
              "USPS",
              "Canada Post"
            ],
            "minLength": 1
          }
        },
        "required": [
          "trackingCompany",
          "trackingNumber"
        ],
        "title": "Shipping Label"
      },
      "com.fourthwall.app.openapi.endpoint.FulfillmentResponse": {
        "type": "object",
        "properties": {
          "fulfillmentId": {
            "type": "string"
          }
        },
        "required": [
          "fulfillmentId"
        ],
        "title": "Fulfillment Response"
      },
      "com.fourthwall.openapi.model.CreateExternalOrderRequest": {
        "type": "object",
        "properties": {
          "externalOrderId": {
            "type": "string",
            "example": "ETSY-123456789",
            "minLength": 1
          },
          "externalSource": {
            "type": "string",
            "example": "ETSY",
            "minLength": 1
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderItemWithIdRequest"
            },
            "minItems": 1
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderAddressRequest"
          },
          "billingAddress": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderAddressRequest"
          },
          "customerEmail": {
            "type": "string",
            "example": "customer@example.com"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "taxOverride": {
            "type": "string",
            "description": "Admin-only tax treatment override. COLLECT forces tax collection; SKIP forces no tax. Omit to use the default merchant-of-record rules. Honored only for internal Fourthwall admins; any other caller that sets it is rejected.",
            "enum": [
              "COLLECT",
              "SKIP"
            ],
            "example": "SKIP"
          },
          "taxOverrideReason": {
            "type": "string",
            "description": "Justification for the override. Required when taxOverride = SKIP.",
            "example": "Customer is the merchant of record (resale)"
          }
        },
        "required": [
          "billingAddress",
          "externalOrderId",
          "externalSource",
          "items",
          "shippingAddress"
        ],
        "title": "Create External Order Request"
      },
      "com.fourthwall.openapi.model.ExternalOrderAddressRequest": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "example": "John",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "example": "Doe",
            "minLength": 1
          },
          "address1": {
            "type": "string",
            "example": "123 Main Street",
            "minLength": 1
          },
          "address2": {
            "type": "string",
            "example": "Apt 4B"
          },
          "city": {
            "type": "string",
            "example": "San Francisco",
            "minLength": 1
          },
          "state": {
            "type": "string",
            "example": "CA"
          },
          "zip": {
            "type": "string",
            "example": "94105",
            "minLength": 1
          },
          "country": {
            "type": "string",
            "example": "US",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "example": "+1-555-123-4567"
          }
        },
        "required": [
          "address1",
          "city",
          "country",
          "firstName",
          "lastName",
          "zip"
        ],
        "title": "External Order Address Request"
      },
      "com.fourthwall.openapi.model.ExternalOrderItemWithIdRequest": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "example": "c2b6d0e3-4f5g-6h7i-8j9k-0l1m2n3o4p5q",
            "minLength": 1
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "example": 2,
            "minimum": 1
          },
          "externalLineItemId": {
            "type": "string",
            "example": "etsy-line-item-123"
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "External Order Item With Id Request"
      },
      "com.fourthwall.openapi.model.ExternalOrderAddressV1": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "example": "Doe"
          },
          "address1": {
            "type": "string",
            "example": "123 Main Street"
          },
          "address2": {
            "type": "string",
            "example": "Apt 4B"
          },
          "city": {
            "type": "string",
            "example": "San Francisco"
          },
          "state": {
            "type": "string",
            "example": "CA"
          },
          "zip": {
            "type": "string",
            "example": "94105"
          },
          "country": {
            "type": "string",
            "example": "US"
          },
          "phone": {
            "type": "string",
            "example": "+1-555-123-4567"
          }
        },
        "required": [
          "address1",
          "city",
          "country",
          "firstName",
          "lastName",
          "zip"
        ],
        "title": "External Order Address"
      },
      "com.fourthwall.openapi.model.ExternalOrderCostsV1": {
        "type": "object",
        "properties": {
          "fulfillmentFee": {
            "$ref": "#/components/schemas/Money"
          },
          "manufacturingCost": {
            "$ref": "#/components/schemas/Money"
          },
          "shippingCost": {
            "$ref": "#/components/schemas/Money"
          },
          "totalCreatorCost": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "fulfillmentFee",
          "manufacturingCost",
          "shippingCost",
          "totalCreatorCost"
        ],
        "title": "External Order Costs"
      },
      "com.fourthwall.openapi.model.ExternalOrderItemV1": {
        "type": "object",
        "properties": {
          "offerId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "example": 2
          },
          "externalLineItemId": {
            "type": "string",
            "example": "etsy-line-item-123"
          },
          "unitCost": {
            "$ref": "#/components/schemas/Money"
          },
          "totalCost": {
            "$ref": "#/components/schemas/Money"
          },
          "itemFulfillmentFee": {
            "$ref": "#/components/schemas/Money"
          },
          "itemShippingCost": {
            "$ref": "#/components/schemas/Money"
          },
          "itemTotalCreatorCost": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "itemFulfillmentFee",
          "itemShippingCost",
          "itemTotalCreatorCost",
          "offerId",
          "quantity",
          "totalCost",
          "unitCost",
          "variantId"
        ],
        "title": "External Order Item"
      },
      "com.fourthwall.openapi.model.ExternalOrderV1": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid",
            "example": "b1a5c9d2-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
          },
          "externalOrderId": {
            "type": "string",
            "example": "ETSY-123456789"
          },
          "externalSource": {
            "type": "string",
            "example": "ETSY"
          },
          "friendlyId": {
            "type": "string",
            "example": "T4YTE8HA"
          },
          "status": {
            "type": "string",
            "example": "CONFIRMED"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderItemV1"
            }
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderAddressV1"
          },
          "costs": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderCostsV1"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "costs",
          "createdAt",
          "externalOrderId",
          "externalSource",
          "friendlyId",
          "items",
          "orderId",
          "shippingAddress",
          "status",
          "updatedAt"
        ],
        "title": "External Order"
      },
      "com.fourthwall.openapi.model.CancelExternalOrderRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason for cancellation (for audit purposes)",
            "example": "Customer requested cancellation on marketplace",
            "minLength": 1
          },
          "forceCancel": {
            "type": "boolean",
            "description": "If true, bypasses IN_PRODUCTION and ON_HOLD restrictions (cannot bypass PACKAGED or SHIPPED)",
            "example": false
          }
        },
        "required": [
          "forceCancel",
          "reason"
        ],
        "title": "Cancel External Order Request"
      },
      "com.fourthwall.openapi.model.CancelExternalOrderResponseV1": {
        "type": "object",
        "description": "Result of an external order cancellation request",
        "properties": {
          "externalOrderId": {
            "type": "string",
            "example": "ETSY-123456789"
          },
          "externalSource": {
            "type": "string",
            "example": "ETSY"
          },
          "fourthwallOrderId": {
            "type": "string",
            "format": "uuid",
            "example": "b1a5c9d2-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
          },
          "status": {
            "type": "string",
            "description": "Overall cancellation status",
            "example": "CANCELLED"
          },
          "cancelledFulfillments": {
            "type": "array",
            "description": "Fulfillments that were successfully cancelled",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.CancelledFulfillmentInfoV1"
            }
          },
          "skippedFulfillments": {
            "type": "array",
            "description": "Fulfillments that were skipped (could not be cancelled)",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.SkippedFulfillmentInfoV1"
            }
          }
        },
        "required": [
          "cancelledFulfillments",
          "externalOrderId",
          "externalSource",
          "fourthwallOrderId",
          "skippedFulfillments",
          "status"
        ],
        "title": "Cancel External Order Response"
      },
      "com.fourthwall.openapi.model.CancelledFulfillmentInfoV1": {
        "type": "object",
        "description": "Information about a cancelled fulfillment",
        "properties": {
          "fulfillmentId": {
            "type": "string",
            "example": "ful_EdJvIXu3SEiXe_QkPavHSA"
          },
          "previousStatus": {
            "type": "string",
            "description": "Status before cancellation",
            "example": "ACCEPTED"
          },
          "provider": {
            "type": "string",
            "example": "PRINTFUL"
          },
          "itemCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items in this fulfillment",
            "example": 1
          }
        },
        "required": [
          "fulfillmentId",
          "itemCount",
          "previousStatus",
          "provider"
        ],
        "title": "Cancelled Fulfillment Info"
      },
      "com.fourthwall.openapi.model.SkippedFulfillmentInfoV1": {
        "type": "object",
        "description": "Information about a skipped (not cancelled) fulfillment",
        "properties": {
          "fulfillmentId": {
            "type": "string",
            "example": "ful_EdJvIXu3SEiXe_QkPavHSA"
          },
          "status": {
            "type": "string",
            "example": "PACKAGED"
          },
          "reason": {
            "type": "string",
            "description": "Reason why this fulfillment was skipped",
            "example": "PACKAGED"
          },
          "itemCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items in this fulfillment",
            "example": 1
          }
        },
        "required": [
          "fulfillmentId",
          "itemCount",
          "reason",
          "status"
        ],
        "title": "Skipped Fulfillment Info"
      },
      "com.fourthwall.openapi.model.ExternalOrderItemRequest": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "example": "c2b6d0e3-4f5g-6h7i-8j9k-0l1m2n3o4p5q",
            "minLength": 1
          },
          "quantity": {
            "type": "string",
            "example": 2,
            "minimum": 1
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "External Order Item Request"
      },
      "com.fourthwall.openapi.model.ValidateExternalOrderRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderItemRequest"
            },
            "minItems": 1
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderAddressRequest"
          }
        },
        "required": [
          "items",
          "shippingAddress"
        ],
        "title": "Validate External Order Request"
      },
      "com.fourthwall.openapi.model.DeliveryEstimateDto": {
        "type": "object",
        "properties": {
          "minDate": {
            "type": "string",
            "format": "date"
          },
          "maxDate": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "maxDate",
          "minDate"
        ],
        "title": "Delivery Estimate Dto"
      },
      "com.fourthwall.openapi.model.ValidateExternalOrderResponse": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ValidationErrorDto"
            }
          },
          "estimatedCosts": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderCostsV1"
          },
          "estimatedDelivery": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.DeliveryEstimateDto"
          }
        },
        "required": [
          "valid"
        ],
        "title": "Validate External Order Response"
      },
      "com.fourthwall.openapi.model.ValidationErrorDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "field",
          "message"
        ],
        "title": "Validation Error Dto"
      },
      "com.fourthwall.openapi.model.dns.DnsRecordV1": {
        "type": "object",
        "properties": {
          "recordType": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "validationError": {
            "type": "string"
          },
          "alias": {
            "type": "string"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "alias",
          "recordType",
          "status"
        ],
        "title": "Dns Record"
      },
      "com.fourthwall.openapi.model.dns.DnsStatusV1": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "CONNECTED",
              "NOT_CONNECTED",
              "PARTIALLY_CONNECTED",
              "SYNCING_YOUR_DOMAIN",
              "REMOVAL_IN_PROGRESS"
            ]
          },
          "records": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.dns.DnsRecordV1"
            }
          },
          "dnsProvider": {
            "type": "string"
          },
          "dnsProviderMode": {
            "type": "string"
          },
          "sslSynced": {
            "type": "boolean"
          }
        },
        "required": [
          "records"
        ],
        "title": "Dns Status"
      },
      "com.fourthwall.openapi.model.designpipeline.CreateDesignPipelinePreviewRequestV1": {
        "type": "object",
        "properties": {
          "customizationId": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "regions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineRegionV1"
            }
          },
          "colors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Arbitrary key-value metadata stored on the pipeline and returned by the status endpoint. At most 25 entries; keys up to 100 characters, values up to 1000 characters."
          }
        },
        "required": [
          "regions"
        ],
        "title": "Create Design Pipeline Preview Request"
      },
      "com.fourthwall.openapi.model.designpipeline.DesignPipelineRegionV1": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "description": "Name of the product region to place the image on, e.g. `front` or `back`.",
            "example": "front"
          },
          "url": {
            "type": "string",
            "description": "URL of the image to render on the region. Required unless `imageId` is given; `imageId` takes precedence when both are present."
          },
          "imageId": {
            "type": "string",
            "description": "Id of a media image already saved via `POST /open-api/v1.0/media/images`. When set, the region renders that saved image and `url` is ignored — letting one upload back many previews without re-registering. Required unless `url` is given."
          },
          "placementId": {
            "type": "string",
            "description": "Placement to target when `placementStrategy` is `PLACEMENT_ID`. Required for that strategy and ignored by the others."
          },
          "placementStrategy": {
            "type": "string",
            "description": "How the image is placed on the region. Defaults to `AUTO` when omitted, and takes precedence over `placementId`/`fillAllPlacements`.\n- `AUTO` — let the renderer decide using the product's automation defaults (its preferred placement, or fill-all for products like mugs/stickers).\n- `FILL_ALL` — apply the image to every placement in the region.\n- `FULL_REGION` — render the image across the full region, skipping the preferred placement.\n- `PLACEMENT_ID` — target the single placement named by `placementId` (required for this strategy).",
            "enum": [
              "AUTO",
              "FILL_ALL",
              "FULL_REGION",
              "PLACEMENT_ID"
            ],
            "example": "AUTO"
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "description": "Image width in pixels. Provide with `height` so the image can be registered as a reusable media asset."
          },
          "height": {
            "type": "integer",
            "format": "int32",
            "description": "Image height in pixels. Provide with `width` so the image can be registered as a reusable media asset."
          }
        },
        "required": [
          "region"
        ],
        "title": "Design Pipeline Region"
      },
      "com.fourthwall.openapi.model.designpipeline.CreateDesignPipelinePreviewResponseV1": {
        "type": "object",
        "properties": {
          "pipelineId": {
            "type": "string"
          },
          "customizationId": {
            "type": "string"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1"
            }
          }
        },
        "required": [
          "pipelineId"
        ],
        "title": "Create Design Pipeline Preview Response"
      },
      "com.fourthwall.openapi.model.designpipeline.CreateDesignPipelineOfferRequestV1": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string"
          },
          "regions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineRegionV1"
            }
          },
          "colors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "profitMargin": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineProfitMarginV1"
          },
          "publishOnCreate": {
            "type": "boolean"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Arbitrary key-value metadata stored on the pipeline and returned by the status endpoint. At most 25 entries; keys up to 100 characters, values up to 1000 characters."
          }
        },
        "required": [
          "name",
          "productId",
          "regions"
        ],
        "title": "Create Design Pipeline Offer Request"
      },
      "com.fourthwall.openapi.model.designpipeline.DesignPipelineProfitMarginV1": {
        "type": "object",
        "deprecated": true,
        "description": "Deprecated. Profit margin is now a plain USD number on POST /open-api/v1.0/products. This { amount, currency } object form is retained only for the legacy design-pipeline offers endpoint; currency must be USD.",
        "properties": {
          "amount": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "title": "Design Pipeline Profit Margin"
      },
      "com.fourthwall.openapi.model.designpipeline.CreateDesignPipelineOfferResponseV1": {
        "type": "object",
        "properties": {
          "pipelineId": {
            "type": "string"
          },
          "offerId": {
            "type": "string"
          },
          "customizationId": {
            "type": "string"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1"
            }
          }
        },
        "required": [
          "pipelineId"
        ],
        "title": "Create Design Pipeline Offer Response"
      },
      "CreateCustomizationRequestV1": {
        "type": "object",
        "description": "Create a shop-bound customization (design sketch) for a product template. When `regions` are supplied, the sync design pipeline runs immediately and the response carries the rendered preview images; with no regions, only the sketch is created and the response carries `pipelineId: null` and an empty `images` list. To iterate, re-POST with adjusted selections — there is no update-in-place.",
        "properties": {
          "productTemplateId": {
            "type": "string",
            "description": "Id of the product template the sketch targets, from `GET /open-api/v1.0/product-templates`. Same id space as `CreateDesignProductRequestV1.productTemplateId`.",
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          },
          "regions": {
            "type": "array",
            "description": "Design regions to render on the product. Each region references a registered media-library image by id (register first via `POST /open-api/v1.0/media/images` and pass the returned id as `imageId`). Omit or pass an empty list to create the sketch without running the pipeline.",
            "items": {
              "$ref": "#/components/schemas/ProductDesignRegionV1"
            }
          },
          "colors": {
            "type": "array",
            "description": "Colors to render. Defaults to all available product colors.",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "type": "array",
            "description": "Sizes to include. Defaults to all available product sizes.",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "productTemplateId"
        ],
        "title": "Create Customization Request"
      },
      "CreateCustomizationResponseV1": {
        "type": "object",
        "description": "Response from creating a customization. `pipelineId` and `images` are populated only when `regions` were supplied in the request.",
        "properties": {
          "customizationId": {
            "type": "string",
            "description": "Id of the newly created customization sketch.",
            "example": "cst_k66ZW4fsRm6c2def3itltA"
          },
          "pipelineId": {
            "type": "string",
            "description": "Id of the design pipeline run; null when no regions were supplied.",
            "example": "dpl_k66ZW4fsRm6c2def3itltA"
          },
          "images": {
            "type": "array",
            "description": "Rendered preview images. Empty when no regions were supplied.",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1"
            }
          }
        },
        "required": [
          "customizationId",
          "images"
        ],
        "title": "Create Customization Response"
      },
      "com.fourthwall.openapi.model.CreateCollectionV1Request": {
        "type": "object",
        "description": "Request to create a new collection",
        "properties": {
          "name": {
            "type": "string",
            "example": "My collection"
          },
          "description": {
            "type": "string",
            "example": "My collection description"
          },
          "offerIds": {
            "type": "array",
            "description": "List of product IDs to include in the collection",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "description",
          "name",
          "offerIds"
        ],
        "title": "Create Collection V1Request"
      },
      "com.fourthwall.openapi.model.CartItemRequestV1": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "maximum": 10000,
            "minimum": 1
          }
        },
        "required": [
          "quantity",
          "variantId"
        ],
        "title": "Cart Item Request"
      },
      "com.fourthwall.openapi.model.CreateCartRequestV1": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.CartItemRequestV1"
            }
          },
          "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": "Create Cart Request"
      },
      "com.fourthwall.openapi.model.CartProductV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt"
          },
          "slug": {
            "type": "string",
            "example": "my-t-shirt"
          }
        },
        "required": [
          "id",
          "name",
          "slug"
        ],
        "title": "Cart Product"
      },
      "com.fourthwall.openapi.model.CartV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.CartV1.CartItemV1"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom metadata key-value pairs.",
            "example": {
              "asset_id": "abc123",
              "campaign": "summer_2026"
            }
          }
        },
        "required": [
          "id",
          "items"
        ],
        "title": "Cart"
      },
      "com.fourthwall.openapi.model.CartV1.CartItemV1": {
        "type": "object",
        "properties": {
          "variant": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.CartVariantV1"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "example": 5
          }
        },
        "required": [
          "quantity",
          "variant"
        ],
        "title": "Cart Item"
      },
      "com.fourthwall.openapi.model.CartVariantV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt - Black, L"
          },
          "sku": {
            "type": "string",
            "example": "WDEK-DRE200L"
          },
          "unitPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "compareAtPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "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.openapi.model.CartProductV1"
          }
        },
        "required": [
          "attributes",
          "dimensions",
          "id",
          "images",
          "name",
          "product",
          "sku",
          "stock",
          "unitPrice",
          "weight"
        ],
        "title": "Cart Variant"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookConfigurationV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookConfigurationV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Webhook Configuration"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.WebhookEventV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.WebhookEventV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Webhook Event"
      },
      "com.fourthwall.openapi.model.WebhookEventV1": {
        "type": "object",
        "description": "Webhook event",
        "properties": {
          "id": {
            "type": "string",
            "description": "Event ID"
          },
          "type": {
            "type": "string",
            "description": "Event type",
            "enum": [
              "ORDER_PLACED",
              "ORDER_UPDATED",
              "GIFT_PURCHASE",
              "PRODUCT_CREATED",
              "PRODUCT_UPDATED",
              "DONATION",
              "SUBSCRIPTION_PURCHASED",
              "SUBSCRIPTION_EXPIRED",
              "SUBSCRIPTION_CHANGED",
              "NEWSLETTER_SUBSCRIBED",
              "THANK_YOU_SENT",
              "GIFT_DRAW_STARTED",
              "GIFT_DRAW_ENDED",
              "PROMOTION_CREATED",
              "PROMOTION_UPDATED",
              "PROMOTION_STATUS_CHANGED",
              "PLATFORM_APP_DISCONNECTED",
              "MEMBERSHIP_POST_UPSERTED",
              "MEMBERSHIP_SERIES_UPSERTED",
              "MEMBERSHIP_SERIES_DELETED",
              "MEMBERSHIP_TAG_CREATED",
              "MEMBERSHIP_TAG_UPDATED",
              "MEMBERSHIP_TAG_DELETED",
              "MEMBERSHIP_TIER_UPSERTED",
              "MEMBERSHIP_TIER_DELETED",
              "COLLECTION_UPDATED",
              "CART_ABANDONED_1H",
              "CART_ABANDONED_24H",
              "CART_ABANDONED_72H"
            ]
          },
          "apiVersion": {
            "type": "string",
            "description": "API version",
            "enum": [
              "V1"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the event was created"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the event was last updated"
          },
          "body": {
            "type": "string",
            "description": "Event body as JSON string"
          },
          "testMode": {
            "type": "boolean",
            "description": "Whether this is a test mode event",
            "example": false
          },
          "state": {
            "type": "string",
            "description": "Event state"
          },
          "error": {
            "type": "string",
            "description": "Error message if delivery failed"
          },
          "url": {
            "type": "string",
            "description": "URL"
          }
        },
        "required": [
          "apiVersion",
          "body",
          "createdAt",
          "id",
          "state",
          "testMode",
          "type",
          "updatedAt",
          "url"
        ],
        "title": "Webhook Event"
      },
      "com.fourthwall.openapi.model.KudosMoneyV1": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "example": 5
          },
          "currency": {
            "type": "string",
            "example": "USD"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "title": "Kudos Money"
      },
      "com.fourthwall.openapi.model.KudosOrderV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for this kudos contribution",
            "example": "kd_EdJvIXu3SEiXe_QkPavHSA"
          },
          "orderId": {
            "type": "string",
            "description": "The order/contribution ID",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "supporter": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.KudosSupporterV1"
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.KudosProductV1"
            }
          },
          "message": {
            "type": "string",
            "description": "Optional message from the supporter",
            "example": "Sample message"
          },
          "total": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.KudosMoneyV1"
          },
          "state": {
            "type": "string",
            "enum": [
              "WAITING",
              "SKIPPED",
              "SENT",
              "CANCELLED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          }
        },
        "required": [
          "createdAt",
          "id",
          "orderId",
          "products",
          "state",
          "supporter",
          "total"
        ],
        "title": "Kudos Order"
      },
      "com.fourthwall.openapi.model.KudosProductV1": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "My t-shirt"
          },
          "thumbnailUrl": {
            "type": "string",
            "example": "https://fourthwall.com/image.png"
          }
        },
        "required": [
          "title"
        ],
        "title": "Kudos Product"
      },
      "com.fourthwall.openapi.model.KudosSupporterV1": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "fullName": {
            "type": "string",
            "example": "Johnny123"
          }
        },
        "required": [
          "email"
        ],
        "title": "Kudos Supporter"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.KudosOrderV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.KudosOrderV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Kudos Order"
      },
      "com.fourthwall.openapi.model.ShopV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "name": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "publicDomain": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "LIVE",
              "COMING_SOON",
              "PASSWORD_PROTECTED"
            ]
          }
        },
        "required": [
          "domain",
          "id",
          "name",
          "publicDomain",
          "status"
        ],
        "title": "Shop"
      },
      "com.fourthwall.openapi.model.AddressV1": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "address1": {
            "type": "string"
          },
          "address2": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "zip": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        },
        "required": [
          "address1",
          "address2",
          "city",
          "country",
          "name",
          "state",
          "zip"
        ],
        "title": "Address"
      },
      "com.fourthwall.openapi.model.ContactInfoV1": {
        "type": "object",
        "properties": {
          "shopEmail": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string"
          },
          "transactionalEmail": {
            "type": "string"
          },
          "customerSupportEmail": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "shopName": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.AddressV1"
          }
        },
        "required": [
          "contactEmail",
          "domain",
          "location",
          "phone",
          "shopEmail",
          "shopName",
          "transactionalEmail"
        ],
        "title": "Contact Info"
      },
      "com.fourthwall.openapi.model.samples.SampleBalanceV1": {
        "type": "object",
        "properties": {
          "balance": {
            "type": "string"
          },
          "balanceWithIncentive": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "title": "Sample Balance"
      },
      "com.fourthwall.openapi.model.reports.ReportColumnV1": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "label",
          "type"
        ],
        "title": "Report Column"
      },
      "com.fourthwall.openapi.model.reports.ReportDefinitionV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.reports.ReportColumnV1"
            }
          },
          "availablePrecisions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "availablePrecisions",
          "columns",
          "id",
          "name"
        ],
        "title": "Report Definition"
      },
      "com.fourthwall.openapi.model.reports.ReportDataV1": {
        "type": "object",
        "properties": {
          "reportId": {
            "type": "string"
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "summary": {}
        },
        "required": [
          "columns",
          "reportId",
          "rows"
        ],
        "title": "Report Data"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.promotions.PromotionV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.AutoApplyingShopPromotionV1"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiMembershipsPromotionV1"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.MultiShopPromotionV1"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleMembershipsPromotionV1"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.promotions.SingleShopPromotionV1"
                }
              ]
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Promotion"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Offer Full"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.StockV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.StockV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Stock"
      },
      "com.fourthwall.openapi.model.StockV1": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "createdAt",
          "quantity",
          "updatedAt",
          "variantId"
        ],
        "title": "Stock"
      },
      "com.fourthwall.openapi.model.MoneyV1": {
        "type": "object",
        "description": "Money amount with currency",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount value",
            "example": 24.99
          },
          "currency": {
            "type": "string",
            "description": "Currency code (ISO 4217)",
            "example": "USD"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "title": "Money"
      },
      "com.fourthwall.openapi.model.ProductTemplateListV1": {
        "type": "object",
        "description": "Paginated list of product templates",
        "properties": {
          "results": {
            "type": "array",
            "description": "List of product template summaries",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateSummaryV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of product templates matching the query"
          }
        },
        "required": [
          "results",
          "total"
        ],
        "title": "Product Template List"
      },
      "com.fourthwall.openapi.model.ProductTemplateSummaryV1": {
        "type": "object",
        "description": "Summary information about a product template",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Product template ID",
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          },
          "name": {
            "type": "string",
            "description": "Product name",
            "example": "Classic T-Shirt"
          },
          "category": {
            "type": "string",
            "description": "Product category path",
            "example": "apparel/t-shirts"
          },
          "brand": {
            "type": "string",
            "description": "Brand name",
            "example": "Bella+Canvas"
          },
          "thumbnail": {
            "type": "string",
            "description": "Thumbnail image URL"
          },
          "basePrice": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Base price for the product"
          },
          "productionMethod": {
            "type": "string",
            "description": "Production method (e.g. DTG, EMBROIDERY, DTFX, KNITTING, SUBLIMATION)",
            "example": "DTG"
          },
          "supportsBackendRendering": {
            "type": "boolean",
            "description": "Whether this product can be rendered by the backend rendering pipeline (V3 Instant Designer, excluding KNITWISE). Products where this is false may have null regionIds on customizable areas and cannot be used with the design pipeline.",
            "example": true
          }
        },
        "required": [
          "basePrice",
          "brand",
          "category",
          "name",
          "productId",
          "productionMethod",
          "supportsBackendRendering"
        ],
        "title": "Product Template Summary"
      },
      "com.fourthwall.openapi.model.ColorV1": {
        "type": "object",
        "description": "Color information",
        "properties": {
          "name": {
            "type": "string",
            "description": "Color name",
            "example": "Navy Blue"
          },
          "hex": {
            "type": "string",
            "description": "Color hex code",
            "example": "#000080"
          }
        },
        "required": [
          "hex",
          "name"
        ],
        "title": "Color"
      },
      "com.fourthwall.openapi.model.CustomizableAreaV1": {
        "type": "object",
        "description": "Customizable area on a product",
        "properties": {
          "regionId": {
            "type": "string",
            "description": "Region ID used when setting regions on a customization",
            "example": "front"
          },
          "name": {
            "type": "string",
            "description": "Area name",
            "example": "Front"
          },
          "type": {
            "type": "string",
            "description": "Area type",
            "example": "print"
          },
          "available": {
            "type": "boolean",
            "description": "Whether this area is available for customization",
            "example": true
          },
          "productionMethod": {
            "type": "string",
            "description": "Production method for this area (e.g. DTG, EMBROIDERY, SUBLIMATION)",
            "example": "DTG"
          },
          "supportsBackendRendering": {
            "type": "boolean",
            "description": "Whether this specific area can be rendered by the backend rendering pipeline. Null when no generator region could be resolved for the area. Even on a product where supportsBackendRendering is true, individual areas may be false (e.g. embroidery areas).",
            "example": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.RegionDimensionsV1",
            "description": "Region dimensions (pixels, inches, DPI)"
          },
          "placements": {
            "type": "array",
            "description": "Named placements (sub-regions) defined within this area, e.g. sticker slots on a sticker sheet. Pass a placement's id as `placementId` on a design-pipeline region to target a single slot, or set `fillAllPlacements` to fill them all with the same artwork. Empty when the area has no sub-placements.",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.PlacementV1"
            }
          }
        },
        "required": [
          "available",
          "name",
          "placements",
          "type"
        ],
        "title": "Customizable Area"
      },
      "com.fourthwall.openapi.model.PlacementV1": {
        "type": "object",
        "description": "A named sub-region (placement) within a customizable area",
        "properties": {
          "id": {
            "type": "string",
            "description": "Placement ID — pass this as `placementId` on a design-pipeline region",
            "example": "stickerSlotOne"
          },
          "name": {
            "type": "string",
            "description": "Human-readable placement name",
            "example": "Sticker Slot One"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "Placement"
      },
      "com.fourthwall.openapi.model.ProductTemplateColorVariantV1": {
        "type": "object",
        "description": "Product variant grouped by color",
        "properties": {
          "color": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ColorV1",
            "description": "Color information"
          },
          "photos": {
            "type": "array",
            "description": "Photos for this color variant",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplatePhotoV1"
            }
          },
          "sizeVariants": {
            "type": "array",
            "description": "Size variants available in this color",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateSizeVariantV1"
            }
          },
          "status": {
            "type": "string",
            "description": "Color variant status (AVAILABLE, DISCONTINUED, OUT_OF_STOCK, PARTIALLY_DISCONTINUED, PARTIALLY_OUT_OF_STOCK)",
            "example": "AVAILABLE"
          },
          "available": {
            "type": "boolean",
            "description": "Whether the color variant is available for order",
            "example": true
          }
        },
        "required": [
          "available",
          "color",
          "photos",
          "sizeVariants",
          "status"
        ],
        "title": "Product Template Color Variant"
      },
      "com.fourthwall.openapi.model.ProductTemplatePhotoV1": {
        "type": "object",
        "description": "Product photo with optional design overlay",
        "properties": {
          "url": {
            "type": "string",
            "description": "Photo URL"
          },
          "designOverlay": {
            "type": "string",
            "description": "Design overlay URL for this photo"
          }
        },
        "required": [
          "url"
        ],
        "title": "Product Template Photo"
      },
      "com.fourthwall.openapi.model.ProductTemplateSizeVariantV1": {
        "type": "object",
        "description": "Size variant within a color variant",
        "properties": {
          "variantId": {
            "type": "string",
            "description": "Variant ID",
            "example": "var_abc123"
          },
          "size": {
            "type": "string",
            "description": "Size name",
            "example": "L"
          },
          "price": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Variant price"
          },
          "available": {
            "type": "boolean",
            "description": "Whether this size is available for order",
            "example": true
          }
        },
        "required": [
          "available",
          "price",
          "size",
          "variantId"
        ],
        "title": "Product Template Size Variant"
      },
      "com.fourthwall.openapi.model.ProductTemplateV1": {
        "type": "object",
        "description": "Detailed product template information",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Product template ID",
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          },
          "slug": {
            "type": "string",
            "description": "URL slug for this product",
            "example": "classic-t-shirt"
          },
          "name": {
            "type": "string",
            "description": "Product name",
            "example": "Classic T-Shirt"
          },
          "description": {
            "type": "string",
            "description": "Product description"
          },
          "category": {
            "type": "string",
            "description": "Product category path",
            "example": "apparel/t-shirts"
          },
          "brand": {
            "type": "string",
            "description": "Brand name",
            "example": "Bella+Canvas"
          },
          "productionMethod": {
            "type": "string",
            "description": "Production method (e.g. DTG, EMBROIDERY, DTFX, KNITTING, SUBLIMATION)",
            "example": "DTG"
          },
          "minimumOrdersNumber": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum orders required to produce this product, if any",
            "example": 10
          },
          "priceFrom": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Lowest available variant price, or null if no variants are available"
          },
          "priceTo": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Highest available variant price, or null if no variants are available"
          },
          "colorVariants": {
            "type": "array",
            "description": "Product variants grouped by color",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateColorVariantV1"
            }
          },
          "customizableAreas": {
            "type": "array",
            "description": "Customizable areas on the product",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.CustomizableAreaV1"
            }
          },
          "sizeGuide": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.SizeGuideV1",
            "description": "Size guide information"
          },
          "supportsBackendRendering": {
            "type": "boolean",
            "description": "Whether this product can be rendered by the backend rendering pipeline (V3 Instant Designer, excluding KNITWISE). Products where this is false may have null regionIds on customizable areas and cannot be used with the design pipeline.",
            "example": true
          }
        },
        "required": [
          "brand",
          "category",
          "colorVariants",
          "customizableAreas",
          "name",
          "productId",
          "productionMethod",
          "slug",
          "supportsBackendRendering"
        ],
        "title": "Product Template"
      },
      "com.fourthwall.openapi.model.RegionDimensionsV1": {
        "type": "object",
        "description": "Region dimensions",
        "properties": {
          "dpi": {
            "type": "integer",
            "format": "int32",
            "description": "DPI (dots per inch)",
            "example": 300
          },
          "pixelsWidth": {
            "type": "integer",
            "format": "int32",
            "description": "Width in pixels",
            "example": 4500
          },
          "pixelsHeight": {
            "type": "integer",
            "format": "int32",
            "description": "Height in pixels",
            "example": 5400
          },
          "inchesWidth": {
            "type": "number",
            "description": "Width in inches",
            "example": 15
          },
          "inchesHeight": {
            "type": "number",
            "description": "Height in inches",
            "example": 18
          }
        },
        "required": [
          "dpi",
          "inchesHeight",
          "inchesWidth",
          "pixelsHeight",
          "pixelsWidth"
        ],
        "title": "Region Dimensions"
      },
      "com.fourthwall.openapi.model.SizeGuideV1": {
        "type": "object",
        "description": "Size guide information",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to the size guide page"
          },
          "content": {
            "type": "string",
            "description": "Size guide table as HTML or markdown"
          }
        },
        "title": "Size Guide"
      },
      "com.fourthwall.openapi.model.ProductTemplateGroupedListV1": {
        "type": "object",
        "description": "Paginated list of grouped product templates",
        "properties": {
          "results": {
            "type": "array",
            "description": "List of grouped product template summaries",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateGroupedSummaryV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of grouped product templates matching the query"
          }
        },
        "required": [
          "results",
          "total"
        ],
        "title": "Product Template Grouped List"
      },
      "com.fourthwall.openapi.model.ProductTemplateGroupedSummaryV1": {
        "type": "object",
        "description": "Product template grouped by product family, with production method variants",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Product template ID of the recommended variant",
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          },
          "name": {
            "type": "string",
            "description": "Product name",
            "example": "Classic T-Shirt"
          },
          "category": {
            "type": "string",
            "description": "Product category path",
            "example": "apparel/t-shirts"
          },
          "brand": {
            "type": "string",
            "description": "Brand name",
            "example": "Bella+Canvas"
          },
          "thumbnail": {
            "type": "string",
            "description": "Thumbnail image URL"
          },
          "basePrice": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Base price for the recommended variant"
          },
          "variants": {
            "type": "array",
            "description": "Available production method variants for this product family",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ProductTemplateVariantV1"
            }
          },
          "supportsBackendRendering": {
            "type": "boolean",
            "description": "Whether the recommended product in this group can be rendered by the backend rendering pipeline (V3 Instant Designer, excluding KNITWISE). Individual production-method variants may differ — check `variants[].supportsBackendRendering`.",
            "example": true
          }
        },
        "required": [
          "basePrice",
          "brand",
          "category",
          "name",
          "productId",
          "supportsBackendRendering",
          "variants"
        ],
        "title": "Product Template Grouped Summary"
      },
      "com.fourthwall.openapi.model.ProductTemplateVariantV1": {
        "type": "object",
        "description": "A production method variant within a grouped product template",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Product template ID for this variant",
            "example": "pro_k66ZW4fsRm6c2def3itltA"
          },
          "productionMethod": {
            "type": "string",
            "description": "Production method (e.g. DTG, EMBROIDERY, DTFX)",
            "example": "DTG"
          },
          "recommended": {
            "type": "boolean",
            "description": "Whether this is the recommended production method",
            "example": true
          },
          "basePrice": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Base price for this variant"
          },
          "supportsBackendRendering": {
            "type": "boolean",
            "description": "Whether this variant can be rendered by the backend rendering pipeline (V3 Instant Designer, excluding KNITWISE).",
            "example": true
          }
        },
        "required": [
          "basePrice",
          "productId",
          "productionMethod",
          "recommended",
          "supportsBackendRendering"
        ],
        "title": "Product Template Variant"
      },
      "com.fourthwall.openapi.model.subscription.LimitWithUsageV1": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int64"
          },
          "usage": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "limit",
          "usage"
        ],
        "title": "Limit With Usage"
      },
      "com.fourthwall.openapi.model.subscription.PendingSubscriptionV1": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          },
          "planId": {
            "type": "string"
          },
          "planName": {
            "type": "string"
          }
        },
        "required": [
          "planId",
          "planName",
          "subscriptionId"
        ],
        "title": "Pending Subscription"
      },
      "com.fourthwall.openapi.model.subscription.PlanSummaryV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "pro": {
            "type": "boolean"
          },
          "custom": {
            "type": "boolean"
          }
        },
        "required": [
          "custom",
          "id",
          "name",
          "pro"
        ],
        "title": "Plan Summary"
      },
      "com.fourthwall.openapi.model.subscription.ProSubscriptionV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "activeFrom": {
            "type": "string"
          },
          "activeTo": {
            "type": "string"
          },
          "plan": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.PlanSummaryV1"
          },
          "usage": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.SubscriptionUsageV1"
          },
          "pendingSubscription": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.PendingSubscriptionV1"
          }
        },
        "title": "Pro Subscription"
      },
      "com.fourthwall.openapi.model.subscription.SubscriptionUsageV1": {
        "type": "object",
        "properties": {
          "offers": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.LimitWithUsageV1"
          },
          "members": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.LimitWithUsageV1"
          },
          "domains": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.LimitWithUsageV1"
          },
          "digitalProductsStorageBytes": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.subscription.LimitWithUsageV1"
          }
        },
        "title": "Subscription Usage"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.PayoutTransactionV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutTransactionV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Payout Transaction"
      },
      "com.fourthwall.openapi.model.PayoutDestinationV1": {
        "description": "Payout destination",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "BANK_ACCOUNT": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.BankAccount",
            "CARD": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.Card",
            "UNKNOWN": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.Unknown"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Payout Destination"
      },
      "com.fourthwall.openapi.model.PayoutDestinationV1.BankAccount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1"
          },
          {
            "type": "object",
            "properties": {
              "last4Digits": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "BANK_ACCOUNT"
              }
            }
          }
        ],
        "required": [
          "last4Digits"
        ],
        "title": "Bank Account"
      },
      "com.fourthwall.openapi.model.PayoutDestinationV1.Card": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1"
          },
          {
            "type": "object",
            "properties": {
              "last4Digits": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "CARD"
              }
            }
          }
        ],
        "required": [
          "last4Digits"
        ],
        "title": "Card"
      },
      "com.fourthwall.openapi.model.PayoutDestinationV1.Unknown": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "UNKNOWN"
              }
            }
          }
        ],
        "title": "Unknown"
      },
      "com.fourthwall.openapi.model.PayoutTransactionV1": {
        "type": "object",
        "description": "Payout transaction",
        "properties": {
          "transferAmount": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Amount transferred from Fourthwall to creator's Stripe account"
          },
          "payoutAmount": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.MoneyV1",
            "description": "Amount paid out from creator's Stripe to external account"
          },
          "status": {
            "type": "string",
            "description": "Transaction status",
            "example": "PAID"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the transaction was created"
          },
          "predictedArrivalDate": {
            "type": "string",
            "format": "date-time",
            "description": "Predicted arrival date for the payout"
          },
          "destination": {
            "description": "Destination of the payout",
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.BankAccount"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.Card"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutDestinationV1.Unknown"
              }
            ]
          }
        },
        "required": [
          "createdAt",
          "status",
          "transferAmount"
        ],
        "title": "Payout Transaction"
      },
      "com.fourthwall.openapi.model.ExternalAccountV1": {
        "description": "Connected external account (bank or card)",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "BANK_ACCOUNT": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1.BankAccount",
            "CARD": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1.Card"
          }
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "External Account"
      },
      "com.fourthwall.openapi.model.ExternalAccountV1.BankAccount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1"
          },
          {
            "type": "object",
            "properties": {
              "last4Digits": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "BANK_ACCOUNT"
              }
            }
          }
        ],
        "description": "Bank account",
        "required": [
          "last4Digits"
        ],
        "title": "Bank Account"
      },
      "com.fourthwall.openapi.model.ExternalAccountV1.Card": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1"
          },
          {
            "type": "object",
            "properties": {
              "last4Digits": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "CARD"
              }
            }
          }
        ],
        "description": "Card",
        "required": [
          "last4Digits"
        ],
        "title": "Card"
      },
      "com.fourthwall.openapi.model.PayoutAccountV1": {
        "description": "Payout account status",
        "discriminator": {
          "propertyName": "status",
          "mapping": {
            "INACTIVE": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1.Inactive",
            "IN_PROGRESS": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1.InProgress",
            "ACTIVE": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1.Active"
          }
        },
        "properties": {
          "status": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "title": "Payout Account"
      },
      "com.fourthwall.openapi.model.PayoutAccountV1.Active": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1"
          },
          {
            "type": "object",
            "properties": {
              "connectedAt": {
                "type": "string",
                "format": "date-time"
              },
              "externalAccounts": {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1.BankAccount"
                    },
                    {
                      "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalAccountV1.Card"
                    }
                  ]
                }
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "ACTIVE"
              }
            }
          }
        ],
        "description": "Payout account active and ready for payouts",
        "required": [
          "connectedAt",
          "externalAccounts"
        ],
        "title": "Active"
      },
      "com.fourthwall.openapi.model.PayoutAccountV1.InProgress": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1"
          },
          {
            "type": "object",
            "properties": {
              "connectedAt": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "IN_PROGRESS"
              }
            }
          }
        ],
        "description": "Payout account onboarding in progress",
        "required": [
          "connectedAt"
        ],
        "title": "In Progress"
      },
      "com.fourthwall.openapi.model.PayoutAccountV1.Inactive": {
        "allOf": [
          {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.PayoutAccountV1"
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "INACTIVE"
              }
            }
          }
        ],
        "description": "No payout account configured",
        "title": "Inactive"
      },
      "com.fourthwall.openapi.model.Address": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Joe Doe"
          },
          "address1": {
            "type": "string",
            "example": "Main Street 1"
          },
          "address2": {
            "type": "string"
          },
          "city": {
            "type": "string",
            "example": "San Francisco"
          },
          "state": {
            "type": "string",
            "example": "CA"
          },
          "country": {
            "type": "string",
            "example": "US"
          },
          "zip": {
            "type": "string",
            "example": "12345"
          },
          "phone": {
            "type": "string",
            "example": "123456789"
          }
        },
        "required": [
          "address1",
          "city",
          "country",
          "name",
          "state"
        ],
        "title": "Address"
      },
      "com.fourthwall.openapi.model.OfferAbstractV1.OfferOrderV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt"
          },
          "slug": {
            "type": "string",
            "example": "my-t-shirt"
          },
          "description": {
            "type": "string",
            "example": "My t-shirt description"
          },
          "primaryImage": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.Image"
          },
          "variant": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantWithQuantityV1"
          }
        },
        "required": [
          "description",
          "id",
          "name",
          "slug",
          "variant"
        ],
        "title": "Offer Order"
      },
      "com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.OfferVariantWithQuantityV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "name": {
            "type": "string",
            "example": "My t-shirt - Black, L"
          },
          "sku": {
            "type": "string",
            "example": "WDEK-DRE200L"
          },
          "unitPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "unitCost": {
            "$ref": "#/components/schemas/Money"
          },
          "compareAtPrice": {
            "$ref": "#/components/schemas/Money"
          },
          "attributes": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Attributes"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "example": 5
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          },
          "cost": {
            "$ref": "#/components/schemas/Money"
          },
          "weight": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Weight"
          },
          "dimensions": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions"
          }
        },
        "required": [
          "attributes",
          "dimensions",
          "id",
          "name",
          "price",
          "quantity",
          "sku",
          "unitPrice",
          "weight"
        ],
        "title": "Offer Variant With Quantity"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OrderV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Order"
      },
      "com.fourthwall.openapi.model.OrderV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "00aa4abd-5778-4199-8161-0b49b2f212e5"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "friendlyId": {
            "type": "string",
            "example": "D3XZFWPP"
          },
          "checkoutId": {
            "type": "string",
            "example": "ch_BV44UYrXQA2T_Xcf1288tw"
          },
          "promotionId": {
            "type": "string",
            "example": "prm_EdJvIXu3SEiXe_QkPavHSA"
          },
          "status": {
            "type": "string",
            "enum": [
              "CONFIRMED",
              "PARTIALLY_IN_PRODUCTION",
              "IN_PRODUCTION",
              "PARTIALLY_SHIPPED",
              "SHIPPED",
              "PARTIALLY_DELIVERED",
              "DELIVERED",
              "CANCELLED",
              "COMPLETED"
            ]
          },
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "emailMarketingOptIn": {
            "type": "boolean"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "message": {
            "type": "string",
            "example": "Sample message"
          },
          "amounts": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.OrderAmounts"
          },
          "billing": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Billing"
          },
          "shipping": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Shipping"
          },
          "offers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferOrderV1"
            }
          },
          "source": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.GiveawayLinks"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.Order"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.SamplesOrder"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.Source.TwitchGiftRedemption"
              }
            ]
          },
          "trackingParams": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.TrackingParams"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "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"
          }
        },
        "required": [
          "amounts",
          "checkoutId",
          "createdAt",
          "email",
          "emailMarketingOptIn",
          "friendlyId",
          "id",
          "message",
          "offers",
          "shopId",
          "source",
          "status",
          "updatedAt"
        ],
        "title": "Order"
      },
      "com.fourthwall.openapi.model.OrderV1.Billing": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.Address"
          }
        },
        "required": [
          "address"
        ],
        "title": "Billing"
      },
      "com.fourthwall.openapi.model.OrderV1.GiftCard": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "amountUsed": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "amountUsed",
          "code"
        ],
        "title": "Gift Card"
      },
      "com.fourthwall.openapi.model.OrderV1.OrderAmounts": {
        "type": "object",
        "properties": {
          "subtotal": {
            "$ref": "#/components/schemas/Money"
          },
          "shipping": {
            "$ref": "#/components/schemas/Money"
          },
          "tax": {
            "$ref": "#/components/schemas/Money"
          },
          "donation": {
            "$ref": "#/components/schemas/Money"
          },
          "discount": {
            "$ref": "#/components/schemas/Money"
          },
          "giftCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.OrderV1.GiftCard"
            }
          },
          "total": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "discount",
          "donation",
          "giftCards",
          "shipping",
          "subtotal",
          "tax",
          "total"
        ],
        "title": "Order Amounts"
      },
      "com.fourthwall.openapi.model.OrderV1.Shipping": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.Address"
          }
        },
        "required": [
          "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"
              }
            }
          }
        ],
        "required": [
          "giftId"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "giftId",
          "giftPurchaseId"
        ],
        "title": "Twitch Gift Redemption"
      },
      "com.fourthwall.openapi.model.OrderV1.TrackingParams": {
        "type": "object",
        "properties": {
          "fbc": {
            "type": "string"
          },
          "fbp": {
            "type": "string"
          },
          "utm_source": {
            "type": "string"
          },
          "utm_medium": {
            "type": "string"
          },
          "utm_campaign": {
            "type": "string"
          },
          "utm_content": {
            "type": "string"
          },
          "utm_term": {
            "type": "string"
          }
        },
        "title": "Tracking Params"
      },
      "com.fourthwall.openapi.model.MembershipTierV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "imageUrl": {
            "type": "string"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipTierVariantV1"
            }
          }
        },
        "required": [
          "id",
          "name",
          "variants"
        ],
        "title": "Membership Tier"
      },
      "com.fourthwall.openapi.model.MembershipTierVariantV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "tierId": {
            "type": "string"
          },
          "interval": {
            "type": "string",
            "enum": [
              "ANNUAL",
              "MONTHLY"
            ]
          },
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "offerId": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "id",
          "interval",
          "tierId"
        ],
        "title": "Membership Tier Variant"
      },
      "com.fourthwall.openapi.model.MembershipSupporterV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "nickname": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          },
          "subscription": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Active"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Cancelled"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.None"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1.Subscription.Suspended"
              }
            ]
          }
        },
        "required": [
          "createdAt",
          "email",
          "id",
          "nickname",
          "subscription"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "variant"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "variant"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "variant"
        ],
        "title": "Suspended"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MembershipSupporterV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.MembershipSupporterV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Membership Supporter"
      },
      "com.fourthwall.openapi.model.MailingListEntryV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "eml_EdJvIXu3SEiXe_QkPavHSA"
          },
          "email": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "id"
        ],
        "title": "Mailing List Entry"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.MailingListEntryV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.MailingListEntryV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Mailing List Entry"
      },
      "com.fourthwall.openapi.model.IntegrationV1": {
        "type": "object",
        "description": "Integration status and details",
        "properties": {
          "type": {
            "type": "string",
            "description": "Integration type identifier",
            "example": "TIKTOK_SHOP"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name",
            "example": "TikTok Shop"
          },
          "status": {
            "type": "string",
            "description": "Connection status",
            "example": "CONNECTED"
          },
          "category": {
            "type": "string",
            "description": "Integration category",
            "example": "SOCIAL_COMMERCE"
          }
        },
        "required": [
          "category",
          "name",
          "status",
          "type"
        ],
        "title": "Integration"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.IntegrationV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.IntegrationV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Integration"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.YoutubeProductV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.YoutubeProductV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Youtube Product"
      },
      "com.fourthwall.openapi.model.YoutubeProductV1": {
        "type": "object",
        "description": "YouTube synced product",
        "properties": {
          "id": {
            "type": "string",
            "description": "Product ID"
          },
          "name": {
            "type": "string",
            "description": "Product name"
          },
          "status": {
            "type": "string",
            "description": "Product status",
            "example": "ACTIVE"
          },
          "slug": {
            "type": "string",
            "description": "Product slug"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "title": "Youtube Product"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.YoutubeIntegrationV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.YoutubeIntegrationV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Youtube Integration"
      },
      "com.fourthwall.openapi.model.YoutubeIntegrationV1": {
        "type": "object",
        "description": "YouTube integration details",
        "properties": {
          "id": {
            "type": "string",
            "description": "Integration ID"
          },
          "name": {
            "type": "string",
            "description": "Channel or integration name"
          },
          "status": {
            "type": "string",
            "description": "Integration status",
            "example": "ACTIVE"
          },
          "createdAt": {
            "type": "string",
            "description": "When the integration was created"
          }
        },
        "required": [
          "id",
          "status"
        ],
        "title": "Youtube Integration"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.TiktokProductV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.TiktokProductV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Tiktok Product"
      },
      "com.fourthwall.openapi.model.TiktokProductV1": {
        "type": "object",
        "description": "TikTok synced product",
        "properties": {
          "offerId": {
            "type": "string",
            "description": "Fourthwall offer ID"
          },
          "name": {
            "type": "string",
            "description": "Product name"
          },
          "status": {
            "type": "string",
            "description": "Sync status",
            "example": "ACTIVE"
          },
          "issues": {
            "type": "array",
            "description": "Issues preventing sync",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "issues",
          "name",
          "offerId",
          "status"
        ],
        "title": "Tiktok Product"
      },
      "com.fourthwall.openapi.model.TiktokConfigurationV1": {
        "type": "object",
        "description": "TikTok Shop configuration",
        "properties": {
          "configured": {
            "type": "boolean",
            "description": "Whether TikTok Shop is configured",
            "example": true
          },
          "tiktokShopId": {
            "type": "string",
            "description": "TikTok Shop ID"
          },
          "syncPaused": {
            "type": "boolean",
            "description": "Whether product sync is paused",
            "example": false
          },
          "syncPauseReasons": {
            "type": "array",
            "description": "Reasons sync is paused",
            "items": {
              "type": "string"
            }
          },
          "prerequisites": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.TiktokPrerequisitesV1",
            "description": "Prerequisites status"
          }
        },
        "required": [
          "configured",
          "syncPauseReasons",
          "syncPaused"
        ],
        "title": "Tiktok Configuration"
      },
      "com.fourthwall.openapi.model.TiktokPrerequisitesV1": {
        "type": "object",
        "description": "TikTok prerequisites status",
        "properties": {
          "pickupWarehouseConfigured": {
            "type": "boolean",
            "example": true
          },
          "returnWarehouseConfigured": {
            "type": "boolean",
            "example": true
          },
          "shippingTemplatesConfigured": {
            "type": "boolean",
            "example": true
          },
          "deliveryOptionConfigured": {
            "type": "boolean",
            "example": true
          },
          "sellerActive": {
            "type": "boolean",
            "example": true
          },
          "shopActive": {
            "type": "boolean",
            "example": true
          },
          "taxInfoSubmitted": {
            "type": "boolean",
            "example": true
          },
          "quantityLimitSet": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "deliveryOptionConfigured",
          "pickupWarehouseConfigured",
          "quantityLimitSet",
          "returnWarehouseConfigured",
          "sellerActive",
          "shippingTemplatesConfigured",
          "shopActive",
          "taxInfoSubmitted"
        ],
        "title": "Tiktok Prerequisites"
      },
      "com.fourthwall.openapi.model.GiveawayPackagesV1": {
        "type": "object",
        "properties": {
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiveawayPackagesV1.GiveawayPackage"
            }
          }
        },
        "required": [
          "packages"
        ],
        "title": "Giveaway Packages"
      },
      "com.fourthwall.openapi.model.GiveawayPackagesV1.GiveawayPackage": {
        "type": "object",
        "properties": {
          "packageId": {
            "type": "string",
            "example": "gpg_EdJvIXu3SEiXe_QkPavHSA"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          }
        },
        "required": [
          "createdAt",
          "packageId"
        ],
        "title": "Giveaway Package"
      },
      "com.fourthwall.openapi.model.GiftPurchaseV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "giv_EdJvIXu3SEiXe_QkPavHSA"
          },
          "friendlyId": {
            "type": "string",
            "example": "D3XZFWPP"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "offer": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferGiftPurchaseV1"
          },
          "amounts": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Amounts"
          },
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "message": {
            "type": "string",
            "example": "Sample message"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "gifts": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Available"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Cancelled"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.ChangedToPromotion"
                },
                {
                  "$ref": "#/components/schemas/com.fourthwall.openapi.model.GiftPurchaseV1.Gift.Redeemed"
                }
              ]
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "amounts",
          "createdAt",
          "email",
          "friendlyId",
          "gifts",
          "id",
          "offer",
          "quantity",
          "shopId"
        ],
        "title": "Gift Purchase"
      },
      "com.fourthwall.openapi.model.GiftPurchaseV1.Amounts": {
        "type": "object",
        "properties": {
          "subtotal": {
            "$ref": "#/components/schemas/Money"
          },
          "tax": {
            "$ref": "#/components/schemas/Money"
          },
          "total": {
            "$ref": "#/components/schemas/Money"
          },
          "profit": {
            "$ref": "#/components/schemas/Money"
          },
          "prepaidShipping": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "prepaidShipping",
          "profit",
          "subtotal",
          "tax",
          "total"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "promotionId",
          "winner"
        ],
        "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"
              }
            }
          }
        ],
        "required": [
          "id",
          "orderFriendlyId",
          "orderId",
          "winner"
        ],
        "title": "Redeemed"
      },
      "com.fourthwall.openapi.model.GiftPurchaseV1.Winner": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "selectedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          }
        },
        "required": [
          "selectedAt"
        ],
        "title": "Winner"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.ExternalOrderV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.ExternalOrderV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "External Order"
      },
      "com.fourthwall.openapi.model.ExternalOrderCancellationSummaryV1": {
        "type": "object",
        "description": "Summary of whether an external order can be cancelled",
        "properties": {
          "externalOrderId": {
            "type": "string",
            "example": "ETSY-123456789"
          },
          "externalSource": {
            "type": "string",
            "example": "ETSY"
          },
          "fourthwallOrderId": {
            "type": "string",
            "format": "uuid",
            "example": "b1a5c9d2-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
          },
          "cancellable": {
            "type": "boolean",
            "description": "Whether the order can be cancelled (with or without forceCancel)",
            "example": true
          },
          "notCancellableReason": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.NotCancellableReasonV1",
            "description": "Reason why the order cannot be cancelled, if applicable"
          },
          "fulfillments": {
            "type": "array",
            "description": "List of fulfillments with their cancellation status",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.FulfillmentCancellationInfoV1"
            }
          },
          "cancellableItemCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items in cancellable fulfillments",
            "example": 2
          },
          "notCancellableItemCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items in non-cancellable fulfillments",
            "example": 0
          }
        },
        "required": [
          "cancellable",
          "cancellableItemCount",
          "externalOrderId",
          "externalSource",
          "fourthwallOrderId",
          "fulfillments",
          "notCancellableItemCount"
        ],
        "title": "External Order Cancellation Summary"
      },
      "com.fourthwall.openapi.model.FulfillmentCancellationInfoV1": {
        "type": "object",
        "description": "Cancellation status for a single fulfillment",
        "properties": {
          "fulfillmentId": {
            "type": "string",
            "example": "ful_EdJvIXu3SEiXe_QkPavHSA"
          },
          "status": {
            "type": "string",
            "example": "ACCEPTED"
          },
          "cancellable": {
            "type": "boolean",
            "description": "Whether this fulfillment can be cancelled without forceCancel",
            "example": true
          },
          "cancellableWithForce": {
            "type": "boolean",
            "description": "Whether this fulfillment can be cancelled with forceCancel=true",
            "example": true
          },
          "notCancellableReason": {
            "type": "string",
            "description": "Reason why this fulfillment cannot be cancelled",
            "example": "IN_PRODUCTION"
          },
          "itemCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items in this fulfillment",
            "example": 1
          },
          "provider": {
            "type": "string",
            "example": "PRINTFUL"
          }
        },
        "required": [
          "cancellable",
          "cancellableWithForce",
          "fulfillmentId",
          "itemCount",
          "provider",
          "status"
        ],
        "title": "Fulfillment Cancellation Info"
      },
      "com.fourthwall.openapi.model.NotCancellableReasonV1": {
        "type": "object",
        "description": "Reason why an order cannot be cancelled",
        "properties": {
          "code": {
            "type": "string",
            "example": "ALL_FULFILLMENTS_IN_PRODUCTION"
          },
          "message": {
            "type": "string",
            "example": "All fulfillments are in production. Use forceCancel=true to cancel."
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Not Cancellable Reason"
      },
      "com.fourthwall.openapi.model.DonationV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "don_Kpcjx4HIQ1e4bTIOjX9CsA"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "COMPLETED",
              "ABANDONED",
              "CANCELLED",
              "FAILED"
            ]
          },
          "email": {
            "type": "string",
            "example": "supporter@fourthwall.com"
          },
          "username": {
            "type": "string",
            "example": "Johnny123"
          },
          "message": {
            "type": "string",
            "example": "Sample message"
          },
          "amounts": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.DonationV1.Amounts"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2020-08-13T09:05:36.939Z"
          }
        },
        "required": [
          "amounts",
          "createdAt",
          "email",
          "id",
          "shopId",
          "status",
          "updatedAt"
        ],
        "title": "Donation"
      },
      "com.fourthwall.openapi.model.DonationV1.Amounts": {
        "type": "object",
        "properties": {
          "total": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "total"
        ],
        "title": "Amounts"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.DonationV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.DonationV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Donation"
      },
      "com.fourthwall.openapi.model.designpipeline.DesignPipelineErrorV1": {
        "type": "object",
        "properties": {
          "step": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "step"
        ],
        "title": "Design Pipeline Error"
      },
      "com.fourthwall.openapi.model.designpipeline.DesignPipelineStatusV1": {
        "type": "object",
        "properties": {
          "pipelineId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "customizationId": {
            "type": "string"
          },
          "offerId": {
            "type": "string"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineImageV1"
            }
          },
          "error": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.designpipeline.DesignPipelineErrorV1"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "pipelineId",
          "status",
          "type"
        ],
        "title": "Design Pipeline Status"
      },
      "com.fourthwall.openapi.model.CollectionSlimV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "col_b1EVARkUTcCTSfspQaXr1Q"
          },
          "shopId": {
            "type": "string",
            "example": "sh_c689d374-22ca-43d3-8d29-9ef0805cc4cb"
          },
          "name": {
            "type": "string",
            "example": "My collection"
          },
          "slug": {
            "type": "string",
            "example": "my-collection"
          },
          "description": {
            "type": "string",
            "example": "My collection description"
          },
          "available": {
            "type": "boolean"
          },
          "state": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Archived"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Hidden"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Private"
              },
              {
                "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Public"
              }
            ]
          }
        },
        "required": [
          "available",
          "description",
          "id",
          "name",
          "shopId",
          "slug",
          "state"
        ],
        "title": "Collection Slim"
      },
      "com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.CollectionSlimV1": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/com.fourthwall.openapi.model.CollectionSlimV1"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "results"
        ],
        "title": "Collection Slim"
      },
      "com.fourthwall.openapi.model.offer.RemoveProductImagesRequestV1": {
        "type": "object",
        "description": "Request to remove images from a product",
        "properties": {
          "imageUrls": {
            "type": "array",
            "description": "List of image URLs to remove",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "imageUrls"
        ],
        "title": "Remove Product Images Request"
      },
      "com.fourthwall.app.openapi.endpoint.OpenApiDigitalProductEndpoint.RemoveDigitalFileRequestV1": {
        "type": "object",
        "properties": {
          "fileUrl": {
            "type": "string"
          }
        },
        "required": [
          "fileUrl"
        ],
        "title": "Remove Digital File Request"
      },
      "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.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.OfferUpdatedV1": {
        "properties": {
          "product": {
            "$ref": "#/components/schemas/com.fourthwall.openapi.model.OpenApiPageResponseCom.fourthwall.openapi.model.OfferAbstractV1.OfferFullV1"
          }
        },
        "title": "Offer Updated"
      },
      "com.fourthwall.openapi.model.NewsletterSubscribedV1": {
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "title": "Newsletter Subscribed"
      },
      "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.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": {
      "oauth": {
        "type": "oauth2",
        "flows": {
          "implicit": {
            "authorizationUrl": "https://auth.staging.fourthwall.com/auth/realms/Fourthwall/protocol/openid-connect/auth",
            "scopes": {
              "donation_read": "donation_read",
              "order_read": "order_read",
              "order_write": "order_write",
              "fulfillment_write": "fulfillment_write",
              "giveaway_read": "giveaway_read",
              "giveaway_write": "giveaway_write",
              "memberships_read": "memberships_read",
              "memberships_write": "memberships_write",
              "promotions_write": "promotions_write",
              "promotions_read": "promotions_read",
              "offer_read": "offer_read",
              "offer_write": "offer_write",
              "shop_read": "shop_read",
              "thankyou_read": "thankyou_read",
              "thankyou_write": "thankyou_write",
              "webhook_read": "webhook_read",
              "webhook_write": "webhook_write",
              "media_read": "media_read",
              "media_write": "media_write",
              "analytics_read": "analytics_read",
              "samples_read": "samples_read",
              "samples_write": "samples_write",
              "dns_read": "dns_read",
              "dns_write": "dns_write",
              "settings_read": "settings_read",
              "payout_read": "payout_read",
              "integrations_read": "integrations_read"
            }
          }
        }
      },
      "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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.939+00:00"
                  },
                  "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"
          }
        }
      }
    }
  }
}