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

from google.cloud import vision_v1p3beta1 as vision

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

/**
 * 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: "));
  for (Product.KeyValue element : updatedProduct.getProductLabelsList()) {
    System.out.println(String.format("%s: %s", element.getKey(), element.getValue()));
  }
}

Node.js

// Imports the Google Cloud client library
const vision = require('@google-cloud/vision').v1p3beta1;

// Creates a client
const client = new vision.ProductSearchClient();

/**
 * 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,
};

client
  .updateProduct(request)
  .then(results => {
    const product = results[0];
    console.log(`Product name: ${product.name}`);
    console.log(`Product display name: ${product.displayName}`);
    console.log(`Product description: ${product.description}`);
    console.log(`Product category: ${product.productCategory}`);
    console.log(
      `Product Labels: ${product.productLabels[0].key}: ${
        product.productLabels[0].value
      }`
    );
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

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

Send feedback about...

Cloud Vision API
Need help? Visit our support page.