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

# Update Product Availability

> Toggle whether a product is visible and available for purchase on your storefront

<Note>
  **OAuth scope:** `offer_write`

  API keys have full access to this endpoint.
</Note>

<Warning>
  **This endpoint does not update inventory quantities.** It only toggles product visibility on your storefront.

  * Setting `available: true` makes the product visible and purchasable
  * Setting `available: false` hides the product from your storefront

  To manage actual inventory quantities (e.g., setting stock to 50 units), use the [Fourthwall dashboard](https://my.fourthwall.com). The API currently does not support programmatic inventory quantity updates.
</Warning>


## OpenAPI

````yaml PUT /open-api/v1.0/products/{productId}/availability
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
servers:
  - url: https://api.fourthwall.com
    description: Production server
security: []
externalDocs:
  description: OpenAPI documentation
  url: https://docs.fourthwall.com
paths:
  /open-api/v1.0/products/{productId}/availability:
    put:
      tags:
        - Products (offers)
      summary: Update product (offer) availability by id
      description: Updates a product (offer) availability
      operationId: 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: `CUSTOMIZATION_ALREADY_USED_ERROR`,
            `DIGITAL_ITEMS_NOT_VALID_ERROR`, `DIGITAL_ITEMS_SIZE_LIMIT_ERROR`,
            `DUPLICATE_OFFER_VARIANT_TYPE_OPTION_ERROR`,
            `DUPLICATE_OFFER_VARIANT_TYPES_ERROR`,
            `ILLEGAL_FULFILLMENT_SERVICE_ERROR`,
            `ILLEGAL_FULFILLMENT_SERVICE_FOR_GIFT_CARD_ERROR`,
            `INVALID_OFFER_VARIANT_TYPE_METADATA_ERROR`,
            `MISSING_OFFER_COLOR_SWATCH_ERROR`, `OFFER_MUST_HAVE_COSTS_ERROR`,
            `OFFER_NOT_BUYABLE_WHEN_A_DEMO_ERROR`,
            `OFFER_SHIPMENT_EDIT_NOT_ALLOWED_ERROR`,
            `TOTAL_DIGITAL_STORAGE_LIMIT_ERROR`
          content:
            application/json:
              examples:
                customization-already-used-error:
                  value:
                    code: CUSTOMIZATION_ALREADY_USED_ERROR
                    customizationId: <customizationid?>
                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>
                duplicate-offer-variant-type-option-error:
                  value:
                    code: DUPLICATE_OFFER_VARIANT_TYPE_OPTION_ERROR
                    type: <offervarianttype>
                    option: <string>
                duplicate-offer-variant-types-error:
                  value:
                    code: DUPLICATE_OFFER_VARIANT_TYPES_ERROR
                    type: <offervarianttype>
                illegal-fulfillment-service-error:
                  value:
                    code: ILLEGAL_FULFILLMENT_SERVICE_ERROR
                    manufacturingService: <manufacturer>
                    fulfillmentService: <fulfillmentservice>
                illegal-fulfillment-service-for-gift-card-error:
                  value:
                    code: ILLEGAL_FULFILLMENT_SERVICE_FOR_GIFT_CARD_ERROR
                    fulfillmentService: <fulfillmentservice>
                invalid-offer-variant-type-metadata-error:
                  value:
                    code: INVALID_OFFER_VARIANT_TYPE_METADATA_ERROR
                    type: <offervarianttype>
                missing-offer-color-swatch-error:
                  value:
                    code: MISSING_OFFER_COLOR_SWATCH_ERROR
                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>
                offer-shipment-edit-not-allowed-error:
                  value:
                    code: OFFER_SHIPMENT_EDIT_NOT_ALLOWED_ERROR
                total-digital-storage-limit-error:
                  value:
                    code: TOTAL_DIGITAL_STORAGE_LIMIT_ERROR
                    offerId: <offerid>
                    sizeLimit: <long>
        '404':
          description: >-
            Possible errors: `OFFER_NOT_FOUND_BY_SHOP_ID_AND_ID_ERROR`,
            `OFFER_VARIANT_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>
        '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?>
        '422':
          description: 'Possible errors: `OFFER_CATEGORY_NOT_FOUND_ERROR`'
          content:
            application/json:
              examples:
                offer-category-not-found-error:
                  value:
                    code: OFFER_CATEGORY_NOT_FOUND_ERROR
                    title: <string>
      security:
        - oauth:
            - offer_write
        - basicAuth: []
      externalDocs:
        url: >-
          https://docs.fourthwall.com/api-reference/platform/products/update-product-availability
components:
  schemas:
    com.fourthwall.app.openapi.endpoint.OpenApiProductEndpoint.UpdateOfferAvailabilityV1Request:
      type: object
      properties:
        available:
          type: boolean
      required:
        - available
      title: Update Offer Availability V1Request
    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.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.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.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.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.Image:
      type: object
      properties:
        id:
          type: string
          example: 00aa4abd-5778-4199-8161-0b49b2f212e5
        url:
          type: string
          example: https://fourthwall.com/image.png
        width:
          type: integer
          format: int32
          description: The original width of the image in pixels.
          example: 800
        height:
          type: integer
          format: int32
          description: The original height of the image in pixels.
          example: 600
        transformedUrl:
          type: string
          description: >-
            Transformed URL with applied image processing (e.g., resizing,
            optimization)
          example: https://fourthwall.com/image.png
      required:
        - height
        - id
        - transformedUrl
        - url
        - width
      title: Image
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.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.OfferAdditionalInformationV1:
      type: object
      properties:
        sizeAndFit:
          type: string
        guaranteeAndReturns:
          type: string
        moreDetails:
          type: string
      title: Offer Additional Information
    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.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.openapi.model.OfferAbstractV1.OfferStateV1:
      discriminator:
        propertyName: type
        mapping:
          AVAILABLE:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.Available
          SOLD_OUT:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferStateV1.SoldOut
      properties:
        type:
          type: string
      required:
        - type
      title: Offer State
    com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1:
      discriminator:
        propertyName: type
        mapping:
          PUBLIC:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Public
          HIDDEN:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Hidden
          ARCHIVED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferAccessV1.Archived
      properties:
        type:
          type: string
      required:
        - type
      title: Offer Access
    Money:
      type: object
      properties:
        value:
          type: number
          example: 10
          minimum: 0
        currency:
          type: string
          example: USD
      required:
        - currency
        - value
      title: Money
    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.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.0'
        unit:
          type: string
          example: kg
      required:
        - unit
        - value
      title: Weight
    com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Dimensions:
      type: object
      properties:
        length:
          type: number
          example: '1.0'
        width:
          type: number
          example: '2.0'
        height:
          type: number
          example: '3.0'
        unit:
          type: string
          example: cm
      required:
        - height
        - length
        - unit
        - width
      title: Dimensions
    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.Stock:
      discriminator:
        propertyName: type
        mapping:
          UNLIMITED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Unlimited
          LIMITED:
            $ref: >-
              #/components/schemas/com.fourthwall.openapi.model.OfferAbstractV1.OfferVariantAbstractV1.Stock.Limited
      properties:
        type:
          type: string
      required:
        - type
      title: Stock
  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

````