Updating resources

Updating a product

You can update a product's labels via key-value pairs, such as "style=womens" or "onSale=true" , using the following code.

Command-line

When you send a PATCH request all previous fields and their values will be erased except for the productCategory field, which is immutable. Send all fields you need with values when making the PATCH update request.

Before using any of the request data, make the following replacements:

  • PROJECT_ID : Your Google Cloud project ID.
  • LOCATION_ID : A valid location identifier. Valid location identifiers are: us-west1 , us-east1 , europe-west1 , and asia-east1 .
  • PRODUCT_ID : The ID for the product that is associated with a reference image. This ID is either randomly set or specified by the user at product creation time.
  • display-name : A string display name of your choosing. This can be the same as the previous display name or an updated value.
  • description : A string description of your choosing. This can be the same as the previous display name or an updated value. Omit the description field and value if you don't need it.
  • productLabels : One or more key-value pairs associated with a product. Each KEY_STRING must have an associated VALUE_STRING .

HTTP method and URL:

PATCH https://vision.googleapis.com/v1/projects/ project-id 
/locations/ location-id 
/products/ product-id 

Request JSON body:

{
  "displayName": " display-name 
",
  "description": " description 
",
  "productLabels": [
    {
      "key": " key-string 
",
      "value": " value-string 
"
    },
    {
      "key": " key-string 
",
      "value": " value-string 
"
    }
  ]
}

To send your request, choose one of these options:

curl

Save the request body in a file named request.json , and execute the following command:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/projects/ project-id /locations/ location-id /products/ product-id "

PowerShell

Save the request body in a file named request.json , and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = " project-id " }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/ project-id /locations/ location-id /products/ product-id " | Select-Object -Expand Content

You should receive a JSON response similar to the following:

{
  "name": "projects/ project-id 
/locations/ location-id 
/products/ product-id 
",
  "displayName": " display-name 
",
  "description": " description 
",
  "productCategory": "apparel-v2",
  "productLabels": [
    {
      "key": "style",
      "value": "womens"
    },
    {
      "key": "onSale",
      "value": "true"
    }
  ]
}

Go

To learn how to install and use the client library for Vision API Product Search, see Vision API Product Search client libraries . For more information, see the Vision API Product Search Go API reference documentation .

To authenticate to Vision API Product Search, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  import 
  
 ( 
  
 "context" 
  
 "fmt" 
  
 "io" 
  
 vision 
  
 "cloud.google.com/go/vision/apiv1" 
  
 "cloud.google.com/go/vision/v2/apiv1/visionpb" 
  
 field_mask 
  
 "google.golang.org/genproto/protobuf/field_mask" 
 ) 
 // updateProductLabels updates product labels of a product. 
 func 
  
 updateProductLabels 
 ( 
 w 
  
 io 
 . 
 Writer 
 , 
  
 projectID 
  
 string 
 , 
  
 location 
  
 string 
 , 
  
 productID 
  
 string 
 , 
  
 key 
  
 string 
 , 
  
 value 
  
 string 
 ) 
  
 error 
  
 { 
  
 ctx 
  
 := 
  
 context 
 . 
 Background 
 () 
  
 c 
 , 
  
 err 
  
 := 
  
 vision 
 . 
 NewProductSearchClient 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "NewProductSearchClient: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 defer 
  
 c 
 . 
 Close 
 () 
  
 req 
  
 := 
  
& visionpb 
 . 
  UpdateProductRequest 
 
 { 
  
 UpdateMask 
 : 
  
& field_mask 
 . 
 FieldMask 
 { 
  
 Paths 
 : 
  
 [] 
 string 
 { 
  
 "product_labels" 
 , 
  
 }, 
  
 }, 
  
 Product 
 : 
  
& visionpb 
 . 
  Product 
 
 { 
  
 Name 
 : 
  
 fmt 
 . 
 Sprintf 
 ( 
 "projects/%s/locations/%s/products/%s" 
 , 
  
 projectID 
 , 
  
 location 
 , 
  
 productID 
 ), 
  
 ProductLabels 
 : 
  
 [] 
 * 
 visionpb 
 . 
  Product_KeyValue 
 
 { 
  
 { 
  
 Key 
 : 
  
 key 
 , 
  
 Value 
 : 
  
 value 
 , 
  
 }, 
  
 }, 
  
 }, 
  
 } 
  
 resp 
 , 
  
 err 
  
 := 
  
 c 
 . 
 UpdateProduct 
 ( 
 ctx 
 , 
  
 req 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "UpdateProduct: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Product name: %s\n" 
 , 
  
 resp 
 . 
 Name 
 ) 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Updated product labels: %s\n" 
 , 
  
 resp 
 . 
 ProductLabels 
 ) 
  
 return 
  
 nil 
 } 
 

Java

To learn how to install and use the client library for Vision API Product Search, see Vision API Product Search client libraries . For more information, see the Vision API Product Search Java API reference documentation .

To authenticate to Vision API Product Search, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  /** 
 * Update the product labels. 
 * 
 * @param projectId - Id of the project. 
 * @param computeRegion - Region name. 
 * @param productId -Id of the product. 
 * @param productLabels - Labels of the product. 
 * @throws IOException - on I/O errors. 
 */ 
 public 
  
 static 
  
 void 
  
 updateProductLabels 
 ( 
  
 String 
  
 projectId 
 , 
  
 String 
  
 computeRegion 
 , 
  
 String 
  
 productId 
 , 
  
 String 
  
 productLabels 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 try 
  
 ( 
 ProductSearchClient 
  
 client 
  
 = 
  
 ProductSearchClient 
 . 
 create 
 ()) 
  
 { 
  
 // Get the full path of the product. 
  
 String 
  
 formattedName 
  
 = 
  
 ProductName 
 . 
 format 
 ( 
 projectId 
 , 
  
 computeRegion 
 , 
  
 productId 
 ); 
  
 // Set product name, product labels and product display name. 
  
 // Multiple labels are also supported. 
  
 Product 
  
 product 
  
 = 
  
 Product 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
 formattedName 
 ) 
  
 . 
 addProductLabels 
 ( 
  
 KeyValue 
 . 
 newBuilder 
 () 
  
 . 
 setKey 
 ( 
 productLabels 
 . 
 split 
 ( 
 "," 
 ) 
 [ 
 0 
 ] 
 . 
 split 
 ( 
 "=" 
 ) 
 [ 
 0 
 ] 
 ) 
  
 . 
 setValue 
 ( 
 productLabels 
 . 
 split 
 ( 
 "," 
 ) 
 [ 
 0 
 ] 
 . 
 split 
 ( 
 "=" 
 ) 
 [ 
 1 
 ] 
 ) 
  
 . 
 build 
 ()) 
  
 . 
 build 
 (); 
  
 // Set product update field name. 
  
 FieldMask 
  
 updateMask 
  
 = 
  
 FieldMask 
 . 
 newBuilder 
 (). 
 addPaths 
 ( 
 "product_labels" 
 ). 
 build 
 (); 
  
 // Update the product. 
  
 Product 
  
 updatedProduct 
  
 = 
  
 client 
 . 
 updateProduct 
 ( 
 product 
 , 
  
 updateMask 
 ); 
  
 // Display the product information 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 String 
 . 
 format 
 ( 
 "Product name: %s" 
 , 
  
 updatedProduct 
 . 
 getName 
 ())); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 String 
 . 
 format 
 ( 
 "Updated product labels: " 
 )); 
  
 for 
  
 ( 
 Product 
 . 
 KeyValue 
  
 element 
  
 : 
  
 updatedProduct 
 . 
 getProductLabelsList 
 ()) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 String 
 . 
 format 
 ( 
 "%s: %s" 
 , 
  
 element 
 . 
 getKey 
 (), 
  
 element 
 . 
 getValue 
 ())); 
  
 } 
  
 } 
 } 
 

Node.js

To learn how to install and use the client library for Vision API Product Search, see Vision API Product Search client libraries . For more information, see the Vision API Product Search Node.js API reference documentation .

To authenticate to Vision API Product Search, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  // Imports the Google Cloud client library 
 const 
  
 vision 
  
 = 
  
 require 
 ( 
 ' @google-cloud/vision 
' 
 ); 
 // Creates a client 
 const 
  
 client 
  
 = 
  
 new 
  
 vision 
 . 
  ProductSearchClient 
 
 (); 
 async 
  
 function 
  
 updateProductLabels 
 () 
  
 { 
  
 /** 
 * TODO(developer): Uncomment the following line before running the sample. 
 */ 
  
 // const projectId = 'Your Google Cloud project Id'; 
  
 // const location = 'A compute region name'; 
  
 // const productId = 'Id of the product'; 
  
 // const key = 'The key of the label'; 
  
 // const value = 'The value of the label'; 
  
 // Resource path that represents full path to the product. 
  
 const 
  
 productPath 
  
 = 
  
 client 
 . 
 productPath 
 ( 
 projectId 
 , 
  
 location 
 , 
  
 productId 
 ); 
  
 const 
  
 product 
  
 = 
  
 { 
  
 name 
 : 
  
 productPath 
 , 
  
 productLabels 
 : 
  
 [ 
  
 { 
  
 key 
 : 
  
 key 
 , 
  
 value 
 : 
  
 value 
 , 
  
 }, 
  
 ], 
  
 }; 
  
 const 
  
 updateMask 
  
 = 
  
 { 
  
 paths 
 : 
  
 [ 
 'product_labels' 
 ], 
  
 }; 
  
 const 
  
 request 
  
 = 
  
 { 
  
 product 
 : 
  
 product 
 , 
  
 updateMask 
 : 
  
 updateMask 
 , 
  
 }; 
  
 const 
  
 [ 
 updatedProduct 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 updateProduct 
 ( 
 request 
 ); 
  
 console 
 . 
 log 
 ( 
 `Product name: 
 ${ 
 updatedProduct 
 . 
 name 
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 `Product display name: 
 ${ 
 updatedProduct 
 . 
 displayName 
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 `Product description: 
 ${ 
 updatedProduct 
 . 
 description 
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 `Product category: 
 ${ 
 updatedProduct 
 . 
 productCategory 
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
  
 `Product Labels: 
 ${ 
 updatedProduct 
 . 
 productLabels 
 [ 
 0 
 ]. 
 key 
 } 
 : 
 ${ 
 updatedProduct 
 . 
 productLabels 
 [ 
 0 
 ]. 
 value 
 } 
 ` 
  
 ); 
 } 
 updateProductLabels 
 (); 
 

Python

To learn how to install and use the client library for Vision API Product Search, see Vision API Product Search client libraries . For more information, see the Vision API Product Search Python API reference documentation .

To authenticate to Vision API Product Search, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  from 
  
 google.cloud 
  
 import 
 vision 
 from 
  
 google.protobuf 
  
 import 
 field_mask_pb2 
 as 
 field_mask 
 def 
  
 update_product_labels 
 ( 
 project_id 
 , 
 location 
 , 
 product_id 
 , 
 key 
 , 
 value 
 ): 
  
 """Update the product labels. 
 Args: 
 project_id: Id of the project. 
 location: A compute region name. 
 product_id: Id of the product. 
 key: The key of the label. 
 value: The value of the label. 
 """ 
 client 
 = 
 vision 
 . 
  ProductSearchClient 
 
 () 
 # Get the name of the product. 
 product_path 
 = 
 client 
 . 
  product_path 
 
 ( 
 project 
 = 
 project_id 
 , 
 location 
 = 
 location 
 , 
 product 
 = 
 product_id 
 ) 
 # Set product name, product label and product display name. 
 # Multiple labels are also supported. 
 key_value 
 = 
 vision 
 . 
  Product 
 
 . 
  KeyValue 
 
 ( 
 key 
 = 
 key 
 , 
 value 
 = 
 value 
 ) 
 product 
 = 
 vision 
 . 
  Product 
 
 ( 
 name 
 = 
 product_path 
 , 
 product_labels 
 = 
 [ 
 key_value 
 ]) 
 # Updating only the product_labels field here. 
 update_mask 
 = 
 field_mask 
 . 
 FieldMask 
 ( 
 paths 
 = 
 [ 
 "product_labels" 
 ]) 
 # This overwrites the product_labels. 
 updated_product 
 = 
 client 
 . 
  update_product 
 
 ( 
 product 
 = 
 product 
 , 
 update_mask 
 = 
 update_mask 
 ) 
 # Display the updated product information. 
 print 
 ( 
 f 
 "Product name: 
 { 
 updated_product 
 . 
 name 
 } 
 " 
 ) 
 print 
 ( 
 f 
 "Updated product labels: 
 { 
 product 
 . 
 product_labels 
 } 
 " 
 ) 
 

Additional languages

C#: Please follow the C# setup instructions on the client libraries page and then visit the Vision API Product Search reference documentation for .NET.

PHP: Please follow the PHP setup instructions on the client libraries page and then visit the Vision API Product Search reference documentation for PHP.

Ruby: Please follow the Ruby setup instructions on the client libraries page and then visit the Vision API Product Search reference documentation for Ruby.

Create a Mobile Website
View Site in Mobile | Classic
Share by: