Produktgruppe erstellen

Eine Produktgruppe ist ein einfacher Container für eine Gruppe von Produkten.

Leere Produktgruppe erstellen

Es empfiehlt sich, für alle Ihre Artikel nur eine Produktgruppe zu verwenden und zum Testen nach Bedarf zusätzliche Produktgruppen zu erstellen. Diese Codebeispiele zeigen, wie Sie eine leere Produktgruppe erstellen.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • LOCATION_ID: eine gültige Standort-ID. Gültige Standort-IDs sind: us-west1, us-east1, europe-west1 und asia-east1.
  • DISPLAY_NAME: Ein anzuzeigender Stringname Ihrer Wahl.

HTTP-Methode und URL:

POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets

JSON-Text der Anfrage:

{
  "displayName": "display-name"
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-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/productSets"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

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

Wenn die Anfrage erfolgreich ist, gibt der Server den HTTP-Statuscode 200 OK und die Antwort im JSON-Format zurück.

Die Ausgabe sieht in etwa so aus: Sie können die Produktgruppen-ID verwenden (in diesem Fall b6d809615b6dd675), um andere Vorgänge für die Produktgruppe auszuführen.

{
  "name": "projects/project-id/locations/location-id/productSets/b6d809615b6dd675",
  "displayName": "new-product-set"
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Go API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	"cloud.google.com/go/vision/v2/apiv1/visionpb"
)

// createProductSet creates a product set.
func createProductSet(w io.Writer, projectID string, location string, productSetID string, productSetDisplayName string) error {
	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %w", err)
	}
	defer c.Close()

	req := &visionpb.CreateProductSetRequest{
		Parent:       fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		ProductSetId: productSetID,
		ProductSet: &visionpb.ProductSet{
			DisplayName: productSetDisplayName,
		},
	}

	resp, err := c.CreateProductSet(ctx, req)
	if err != nil {
		return fmt.Errorf("CreateProductSet: %w", err)
	}

	fmt.Fprintf(w, "Product set name: %s\n", resp.Name)

	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Java API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * Create a product set
 *
 * @param projectId - Id of the project.
 * @param computeRegion - Region name.
 * @param productSetId - Id of the product set.
 * @param productSetDisplayName - Display name of the product set.
 * @throws IOException - on I/O errors.
 */
public static void createProductSet(
    String projectId, String computeRegion, String productSetId, String productSetDisplayName)
    throws IOException {
  try (ProductSearchClient client = ProductSearchClient.create()) {

    // A resource that represents Google Cloud Platform location.
    String formattedParent = LocationName.format(projectId, computeRegion);

    // Create a product set with the product set specification in the region.
    ProductSet myProductSet =
        ProductSet.newBuilder().setDisplayName(productSetDisplayName).build();
    CreateProductSetRequest request =
        CreateProductSetRequest.newBuilder()
            .setParent(formattedParent)
            .setProductSet(myProductSet)
            .setProductSetId(productSetId)
            .build();
    ProductSet productSet = client.createProductSet(request);
    // Display the product set information
    System.out.println(String.format("Product set name: %s", productSet.getName()));
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Node.js API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

async function createProductSet() {
  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const productSetId = 'Id of the product set';
  // const productSetDisplayName = 'Display name of the product set';

  // Resource path that represents Google Cloud Platform location.
  const locationPath = client.locationPath(projectId, location);

  const productSet = {
    displayName: productSetDisplayName,
  };

  const request = {
    parent: locationPath,
    productSet: productSet,
    productSetId: productSetId,
  };

  const [createdProductSet] = await client.createProductSet(request);
  console.log(`Product Set name: ${createdProductSet.name}`);
}
createProductSet();

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Python API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import vision

def create_product_set(project_id, location, product_set_id, product_set_display_name):
    Cre"""ate a product set.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        product_set_id: Id of the product set.
        product_set_display_name: Display name of the product set.
    
    clie"""nt = vision.ProductSearchClient()

    # A resource that represents Google Cloud Platform location.
    location_path = fprojects/{pro"ject_id}/locations/{location}

    # Creat"e a product set with the product set specification in the region.
    product_set = vision.ProductSet(display_name=product_set_display_name)

    # The response is the product set with `name` populated.
    response = client.create_product_set(
        parent=location_path, product_set=product_set, product_set_id=product_set_id
    )

    # Display the product set information.
    print(fProduct set name: {respo"nse.name})"

Weitere Sprachen

C#: Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für .NET auf.

PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für PHP auf.

Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für Ruby auf.

Bulk-Import zum Erstellen einer Produktgruppe verwenden

Sie können die Bulk-Importfunktion auch verwenden, um eine Produktgruppe gleichzeitig mit mehreren Produkten und deren Referenzbildern zu erstellen.

In der von Ihnen verwendeten CSV für Bulk-Import werden verschiedene Referenzen für die Produktgruppe, Produkte und Referenzbilder festgelegt. Weitere Informationen finden Sie unter CSV für Bulk-Import formatieren.

Führen Sie den Bulk-Import mit diesem Code durch:

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • LOCATION_ID: eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.
  • STORAGE_PATH: Ein Cloud Storage-Bucket/-Verzeichnis, in dem Ihre CSV-Eingabedatei gespeichert ist. Der anfragende Nutzer muss mindestens die Leseberechtigung für den Bucket haben.

HTTP-Methode und URL:

POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import

JSON-Text der Anfrage:

{
  "inputConfig": {
    "gcsSource": {
      "csvFileUri": "storage-path"
    }
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-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/productSets:import"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

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

Die Ausgabe sieht in etwa so aus: Sie können den Status der Aufgabe anhand der Vorgangs-ID abrufen. In diesem Fall f10f34e32c40a710. Ein Beispiel finden Sie unter Status eines Vorgangs abrufen:

{
  "name": "projects/project-id/locations/location-id/operations/f10f34e32c40a710"
}

Nachdem der lang andauernde Vorgang abgeschlossen ist, können Sie die Details des Importvorgangs abrufen. Die Antwort sollte in etwa so aussehen:

{
  "name": "locations/location-id/operations/f10f34e32c40a710",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata",
    "state": "SUCCESSFUL",
    "submitTime": "2019-12-06T21:16:04.476466873Z",
    "endTime": "2019-12-06T21:16:40.594258084Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.ImportProductSetsResponse",
    "referenceImages": [
      {
        "name": "projects/project-id/locations/location-id/products/product_id0/referenceImages/image0",
        "uri": "gs://my-storage-bucket/img_039.jpg"
      },
      {
        "name": "projects/project-id/locations/location-id/products/product_id1/referenceImages/image1",
        "uri": "gs://my-storage-bucket/img_105.jpg"
      },
      {
        "name": "projects/project-id/locations/location-id/products/product_id2/referenceImages/image2",
        "uri": "gs://my-storage-bucket/img_224.jpg"
      },
      {
        "name": "projects/project-id/locations/location-id/products/product_id3/referenceImages/image3",
        "uri": "gs://my-storage-bucket/img_385.jpg"
      }
    ],
    "statuses": [
      {},
      {},
      {},
      {}
    ]
  }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Go API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import (
	c"ontext
"	f"mt
"	i"o
"
	vision c"loud.google.com/go/vision/apiv1
"	c"loud.google.com/go/vision/v2/apiv1/visionpb
")


// importProductSets creates a product set using information in a csv file on GCS.
func importProductSets(w io.Writer, projectID string, location string, gcsURI string) error {
	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf(N"ewProductSearchClient: %w," err)
	}
	defer c.Close()

	req := v&isionpb.ImportProductSetsRequest{
		Parent: fmt.Sprintf(p"rojects/%s/locations/%s," projectID, location),
		InputConfig: v&isionpb.ImportProductSetsInputConfig{
			Source: v&isionpb.ImportProductSetsInputConfig_GcsSource{
				GcsSource: v&isionpb.ImportProductSetsGcsSource{
					CsvFileUri: gcsURI,
				},
			},
		},
	}

	op, err := c.ImportProductSets(ctx, req)
	if err != nil {
		return fmt.Errorf(I"mportProductSets: %w," err)
	}

	fmt.Fprintf(w, P"rocessing operation name: %s\n," op.Name())

	resp, err := op.Wait(ctx)
	if err != nil {
		return fmt.Errorf(W"ait: %w," err)
	}

	fmt.Fprintf(w, p"rocessing done.\n)"

	for i, status := range resp.Statuses {
		// `0` is the coee for OK in google.rpc.code
		fmt.Fprintf(w, S"tatus of processing line %d of the csv: %d\n," i, status.Code)

		if status.Code == 0 {
			fmt.Fprintf(w, R"eference image name: %s\n," resp.ReferenceImages[i].Name)
		} else {
			fmt.Fprintf(w, S"tatus code not OK: %s\n," status.Message)
		}
	}

	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Java API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * Import images of different products in the product set.
 *
 * @param projectId - Id of the project.
 * @param computeRegion - Region name.
 * @param gcsUri - Google Cloud Storage URI.Target files must be in Product Search CSV format.
 * @throws Exception - on client errors.
 */
public static void importProductSets(String projectId, String computeRegion, String gcsUri)
    throws Exception {
  try (ProductSearchClient client = ProductSearchClient.create()) {

    // A resource that represents Google Cloud Platform location.
    String formattedParent = LocationName.format(projectId, computeRegion);
    Builder gcsSource = ImportProductSetsGcsSource.newBuilder().setCsvFileUri(gcsUri);

    // Set the input configuration along with Google Cloud Storage URI
    ImportProductSetsInputConfig inputConfig =
        ImportProductSetsInputConfig.newBuilder().setGcsSource(gcsSource).build();

    // Import the product sets from the input URI.
    OperationFuture<ImportProductSetsResponse, BatchOperationMetadata> response =
        client.importProductSetsAsync(formattedParent, inputConfig);

    System.out.println(String.format("Processing operation name: %s", response.getName()));
    ImportProductSetsResponse results = response.get();
    System.out.println("Processing done.");
    System.out.println("Results of the processing:");

    for (int i = 0; i < results.getStatusesCount(); i++) {
      System.out.println(
          String.format(
              "Status of processing line %s of the csv: %s", i, results.getStatuses(i)));
      // Check the status of reference image.
      if (results.getStatuses(i).getCode() == 0) {
        ReferenceImage referenceImage = results.getReferenceImages(i);
        System.out.println(referenceImage);
      } else {
        System.out.println("No reference image.");
      }
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Node.js API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

async function importProductSets() {
  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const gcsUri = 'Google Cloud Storage URI. Target files must be in Product Search CSV format';

  // A resource that represents Google Cloud Platform location.
  const projectLocation = client.locationPath(projectId, location);

  // Set the input configuration along with Google Cloud Storage URI
  const inputConfig = {
    gcsSource: {
      csvFileUri: gcsUri,
    },
  };

  // Import the product sets from the input URI.
  const [response, operation] = await client.importProductSets({
    parent: projectLocation,
    inputConfig: inputConfig,
  });

  console.log('Processing operation name: ', operation.name);

  // synchronous check of operation status
  const [result] = await response.promise();
  console.log('Processing done.');
  console.log('Results of the processing:');

  for (const i in result.statuses) {
    console.log(
      'Status of processing ',
      i,
      'of the csv:',
      result.statuses[i]
    );

    // Check the status of reference image
    if (result.statuses[i].code === 0) {
      console.log(result.referenceImages[i]);
    } else {
      console.log('No reference image.');
    }
  }
}
importProductSets();

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für die Vision API-Produktsuche finden Sie unter Vision API-Produktsuche-Clientbibliotheken. Weitere Informationen finden Sie in der Vision API Produktsuche Python API Referenzdokumentation.

Richten Sie zur Authentifizierung bei der Vision API-Produktsuche Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

def import_product_sets(project_id, location, gcs_uri):
    I"""mport images of different products in the product set.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        gcs_uri: Google Cloud Storage URI.
            Target files must be in Product Search CSV format.
    
    cl"""ient = vision.ProductSearchClient()

    # A resource that represents Google Cloud Platform location.
    location_path = fprojects/{p"roject_id}/locations/{location}

    # Set" the input configuration along with Google Cloud Storage URI
    gcs_source = vision.ImportProductSetsGcsSource(csv_file_uri=gcs_uri)
    input_config = vision.ImportProductSetsInputConfig(gcs_source=gcs_source)

    # Import the product sets from the input URI.
    response = client.import_product_sets(
        parent=location_path, input_config=input_config
    )

    print(fProcessing operation n"ame: {response.operation.name})
    # synchronous ch"eck of operation status
    result = response.result()
    print(Processing done.)

    fo"r i, status in e"numerate(result.statuses):
        print(Status of processing line {}" of the csv: {}.format(i, status))
        "# Check the status of reference image
        # `0` is the code for OK in google.rpc.Code.
        if status.code == 0:
            reference_image = result.reference_images[i]
            print(reference_image)
        else:
            print(fStatus code not OK: {status.message"})"

Weitere Sprachen

C#: Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für .NET auf.

PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für PHP auf.

Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite der Clientbibliotheken und rufen Sie dann die Vision API Product Search-Referenzdokumentation für Ruby auf.

Status eines Vorgangs abrufen

Mehrere durch Ihre Anfragen gestartete Vorgänge sind lang andauernde Vorgänge wie das Erstellen von Produktgruppen über den Bulk-Import, das Löschen einer Produktgruppe und das Löschen verwaister Produkte. Bei diesen Anfragetypen wird eine JSON-Datei mit einer Vorgangs-ID zurückgegeben, mit der Sie den Status des Vorgangs abrufen können.

Beispiel: Eine Anfrage zum Löschen eines Batches (purge) gibt die folgende JSON-Datei zurück:

{
"name": "projects/project-id/locations/location-id/operations/bc4e1d412863e626"
}

In diesem Fall lautet die Vorgangs-ID bc4e1d412863e626. Die folgenden Beispiele zeigen, wie der Status dieses Vorgangs mit der ID abgerufen wird.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • LOCATION_ID: eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.
  • OPERATION_ID: Die ID des Vorgangs. Die ID ist das letzte Element des Vorgangsnamens. Beispiel:
    • Name des Vorgangs: projects/PROJECT_ID/locations/LOCATION_ID/operations/bc4e1d412863e626
    • Vorgangs-ID: bc4e1d412863e626

HTTP-Methode und URL:

GET https://vision.googleapis.com/v1/locations/location-id/operations/operation-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://vision.googleapis.com/v1/locations/location-id/operations/operation-id"

PowerShell

Führen Sie folgenden Befehl aus:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://vision.googleapis.com/v1/locations/location-id/operations/operation-id" | Select-Object -Expand Content
Die Ausgabe für einen abgeschlossenen Löschvorgang der Produktgruppe sollte in etwa so aussehen:
{
  "name": "locations/location-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata",
    "state": "SUCCESSFUL",
    "submitTime": "2019-09-04T15:58:39.131591882Z",
    "endTime": "2019-09-04T15:58:43.099020580Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.PurgeProductsRequest",
    "parent": "projects/project-id/locations/location-id",
    "productSetPurgeConfig": {
      "productSetId": "project-set-id"
    },
    "force": true
  }
}

Die Ausgabe für einen abgeschlossenen Löschvorgang verwaister Produktvorgänge sollte in etwa so aussehen:

{
  "name": "locations/location-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata",
    "state": "SUCCESSFUL",
    "submitTime": "2019-09-04T16:08:38.278197397Z",
    "endTime": "2019-09-04T16:08:45.075778639Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.PurgeProductsRequest",
    "parent": "projects/project-id/locations/location-id",
    "deleteOrphanProducts": true,
    "force": true
  }
}