# Update a single product with Json Merge Patch functionality PATCH https://api.shipbob.com/2.0/product/{productId} Content-Type: application/json Updates a single product. This endpoint supports Json Merge Patch functionality, which allows partial updates to be made to the product. The endpoint will only update the fields that are provided in the request. For updating variants, you mnust include the ID of the variant that you would like to update. Reference: https://developer.shipbob.com/2025-07/api/products/update-a-single-product-with-json-merge-patch-functionality ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: api-2.0 version: 1.0.0 paths: /2.0/product/{productId}: patch: operationId: update-a-single-product-with-json-merge-patch-functionality summary: | Update a single product with Json Merge Patch functionality description: > Updates a single product. This endpoint supports Json Merge Patch functionality, which allows partial updates to be made to the product. The endpoint will only update the fields that are provided in the request. For updating variants, you mnust include the ID of the variant that you would like to update. tags: - subpackage_products parameters: - name: productId in: path description: | The product identifier required: true schema: type: string format: int64 - 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.ProductViewModel' requestBody: content: application/json: schema: $ref: '#/components/schemas/Products.UpdateProductRequestModelV3' servers: - url: https://api.shipbob.com - url: https://sandbox-api.shipbob.com components: schemas: Products.BundleDefinitionRequestModel: type: object properties: quantity: type: integer variant_id: type: integer format: int64 title: Products.BundleDefinitionRequestModel Products.AmazonChannelMetadataRequestModel: type: object properties: channel_id: type: - integer - 'null' currency: type: - string - 'null' id: type: - integer - 'null' format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' asin: type: - string - 'null' fnsku: type: - string - 'null' fulfillment_channel: type: - string - 'null' description: Amazon Sales Channel Information with custom Amazon Fields title: Products.AmazonChannelMetadataRequestModel Products.BaseChannelMetadataRequestModel: type: object properties: channel_id: type: - integer - 'null' currency: type: - string - 'null' id: type: - integer - 'null' format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' description: Standard Channel Metadata Record to store SellerSKU for a Sales Channel title: Products.BaseChannelMetadataRequestModel Products.BigCommerceChannelMetadataRequestModel: type: object properties: channel_id: type: - integer - 'null' currency: type: - string - 'null' id: type: - integer - 'null' format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' platform_product_id: type: - integer - 'null' format: int64 platform_variant_id: type: - integer - 'null' format: int64 description: BigCommerce Sales Channel Information with custom Amazon Fields title: Products.BigCommerceChannelMetadataRequestModel Products.ShopifyChannelMetadataRequestModel: type: object properties: channel_id: type: - integer - 'null' currency: type: - string - 'null' id: type: - integer - 'null' format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' description: Shopify Sales Channel Information title: Products.ShopifyChannelMetadataRequestModel ProductsBaseProductVariantRequestModelChannelMetadataItems: oneOf: - $ref: '#/components/schemas/Products.AmazonChannelMetadataRequestModel' - $ref: '#/components/schemas/Products.BaseChannelMetadataRequestModel' - $ref: '#/components/schemas/Products.BigCommerceChannelMetadataRequestModel' - $ref: '#/components/schemas/Products.ShopifyChannelMetadataRequestModel' title: ProductsBaseProductVariantRequestModelChannelMetadataItems Products.CustomsRequestModel: type: object properties: country_code_of_origin: type: - string - 'null' description: type: - string - 'null' hs_tariff_code: type: - string - 'null' is321_eligible: type: boolean value: type: - integer - 'null' title: Products.CustomsRequestModel Products.DimensionRequestModel: type: object properties: height: type: number format: double length: type: number format: double width: type: number format: double title: Products.DimensionRequestModel Products.SerialScanRequestModel: type: object properties: exact_character_length: type: - integer - 'null' is_enabled: type: boolean prefix: type: - string - 'null' suffix: type: - string - 'null' title: Products.SerialScanRequestModel Products.FulfillmentSettingsRequestModel: type: object properties: dangerous_goods: type: boolean is_bpm_parcel: type: boolean is_case_pick: type: boolean msds_url: type: - string - 'null' requires_prop65: type: boolean serial_scan: $ref: '#/components/schemas/Products.SerialScanRequestModel' title: Products.FulfillmentSettingsRequestModel Products.LotInformationRequestModel: type: object properties: is_lot: type: boolean minimum_shelf_life_days: type: - integer - 'null' title: Products.LotInformationRequestModel Products.ReturnPreferencesRequestModel: type: object properties: backup_action_id: type: - integer - 'null' instructions: type: - string - 'null' primary_action_id: type: integer return_to_sender_backup_action_id: type: - integer - 'null' return_to_sender_primary_action_id: type: - integer - 'null' title: Products.ReturnPreferencesRequestModel Products.UpdateProductVariantRequestModelV3: type: object properties: barcode: type: - string - 'null' bundle_definition: type: - array - 'null' items: $ref: '#/components/schemas/Products.BundleDefinitionRequestModel' channel_metadata: type: - array - 'null' items: $ref: >- #/components/schemas/ProductsBaseProductVariantRequestModelChannelMetadataItems customs: $ref: '#/components/schemas/Products.CustomsRequestModel' dimension: $ref: '#/components/schemas/Products.DimensionRequestModel' fulfillment_settings: $ref: '#/components/schemas/Products.FulfillmentSettingsRequestModel' gtin: type: - string - 'null' is_digital: type: boolean lot_information: $ref: '#/components/schemas/Products.LotInformationRequestModel' name: type: - string - 'null' packaging_material_type_id: type: - integer - 'null' packaging_requirement_id: type: - integer - 'null' return_preferences: $ref: '#/components/schemas/Products.ReturnPreferencesRequestModel' sku: type: - string - 'null' status_id: type: integer upc: type: - string - 'null' weight: type: number format: double id: type: integer format: int64 barcode_sticker_url: type: - string - 'null' title: Products.UpdateProductVariantRequestModelV3 Products.UpdateProductRequestModelV3: type: object properties: category_id: type: - integer - 'null' name: type: - string - 'null' sub_category_id: type: - integer - 'null' type_id: type: integer variants: type: - array - 'null' items: $ref: '#/components/schemas/Products.UpdateProductVariantRequestModelV3' description: The product to update title: Products.UpdateProductRequestModelV3 Products.EnumViewModel: type: object properties: id: type: integer format: int64 name: type: - string - 'null' title: Products.EnumViewModel Products.AssociatedBundlesViewModel: type: object properties: product_id: type: integer format: int64 product_name: type: - string - 'null' quantity: type: integer variant_id: type: integer format: int64 variant_sku: type: - string - 'null' 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 - 'null' variant_sku: type: - string - 'null' title: Products.BundleDefinitionViewModel Products.CustomsViewModel: type: object properties: country_code_of_origin: type: - string - 'null' currency: type: - string - 'null' description: type: - string - 'null' hs_tariff_code: type: - string - 'null' is321_eligible: type: boolean value: type: - integer - 'null' title: Products.CustomsViewModel Products.DimensionViewModel: type: object properties: height: type: number format: double length: type: number format: double unit: type: - string - 'null' width: type: number format: double title: Products.DimensionViewModel Products.SerialScanViewModel: type: object properties: exact_character_length: type: - integer - 'null' is_enabled: type: boolean prefix: type: - string - 'null' suffix: type: - string - 'null' title: Products.SerialScanViewModel Products.FulfillmentSettingsViewModel: type: object properties: dangerous_goods: type: boolean is_bpm_parcel: type: boolean is_case_pick: type: boolean msds_url: type: - string - 'null' requires_prop65: type: boolean serial_scan: $ref: '#/components/schemas/Products.SerialScanViewModel' title: Products.FulfillmentSettingsViewModel Products.InventoryViewModel: type: object properties: inventory_id: type: - integer - 'null' on_hand_qty: type: integer title: Products.InventoryViewModel Products.LotInformationViewModel: type: object properties: is_lot: type: boolean minimum_shelf_life_days: type: - integer - 'null' title: Products.LotInformationViewModel Products.ReturnPreferencesViewModel: type: object properties: backup_action: $ref: '#/components/schemas/Products.EnumViewModel' instructions: type: - string - 'null' primary_action: $ref: '#/components/schemas/Products.EnumViewModel' return_to_sender_backup_action: $ref: '#/components/schemas/Products.EnumViewModel' return_to_sender_primary_action: $ref: '#/components/schemas/Products.EnumViewModel' title: Products.ReturnPreferencesViewModel Products.WeightViewModel: type: object properties: unit: type: - string - 'null' weight: type: number format: double title: Products.WeightViewModel Products.ChannelMetadataViewModel: type: object properties: channel_id: type: integer format: int64 channel_name: type: - string - 'null' currency: type: - string - 'null' id: type: integer format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' title: Products.ChannelMetadataViewModel Products.AmazonChannelMetadataViewModel: type: object properties: channel_id: type: integer format: int64 channel_name: type: - string - 'null' currency: type: - string - 'null' id: type: integer format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' asin: type: - string - 'null' fnsku: type: - string - 'null' fulfillment_channel: type: - string - 'null' title: Products.AmazonChannelMetadataViewModel Products.BigCommerceChannelMetadataViewModel: type: object properties: channel_id: type: integer format: int64 channel_name: type: - string - 'null' currency: type: - string - 'null' id: type: integer format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' platform_product_id: type: - integer - 'null' format: int64 platform_variant_id: type: - integer - 'null' format: int64 title: Products.BigCommerceChannelMetadataViewModel Products.ShopifyChannelMetadataViewModel: type: object properties: channel_id: type: integer format: int64 channel_name: type: - string - 'null' currency: type: - string - 'null' id: type: integer format: int64 is_inventory_sync_enabled: type: boolean legacy_product_id: type: - integer - 'null' format: int64 platform: type: - string - 'null' platform_identifier: type: - string - 'null' platform_inventory_item_id: type: - string - 'null' price: type: number format: double seller_sku: type: - string - 'null' title: Products.ShopifyChannelMetadataViewModel ProductsVariantViewModelChannelMetadataItems: oneOf: - $ref: '#/components/schemas/Products.ChannelMetadataViewModel' - $ref: '#/components/schemas/Products.AmazonChannelMetadataViewModel' - $ref: '#/components/schemas/Products.BigCommerceChannelMetadataViewModel' - $ref: '#/components/schemas/Products.ShopifyChannelMetadataViewModel' title: ProductsVariantViewModelChannelMetadataItems Products.VariantViewModel: type: object properties: associated_bundles: type: - array - 'null' items: $ref: '#/components/schemas/Products.AssociatedBundlesViewModel' barcode: type: - string - 'null' bundle_definition: type: - array - 'null' items: $ref: '#/components/schemas/Products.BundleDefinitionViewModel' created_on: type: string format: date-time customs: $ref: '#/components/schemas/Products.CustomsViewModel' dimension: $ref: '#/components/schemas/Products.DimensionViewModel' fulfillment_settings: $ref: '#/components/schemas/Products.FulfillmentSettingsViewModel' gtin: type: - string - 'null' id: type: integer format: int64 inventory: $ref: '#/components/schemas/Products.InventoryViewModel' is_digital: type: boolean lot_information: $ref: '#/components/schemas/Products.LotInformationViewModel' name: type: - string - 'null' packaging_material_type: $ref: '#/components/schemas/Products.EnumViewModel' packaging_requirement: $ref: '#/components/schemas/Products.EnumViewModel' return_preferences: $ref: '#/components/schemas/Products.ReturnPreferencesViewModel' sku: type: - string - 'null' status: type: - string - 'null' upc: type: - string - 'null' updated_on: type: - string - 'null' format: date-time weight: $ref: '#/components/schemas/Products.WeightViewModel' channel_metadata: type: - array - 'null' items: $ref: '#/components/schemas/ProductsVariantViewModelChannelMetadataItems' title: Products.VariantViewModel Products.ProductViewModel: type: object properties: category: $ref: '#/components/schemas/Products.EnumViewModel' created_on: type: string format: date-time id: type: integer format: int64 name: type: - string - 'null' sub_category: $ref: '#/components/schemas/Products.EnumViewModel' type: type: - string - 'null' updated_on: type: - string - 'null' format: date-time user_id: type: integer format: int64 variants: type: - array - 'null' items: $ref: '#/components/schemas/Products.VariantViewModel' title: Products.ProductViewModel 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 ``` ## SDK Code Examples ```python Products_updateASingleProductWithJsonMergePatchFunctionality_example import requests url = "https://api.shipbob.com/2.0/product/productId" payload = { "category_id": 0, "name": "string", "sub_category_id": 0, "type_id": 0, "variants": [ { "barcode": "string", "barcode_sticker_url": "string", "bundle_definition": [ { "quantity": 0, "variant_id": 0 } ], "channel_metadata": [ { "asin": "string", "fnsku": "string", "fulfillment_channel": "string", "channel_id": 0, "currency": "string", "id": 0, "is_inventory_sync_enabled": True, "platform": "string", "platform_identifier": "string", "platform_inventory_item_id": "string", "price": 0.1, "seller_sku": "string" } ], "customs": { "country_code_of_origin": "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 }, "sku": "string", "status_id": 0, "upc": "string", "weight": 0.1 } ] } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.patch(url, json=payload, headers=headers) print(response.json()) ``` ```javascript Products_updateASingleProductWithJsonMergePatchFunctionality_example const url = 'https://api.shipbob.com/2.0/product/productId'; const options = { method: 'PATCH', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"category_id":0,"name":"string","sub_category_id":0,"type_id":0,"variants":[{"barcode":"string","barcode_sticker_url":"string","bundle_definition":[{"quantity":0,"variant_id":0}],"channel_metadata":[{"asin":"string","fnsku":"string","fulfillment_channel":"string","channel_id":0,"currency":"string","id":0,"is_inventory_sync_enabled":true,"platform":"string","platform_identifier":"string","platform_inventory_item_id":"string","price":0.1,"seller_sku":"string"}],"customs":{"country_code_of_origin":"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},"sku":"string","status_id":0,"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 Products_updateASingleProductWithJsonMergePatchFunctionality_example package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.shipbob.com/2.0/product/productId" payload := strings.NewReader("{\n \"category_id\": 0,\n \"name\": \"string\",\n \"sub_category_id\": 0,\n \"type_id\": 0,\n \"variants\": [\n {\n \"barcode\": \"string\",\n \"barcode_sticker_url\": \"string\",\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 \"currency\": \"string\",\n \"id\": 0,\n \"is_inventory_sync_enabled\": true,\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 \"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 \"sku\": \"string\",\n \"status_id\": 0,\n \"upc\": \"string\",\n \"weight\": 0.1\n }\n ]\n}") req, _ := http.NewRequest("PATCH", url, payload) req.Header.Add("Authorization", "Bearer ") 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 Products_updateASingleProductWithJsonMergePatchFunctionality_example require 'uri' require 'net/http' url = URI("https://api.shipbob.com/2.0/product/productId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Patch.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"category_id\": 0,\n \"name\": \"string\",\n \"sub_category_id\": 0,\n \"type_id\": 0,\n \"variants\": [\n {\n \"barcode\": \"string\",\n \"barcode_sticker_url\": \"string\",\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 \"currency\": \"string\",\n \"id\": 0,\n \"is_inventory_sync_enabled\": true,\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 \"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 \"sku\": \"string\",\n \"status_id\": 0,\n \"upc\": \"string\",\n \"weight\": 0.1\n }\n ]\n}" response = http.request(request) puts response.read_body ``` ```java Products_updateASingleProductWithJsonMergePatchFunctionality_example import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.patch("https://api.shipbob.com/2.0/product/productId") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"category_id\": 0,\n \"name\": \"string\",\n \"sub_category_id\": 0,\n \"type_id\": 0,\n \"variants\": [\n {\n \"barcode\": \"string\",\n \"barcode_sticker_url\": \"string\",\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 \"currency\": \"string\",\n \"id\": 0,\n \"is_inventory_sync_enabled\": true,\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 \"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 \"sku\": \"string\",\n \"status_id\": 0,\n \"upc\": \"string\",\n \"weight\": 0.1\n }\n ]\n}") .asString(); ``` ```php Products_updateASingleProductWithJsonMergePatchFunctionality_example request('PATCH', 'https://api.shipbob.com/2.0/product/productId', [ 'body' => '{ "category_id": 0, "name": "string", "sub_category_id": 0, "type_id": 0, "variants": [ { "barcode": "string", "barcode_sticker_url": "string", "bundle_definition": [ { "quantity": 0, "variant_id": 0 } ], "channel_metadata": [ { "asin": "string", "fnsku": "string", "fulfillment_channel": "string", "channel_id": 0, "currency": "string", "id": 0, "is_inventory_sync_enabled": true, "platform": "string", "platform_identifier": "string", "platform_inventory_item_id": "string", "price": 0.1, "seller_sku": "string" } ], "customs": { "country_code_of_origin": "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 }, "sku": "string", "status_id": 0, "upc": "string", "weight": 0.1 } ] }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp Products_updateASingleProductWithJsonMergePatchFunctionality_example using RestSharp; var client = new RestClient("https://api.shipbob.com/2.0/product/productId"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"category_id\": 0,\n \"name\": \"string\",\n \"sub_category_id\": 0,\n \"type_id\": 0,\n \"variants\": [\n {\n \"barcode\": \"string\",\n \"barcode_sticker_url\": \"string\",\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 \"currency\": \"string\",\n \"id\": 0,\n \"is_inventory_sync_enabled\": true,\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 \"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 \"sku\": \"string\",\n \"status_id\": 0,\n \"upc\": \"string\",\n \"weight\": 0.1\n }\n ]\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift Products_updateASingleProductWithJsonMergePatchFunctionality_example import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [ "category_id": 0, "name": "string", "sub_category_id": 0, "type_id": 0, "variants": [ [ "barcode": "string", "barcode_sticker_url": "string", "bundle_definition": [ [ "quantity": 0, "variant_id": 0 ] ], "channel_metadata": [ [ "asin": "string", "fnsku": "string", "fulfillment_channel": "string", "channel_id": 0, "currency": "string", "id": 0, "is_inventory_sync_enabled": true, "platform": "string", "platform_identifier": "string", "platform_inventory_item_id": "string", "price": 0.1, "seller_sku": "string" ] ], "customs": [ "country_code_of_origin": "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 ], "sku": "string", "status_id": 0, "upc": "string", "weight": 0.1 ] ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2.0/product/productId")! 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() ```