Updating resources

Updating a product

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

Command-line

To update a product, send a PATCH request to the following URI.

  • Replace project-id with the id of your Google Cloud Platform (GCP) project.

  • Replace location-id with a valid location identifier. Valid location identifiers are: us-west1, us-east1, europe-west1, and asia-east1.

  • Replace product-id with the id for the product to update.

PATCH https://vision.googleapis.com/v1p3beta1/projects/project-id/locations/location-id/products/product-id
{
    'updateMask': { 'paths': ['display_name'] }
   'product': { 'display_name': 'new-display-name' },
}

Python

Before you can run this code example, you must install the Python Client Library.

You must also import the client libraries as shown in the following examples.

from google.cloud import vision_v1p3beta1 as vision
from google.cloud.vision_v1p3beta1.types import Product
from google.cloud.vision_v1p3beta1.types import ProductSet
from google.cloud.vision_v1p3beta1.types import ReferenceImage
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.types.Product.KeyValue(key=key, value=value)
    product = vision.types.Product(
        name=product_path,
        product_labels=[key_value])

    # Updating only the product_labels field here.
    update_mask = vision.types.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('Product name: {}'.format(updated_product.name))
    print('Updated product labels: {}'.format(product.product_labels))

Java

For more on installing and creating a Vision Product Search client, refer to Vision Product Search Client Libraries.

/**
 * 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 {
  ProductSearchClient client = ProductSearchClient.create();

  // Get the full path of the product.
  String productPath = ProductName.of(projectId, computeRegion, productId).toString();

  // Set product name, product labels and product display name.
  // Multiple labels are also supported.
  Product product =
      Product.newBuilder()
          .setName(productPath)
          .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: %s", updatedProduct.getProductLabelsList().toString()));
}

Was this page helpful? Let us know how we did:

Send feedback about...

Cloud Vision API