> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-stage.shipbob.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server.

# Update Product Variants

PATCH https://sandbox-api.shipbob.com/2026-01/product/{productId}/variants
Content-Type: application/json

Updates one or more product variants. The request body must be an array of variant objects. Each variant must include the variant ID, and only the fields provided will be updated.

Reference: https://developer-stage.shipbob.dev/api/products/update-product-variants

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-01
  version: 1.0.0
paths:
  /2026-01/product/{productId}/variants:
    patch:
      operationId: update-product-variants
      summary: Update Product Variants
      description: >-
        Updates one or more product variants. The request body must be an array
        of variant objects. Each variant must include the variant ID, and only
        the fields provided will be updated.
      tags:
        - subpackage_products
      parameters:
        - name: productId
          in: path
          description: ''
          required: true
          schema:
            $ref: >-
              #/components/schemas/Products.Patch.Api.V5.Product.ProductId.Variants.ProductId.Integer
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Products.VariantViewModelV5Array'
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Products.UpdateProductVariantModelV5'
servers:
  - url: https://sandbox-api.shipbob.com
    description: https://sandbox-api.shipbob.com
components:
  schemas:
    Products.Patch.Api.V5.Product.ProductId.Variants.ProductId.Integer:
      type: integer
      format: int64
      title: Products.Patch.Api.V5.Product.ProductId.Variants.ProductId.Integer
    Products.BaseAdditionalHazmatAttributesModel:
      type: object
      properties:
        charge_state_percentage:
          type: number
          format: double
        container_metal:
          type: boolean
        container_type:
          type: string
        lithium_battery_packaging:
          type: string
        lithium_battery_type:
          type: string
        magnet:
          type: boolean
        net_volume:
          type: number
          format: double
        net_weight:
          type: number
          format: double
      title: Products.BaseAdditionalHazmatAttributesModel
    Products.BaseBundleDefinitionModel:
      type: object
      properties:
        quantity:
          type: integer
        variant_id:
          type: integer
          format: int64
      title: Products.BaseBundleDefinitionModel
    Products.AmazonProductChannelMetadataModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
        asin:
          type: string
        fnsku:
          type: string
        fulfillment_channel:
          type: string
      title: Products.AmazonProductChannelMetadataModel
    Products.BaseProductChannelMetadataModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
      title: Products.BaseProductChannelMetadataModel
    Products.BigCommerceProductChannelMetadataModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
        platform_product_id:
          type: integer
          format: int64
        platform_variant_id:
          type: integer
          format: int64
      title: Products.BigCommerceProductChannelMetadataModel
    Products.ShopifyProductChannelMetadataModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
      title: Products.ShopifyProductChannelMetadataModel
    ProductsBaseProductVariantModelChannelMetadataItems:
      oneOf:
        - $ref: '#/components/schemas/Products.AmazonProductChannelMetadataModel'
        - $ref: '#/components/schemas/Products.BaseProductChannelMetadataModel'
        - $ref: '#/components/schemas/Products.BigCommerceProductChannelMetadataModel'
        - $ref: '#/components/schemas/Products.ShopifyProductChannelMetadataModel'
      title: ProductsBaseProductVariantModelChannelMetadataItems
    Products.BaseCustomsModel:
      type: object
      properties:
        country_code_of_origin:
          type: string
        currency:
          type: string
        description:
          type: string
        hs_tariff_code:
          type: string
        is321_eligible:
          type: boolean
        value:
          type: integer
      title: Products.BaseCustomsModel
    Products.BaseDimensionModel:
      type: object
      properties:
        height:
          type: number
          format: double
          description: Height of the product in inches
        length:
          type: number
          format: double
          description: Length of the product in inches
        width:
          type: number
          format: double
          description: Width of the product in inches
      title: Products.BaseDimensionModel
    Products.BaseSerialScanModel:
      type: object
      properties:
        exact_character_length:
          type: integer
        is_enabled:
          type: boolean
        prefix:
          type: string
        suffix:
          type: string
      title: Products.BaseSerialScanModel
    Products.BaseFulfillmentSettingsModel:
      type: object
      properties:
        dangerous_goods:
          type: boolean
          description: >-
            Flag indicating whether the product is classified as dangerous goods
            (hazmat) requiring special handling
        is_bpm_parcel:
          type: boolean
          description: >-
            Flag indicating whether this product qualifies for Business Parcel
            Manager (BPM) parcel shipping
        is_case_pick:
          type: boolean
          description: >-
            Flag indicating whether this product should be picked by the case
            rather than individual units
        msds_url:
          type: string
          description: URL to the Material Safety Data Sheet (MSDS) for hazardous materials
        requires_prop65:
          type: boolean
          description: >-
            Flag indicating California Proposition 65 warning label requirement
            for products containing chemicals known to cause cancer or
            reproductive harm
        serial_scan:
          $ref: '#/components/schemas/Products.BaseSerialScanModel'
          description: Serial number scanning configuration for tracking individual units
      title: Products.BaseFulfillmentSettingsModel
    Products.BaseLotInformationModel:
      type: object
      properties:
        is_lot:
          type: boolean
        minimum_shelf_life_days:
          type: integer
      title: Products.BaseLotInformationModel
    Products.BaseReturnPreferencesModel:
      type: object
      properties:
        backup_action_id:
          type: integer
          description: ID of backup action to take if primary action cannot be completed
        instructions:
          type: string
          description: Special instructions for handling returned items
        primary_action_id:
          type: integer
          description: >-
            ID of primary action to take when product is returned by customer
            (e.g., Restock, Dispose, Return to Sender)
        return_to_sender_backup_action_id:
          type: integer
          description: >-
            ID of backup action for undeliverable packages if primary action
            cannot be completed
        return_to_sender_primary_action_id:
          type: integer
          description: >-
            ID of primary action for undeliverable packages that are returned to
            sender
      title: Products.BaseReturnPreferencesModel
    Products.ReviewsPendingType:
      type: string
      enum:
        - '0'
        - '1'
        - '2'
        - '3'
        - '4'
      title: Products.ReviewsPendingType
    Products.VariantStatus:
      type: string
      enum:
        - '1'
        - '2'
        - '3'
      title: Products.VariantStatus
    Products.BarcodeModel:
      type: object
      properties:
        sticker_url:
          type: string
        value:
          type: string
      title: Products.BarcodeModel
    Products.UpdateProductVariantModelV5:
      type: object
      properties:
        additional_hazmat_attributes:
          $ref: '#/components/schemas/Products.BaseAdditionalHazmatAttributesModel'
        bundle_definition:
          type: array
          items:
            $ref: '#/components/schemas/Products.BaseBundleDefinitionModel'
        channel_metadata:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductsBaseProductVariantModelChannelMetadataItems
        customs:
          $ref: '#/components/schemas/Products.BaseCustomsModel'
        dimension:
          $ref: '#/components/schemas/Products.BaseDimensionModel'
        fulfillment_settings:
          $ref: '#/components/schemas/Products.BaseFulfillmentSettingsModel'
        gtin:
          type: string
        is_digital:
          type: boolean
        lot_information:
          $ref: '#/components/schemas/Products.BaseLotInformationModel'
        name:
          type: string
        packaging_material_type_id:
          type: integer
        packaging_requirement_id:
          type: integer
        return_preferences:
          $ref: '#/components/schemas/Products.BaseReturnPreferencesModel'
        reviews_pending:
          type: array
          items:
            $ref: '#/components/schemas/Products.ReviewsPendingType'
        sku:
          type: string
        status:
          $ref: '#/components/schemas/Products.VariantStatus'
        upc:
          type: string
        weight:
          type: number
          format: double
        barcodes:
          type: array
          items:
            $ref: '#/components/schemas/Products.BarcodeModel'
        id:
          type: integer
          format: int64
      title: Products.UpdateProductVariantModelV5
    Products.AdditionalHazmatAttributesViewModel:
      type: object
      properties:
        charge_state_percentage:
          type: number
          format: double
        container_metal:
          type: boolean
        container_type:
          type: string
        lithium_battery_packaging:
          type: string
        lithium_battery_type:
          type: string
        magnet:
          type: boolean
        net_volume:
          type: number
          format: double
        net_weight:
          type: number
          format: double
      title: Products.AdditionalHazmatAttributesViewModel
    Products.AssociatedBundlesViewModel:
      type: object
      properties:
        product_id:
          type: integer
          format: int64
        product_name:
          type: string
        quantity:
          type: integer
        variant_id:
          type: integer
          format: int64
        variant_sku:
          type: string
      title: Products.AssociatedBundlesViewModel
    Products.BundleDefinitionViewModel:
      type: object
      properties:
        product_id:
          type: integer
          format: int64
        quantity:
          type: integer
        variant_id:
          type: integer
          format: int64
        variant_name:
          type: string
        variant_sku:
          type: string
      title: Products.BundleDefinitionViewModel
    Products.CustomsViewModel:
      type: object
      properties:
        country_code_of_origin:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country code where the product was manufactured
            (e.g., 'US', 'CN', 'MX')
        currency:
          type: string
          description: >-
            ISO 4217 currency code for the declared value (e.g., 'USD', 'EUR',
            'GBP')
        description:
          type: string
          description: Product description for customs documentation
        hs_tariff_code:
          type: string
          description: >-
            Harmonized System tariff code used for international customs
            classification (6-10 digits)
        is321_eligible:
          type: boolean
          description: >-
            Flag indicating eligibility for Section 321 de minimis exemption
            (imports under $800 to US)
        value:
          type: integer
          description: Declared customs value of the product for international shipping
      title: Products.CustomsViewModel
    Products.DimensionViewModel:
      type: object
      properties:
        height:
          type: number
          format: double
          description: Height of the product
        is_locked:
          type: boolean
          description: >-
            Flag indicating whether dimensions are locked and cannot be
            automatically recalculated by the system
        length:
          type: number
          format: double
          description: Length of the product
        source:
          type: string
          description: Source of the dimension data (e.g., 'User', 'System', 'Warehouse')
        unit:
          type: string
          description: Unit of measurement for dimensions (e.g., 'in', 'cm')
        width:
          type: number
          format: double
          description: Width of the product
      title: Products.DimensionViewModel
    Products.SerialScanViewModel:
      type: object
      properties:
        exact_character_length:
          type: integer
        is_enabled:
          type: boolean
        prefix:
          type: string
        suffix:
          type: string
      title: Products.SerialScanViewModel
    Products.FulfillmentSettingsViewModel:
      type: object
      properties:
        dangerous_goods:
          type: boolean
          description: >-
            Flag indicating whether the product is classified as dangerous goods
            (hazmat) requiring special handling
        is_bpm_parcel:
          type: boolean
          description: >-
            Flag indicating whether this product qualifies for Business Parcel
            Manager (BPM) parcel shipping
        is_case_pick:
          type: boolean
          description: >-
            Flag indicating whether this product should be picked by the case
            rather than individual units
        msds_url:
          type: string
          description: URL to the Material Safety Data Sheet (MSDS) for hazardous materials
        requires_prop65:
          type: boolean
          description: >-
            Flag indicating California Proposition 65 warning label requirement
            for products containing chemicals known to cause cancer or
            reproductive harm
        serial_scan:
          $ref: '#/components/schemas/Products.SerialScanViewModel'
          description: Serial number scanning configuration for tracking individual units
      title: Products.FulfillmentSettingsViewModel
    Products.InventoryViewModel:
      type: object
      properties:
        inventory_id:
          type: integer
        on_hand_qty:
          type: integer
      title: Products.InventoryViewModel
    Products.LotInformationViewModel:
      type: object
      properties:
        is_lot:
          type: boolean
        minimum_shelf_life_days:
          type: integer
      title: Products.LotInformationViewModel
    Products.MergedChildrenViewModel:
      type: object
      properties:
        channel_ids:
          type: array
          items:
            type: integer
            format: int64
        completed_at:
          type: string
          format: date-time
        inventory_id:
          type: integer
          format: int64
        variant_id:
          type: integer
          format: int64
        variant_name:
          type: string
      title: Products.MergedChildrenViewModel
    Products.EnumViewModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      title: Products.EnumViewModel
    Products.ReturnPreferencesViewModel:
      type: object
      properties:
        backup_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Backup action to take if primary action cannot be completed
        instructions:
          type: string
          description: Special instructions for handling returned items
        primary_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Primary action to take when product is returned by customer (e.g.,
            'Restock', 'Dispose', 'Return to Sender')
        return_to_sender_backup_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Backup action for undeliverable packages if primary action cannot be
            completed
        return_to_sender_primary_action:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: >-
            Primary action for undeliverable packages that are returned to
            sender
      title: Products.ReturnPreferencesViewModel
    Products.WeightViewModel:
      type: object
      properties:
        unit:
          type: string
          description: Unit of measurement for weight (e.g., 'lb', 'oz', 'kg', 'g')
        weight:
          type: number
          format: double
          description: Weight value of the product
      title: Products.WeightViewModel
    Products.BarcodeViewModel:
      type: object
      properties:
        sticker_url:
          type: string
          description: URL to download or view a printable barcode sticker
        value:
          type: string
          description: The barcode value (e.g., UPC, EAN, GTIN, or other barcode format)
      title: Products.BarcodeViewModel
    Products.ChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
      title: Products.ChannelMetadataViewModel
    Products.AmazonChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
        asin:
          type: string
        fnsku:
          type: string
        fulfillment_channel:
          type: string
      title: Products.AmazonChannelMetadataViewModel
    Products.BigCommerceChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
        platform_product_id:
          type: integer
          format: int64
        platform_variant_id:
          type: integer
          format: int64
      title: Products.BigCommerceChannelMetadataViewModel
    Products.ShopifyChannelMetadataViewModel:
      type: object
      properties:
        channel_id:
          type: integer
          format: int64
        channel_name:
          type: string
        currency:
          type: string
        id:
          type: integer
          format: int64
        is_inventory_sync_enabled:
          type: boolean
        legacy_product_id:
          type: integer
          format: int64
        platform:
          type: string
        platform_identifier:
          type: string
        platform_inventory_item_id:
          type: string
        price:
          type: number
          format: double
        seller_sku:
          type: string
      title: Products.ShopifyChannelMetadataViewModel
    ProductsVariantViewModelV5ChannelMetadataItems:
      oneOf:
        - $ref: '#/components/schemas/Products.ChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.AmazonChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.BigCommerceChannelMetadataViewModel'
        - $ref: '#/components/schemas/Products.ShopifyChannelMetadataViewModel'
      title: ProductsVariantViewModelV5ChannelMetadataItems
    Products.VariantViewModelV5:
      type: object
      properties:
        additional_hazmat_attributes:
          $ref: '#/components/schemas/Products.AdditionalHazmatAttributesViewModel'
          description: >-
            Additional hazardous materials attributes for lithium batteries and
            dangerous goods
        associated_bundles:
          type: array
          items:
            $ref: '#/components/schemas/Products.AssociatedBundlesViewModel'
          description: List of bundle products that include this variant as a component
        bundle_definition:
          type: array
          items:
            $ref: '#/components/schemas/Products.BundleDefinitionViewModel'
          description: >-
            If this variant is a bundle, defines which variants and quantities
            make up the bundle
        created_on:
          type: string
          format: date-time
          description: Timestamp when the variant was created
        customs:
          $ref: '#/components/schemas/Products.CustomsViewModel'
          description: >-
            Customs and international shipping information (tariff codes,
            country of origin, declared value)
        dimension:
          $ref: '#/components/schemas/Products.DimensionViewModel'
          description: Physical dimensions of the variant (length, width, height)
        fulfillment_settings:
          $ref: '#/components/schemas/Products.FulfillmentSettingsViewModel'
          description: >-
            Fulfillment-specific settings (Prop 65, dangerous goods, serial
            scanning, case pick)
        gtin:
          type: string
          description: Global Trade Item Number - standardized product identifier
        id:
          type: integer
          format: int64
          description: Unique identifier for the variant
        inventory:
          $ref: '#/components/schemas/Products.InventoryViewModel'
          description: Current inventory information including on-hand quantity
        is_digital:
          type: boolean
          description: >-
            Flag indicating whether this is a digital product (no physical
            fulfillment)
        is_image_uploaded:
          type: boolean
          description: >-
            Flag indicating whether a product image has been uploaded for this
            variant
        lot_information:
          $ref: '#/components/schemas/Products.LotInformationViewModel'
          description: >-
            Lot tracking settings including whether lot tracking is enabled and
            minimum shelf life requirements
        merge_children:
          type: array
          items:
            $ref: '#/components/schemas/Products.MergedChildrenViewModel'
          description: List of variants that have been merged into this variant
        name:
          type: string
          description: Variant name or descriptor
        packaging_material_type:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Type of packaging material used for this variant (ID and name)
        packaging_requirement:
          $ref: '#/components/schemas/Products.EnumViewModel'
          description: Special packaging requirements for this variant (ID and name)
        return_preferences:
          $ref: '#/components/schemas/Products.ReturnPreferencesViewModel'
          description: >-
            Customer return handling preferences including primary and backup
            actions
        reviews_pending:
          type: array
          items:
            type: string
          description: >-
            List of pending review types for this variant (e.g., compliance
            checks, quality reviews)
        sku:
          type: string
          description: >-
            Stock Keeping Unit - unique identifier for the variant used in
            inventory management
        status:
          type: string
          description: Current status of the variant (e.g., 'Active', 'Inactive')
        upc:
          type: string
          description: Universal Product Code - 12-digit barcode identifier
        updated_on:
          type: string
          format: date-time
          description: Timestamp when the variant was last updated
        weight:
          $ref: '#/components/schemas/Products.WeightViewModel'
          description: Weight of the variant including unit of measure
        barcodes:
          type: array
          items:
            $ref: '#/components/schemas/Products.BarcodeViewModel'
          description: List of barcodes associated with this variant (UPC, EAN, etc.)
        channel_metadata:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductsVariantViewModelV5ChannelMetadataItems
          description: >-
            Platform-specific metadata for sales channels (e.g., Amazon ASIN,
            Shopify product IDs)
      title: Products.VariantViewModelV5
    Products.VariantViewModelV5Array:
      type: array
      items:
        $ref: '#/components/schemas/Products.VariantViewModelV5'
      title: Products.VariantViewModelV5Array
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## Examples



**Request**

```json
{
  "additional_hazmat_attributes": {
    "charge_state_percentage": 0.1,
    "container_metal": true,
    "container_type": "string",
    "lithium_battery_packaging": "string",
    "lithium_battery_type": "string",
    "magnet": true,
    "net_volume": 0.1,
    "net_weight": 0.1
  },
  "barcodes": [
    {
      "sticker_url": "string",
      "value": "string"
    }
  ],
  "bundle_definition": [
    {
      "quantity": 0,
      "variant_id": 0
    }
  ],
  "channel_metadata": [
    {
      "asin": "string",
      "fnsku": "string",
      "fulfillment_channel": "string",
      "channel_id": 0,
      "channel_name": "string",
      "currency": "string",
      "id": 0,
      "is_inventory_sync_enabled": true,
      "legacy_product_id": 0,
      "platform": "string",
      "platform_identifier": "string",
      "platform_inventory_item_id": "string",
      "price": 0.1,
      "seller_sku": "string"
    }
  ],
  "customs": {
    "country_code_of_origin": "string",
    "currency": "string",
    "description": "string",
    "hs_tariff_code": "string",
    "is321_eligible": true,
    "value": 0
  },
  "dimension": {
    "height": 0.1,
    "length": 0.1,
    "width": 0.1
  },
  "fulfillment_settings": {
    "dangerous_goods": true,
    "is_bpm_parcel": true,
    "is_case_pick": true,
    "msds_url": "string",
    "requires_prop65": true,
    "serial_scan": {
      "exact_character_length": 0,
      "is_enabled": true,
      "prefix": "string",
      "suffix": "string"
    }
  },
  "gtin": "string",
  "id": 0,
  "is_digital": true,
  "lot_information": {
    "is_lot": true,
    "minimum_shelf_life_days": 0
  },
  "name": "string",
  "packaging_material_type_id": 0,
  "packaging_requirement_id": 0,
  "return_preferences": {
    "backup_action_id": 0,
    "instructions": "string",
    "primary_action_id": 0,
    "return_to_sender_backup_action_id": 0,
    "return_to_sender_primary_action_id": 0
  },
  "reviews_pending": [
    0
  ],
  "sku": "string",
  "status": 1,
  "upc": "string",
  "weight": 0.1
}
```

**Response**

```json
[
  {
    "additional_hazmat_attributes": {
      "charge_state_percentage": 0.1,
      "container_metal": true,
      "container_type": "string",
      "lithium_battery_packaging": "string",
      "lithium_battery_type": "string",
      "magnet": true,
      "net_volume": 0.1,
      "net_weight": 0.1
    },
    "associated_bundles": [
      {
        "product_id": 0,
        "product_name": "string",
        "quantity": 0,
        "variant_id": 0,
        "variant_sku": "string"
      }
    ],
    "barcodes": [
      {
        "sticker_url": "string",
        "value": "string"
      }
    ],
    "bundle_definition": [
      {
        "product_id": 0,
        "quantity": 0,
        "variant_id": 0,
        "variant_name": "string",
        "variant_sku": "string"
      }
    ],
    "channel_metadata": [
      {
        "channel_id": 0,
        "channel_name": "string",
        "currency": "string",
        "id": 0,
        "is_inventory_sync_enabled": true,
        "legacy_product_id": 0,
        "platform": "string",
        "platform_identifier": "string",
        "platform_inventory_item_id": "string",
        "price": 0.1,
        "seller_sku": "string"
      }
    ],
    "created_on": "2019-08-24T14:15:22+00:00",
    "customs": {
      "country_code_of_origin": "string",
      "currency": "string",
      "description": "string",
      "hs_tariff_code": "string",
      "is321_eligible": true,
      "value": 0
    },
    "dimension": {
      "height": 0.1,
      "is_locked": true,
      "length": 0.1,
      "source": "string",
      "unit": "string",
      "width": 0.1
    },
    "fulfillment_settings": {
      "dangerous_goods": true,
      "is_bpm_parcel": true,
      "is_case_pick": true,
      "msds_url": "string",
      "requires_prop65": true,
      "serial_scan": {
        "exact_character_length": 0,
        "is_enabled": true,
        "prefix": "string",
        "suffix": "string"
      }
    },
    "gtin": "string",
    "id": 0,
    "inventory": {
      "inventory_id": 0,
      "on_hand_qty": 0
    },
    "is_digital": true,
    "is_image_uploaded": true,
    "lot_information": {
      "is_lot": true,
      "minimum_shelf_life_days": 0
    },
    "merge_children": [
      {
        "channel_ids": [
          0
        ],
        "completed_at": "2019-08-24T14:15:22+00:00",
        "inventory_id": 0,
        "variant_id": 0,
        "variant_name": "string"
      }
    ],
    "name": "string",
    "packaging_material_type": {
      "id": 0,
      "name": "string"
    },
    "packaging_requirement": {
      "id": 0,
      "name": "string"
    },
    "return_preferences": {
      "backup_action": {
        "id": 0,
        "name": "string"
      },
      "instructions": "string",
      "primary_action": {
        "id": 0,
        "name": "string"
      },
      "return_to_sender_backup_action": {
        "id": 0,
        "name": "string"
      },
      "return_to_sender_primary_action": {
        "id": 0,
        "name": "string"
      }
    },
    "reviews_pending": [
      "string"
    ],
    "sku": "string",
    "status": "string",
    "upc": "string",
    "updated_on": "2019-08-24T14:15:22+00:00",
    "weight": {
      "unit": "string",
      "weight": 0.1
    }
  }
]
```

**SDK Code**

```python default
import requests

url = "https://sandbox-api.shipbob.com/2026-01/product/1/variants"

payload = {
    "additional_hazmat_attributes": {
        "charge_state_percentage": 0.1,
        "container_metal": True,
        "container_type": "string",
        "lithium_battery_packaging": "string",
        "lithium_battery_type": "string",
        "magnet": True,
        "net_volume": 0.1,
        "net_weight": 0.1
    },
    "barcodes": [
        {
            "sticker_url": "string",
            "value": "string"
        }
    ],
    "bundle_definition": [
        {
            "quantity": 0,
            "variant_id": 0
        }
    ],
    "channel_metadata": [
        {
            "asin": "string",
            "fnsku": "string",
            "fulfillment_channel": "string",
            "channel_id": 0,
            "channel_name": "string",
            "currency": "string",
            "id": 0,
            "is_inventory_sync_enabled": True,
            "legacy_product_id": 0,
            "platform": "string",
            "platform_identifier": "string",
            "platform_inventory_item_id": "string",
            "price": 0.1,
            "seller_sku": "string"
        }
    ],
    "customs": {
        "country_code_of_origin": "string",
        "currency": "string",
        "description": "string",
        "hs_tariff_code": "string",
        "is321_eligible": True,
        "value": 0
    },
    "dimension": {
        "height": 0.1,
        "length": 0.1,
        "width": 0.1
    },
    "fulfillment_settings": {
        "dangerous_goods": True,
        "is_bpm_parcel": True,
        "is_case_pick": True,
        "msds_url": "string",
        "requires_prop65": True,
        "serial_scan": {
            "exact_character_length": 0,
            "is_enabled": True,
            "prefix": "string",
            "suffix": "string"
        }
    },
    "gtin": "string",
    "id": 0,
    "is_digital": True,
    "lot_information": {
        "is_lot": True,
        "minimum_shelf_life_days": 0
    },
    "name": "string",
    "packaging_material_type_id": 0,
    "packaging_requirement_id": 0,
    "return_preferences": {
        "backup_action_id": 0,
        "instructions": "string",
        "primary_action_id": 0,
        "return_to_sender_backup_action_id": 0,
        "return_to_sender_primary_action_id": 0
    },
    "reviews_pending": [0],
    "sku": "string",
    "status": 1,
    "upc": "string",
    "weight": 0.1
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript default
const url = 'https://sandbox-api.shipbob.com/2026-01/product/1/variants';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"additional_hazmat_attributes":{"charge_state_percentage":0.1,"container_metal":true,"container_type":"string","lithium_battery_packaging":"string","lithium_battery_type":"string","magnet":true,"net_volume":0.1,"net_weight":0.1},"barcodes":[{"sticker_url":"string","value":"string"}],"bundle_definition":[{"quantity":0,"variant_id":0}],"channel_metadata":[{"asin":"string","fnsku":"string","fulfillment_channel":"string","channel_id":0,"channel_name":"string","currency":"string","id":0,"is_inventory_sync_enabled":true,"legacy_product_id":0,"platform":"string","platform_identifier":"string","platform_inventory_item_id":"string","price":0.1,"seller_sku":"string"}],"customs":{"country_code_of_origin":"string","currency":"string","description":"string","hs_tariff_code":"string","is321_eligible":true,"value":0},"dimension":{"height":0.1,"length":0.1,"width":0.1},"fulfillment_settings":{"dangerous_goods":true,"is_bpm_parcel":true,"is_case_pick":true,"msds_url":"string","requires_prop65":true,"serial_scan":{"exact_character_length":0,"is_enabled":true,"prefix":"string","suffix":"string"}},"gtin":"string","id":0,"is_digital":true,"lot_information":{"is_lot":true,"minimum_shelf_life_days":0},"name":"string","packaging_material_type_id":0,"packaging_requirement_id":0,"return_preferences":{"backup_action_id":0,"instructions":"string","primary_action_id":0,"return_to_sender_backup_action_id":0,"return_to_sender_primary_action_id":0},"reviews_pending":[0],"sku":"string","status":1,"upc":"string","weight":0.1}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.shipbob.com/2026-01/product/1/variants"

	payload := strings.NewReader("{\n  \"additional_hazmat_attributes\": {\n    \"charge_state_percentage\": 0.1,\n    \"container_metal\": true,\n    \"container_type\": \"string\",\n    \"lithium_battery_packaging\": \"string\",\n    \"lithium_battery_type\": \"string\",\n    \"magnet\": true,\n    \"net_volume\": 0.1,\n    \"net_weight\": 0.1\n  },\n  \"barcodes\": [\n    {\n      \"sticker_url\": \"string\",\n      \"value\": \"string\"\n    }\n  ],\n  \"bundle_definition\": [\n    {\n      \"quantity\": 0,\n      \"variant_id\": 0\n    }\n  ],\n  \"channel_metadata\": [\n    {\n      \"asin\": \"string\",\n      \"fnsku\": \"string\",\n      \"fulfillment_channel\": \"string\",\n      \"channel_id\": 0,\n      \"channel_name\": \"string\",\n      \"currency\": \"string\",\n      \"id\": 0,\n      \"is_inventory_sync_enabled\": true,\n      \"legacy_product_id\": 0,\n      \"platform\": \"string\",\n      \"platform_identifier\": \"string\",\n      \"platform_inventory_item_id\": \"string\",\n      \"price\": 0.1,\n      \"seller_sku\": \"string\"\n    }\n  ],\n  \"customs\": {\n    \"country_code_of_origin\": \"string\",\n    \"currency\": \"string\",\n    \"description\": \"string\",\n    \"hs_tariff_code\": \"string\",\n    \"is321_eligible\": true,\n    \"value\": 0\n  },\n  \"dimension\": {\n    \"height\": 0.1,\n    \"length\": 0.1,\n    \"width\": 0.1\n  },\n  \"fulfillment_settings\": {\n    \"dangerous_goods\": true,\n    \"is_bpm_parcel\": true,\n    \"is_case_pick\": true,\n    \"msds_url\": \"string\",\n    \"requires_prop65\": true,\n    \"serial_scan\": {\n      \"exact_character_length\": 0,\n      \"is_enabled\": true,\n      \"prefix\": \"string\",\n      \"suffix\": \"string\"\n    }\n  },\n  \"gtin\": \"string\",\n  \"id\": 0,\n  \"is_digital\": true,\n  \"lot_information\": {\n    \"is_lot\": true,\n    \"minimum_shelf_life_days\": 0\n  },\n  \"name\": \"string\",\n  \"packaging_material_type_id\": 0,\n  \"packaging_requirement_id\": 0,\n  \"return_preferences\": {\n    \"backup_action_id\": 0,\n    \"instructions\": \"string\",\n    \"primary_action_id\": 0,\n    \"return_to_sender_backup_action_id\": 0,\n    \"return_to_sender_primary_action_id\": 0\n  },\n  \"reviews_pending\": [\n    0\n  ],\n  \"sku\": \"string\",\n  \"status\": 1,\n  \"upc\": \"string\",\n  \"weight\": 0.1\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/2026-01/product/1/variants")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"additional_hazmat_attributes\": {\n    \"charge_state_percentage\": 0.1,\n    \"container_metal\": true,\n    \"container_type\": \"string\",\n    \"lithium_battery_packaging\": \"string\",\n    \"lithium_battery_type\": \"string\",\n    \"magnet\": true,\n    \"net_volume\": 0.1,\n    \"net_weight\": 0.1\n  },\n  \"barcodes\": [\n    {\n      \"sticker_url\": \"string\",\n      \"value\": \"string\"\n    }\n  ],\n  \"bundle_definition\": [\n    {\n      \"quantity\": 0,\n      \"variant_id\": 0\n    }\n  ],\n  \"channel_metadata\": [\n    {\n      \"asin\": \"string\",\n      \"fnsku\": \"string\",\n      \"fulfillment_channel\": \"string\",\n      \"channel_id\": 0,\n      \"channel_name\": \"string\",\n      \"currency\": \"string\",\n      \"id\": 0,\n      \"is_inventory_sync_enabled\": true,\n      \"legacy_product_id\": 0,\n      \"platform\": \"string\",\n      \"platform_identifier\": \"string\",\n      \"platform_inventory_item_id\": \"string\",\n      \"price\": 0.1,\n      \"seller_sku\": \"string\"\n    }\n  ],\n  \"customs\": {\n    \"country_code_of_origin\": \"string\",\n    \"currency\": \"string\",\n    \"description\": \"string\",\n    \"hs_tariff_code\": \"string\",\n    \"is321_eligible\": true,\n    \"value\": 0\n  },\n  \"dimension\": {\n    \"height\": 0.1,\n    \"length\": 0.1,\n    \"width\": 0.1\n  },\n  \"fulfillment_settings\": {\n    \"dangerous_goods\": true,\n    \"is_bpm_parcel\": true,\n    \"is_case_pick\": true,\n    \"msds_url\": \"string\",\n    \"requires_prop65\": true,\n    \"serial_scan\": {\n      \"exact_character_length\": 0,\n      \"is_enabled\": true,\n      \"prefix\": \"string\",\n      \"suffix\": \"string\"\n    }\n  },\n  \"gtin\": \"string\",\n  \"id\": 0,\n  \"is_digital\": true,\n  \"lot_information\": {\n    \"is_lot\": true,\n    \"minimum_shelf_life_days\": 0\n  },\n  \"name\": \"string\",\n  \"packaging_material_type_id\": 0,\n  \"packaging_requirement_id\": 0,\n  \"return_preferences\": {\n    \"backup_action_id\": 0,\n    \"instructions\": \"string\",\n    \"primary_action_id\": 0,\n    \"return_to_sender_backup_action_id\": 0,\n    \"return_to_sender_primary_action_id\": 0\n  },\n  \"reviews_pending\": [\n    0\n  ],\n  \"sku\": \"string\",\n  \"status\": 1,\n  \"upc\": \"string\",\n  \"weight\": 0.1\n}"

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://sandbox-api.shipbob.com/2026-01/product/1/variants")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"additional_hazmat_attributes\": {\n    \"charge_state_percentage\": 0.1,\n    \"container_metal\": true,\n    \"container_type\": \"string\",\n    \"lithium_battery_packaging\": \"string\",\n    \"lithium_battery_type\": \"string\",\n    \"magnet\": true,\n    \"net_volume\": 0.1,\n    \"net_weight\": 0.1\n  },\n  \"barcodes\": [\n    {\n      \"sticker_url\": \"string\",\n      \"value\": \"string\"\n    }\n  ],\n  \"bundle_definition\": [\n    {\n      \"quantity\": 0,\n      \"variant_id\": 0\n    }\n  ],\n  \"channel_metadata\": [\n    {\n      \"asin\": \"string\",\n      \"fnsku\": \"string\",\n      \"fulfillment_channel\": \"string\",\n      \"channel_id\": 0,\n      \"channel_name\": \"string\",\n      \"currency\": \"string\",\n      \"id\": 0,\n      \"is_inventory_sync_enabled\": true,\n      \"legacy_product_id\": 0,\n      \"platform\": \"string\",\n      \"platform_identifier\": \"string\",\n      \"platform_inventory_item_id\": \"string\",\n      \"price\": 0.1,\n      \"seller_sku\": \"string\"\n    }\n  ],\n  \"customs\": {\n    \"country_code_of_origin\": \"string\",\n    \"currency\": \"string\",\n    \"description\": \"string\",\n    \"hs_tariff_code\": \"string\",\n    \"is321_eligible\": true,\n    \"value\": 0\n  },\n  \"dimension\": {\n    \"height\": 0.1,\n    \"length\": 0.1,\n    \"width\": 0.1\n  },\n  \"fulfillment_settings\": {\n    \"dangerous_goods\": true,\n    \"is_bpm_parcel\": true,\n    \"is_case_pick\": true,\n    \"msds_url\": \"string\",\n    \"requires_prop65\": true,\n    \"serial_scan\": {\n      \"exact_character_length\": 0,\n      \"is_enabled\": true,\n      \"prefix\": \"string\",\n      \"suffix\": \"string\"\n    }\n  },\n  \"gtin\": \"string\",\n  \"id\": 0,\n  \"is_digital\": true,\n  \"lot_information\": {\n    \"is_lot\": true,\n    \"minimum_shelf_life_days\": 0\n  },\n  \"name\": \"string\",\n  \"packaging_material_type_id\": 0,\n  \"packaging_requirement_id\": 0,\n  \"return_preferences\": {\n    \"backup_action_id\": 0,\n    \"instructions\": \"string\",\n    \"primary_action_id\": 0,\n    \"return_to_sender_backup_action_id\": 0,\n    \"return_to_sender_primary_action_id\": 0\n  },\n  \"reviews_pending\": [\n    0\n  ],\n  \"sku\": \"string\",\n  \"status\": 1,\n  \"upc\": \"string\",\n  \"weight\": 0.1\n}")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://sandbox-api.shipbob.com/2026-01/product/1/variants', [
  'body' => '{
  "additional_hazmat_attributes": {
    "charge_state_percentage": 0.1,
    "container_metal": true,
    "container_type": "string",
    "lithium_battery_packaging": "string",
    "lithium_battery_type": "string",
    "magnet": true,
    "net_volume": 0.1,
    "net_weight": 0.1
  },
  "barcodes": [
    {
      "sticker_url": "string",
      "value": "string"
    }
  ],
  "bundle_definition": [
    {
      "quantity": 0,
      "variant_id": 0
    }
  ],
  "channel_metadata": [
    {
      "asin": "string",
      "fnsku": "string",
      "fulfillment_channel": "string",
      "channel_id": 0,
      "channel_name": "string",
      "currency": "string",
      "id": 0,
      "is_inventory_sync_enabled": true,
      "legacy_product_id": 0,
      "platform": "string",
      "platform_identifier": "string",
      "platform_inventory_item_id": "string",
      "price": 0.1,
      "seller_sku": "string"
    }
  ],
  "customs": {
    "country_code_of_origin": "string",
    "currency": "string",
    "description": "string",
    "hs_tariff_code": "string",
    "is321_eligible": true,
    "value": 0
  },
  "dimension": {
    "height": 0.1,
    "length": 0.1,
    "width": 0.1
  },
  "fulfillment_settings": {
    "dangerous_goods": true,
    "is_bpm_parcel": true,
    "is_case_pick": true,
    "msds_url": "string",
    "requires_prop65": true,
    "serial_scan": {
      "exact_character_length": 0,
      "is_enabled": true,
      "prefix": "string",
      "suffix": "string"
    }
  },
  "gtin": "string",
  "id": 0,
  "is_digital": true,
  "lot_information": {
    "is_lot": true,
    "minimum_shelf_life_days": 0
  },
  "name": "string",
  "packaging_material_type_id": 0,
  "packaging_requirement_id": 0,
  "return_preferences": {
    "backup_action_id": 0,
    "instructions": "string",
    "primary_action_id": 0,
    "return_to_sender_backup_action_id": 0,
    "return_to_sender_primary_action_id": 0
  },
  "reviews_pending": [
    0
  ],
  "sku": "string",
  "status": 1,
  "upc": "string",
  "weight": 0.1
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/2026-01/product/1/variants");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"additional_hazmat_attributes\": {\n    \"charge_state_percentage\": 0.1,\n    \"container_metal\": true,\n    \"container_type\": \"string\",\n    \"lithium_battery_packaging\": \"string\",\n    \"lithium_battery_type\": \"string\",\n    \"magnet\": true,\n    \"net_volume\": 0.1,\n    \"net_weight\": 0.1\n  },\n  \"barcodes\": [\n    {\n      \"sticker_url\": \"string\",\n      \"value\": \"string\"\n    }\n  ],\n  \"bundle_definition\": [\n    {\n      \"quantity\": 0,\n      \"variant_id\": 0\n    }\n  ],\n  \"channel_metadata\": [\n    {\n      \"asin\": \"string\",\n      \"fnsku\": \"string\",\n      \"fulfillment_channel\": \"string\",\n      \"channel_id\": 0,\n      \"channel_name\": \"string\",\n      \"currency\": \"string\",\n      \"id\": 0,\n      \"is_inventory_sync_enabled\": true,\n      \"legacy_product_id\": 0,\n      \"platform\": \"string\",\n      \"platform_identifier\": \"string\",\n      \"platform_inventory_item_id\": \"string\",\n      \"price\": 0.1,\n      \"seller_sku\": \"string\"\n    }\n  ],\n  \"customs\": {\n    \"country_code_of_origin\": \"string\",\n    \"currency\": \"string\",\n    \"description\": \"string\",\n    \"hs_tariff_code\": \"string\",\n    \"is321_eligible\": true,\n    \"value\": 0\n  },\n  \"dimension\": {\n    \"height\": 0.1,\n    \"length\": 0.1,\n    \"width\": 0.1\n  },\n  \"fulfillment_settings\": {\n    \"dangerous_goods\": true,\n    \"is_bpm_parcel\": true,\n    \"is_case_pick\": true,\n    \"msds_url\": \"string\",\n    \"requires_prop65\": true,\n    \"serial_scan\": {\n      \"exact_character_length\": 0,\n      \"is_enabled\": true,\n      \"prefix\": \"string\",\n      \"suffix\": \"string\"\n    }\n  },\n  \"gtin\": \"string\",\n  \"id\": 0,\n  \"is_digital\": true,\n  \"lot_information\": {\n    \"is_lot\": true,\n    \"minimum_shelf_life_days\": 0\n  },\n  \"name\": \"string\",\n  \"packaging_material_type_id\": 0,\n  \"packaging_requirement_id\": 0,\n  \"return_preferences\": {\n    \"backup_action_id\": 0,\n    \"instructions\": \"string\",\n    \"primary_action_id\": 0,\n    \"return_to_sender_backup_action_id\": 0,\n    \"return_to_sender_primary_action_id\": 0\n  },\n  \"reviews_pending\": [\n    0\n  ],\n  \"sku\": \"string\",\n  \"status\": 1,\n  \"upc\": \"string\",\n  \"weight\": 0.1\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "additional_hazmat_attributes": [
    "charge_state_percentage": 0.1,
    "container_metal": true,
    "container_type": "string",
    "lithium_battery_packaging": "string",
    "lithium_battery_type": "string",
    "magnet": true,
    "net_volume": 0.1,
    "net_weight": 0.1
  ],
  "barcodes": [
    [
      "sticker_url": "string",
      "value": "string"
    ]
  ],
  "bundle_definition": [
    [
      "quantity": 0,
      "variant_id": 0
    ]
  ],
  "channel_metadata": [
    [
      "asin": "string",
      "fnsku": "string",
      "fulfillment_channel": "string",
      "channel_id": 0,
      "channel_name": "string",
      "currency": "string",
      "id": 0,
      "is_inventory_sync_enabled": true,
      "legacy_product_id": 0,
      "platform": "string",
      "platform_identifier": "string",
      "platform_inventory_item_id": "string",
      "price": 0.1,
      "seller_sku": "string"
    ]
  ],
  "customs": [
    "country_code_of_origin": "string",
    "currency": "string",
    "description": "string",
    "hs_tariff_code": "string",
    "is321_eligible": true,
    "value": 0
  ],
  "dimension": [
    "height": 0.1,
    "length": 0.1,
    "width": 0.1
  ],
  "fulfillment_settings": [
    "dangerous_goods": true,
    "is_bpm_parcel": true,
    "is_case_pick": true,
    "msds_url": "string",
    "requires_prop65": true,
    "serial_scan": [
      "exact_character_length": 0,
      "is_enabled": true,
      "prefix": "string",
      "suffix": "string"
    ]
  ],
  "gtin": "string",
  "id": 0,
  "is_digital": true,
  "lot_information": [
    "is_lot": true,
    "minimum_shelf_life_days": 0
  ],
  "name": "string",
  "packaging_material_type_id": 0,
  "packaging_requirement_id": 0,
  "return_preferences": [
    "backup_action_id": 0,
    "instructions": "string",
    "primary_action_id": 0,
    "return_to_sender_backup_action_id": 0,
    "return_to_sender_primary_action_id": 0
  ],
  "reviews_pending": [0],
  "sku": "string",
  "status": 1,
  "upc": "string",
  "weight": 0.1
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-01/product/1/variants")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```