diff --git a/README.md b/README.md index 1badc181..84a94313 100644 --- a/README.md +++ b/README.md @@ -71,46 +71,6 @@ use this Cloud Retail Client Library. -## Samples - -Samples are in the [`samples/`](https://github.com/googleapis/java-retail/tree/main/samples) directory. - -| Sample | Source Code | Try it | -| --------------------------- | --------------------------------- | ------ | -| Import User Events Big Query | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/ImportUserEventsBigQuery.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/ImportUserEventsBigQuery.java) | -| Import User Events Gcs | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/ImportUserEventsGcs.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/ImportUserEventsGcs.java) | -| Import User Events Inline | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/ImportUserEventsInline.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/ImportUserEventsInline.java) | -| Purge User Event | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/PurgeUserEvent.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/PurgeUserEvent.java) | -| Rejoin User Event | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/RejoinUserEvent.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/RejoinUserEvent.java) | -| Write User Event | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/WriteUserEvent.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/WriteUserEvent.java) | -| Events Create Big Query Table | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateBigQueryTable.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/setup/EventsCreateBigQueryTable.java) | -| Events Create Gcs Bucket | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateGcsBucket.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/setup/EventsCreateGcsBucket.java) | -| Remove Events Resources | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/setup/RemoveEventsResources.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/setup/RemoveEventsResources.java) | -| Update User Events Json | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/events/setup/UpdateUserEventsJson.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/events/setup/UpdateUserEventsJson.java) | -| Add Fulfillment Places | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/AddFulfillmentPlaces.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/AddFulfillmentPlaces.java) | -| Create Product | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/CreateProduct.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/CreateProduct.java) | -| Crud Product | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/CrudProduct.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/CrudProduct.java) | -| Delete Product | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/DeleteProduct.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/DeleteProduct.java) | -| Get Product | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/GetProduct.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/GetProduct.java) | -| Import Products Big Query Table | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/ImportProductsBigQueryTable.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/ImportProductsBigQueryTable.java) | -| Import Products Gcs | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java) | -| Import Products Inline Source | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/ImportProductsInlineSource.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/ImportProductsInlineSource.java) | -| Remove Fulfillment Places | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/RemoveFulfillmentPlaces.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/RemoveFulfillmentPlaces.java) | -| Set Inventory | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/SetInventory.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/SetInventory.java) | -| Update Product | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/UpdateProduct.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/UpdateProduct.java) | -| Products Create Bigquery Table | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateBigqueryTable.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateBigqueryTable.java) | -| Products Create Gcs Bucket | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java) | -| Remove Products Resources | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/product/setup/RemoveProductsResources.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/product/setup/RemoveProductsResources.java) | -| Search Simple Query | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchSimpleQuery.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchSimpleQuery.java) | -| Search With Boost Spec | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithBoostSpec.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithBoostSpec.java) | -| Search With Facet Spec | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithFacetSpec.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithFacetSpec.java) | -| Search With Filtering | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithFiltering.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithFiltering.java) | -| Search With Ordering | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithOrdering.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithOrdering.java) | -| Search With Pagination | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithPagination.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithPagination.java) | -| Search With Query Expansion Spec | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/search/SearchWithQueryExpansionSpec.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/search/SearchWithQueryExpansionSpec.java) | -| Setup Cleanup | [source code](https://github.com/googleapis/java-retail/blob/main/samples/interactive-tutorials/src/main/java/setup/SetupCleanup.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-retail&page=editor&open_in_editor=samples/interactive-tutorials/src/main/java/setup/SetupCleanup.java) | - - ## Troubleshooting diff --git a/samples/interactive-tutorials/README.md b/samples/interactive-tutorials/README.md deleted file mode 100644 index c2957c23..00000000 --- a/samples/interactive-tutorials/README.md +++ /dev/null @@ -1,211 +0,0 @@ -# Retail Search Interactive Tutorials - -## Run tutorials in Cloud Shell - -To advance with the interactive tutorials, use Retail Search step-by-step manuals on the right side of the Cloud Shell IDE: -![Interactive tutorials](images/tutorial1.png) - -The interactive tutorial should open by default. If it didn’t, click on the Tutorial symbol in the menu bar to open the step-by-step manual: -![Toggle tutorial](images/tutorials2.png) - -For more details about the Cloud Shell environment, refer to the [Cloud Shell documentation](https://cloud.google.com/shell/docs). - -## Interactive tutorial flow - -Interactive guides are intended to help you understand the features provided by Google Cloud Retail Search and test the Retail API in action. - -To proceed with the tutorial, choose a language you’ll be deploying your project in: -![Select a programming language](images/tutorials3.png) - - -To begin with the tutorial workflow, click the Start button: -![Begin with the tutorial](images/tutorials4.png) - -Then, you can use Next and Previous buttons to navigate the tutorial pages. - -## Java code samples - -The code here demonstrates how to consume Google Retail Search API in Java - -## Get started with the Google Cloud Retail API - -The Retail API provides you with the following possibilities to: - - Create and maintaining the catalog data. - - Fine-tune the search configuration. - - Import and maintain the user events data. - -You can find the information about the Retail services in the [documentation](https://cloud.google.com/retail/docs) - -If you would like to have a closer look at the Retail API features and try them yourself, -the best option is to use the [Interactive Tutorials](https://cloud.google.com/retail/docs/overview). In the documentation chapters find the "Guide me" button, the tutorials will be launched in the CloudShell environment, and you will be able to request the Retail services and check the response with minimum time and effort. - -The code samples in the directory **java-retail/samples/interactive-tutorials** are explicitly created for use with the Retail Interactive Tutorials. - -If, for some reason, you have decided to proceed with these code samples without the tutorial, please go through the following steps and set up the required preconditions. - -## Prepare your work environment - -To prepare the work environment you should perform the following steps: -- Create a service account. -- Create a service account key and set it to authorize your calls to the Retail API. -- Install Google Cloud Retail library. - -### There are two ways to set up your work environment: - -- If you want to **speed up the process** of setting up the working environment, run the script java-retail/samples/interactive-tutorials/samples/interactive-tutorials/src/main/java/user_environment_setup.sh and skip the next **set up the work environment step-by-step** tutorial step: - - ```bash - bash java-retail/samples/interactive-tutorials/user_environment_setup.sh - ``` - -- If you want to perform the environment set up step by step along with getting the explanation you should proceed with the next tutorial step. - -## Set up the work environment step-by-step - -### Create service account - -To access the Retail API, you must create a service account. Check that you are an owner of your Google Cloud project on the [IAM page](https://console.cloud.google.com/iam-admin/iam). - -1. To create a service account, perform the following command: - - ```bash - gcloud iam service-accounts create - ``` - -1. Assign the needed roles to your service account: - - ```bash - for role in {retail.admin,editor,bigquery.admin} - do gcloud projects add-iam-policy-binding --member="serviceAccount:@.iam.gserviceaccount.com" --role="roles/${role}" - done - ``` - -1. Use the following command to show the service account email: - - ```bash - gcloud iam service-accounts list|grep - ``` - - Copy the service account email. - - -1. Upload your service account key JSON file and use it to activate the service - account: - - ```bash - gcloud iam service-accounts keys create ~/key.json --iam-account - ``` - - ```bash - gcloud auth activate-service-account --key-file ~/key.json - ``` - -1. Set the key as the GOOGLE_APPLICATION_CREDENTIALS environment variable to - use it for sending requests to the Retail API. - - ```bash - export GOOGLE_APPLICATION_CREDENTIALS=~/key.json - ``` - -### Google Cloud Retail libraries - -Learn more about the [Java Google Cloud Retail library](https://googleapis.dev/java/google-cloud-retail/latest/index.html). - -## Congrats! You have configured your work environment - -1. Check that you are in the directory with code samples. - - The code samples for each of the Retail services are stored in different directories. - - Go to the code samples directory, your starting point to run more commands. - - ```bash - cd java-retail/samples/interactive-tutorials/ - ``` - -## Import catalog data - -This step is required if this is the first Retail API tutorial that you run. -Otherwise, you can skip it. - -There is a java-retail/samples/interactive-tutorials/src/main/resources/products.json file with valid products prepared in the `resources` directory. - -The other file, java-retail/samples/interactive-tutorials/src/main/resources/products_some_invalid.json, contains both valid and invalid products. You will use it to check the error handling. - -- If you want to **speed up the process**, run the following script in the Terminal directory to import all products to catalog and skip the next **Prepare the catalog data step-by-step** tutorial step: - - ```bash - bash java-retail/samples/interactive-tutorials/user_import_data_to_catalog.sh - ``` - -- If you want to upload products to the catalog step by step along with getting the explanation, you should proceed with the next tutorial step. - -## Prepare the catalog data step-by-step - -### Upload catalog data to Cloud Storage - -In your own project you need to create a Cloud Storage bucket and put the JSON file there. -The bucket name must be unique. For convenience, you can name it `_`. - -1. The code samples for each of the Retail services are stored in different directories. - - Go to the code samples directory, your starting point to run more commands. - - ```bash - cd java-retail/samples/interactive-tutorials - ``` - -1. To create the bucket and upload the JSON file, open java-retail/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java file - -1. Go to the **product** directory and run the following command in the Terminal: - - ```bash - mvn compile exec:java - -Dexec.mainClass=product.setup.ProductsCreateGcsBucket - ``` - - Now you can see the bucket is created in the [Cloud Storage](https://console.cloud.google.com/storage/browser), and the files are uploaded. - -1. The name of the created Cloud Storage bucket is shown in the Terminal. - - ``` - The gcs bucket _ was created - ``` - - Copy the name and set it as the environment variable `BUCKET_NAME`: - - ```bash - export BUCKET_NAME= - ``` - -### Import products to the Retail Catalog - -To import the prepared products to a catalog, open java-retail/samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java file and run the following command in the Terminal: - -```bash -mvn compile exec:java -Dexec.mainClass=product.ImportProductsGcs -``` - -## Your Retail catalog is ready to use! - -### Running code samples - -Use maven command to run specific code sample: - -``` -mvn compile exec:java -Dexec.mainClass="package.CodeSampleClass" -``` - -### Running unit tests - -Use maven command to run specific unit test class: - -``` -mvn test -Dtest=TestClassName -``` - -Use maven command to run all unit tests: - -``` -mvn test -``` diff --git a/samples/interactive-tutorials/images/tutorail1.img b/samples/interactive-tutorials/images/tutorail1.img deleted file mode 100644 index e69de29b..00000000 diff --git a/samples/interactive-tutorials/images/tutorial1.png b/samples/interactive-tutorials/images/tutorial1.png deleted file mode 100644 index edeea837..00000000 Binary files a/samples/interactive-tutorials/images/tutorial1.png and /dev/null differ diff --git a/samples/interactive-tutorials/images/tutorials2.png b/samples/interactive-tutorials/images/tutorials2.png deleted file mode 100644 index 3321a0de..00000000 Binary files a/samples/interactive-tutorials/images/tutorials2.png and /dev/null differ diff --git a/samples/interactive-tutorials/images/tutorials3.png b/samples/interactive-tutorials/images/tutorials3.png deleted file mode 100644 index ae7518f0..00000000 Binary files a/samples/interactive-tutorials/images/tutorials3.png and /dev/null differ diff --git a/samples/interactive-tutorials/images/tutorials4.png b/samples/interactive-tutorials/images/tutorials4.png deleted file mode 100644 index f649a9b3..00000000 Binary files a/samples/interactive-tutorials/images/tutorials4.png and /dev/null differ diff --git a/samples/interactive-tutorials/pom.xml b/samples/interactive-tutorials/pom.xml deleted file mode 100644 index 675bc56f..00000000 --- a/samples/interactive-tutorials/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - 4.0.0 - com.google.cloud - retail-interactive-tutorials - jar - Google Cloud Retail Interactive Tutorials - https://github.com/googleapis/java-retail - - - - com.google.cloud.samples - shared-configuration - 1.2.0 - - - - - 1.8 - 1.8 - UTF-8 - - - - - - com.google.cloud - libraries-bom - 26.1.3 - pom - import - - - - - - - com.google.cloud - google-cloud-retail - 2.5.2 - - - junit - junit - 4.13.2 - test - - - com.google.cloud - google-cloud-bigquery - 2.17.0 - - - com.google.cloud - google-cloud-storage - 2.13.0 - - - com.google.code.gson - gson - 2.9.1 - - - com.google.truth - truth - 1.1.3 - test - - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - true - - - - - diff --git a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsBigQuery.java b/samples/interactive-tutorials/src/main/java/events/ImportUserEventsBigQuery.java deleted file mode 100644 index 4f66b047..00000000 --- a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsBigQuery.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import user events into a catalog from GCS using Retail API - */ - -package events; - -import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.bigquery.BigQueryException; -import com.google.cloud.retail.v2.BigQuerySource; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportUserEventsRequest; -import com.google.cloud.retail.v2.ImportUserEventsResponse; -import com.google.cloud.retail.v2.UserEventInputConfig; -import com.google.cloud.retail.v2.UserEventServiceClient; -import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; -import java.io.IOException; -import java.time.Instant; -import java.util.concurrent.TimeUnit; - -public class ImportUserEventsBigQuery { - - public static void main(String[] args) throws IOException, InterruptedException { - // TODO(developer): Set projectId to your Google Cloud Platform project ID. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - // To check error handling use invalid catalog name here: - // defaultCatalog = "invalid_catalog_name"; - - // TODO(developer): Set datasetId to your datasetId - String datasetId = "user_events"; - // TODO(developer): Set tableId to your tableId - String tableId = "events"; - // To check error handling use table of invalid user events here: - // tableId = "events_some_invalid" - - importUserEventsFromBigQuery(projectId, defaultCatalog, datasetId, tableId); - } - - public static void importUserEventsFromBigQuery( - String projectId, String defaultCatalog, String datasetId, String tableId) - throws IOException, InterruptedException { - - try { - String dataSchema = "user_event"; - - BigQuerySource bigQuerySource = - BigQuerySource.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .setDataSchema(dataSchema) - .build(); - - UserEventInputConfig inputConfig = - UserEventInputConfig.newBuilder().setBigQuerySource(bigQuerySource).build(); - - ImportUserEventsRequest importRequest = - ImportUserEventsRequest.newBuilder() - .setParent(defaultCatalog) - .setInputConfig(inputConfig) - .build(); - - System.out.printf("Import user events from BigQuery source request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient serviceClient = UserEventServiceClient.create()) { - String operationName = - serviceClient.importUserEventsCallable().call(importRequest).getName(); - - System.out.printf("OperationName = %s%n", operationName); - OperationsClient operationsClient = serviceClient.getOperationsClient(); - Operation operation = operationsClient.getOperation(operationName); - - Instant deadline = Instant.now().plusSeconds(60); - - while (!operation.getDone() || Instant.now().isBefore(deadline)) { - // Keep polling the operation periodically until the import task is done. - TimeUnit.SECONDS.sleep(30); - operation = operationsClient.getOperation(operationName); - } - - if (operation.hasMetadata()) { - ImportMetadata metadata = operation.getMetadata().unpack(ImportMetadata.class); - System.out.printf( - "Number of successfully imported events: %s%n", metadata.getSuccessCount()); - System.out.printf( - "Number of failures during the importing: %s%n", metadata.getFailureCount()); - } - - if (operation.hasResponse()) { - ImportUserEventsResponse response = - operation.getResponse().unpack(ImportUserEventsResponse.class); - System.out.printf("Operation result: %s%n", response); - } - } - } catch (BigQueryException e) { - System.out.printf("Exception message: %s", e.getMessage()); - } catch (NotFoundException e) { - System.out.printf("Catalog name is not found.%n%s%n", e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsGcs.java b/samples/interactive-tutorials/src/main/java/events/ImportUserEventsGcs.java deleted file mode 100644 index 3128f9ba..00000000 --- a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsGcs.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import user events into a catalog from GCS using Retail API - */ - -package events; - -import com.google.api.gax.rpc.InvalidArgumentException; -import com.google.api.gax.rpc.PermissionDeniedException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.GcsSource; -import com.google.cloud.retail.v2.ImportErrorsConfig; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportUserEventsRequest; -import com.google.cloud.retail.v2.ImportUserEventsResponse; -import com.google.cloud.retail.v2.UserEventInputConfig; -import com.google.cloud.retail.v2.UserEventServiceClient; -import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; -import java.io.IOException; -import java.time.Instant; -import java.util.concurrent.TimeUnit; - -public class ImportUserEventsGcs { - - public static void main(String[] args) throws IOException, InterruptedException { - // TODO(developer): Replace these variables before running the sample. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - // TO CHECK ERROR HANDLING PASTE THE INVALID CATALOG NAME HERE: - // defaultCatalog = "invalid_catalog_name"; - String bucketName = System.getenv("EVENTS_BUCKET_NAME"); - String gcsUserEventsObject = "user_events.json"; - // TO CHECK ERROR HANDLING USE THE JSON WITH INVALID USER EVENT: - // gcsUserEventsObject = "user_events_some_invalid.json"; - - importUserEventsFromGcs(defaultCatalog, bucketName, gcsUserEventsObject); - } - - public static void importUserEventsFromGcs( - String defaultCatalog, String bucketName, String gcsUserEventsObject) - throws IOException, InterruptedException { - String gcsBucket = String.format("gs://%s", bucketName); - String gcsErrorsBucket = String.format("%s/error", gcsBucket); - - GcsSource gcsSource = - GcsSource.newBuilder() - .addInputUris(String.format("%s/%s", gcsBucket, gcsUserEventsObject)) - .build(); - - UserEventInputConfig inputConfig = - UserEventInputConfig.newBuilder().setGcsSource(gcsSource).build(); - - System.out.println("GCS source: " + gcsSource.getInputUrisList()); - - ImportErrorsConfig errorsConfig = - ImportErrorsConfig.newBuilder().setGcsPrefix(gcsErrorsBucket).build(); - - ImportUserEventsRequest importRequest = - ImportUserEventsRequest.newBuilder() - .setParent(defaultCatalog) - .setInputConfig(inputConfig) - .setErrorsConfig(errorsConfig) - .build(); - System.out.printf("Import user events from google cloud source request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient serviceClient = UserEventServiceClient.create()) { - String operationName = serviceClient.importUserEventsCallable().call(importRequest).getName(); - - System.out.println("The operation was started."); - System.out.printf("OperationName = %s%n", operationName); - - OperationsClient operationsClient = serviceClient.getOperationsClient(); - Operation operation = operationsClient.getOperation(operationName); - - Instant deadline = Instant.now().plusSeconds(60); - - while (!operation.getDone() || Instant.now().isBefore(deadline)) { - System.out.println("Please wait till operation is done."); - TimeUnit.SECONDS.sleep(30); - operation = operationsClient.getOperation(operationName); - } - - if (operation.hasMetadata()) { - ImportMetadata metadata = operation.getMetadata().unpack(ImportMetadata.class); - System.out.printf( - "Number of successfully imported events: %s%n", metadata.getSuccessCount()); - System.out.printf( - "Number of failures during the importing: %s%n", metadata.getFailureCount()); - } else { - System.out.println("Metadata is empty."); - } - - if (operation.hasResponse()) { - ImportUserEventsResponse response = - operation.getResponse().unpack(ImportUserEventsResponse.class); - System.out.printf("Operation result: %s%n", response); - } else { - System.out.println("Operation result is empty."); - } - } catch (InvalidArgumentException e) { - System.out.printf( - "%s%n'%s' file does not exist in the bucket. Please " - + "make sure you have followed the setting up instructions.", - e.getMessage(), gcsUserEventsObject); - } catch (PermissionDeniedException e) { - System.out.println(e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsInline.java b/samples/interactive-tutorials/src/main/java/events/ImportUserEventsInline.java deleted file mode 100644 index d7e88229..00000000 --- a/samples/interactive-tutorials/src/main/java/events/ImportUserEventsInline.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import user events into a catalog from inline source using Retail API - */ - -package events; - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.ServiceOptions; -import com.google.cloud.bigquery.BigQueryException; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportUserEventsRequest; -import com.google.cloud.retail.v2.ImportUserEventsResponse; -import com.google.cloud.retail.v2.UserEvent; -import com.google.cloud.retail.v2.UserEventInlineSource; -import com.google.cloud.retail.v2.UserEventInputConfig; -import com.google.cloud.retail.v2.UserEventServiceClient; -import com.google.protobuf.Timestamp; -import java.io.IOException; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; - -public class ImportUserEventsInline { - - public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { - // TODO(developer): Replace these variables before running the sample. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - - importUserEventsFromInlineSource(defaultCatalog); - } - - public static void importUserEventsFromInlineSource(String defaultCatalog) - throws IOException, ExecutionException, InterruptedException { - try { - int userEventsNumber = 3; - int awaitDuration = 30; - List userEvents = new ArrayList<>(); - - for (int i = 0; i < userEventsNumber; i++) { - Instant time = Instant.now(); - Timestamp timestamp = Timestamp.newBuilder().setSeconds(time.getEpochSecond()).build(); - - UserEvent userEvent = - UserEvent.newBuilder() - .setEventType("home-page-view") - .setVisitorId(UUID.randomUUID().toString()) - .setEventTime(timestamp) - .build(); - - userEvents.add(userEvent); - - System.out.printf("User Event: %s%n", i); - System.out.println(userEvent); - } - - UserEventInlineSource inlineSource = - UserEventInlineSource.newBuilder().addAllUserEvents(userEvents).build(); - - UserEventInputConfig inputConfig = - UserEventInputConfig.newBuilder().setUserEventInlineSource(inlineSource).build(); - - ImportUserEventsRequest importRequest = - ImportUserEventsRequest.newBuilder() - .setParent(defaultCatalog) - .setInputConfig(inputConfig) - .build(); - System.out.printf("Import user events from inline source request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - OperationFuture importOperation = - userEventServiceClient.importUserEventsAsync(importRequest); - - System.out.printf("The operation was started: %s%n", importOperation.getName()); - System.out.println("Please wait till operation is done."); - - userEventServiceClient.awaitTermination(awaitDuration, TimeUnit.SECONDS); - System.out.println("Import user events operation is done."); - - if (importOperation.getMetadata().get() != null) { - System.out.printf( - "Number of successfully imported events: %s%n", - importOperation.getMetadata().get().getSuccessCount()); - - System.out.printf( - "Number of failures during the importing: %s%n", - importOperation.getMetadata().get().getFailureCount()); - } else { - System.out.println("Metadata in bigQuery operation is empty."); - } - if (importOperation.get() != null) { - System.out.printf("Operation result: %s%n", importOperation.get()); - } else { - System.out.println("Operation result is empty."); - } - } - } catch (BigQueryException e) { - System.out.printf("Exception message: %s", e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/PurgeUserEvent.java b/samples/interactive-tutorials/src/main/java/events/PurgeUserEvent.java deleted file mode 100644 index c1011104..00000000 --- a/samples/interactive-tutorials/src/main/java/events/PurgeUserEvent.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Deleting user event using Retail API. - */ - -package events; - -import static setup.SetupCleanup.writeUserEvent; - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.PurgeMetadata; -import com.google.cloud.retail.v2.PurgeUserEventsRequest; -import com.google.cloud.retail.v2.PurgeUserEventsResponse; -import com.google.cloud.retail.v2.UserEventServiceClient; -import java.io.IOException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class PurgeUserEvent { - - public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { - // TODO(developer): Set projectId to your Google Cloud Platform project ID. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - // visitorId is generated randomly - String visitorId = UUID.randomUUID().toString(); - - callPurgeUserEvents(defaultCatalog, visitorId); - } - - public static void callPurgeUserEvents(String defaultCatalog, String visitorId) - throws IOException, ExecutionException, InterruptedException { - writeUserEvent(visitorId); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - PurgeUserEventsRequest purgeUserEventsRequest = - PurgeUserEventsRequest.newBuilder() - // To check error handling set invalid filter here: - .setFilter(String.format("visitorId=\"%s\"", visitorId)) - .setParent(defaultCatalog) - // Setting the force field to true deletes user events. If set to false will return - // number of events to be deleted without actually deleting them - .setForce(true) - .build(); - System.out.printf("Purge user events request: %s%n", purgeUserEventsRequest); - - OperationFuture purgeOperation = - userEventServiceClient.purgeUserEventsAsync(purgeUserEventsRequest); - - System.out.printf("The purge operation was started: %s%n", purgeOperation.getName()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/RejoinUserEvent.java b/samples/interactive-tutorials/src/main/java/events/RejoinUserEvent.java deleted file mode 100644 index ef624d3c..00000000 --- a/samples/interactive-tutorials/src/main/java/events/RejoinUserEvent.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Starts a user event rejoin operation using Retail API. - */ - -package events; - -import static setup.SetupCleanup.purgeUserEvent; -import static setup.SetupCleanup.writeUserEvent; - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.RejoinUserEventsMetadata; -import com.google.cloud.retail.v2.RejoinUserEventsRequest; -import com.google.cloud.retail.v2.RejoinUserEventsRequest.UserEventRejoinScope; -import com.google.cloud.retail.v2.RejoinUserEventsResponse; -import com.google.cloud.retail.v2.UserEventServiceClient; -import java.io.IOException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class RejoinUserEvent { - - public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { - // TODO(developer): Set projectId to your Google Cloud Platform project ID. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - // visitorId is generated randomly - String visitorId = UUID.randomUUID().toString(); - - callRejoinUserEvents(defaultCatalog, visitorId); - } - - public static void callRejoinUserEvents(String defaultCatalog, String visitorId) - throws IOException, ExecutionException, InterruptedException { - writeUserEvent(visitorId); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - RejoinUserEventsRequest rejoinUserEventsRequest = - RejoinUserEventsRequest.newBuilder() - .setParent(defaultCatalog) - .setUserEventRejoinScope(UserEventRejoinScope.UNJOINED_EVENTS) - .build(); - System.out.printf("Rejoin user events request: %s%n", rejoinUserEventsRequest); - - OperationFuture rejoinOperation = - userEventServiceClient.rejoinUserEventsAsync(rejoinUserEventsRequest); - - System.out.printf("The rejoin operation was started: %s%n", rejoinOperation.getName()); - } - - purgeUserEvent(visitorId); - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/WriteUserEvent.java b/samples/interactive-tutorials/src/main/java/events/WriteUserEvent.java deleted file mode 100644 index b95dd710..00000000 --- a/samples/interactive-tutorials/src/main/java/events/WriteUserEvent.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Write user event using Retail API. - */ - -package events; - -import static setup.SetupCleanup.purgeUserEvent; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.UserEvent; -import com.google.cloud.retail.v2.UserEventServiceClient; -import com.google.cloud.retail.v2.WriteUserEventRequest; -import com.google.protobuf.Timestamp; -import java.io.IOException; -import java.time.Instant; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class WriteUserEvent { - - public static void main(String[] args) - throws IOException, ExecutionException, InterruptedException { - // TODO(developer): Set projectId to your Google Cloud Platform project ID. - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - // visitorId is generated randomly - String visitorId = UUID.randomUUID().toString(); - - writeUserEvent(defaultCatalog, visitorId); - } - - public static void writeUserEvent(String defaultCatalog, String visitorId) - throws IOException, ExecutionException, InterruptedException { - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - Timestamp timestamp = - Timestamp.newBuilder().setSeconds(Instant.now().getEpochSecond()).build(); - - UserEvent userEvent = - UserEvent.newBuilder() - .setEventType("home-page-view") - .setVisitorId(visitorId) - .setEventTime(timestamp) - .build(); - System.out.println(userEvent); - - WriteUserEventRequest writeUserEventRequest = - WriteUserEventRequest.newBuilder() - .setUserEvent(userEvent) - .setParent(defaultCatalog) - .build(); - System.out.printf("Write user event request: %s%n", writeUserEventRequest); - - userEventServiceClient.writeUserEvent(writeUserEventRequest); - System.out.printf("Written user event: %s%n", userEvent); - } - - purgeUserEvent(visitorId); - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateBigQueryTable.java b/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateBigQueryTable.java deleted file mode 100644 index 0c714d90..00000000 --- a/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateBigQueryTable.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events.setup; - -import static setup.SetupCleanup.createBqDataset; -import static setup.SetupCleanup.createBqTable; -import static setup.SetupCleanup.getGson; -import static setup.SetupCleanup.uploadDataToBqTable; - -import com.google.cloud.bigquery.Field; -import com.google.cloud.bigquery.Schema; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.stream.Collectors; -import product.setup.ProductsCreateBigqueryTable; - -public class EventsCreateBigQueryTable { - - public static void main(String[] args) throws IOException { - String dataset = "user_events"; - String validEventsTable = "events"; - String invalidEventsTable = "events_some_invalid"; - String eventsSchemaFilePath = "src/main/resources/events_schema.json"; - // user_events.json and user_events_some_invalid.json are located in the resources folder - String validEventsSourceFile = - ProductsCreateBigqueryTable.class.getResource("/user_events.json").getPath(); - String invalidEventsSourceFile = - ProductsCreateBigqueryTable.class.getResource("/user_events_some_invalid.json").getPath(); - - BufferedReader bufferedReader = new BufferedReader(new FileReader(eventsSchemaFilePath)); - String jsonToString = bufferedReader.lines().collect(Collectors.joining()); - jsonToString = jsonToString.replace("\"fields\"", "\"subFields\""); - Field[] fields = getGson().fromJson(jsonToString, Field[].class); - Schema eventsSchema = Schema.of(fields); - - createBqDataset(dataset); - createBqTable(dataset, validEventsTable, eventsSchema); - uploadDataToBqTable(dataset, validEventsTable, validEventsSourceFile); - createBqTable(dataset, invalidEventsTable, eventsSchema); - uploadDataToBqTable(dataset, invalidEventsTable, invalidEventsSourceFile); - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateGcsBucket.java b/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateGcsBucket.java deleted file mode 100644 index 33a2351e..00000000 --- a/samples/interactive-tutorials/src/main/java/events/setup/EventsCreateGcsBucket.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events.setup; - -import static setup.SetupCleanup.createBucket; -import static setup.SetupCleanup.uploadObject; - -import com.google.cloud.ServiceOptions; -import com.google.protobuf.Timestamp; -import java.io.IOException; -import java.time.Instant; - -public class EventsCreateGcsBucket { - - private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); - - private static final Timestamp CURRENT_DATE = - Timestamp.newBuilder() - .setSeconds(Instant.now().getEpochSecond()) - .setNanos(Instant.now().getNano()) - .build(); - - private static final String BUCKET_NAME = - String.format("%s_events_%s", PROJECT_ID, CURRENT_DATE.getSeconds()); - - public static void main(String... args) throws IOException { - createBucket(BUCKET_NAME); - System.out.printf("Events gcs bucket %s was created.", BUCKET_NAME); - - uploadObject(BUCKET_NAME, "user_events.json", "src/main/resources/user_events.json"); - System.out.printf("File 'user_events.json' was uploaded into bucket '%s'.", BUCKET_NAME); - - uploadObject( - BUCKET_NAME, - "user_events_some_invalid.json", - "src/main/resources/user_events_some_invalid.json"); - System.out.printf( - "File 'user_events_some_invalid.json' was uploaded into bucket '%s'.", BUCKET_NAME); - } - - public static String getBucketName() { - return BUCKET_NAME; - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/setup/RemoveEventsResources.java b/samples/interactive-tutorials/src/main/java/events/setup/RemoveEventsResources.java deleted file mode 100644 index 05b19e33..00000000 --- a/samples/interactive-tutorials/src/main/java/events/setup/RemoveEventsResources.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events.setup; - -import static setup.SetupCleanup.deleteBucket; -import static setup.SetupCleanup.deleteDataset; - -import com.google.api.gax.rpc.PermissionDeniedException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.*; -import com.google.cloud.retail.v2.ProductServiceClient.ListProductsPagedResponse; -import java.io.IOException; - -public class RemoveEventsResources { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String bucketName = System.getenv("EVENTS_BUCKET_NAME"); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - - deleteBucket(bucketName); - deleteAllEvents(branchName); - deleteDataset(projectId, "user_events"); - } - - public static void deleteAllEvents(String branchName) throws IOException { - System.out.println("Deleting events in process, please wait..."); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient eventServiceClient = UserEventServiceClient.create()) { - PurgeUserEventsRequest purgeUserEventsRequest = - PurgeUserEventsRequest.newBuilder().setParent(branchName).build(); - eventServiceClient.purgeUserEventsAsync(purgeUserEventsRequest); - System.out.printf("Events were deleted from %s%n", branchName); - } - } - - public static void deleteAllProducts(String branchName) throws IOException { - System.out.println("Deleting products in process, please wait..."); - - try (ProductServiceClient productServiceClient = ProductServiceClient.create()) { - ListProductsRequest listRequest = - ListProductsRequest.newBuilder().setParent(branchName).build(); - ListProductsPagedResponse products = productServiceClient.listProducts(listRequest); - - int deleteCount = 0; - - for (Product product : products.iterateAll()) { - DeleteProductRequest deleteRequest = - DeleteProductRequest.newBuilder().setName(product.getName()).build(); - - try { - productServiceClient.deleteProduct(deleteRequest); - deleteCount++; - } catch (PermissionDeniedException e) { - System.out.println( - "Ignore PermissionDenied in case the product does not exist " - + "at time of deletion."); - } - } - - System.out.printf("%s products were deleted from %s%n", deleteCount, branchName); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/events/setup/UpdateUserEventsJson.java b/samples/interactive-tutorials/src/main/java/events/setup/UpdateUserEventsJson.java deleted file mode 100644 index 99c31edf..00000000 --- a/samples/interactive-tutorials/src/main/java/events/setup/UpdateUserEventsJson.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events.setup; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.temporal.ChronoUnit; - -public class UpdateUserEventsJson { - - public static void main(String[] args) throws IOException { - String filePath = "src/main/resources/user_events.json"; - String invalidFilePath = "src/main/resources/user_events_some_invalid.json"; - updateEventsTimestamp(filePath); - updateEventsTimestamp(invalidFilePath); - } - - public static void updateEventsTimestamp(String jsonFile) throws IOException { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Timestamp yesterdayDate = Timestamp.from(Instant.now().minus(1, ChronoUnit.DAYS)); - - String json = new String(Files.readAllBytes(Paths.get(jsonFile))); - json = - json.replaceAll( - "(\"eventTime\"\\s*:\\s*\"(\\d{4}-\\d{2}-\\d{2}(T.*Z)?))", - "\"eventTime\":\"" + dateFormat.format(yesterdayDate) + ""); - - BufferedWriter writer = new BufferedWriter(new FileWriter(jsonFile)); - writer.write(json); - System.out.printf("User events file '%s' updated.%n", jsonFile); - writer.close(); - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/AddFulfillmentPlaces.java b/samples/interactive-tutorials/src/main/java/product/AddFulfillmentPlaces.java deleted file mode 100644 index 0f871965..00000000 --- a/samples/interactive-tutorials/src/main/java/product/AddFulfillmentPlaces.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.AddFulfillmentPlacesRequest; -import com.google.cloud.retail.v2.ProductServiceClient; -import java.io.IOException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class AddFulfillmentPlaces { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - - createProduct(generatedProductId); - addFulfillmentPlaces(productName, "store2"); - getProduct(productName); - deleteProduct(productName); - } - - public static void addFulfillmentPlaces(String productName, String placeId) - throws IOException, InterruptedException { - - System.out.println("Add fulfilment places"); - - AddFulfillmentPlacesRequest addFulfillmentPlacesRequest = - AddFulfillmentPlacesRequest.newBuilder() - .setProduct(productName) - .setType("pickup-in-store") - .addPlaceIds(placeId) - .setAllowMissing(true) - .build(); - - // To send an out-of-order request assign the invalid AddTime here: - // Instant instant = LocalDateTime.now().minusDays(1).toInstant(ZoneOffset.UTC); - // Timestamp previousDay = Timestamp.newBuilder() - // .setSeconds(instant.getEpochSecond()) - // .setNanos(instant.getNano()) - // .build(); - // addFulfillmentPlacesRequest = - // addFulfillmentPlacesRequest.toBuilder().setAddTime(previousDay).build(); - - System.out.println("Add fulfillment request " + addFulfillmentPlacesRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - // This is a long-running operation and its result is not immediately - // present with get operations,thus we simulate wait with sleep method. - System.out.println("Waiting for operation to finish..."); - serviceClient.addFulfillmentPlacesAsync(addFulfillmentPlacesRequest).getPollingFuture().get(); - } catch (ExecutionException e) { - System.out.printf("Exception occurred during longrunning operation: %s%n", e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/CreateProduct.java b/samples/interactive-tutorials/src/main/java/product/CreateProduct.java deleted file mode 100644 index 9060a987..00000000 --- a/samples/interactive-tutorials/src/main/java/product/CreateProduct.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Create product in a catalog using Retail API - */ - -package product; - -import static setup.SetupCleanup.deleteProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.CreateProductRequest; -import com.google.cloud.retail.v2.PriceInfo; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.Product.Availability; -import com.google.cloud.retail.v2.Product.Type; -import com.google.cloud.retail.v2.ProductServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class CreateProduct { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String generatedProductId = UUID.randomUUID().toString(); - - Product createdProduct = createProduct(generatedProductId, branchName); - deleteProduct(createdProduct.getName()); - } - - // call the Retail API to create product - public static Product createProduct(String productId, String branchName) throws IOException { - float price = 30.0f; - float originalPrice = 35.5f; - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCurrencyCode("USD") - .build(); - - Product generatedProduct = - Product.newBuilder() - .setTitle("Nest Mini") - .setType(Type.PRIMARY) - .addCategories("Speakers and displays") - .addBrands("Google") - .setPriceInfo(priceInfo) - .setAvailability(Availability.IN_STOCK) - .build(); - - CreateProductRequest createProductRequest = - CreateProductRequest.newBuilder() - .setProduct(generatedProduct) - .setProductId(productId) - .setParent(branchName) - .build(); - System.out.printf("Create product request: %s%n", createProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - Product createdProduct = serviceClient.createProduct(createProductRequest); - System.out.printf("Created product: %s%n", createdProduct); - return createdProduct; - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/CrudProduct.java b/samples/interactive-tutorials/src/main/java/product/CrudProduct.java deleted file mode 100644 index 16d98723..00000000 --- a/samples/interactive-tutorials/src/main/java/product/CrudProduct.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Create, update, get and delete product in a catalog using Retail API. - */ - -package product; - -import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.CreateProductRequest; -import com.google.cloud.retail.v2.DeleteProductRequest; -import com.google.cloud.retail.v2.GetProductRequest; -import com.google.cloud.retail.v2.PriceInfo; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.Product.Availability; -import com.google.cloud.retail.v2.Product.Type; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.cloud.retail.v2.UpdateProductRequest; -import java.io.IOException; -import java.util.UUID; - -public class CrudProduct { - - public static void main(String[] args) throws IOException { - // TODO(developer): Set projectId to your Google Cloud Platform project ID. - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String productName = String.format("%s/products/%s", branchName, generatedProductId); - - Product createdProduct = createProduct(generatedProductId, branchName); - getProduct(productName); - updateProduct(createdProduct, productName); - deleteProduct(productName); - } - - // Generate product for create - public static Product generateProduct() { - float price = 30.0f; - float originalPrice = 35.5f; - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCurrencyCode("USD") - .build(); - - return Product.newBuilder() - .setTitle("Nest Mini") - .setType(Type.PRIMARY) - .addCategories("Speakers and displays") - .addBrands("Google") - .setPriceInfo(priceInfo) - .setAvailability(Availability.IN_STOCK) - .build(); - } - - // Generate product for update - public static Product generateProductForUpdate(String productId, String productName) { - final float price = 20.0f; - final float originalPrice = 25.5f; - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCurrencyCode("EUR") - .build(); - - return Product.newBuilder() - .setId(productId) - .setName(productName) - .setTitle("Updated Nest Mini") - .setType(Type.PRIMARY) - .addCategories("Updated Speakers and displays") - .addBrands("Updated Google") - .setAvailability(Availability.OUT_OF_STOCK) - .setPriceInfo(priceInfo) - .build(); - } - - // Call the Retail API to create product - public static Product createProduct(String productId, String branchName) throws IOException { - CreateProductRequest createProductRequest = - CreateProductRequest.newBuilder() - .setProduct(generateProduct()) - .setProductId(productId) - .setParent(branchName) - .build(); - System.out.printf("Create product request: %s%n", createProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - Product createdProduct = serviceClient.createProduct(createProductRequest); - System.out.printf("Created product: %s%n", createdProduct); - return createdProduct; - } - } - - // Get product - public static Product getProduct(String productName) throws IOException { - Product product = Product.newBuilder().build(); - - GetProductRequest getProductRequest = - GetProductRequest.newBuilder().setName(productName).build(); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - product = serviceClient.getProduct(getProductRequest); - System.out.println("Get product response: " + product); - return product; - } catch (NotFoundException e) { - System.out.printf("Product %s not found", productName); - return product; - } - } - - // Update product - public static void updateProduct(Product originalProduct, String productName) throws IOException { - UpdateProductRequest updateProductRequest = - UpdateProductRequest.newBuilder() - .setProduct(generateProductForUpdate(originalProduct.getId(), productName)) - .setAllowMissing(true) - .build(); - System.out.printf("Update product request: %s%n", updateProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - Product updatedProduct = serviceClient.updateProduct(updateProductRequest); - System.out.printf("Updated product: %s%n", updatedProduct); - } - } - - // Delete product - public static void deleteProduct(String productName) throws IOException { - DeleteProductRequest deleteProductRequest = - DeleteProductRequest.newBuilder().setName(productName).build(); - System.out.printf("Delete product request %s%n", deleteProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - serviceClient.deleteProduct(deleteProductRequest); - System.out.printf("Product %s was deleted.%n", productName); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/DeleteProduct.java b/samples/interactive-tutorials/src/main/java/product/DeleteProduct.java deleted file mode 100644 index 04055af1..00000000 --- a/samples/interactive-tutorials/src/main/java/product/DeleteProduct.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Delete product from a catalog using Retail API - */ - -package product; - -import static setup.SetupCleanup.createProduct; - -import com.google.cloud.retail.v2.DeleteProductRequest; -import com.google.cloud.retail.v2.ProductServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class DeleteProduct { - - public static void main(String[] args) throws IOException { - String generatedProductId = UUID.randomUUID().toString(); - - String createdProductName = createProduct(generatedProductId).getName(); - deleteProduct(createdProductName); - } - - // call the Retail API to delete product - public static void deleteProduct(String productName) throws IOException { - DeleteProductRequest deleteProductRequest = - DeleteProductRequest.newBuilder().setName(productName).build(); - System.out.printf("Delete product request %s%n", deleteProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - serviceClient.deleteProduct(deleteProductRequest); - System.out.printf("Product %s was deleted.%n", productName); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/GetProduct.java b/samples/interactive-tutorials/src/main/java/product/GetProduct.java deleted file mode 100644 index 25a88c71..00000000 --- a/samples/interactive-tutorials/src/main/java/product/GetProduct.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Get product from a catalog using Retail API - */ - -package product; - -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; - -import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.retail.v2.GetProductRequest; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.ProductServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class GetProduct { - - public static void main(String[] args) throws IOException { - String generatedProductId = UUID.randomUUID().toString(); - - Product createdProduct = createProduct(generatedProductId); - Product product = getProduct(createdProduct.getName()); - deleteProduct(product.getName()); - } - - // call the Retail API to get product - public static Product getProduct(String productName) throws IOException { - Product product = Product.newBuilder().build(); - - GetProductRequest getProductRequest = - GetProductRequest.newBuilder().setName(productName).build(); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - product = serviceClient.getProduct(getProductRequest); - System.out.println("Get product response: " + product); - return product; - } catch (NotFoundException e) { - System.out.printf("Product %s not found", productName); - return product; - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/ImportProductsBigQueryTable.java b/samples/interactive-tutorials/src/main/java/product/ImportProductsBigQueryTable.java deleted file mode 100644 index 83dce027..00000000 --- a/samples/interactive-tutorials/src/main/java/product/ImportProductsBigQueryTable.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import products into a catalog from big query table using Retail API - */ - -package product; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.BigQuerySource; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportProductsRequest; -import com.google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode; -import com.google.cloud.retail.v2.ImportProductsResponse; -import com.google.cloud.retail.v2.ProductInputConfig; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; -import java.io.IOException; -import java.util.concurrent.TimeUnit; - -public class ImportProductsBigQueryTable { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - // To check for error handling, replace the below variable with the invalid branch name. - // String branchName = "invalid_branch_name"; - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String datasetId = "products"; - // To check for error handling, replace the below variable with table id that contains invalid - // products. - // String tableId = "products_some_invalid"; - String tableId = "products"; - - importProductsFromBigQuery(projectId, branchName, datasetId, tableId); - } - - public static void importProductsFromBigQuery( - String projectId, String branchName, String datasetId, String tableId) - throws IOException, InterruptedException { - // TRY THE FULL RECONCILIATION MODE HERE: - ReconciliationMode reconciliationMode = ReconciliationMode.INCREMENTAL; - String dataSchema = "product"; - - BigQuerySource bigQuerySource = - BigQuerySource.newBuilder() - .setProjectId(projectId) - .setDatasetId(datasetId) - .setTableId(tableId) - .setDataSchema(dataSchema) - .build(); - - ProductInputConfig inputConfig = - ProductInputConfig.newBuilder().setBigQuerySource(bigQuerySource).build(); - - ImportProductsRequest importRequest = - ImportProductsRequest.newBuilder() - .setParent(branchName) - .setReconciliationMode(reconciliationMode) - .setInputConfig(inputConfig) - .build(); - System.out.printf("Import products from big query table request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - String operationName = serviceClient.importProductsCallable().call(importRequest).getName(); - System.out.printf("OperationName = %s%n", operationName); - - OperationsClient operationsClient = serviceClient.getOperationsClient(); - Operation operation = operationsClient.getOperation(operationName); - - while (!operation.getDone()) { - // Keep polling the operation periodically until the import task is done. - TimeUnit.SECONDS.sleep(30); - operation = operationsClient.getOperation(operationName); - } - - if (operation.hasMetadata()) { - ImportMetadata metadata = operation.getMetadata().unpack(ImportMetadata.class); - System.out.printf( - "Number of successfully imported products: %s%n", metadata.getSuccessCount()); - System.out.printf( - "Number of failures during the importing: %s%n", metadata.getFailureCount()); - } - - if (operation.hasResponse()) { - ImportProductsResponse response = - operation.getResponse().unpack(ImportProductsResponse.class); - System.out.printf("Operation result: %s%n", response); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java b/samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java deleted file mode 100644 index 1ae9502a..00000000 --- a/samples/interactive-tutorials/src/main/java/product/ImportProductsGcs.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import products into a catalog from gcs using Retail API - */ - -package product; - -import com.google.api.gax.rpc.InvalidArgumentException; -import com.google.api.gax.rpc.PermissionDeniedException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.GcsSource; -import com.google.cloud.retail.v2.ImportErrorsConfig; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportProductsRequest; -import com.google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode; -import com.google.cloud.retail.v2.ImportProductsResponse; -import com.google.cloud.retail.v2.ProductInputConfig; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; -import java.io.IOException; -import java.time.Instant; -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -public class ImportProductsGcs { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - - String bucketName = System.getenv("BUCKET_NAME"); - String gcsBucket = String.format("gs://%s", bucketName); - String gcsErrorBucket = String.format("%s/errors", gcsBucket); - - // To check error handling, use an invalid catalog in request - // branchName = - // String.format("projects/%s/locations/global/catalogs/invalid_catalog/branches/default_branch", projectId); - - String gcsProductsObject = "products.json"; - // To check error handling, use an invalid product JSON. - // gcsProductsObject = "products_some_invalid.json" - - importProductsFromGcs(branchName, gcsBucket, gcsProductsObject); - } - - public static void importProductsFromGcs( - String branchName, String gcsBucket, String gcsProductsObject) - throws IOException, InterruptedException { - String gcsErrorBucket = String.format("%s/errors", gcsBucket); - - GcsSource gcsSource = - GcsSource.newBuilder() - .addAllInputUris( - Collections.singleton(String.format("%s/%s", gcsBucket, gcsProductsObject))) - .build(); - - ProductInputConfig inputConfig = - ProductInputConfig.newBuilder().setGcsSource(gcsSource).build(); - - System.out.println("GRS source: " + gcsSource.getInputUrisList()); - - ImportErrorsConfig errorsConfig = - ImportErrorsConfig.newBuilder().setGcsPrefix(gcsErrorBucket).build(); - - ImportProductsRequest importRequest = - ImportProductsRequest.newBuilder() - .setParent(branchName) - .setReconciliationMode(ReconciliationMode.INCREMENTAL) - .setInputConfig(inputConfig) - .setErrorsConfig(errorsConfig) - .build(); - - System.out.printf("Import products from google cloud source request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - String operationName = serviceClient.importProductsCallable().call(importRequest).getName(); - - System.out.println("The operation was started."); - System.out.printf("OperationName = %s%n", operationName); - - OperationsClient operationsClient = serviceClient.getOperationsClient(); - Operation operation = operationsClient.getOperation(operationName); - - Instant deadline = Instant.now().plusSeconds(60); - - while (!operation.getDone() || Instant.now().isBefore(deadline)) { - System.out.println("Please wait till operation is done."); - TimeUnit.SECONDS.sleep(30); - operation = operationsClient.getOperation(operationName); - } - - if (operation.hasMetadata()) { - ImportMetadata metadata = operation.getMetadata().unpack(ImportMetadata.class); - System.out.printf( - "Number of successfully imported products: %s%n", metadata.getSuccessCount()); - System.out.printf( - "Number of failures during the importing: %s%n", metadata.getFailureCount()); - } else { - System.out.println("Metadata is empty."); - } - - if (operation.hasResponse()) { - ImportProductsResponse response = - operation.getResponse().unpack(ImportProductsResponse.class); - System.out.printf("Operation result: %s%n", response); - } else { - System.out.println("Operation result is empty."); - } - } catch (InvalidArgumentException e) { - System.out.printf( - "%s%n'%s' file does not exist in the bucket. Please " - + "make sure you have followed the setting up instructions.", - e.getMessage(), gcsProductsObject); - } catch (PermissionDeniedException e) { - System.out.println(e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/ImportProductsInlineSource.java b/samples/interactive-tutorials/src/main/java/product/ImportProductsInlineSource.java deleted file mode 100644 index c16fc821..00000000 --- a/samples/interactive-tutorials/src/main/java/product/ImportProductsInlineSource.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Import products into a catalog from inline source using Retail API - */ - -package product; - -import com.google.api.gax.rpc.InvalidArgumentException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.ColorInfo; -import com.google.cloud.retail.v2.FulfillmentInfo; -import com.google.cloud.retail.v2.ImportMetadata; -import com.google.cloud.retail.v2.ImportProductsRequest; -import com.google.cloud.retail.v2.ImportProductsResponse; -import com.google.cloud.retail.v2.PriceInfo; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.ProductInlineSource; -import com.google.cloud.retail.v2.ProductInputConfig; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; -import com.google.protobuf.FieldMask; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -public class ImportProductsInlineSource { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - - importProductsInlineSource(branchName); - } - - public static void importProductsInlineSource(String branchName) - throws IOException, InterruptedException { - ProductInlineSource inlineSource = - ProductInlineSource.newBuilder().addAllProducts(getProducts()).build(); - - ProductInputConfig inputConfig = - ProductInputConfig.newBuilder().setProductInlineSource(inlineSource).build(); - - ImportProductsRequest importRequest = - ImportProductsRequest.newBuilder() - .setParent(branchName) - .setInputConfig(inputConfig) - .build(); - - System.out.printf("Import products from inline source request: %s%n", importRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - String operationName = serviceClient.importProductsCallable().call(importRequest).getName(); - System.out.printf("OperationName = %s%n", operationName); - - OperationsClient operationsClient = serviceClient.getOperationsClient(); - Operation operation = operationsClient.getOperation(operationName); - - long assuredBreak = System.currentTimeMillis() + 60000; // 60 seconds delay - - while (!operation.getDone() || System.currentTimeMillis() < assuredBreak) { - // Keep polling the operation periodically until the import task is done. - TimeUnit.SECONDS.sleep(30); - operation = operationsClient.getOperation(operationName); - } - - if (operation.hasMetadata()) { - ImportMetadata metadata = operation.getMetadata().unpack(ImportMetadata.class); - System.out.printf( - "Number of successfully imported products: %s%n", metadata.getSuccessCount()); - System.out.printf( - "Number of failures during the importing: %s%n", metadata.getFailureCount()); - } - - if (operation.hasResponse()) { - ImportProductsResponse response = - operation.getResponse().unpack(ImportProductsResponse.class); - System.out.printf("Operation result: %s%n", response); - } - } catch (InvalidArgumentException e) { - System.out.println(e.getMessage()); - } - } - - public static List getProducts() { - List products = new ArrayList<>(); - - Product product1; - Product product2; - - float price1 = 16f; - float originalPrice1 = 45.0f; - float cost1 = 12.0f; - - PriceInfo priceInfo1 = - PriceInfo.newBuilder() - .setPrice(price1) - .setOriginalPrice(originalPrice1) - .setCost(cost1) - .setCurrencyCode("USD") - .build(); - - ColorInfo colorInfo1 = - ColorInfo.newBuilder() - .addColorFamilies("Blue") - .addAllColors(Arrays.asList("Light blue", "Blue", "Dark blue")) - .build(); - - FulfillmentInfo fulfillmentInfo1 = - FulfillmentInfo.newBuilder() - .setType("pickup-in-store") - .addAllPlaceIds(Arrays.asList("store1", "store2")) - .build(); - - FieldMask fieldMask1 = - FieldMask.newBuilder() - .addAllPaths(Arrays.asList("title", "categories", "price_info", "color_info")) - .build(); - - // TO CHECK ERROR HANDLING COMMENT OUT THE PRODUCT TITLE HERE: - product1 = - Product.newBuilder() - .setTitle("#IamRemarkable Pen") - .setId(UUID.randomUUID().toString()) - .addAllCategories(Collections.singletonList("Office")) - .setUri( - "https://shop.googlemerchandisestore.com/Google+Redesign/" - + "Office/IamRemarkable+Pen") - .addBrands("#IamRemarkable") - .setPriceInfo(priceInfo1) - .setColorInfo(colorInfo1) - .addFulfillmentInfo(fulfillmentInfo1) - .setRetrievableFields(fieldMask1) - .build(); - - float price2 = 35f; - float originalPrice2 = 45.0f; - float cost2 = 12.0f; - - PriceInfo priceInfo2 = - PriceInfo.newBuilder() - .setPrice(price2) - .setOriginalPrice(originalPrice2) - .setCost(cost2) - .setCurrencyCode("USD") - .build(); - - ColorInfo colorInfo2 = - ColorInfo.newBuilder() - .addColorFamilies("Blue") - .addAllColors(Collections.singletonList("Sky blue")) - .build(); - - FulfillmentInfo fulfillmentInfo2 = - FulfillmentInfo.newBuilder() - .setType("pickup-in-store") - .addAllPlaceIds(Arrays.asList("store2", "store3")) - .build(); - - FieldMask fieldMask2 = - FieldMask.newBuilder() - .addAllPaths(Arrays.asList("title", "categories", "price_info", "color_info")) - .build(); - - product2 = - Product.newBuilder() - .setTitle("Android Embroidered Crewneck Sweater") - .setId(UUID.randomUUID().toString()) - .addCategories("Apparel") - .setUri( - "https://shop.googlemerchandisestore.com/Google+Redesign/" - + "Apparel/Android+Embroidered+Crewneck+Sweater") - .addBrands("Android") - .setPriceInfo(priceInfo2) - .setColorInfo(colorInfo2) - .addFulfillmentInfo(fulfillmentInfo2) - .setRetrievableFields(fieldMask2) - .build(); - - products.add(product1); - products.add(product2); - - return products; - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/RemoveFulfillmentPlaces.java b/samples/interactive-tutorials/src/main/java/product/RemoveFulfillmentPlaces.java deleted file mode 100644 index 6a532dca..00000000 --- a/samples/interactive-tutorials/src/main/java/product/RemoveFulfillmentPlaces.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.cloud.retail.v2.RemoveFulfillmentPlacesRequest; -import java.io.IOException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class RemoveFulfillmentPlaces { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - - createProduct(generatedProductId); - removeFulfillmentPlaces(productName, "store0"); - getProduct(productName); - deleteProduct(productName); - } - - // remove fulfillment places to product - public static void removeFulfillmentPlaces(String productName, String storeId) - throws IOException, InterruptedException { - - System.out.println("Remove fulfilment places with current date"); - - RemoveFulfillmentPlacesRequest removeFulfillmentRequest = - RemoveFulfillmentPlacesRequest.newBuilder() - .setProduct(productName) - .setType("pickup-in-store") - .addPlaceIds(storeId) - .setAllowMissing(true) - .build(); - - // To send an out-of-order request assign the invalid RemoveTime here: - // Instant instant = LocalDateTime.now().minusDays(1).toInstant(ZoneOffset.UTC); - // Timestamp previousDay = Timestamp.newBuilder() - // .setSeconds(instant.getEpochSecond()) - // .setNanos(instant.getNano()) - // .build(); - // removeFulfillmentRequest = - // removeFulfillmentRequest.toBuilder().setRemoveTime(previousDay).build(); - - System.out.println("Remove fulfillment request " + removeFulfillmentRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - // This is a long-running operation and its result is not immediately - // present with get operations,thus we simulate wait with sleep method. - System.out.println("Waiting for operation to finish..."); - serviceClient.removeFulfillmentPlacesAsync(removeFulfillmentRequest).getPollingFuture().get(); - } catch (ExecutionException e) { - System.out.printf("Exception occurred during longrunning operation: %s%n", e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/SetInventory.java b/samples/interactive-tutorials/src/main/java/product/SetInventory.java deleted file mode 100644 index 583df6b0..00000000 --- a/samples/interactive-tutorials/src/main/java/product/SetInventory.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.*; -import com.google.cloud.retail.v2.Product.Availability; -import com.google.protobuf.FieldMask; -import com.google.protobuf.Int32Value; -import java.io.IOException; -import java.util.Arrays; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class SetInventory { - - public static void main(String[] args) throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - - createProduct(generatedProductId); - setInventory(productName); - getProduct(productName); - deleteProduct(productName); - } - - public static void setInventory(String productName) throws IOException, InterruptedException { - float price = 15.0f; - float originalPrice = 20.0f; - float cost = 8.0f; - - FieldMask setMask = - FieldMask.newBuilder() - .addAllPaths( - Arrays.asList( - "price_info", "availability", "fulfillment_info", "available_quantity")) - .build(); - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCost(cost) - .setCurrencyCode("USD") - .build(); - - FulfillmentInfo fulfillmentInfo = - FulfillmentInfo.newBuilder() - .setType("pickup-in-store") - .addAllPlaceIds(Arrays.asList("store1", "store2")) - .build(); - - Product product = - Product.newBuilder() - .setName(productName) - .setPriceInfo(priceInfo) - .addFulfillmentInfo(fulfillmentInfo) - .setAvailability(Availability.IN_STOCK) - .setAvailableQuantity(Int32Value.newBuilder().setValue(5).build()) - .build(); - - SetInventoryRequest setInventoryRequest = - SetInventoryRequest.newBuilder() - .setInventory(product) - .setAllowMissing(true) - .setSetMask(setMask) - .build(); - System.out.printf("Set inventory request: %s%n", setInventoryRequest); - - // To send an out-of-order request assign the invalid SetTime here: - // Instant instant = LocalDateTime.now().minusDays(1).toInstant(ZoneOffset.UTC); - // Timestamp previousDay = Timestamp.newBuilder() - // .setSeconds(instant.getEpochSecond()) - // .setNanos(instant.getNano()) - // .build(); - // setInventoryRequest = setInventoryRequest.toBuilder().setSetTime(previousDay).build(); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - // This is a long-running operation and its result is not immediately - // present with get operations,thus we simulate wait with sleep method. - System.out.println("Waiting for operation to finish..."); - serviceClient.setInventoryAsync(setInventoryRequest).getPollingFuture().get(); - } catch (ExecutionException e) { - System.out.printf("Exception occurred during longrunning operation: %s%n", e.getMessage()); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/UpdateProduct.java b/samples/interactive-tutorials/src/main/java/product/UpdateProduct.java deleted file mode 100644 index 4d37ad22..00000000 --- a/samples/interactive-tutorials/src/main/java/product/UpdateProduct.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Update product in a catalog using Retail API - */ - -package product; - -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.PriceInfo; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.Product.Availability; -import com.google.cloud.retail.v2.Product.Type; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.cloud.retail.v2.UpdateProductRequest; -import java.io.IOException; -import java.util.UUID; - -public class UpdateProduct { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String generatedProductId = UUID.randomUUID().toString(); - - Product createdProduct = createProduct(generatedProductId); - updateProduct(createdProduct, branchName); - deleteProduct(createdProduct.getName()); - } - - // call the Retail API to update product - public static void updateProduct(Product originalProduct, String defaultBranchName) - throws IOException { - final float price = 20.0f; - final float originalPrice = 25.5f; - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCurrencyCode("EUR") - .build(); - - Product generatedProduct = - Product.newBuilder() - .setId(originalProduct.getId()) - .setName(defaultBranchName + "/products/" + originalProduct.getId()) - .setTitle("Updated Nest Mini") - .setType(Type.PRIMARY) - .addCategories("Updated Speakers and displays") - .addBrands("Updated Google") - .setAvailability(Availability.OUT_OF_STOCK) - .setPriceInfo(priceInfo) - .build(); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - UpdateProductRequest updateProductRequest = - UpdateProductRequest.newBuilder() - .setProduct(generatedProduct) - .setAllowMissing(true) - .build(); - System.out.printf("Update product request: %s%n", updateProductRequest); - - // PASTE UPDATE MASK HERE: requires import com.google.protobuf.FieldMask - - Product updatedProduct = serviceClient.updateProduct(updateProductRequest); - System.out.printf("Updated product: %s%n", updatedProduct); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateBigqueryTable.java b/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateBigqueryTable.java deleted file mode 100644 index 2463622a..00000000 --- a/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateBigqueryTable.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product.setup; - -import static setup.SetupCleanup.createBqDataset; -import static setup.SetupCleanup.createBqTable; -import static setup.SetupCleanup.getGson; -import static setup.SetupCleanup.uploadDataToBqTable; - -import com.google.cloud.bigquery.Field; -import com.google.cloud.bigquery.Schema; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.stream.Collectors; - -public class ProductsCreateBigqueryTable { - - public static void main(String[] args) throws IOException { - String dataset = "products"; - String validProductsTable = "products"; - String invalidProductsTable = "products_some_invalid"; - String productSchemaFilePath = "src/main/resources/product_schema.json"; - String validProductsSourceFile = - ProductsCreateBigqueryTable.class.getResource("/products.json").getPath(); - String invalidProductsSourceFile = - ProductsCreateBigqueryTable.class.getResource("/products_some_invalid.json").getPath(); - - BufferedReader bufferedReader = new BufferedReader(new FileReader(productSchemaFilePath)); - String jsonToString = bufferedReader.lines().collect(Collectors.joining()); - jsonToString = jsonToString.replace("\"fields\"", "\"subFields\""); - Field[] fields = getGson().fromJson(jsonToString, Field[].class); - Schema productSchema = Schema.of(fields); - - createBqDataset(dataset); - createBqTable(dataset, validProductsTable, productSchema); - uploadDataToBqTable(dataset, validProductsTable, validProductsSourceFile); - createBqTable(dataset, invalidProductsTable, productSchema); - uploadDataToBqTable(dataset, invalidProductsTable, invalidProductsSourceFile); - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java b/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java deleted file mode 100644 index 80ed6285..00000000 --- a/samples/interactive-tutorials/src/main/java/product/setup/ProductsCreateGcsBucket.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product.setup; - -import static setup.SetupCleanup.createBucket; -import static setup.SetupCleanup.uploadObject; - -import com.google.cloud.ServiceOptions; -import com.google.protobuf.Timestamp; -import java.io.IOException; -import java.time.Instant; - -public class ProductsCreateGcsBucket { - - private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); - - private static final Timestamp CURRENT_DATE = - Timestamp.newBuilder() - .setSeconds(Instant.now().getEpochSecond()) - .setNanos(Instant.now().getNano()) - .build(); - - private static final String BUCKET_NAME = - String.format("%s_products_%s", PROJECT_ID, CURRENT_DATE.getSeconds()); - - public static void main(String... args) throws IOException { - createGcsBucketAndUploadData(BUCKET_NAME); - } - - public static void createGcsBucketAndUploadData(String bucketName) throws IOException { - createBucket(bucketName); - System.out.printf("Products gcs bucket %s was created.%n", bucketName); - - uploadObject(bucketName, "products.json", "src/main/resources/products.json"); - System.out.printf("File 'products.json' was uploaded into bucket '%s'.%n", bucketName); - - uploadObject( - bucketName, "products_some_invalid.json", "src/main/resources/products_some_invalid.json"); - System.out.printf( - "File 'products_some_invalid.json' was uploaded into bucket '%s'.%n", bucketName); - } - - public static String getBucketName() { - return BUCKET_NAME; - } -} diff --git a/samples/interactive-tutorials/src/main/java/product/setup/RemoveProductsResources.java b/samples/interactive-tutorials/src/main/java/product/setup/RemoveProductsResources.java deleted file mode 100644 index de7aea24..00000000 --- a/samples/interactive-tutorials/src/main/java/product/setup/RemoveProductsResources.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product.setup; - -import static setup.SetupCleanup.deleteBucket; -import static setup.SetupCleanup.deleteDataset; - -import com.google.api.gax.rpc.PermissionDeniedException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.DeleteProductRequest; -import com.google.cloud.retail.v2.ListProductsRequest; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.cloud.retail.v2.ProductServiceClient.ListProductsPagedResponse; -import java.io.IOException; - -public class RemoveProductsResources { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String bucketName = System.getenv("BUCKET_NAME"); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - - deleteBucket(bucketName); - deleteAllProducts(branchName); - deleteDataset(projectId, "products"); - } - - public static void deleteAllProducts(String branchName) throws IOException { - System.out.println("Deleting products in process, please wait..."); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient productServiceClient = ProductServiceClient.create()) { - ListProductsRequest listRequest = - ListProductsRequest.newBuilder().setParent(branchName).build(); - ListProductsPagedResponse products = productServiceClient.listProducts(listRequest); - - int deleteCount = 0; - - for (Product product : products.iterateAll()) { - DeleteProductRequest deleteRequest = - DeleteProductRequest.newBuilder().setName(product.getName()).build(); - - try { - productServiceClient.deleteProduct(deleteRequest); - deleteCount++; - } catch (PermissionDeniedException e) { - System.out.println( - "Ignore PermissionDenied in case the product does not exist " - + "at time of deletion."); - } - } - - System.out.printf("%s products were deleted from %s%n", deleteCount, branchName); - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchSimpleQuery.java b/samples/interactive-tutorials/src/main/java/search/SearchSimpleQuery.java deleted file mode 100644 index e2bc4c36..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchSimpleQuery.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog - * using only search query. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchSimpleQuery { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT QUERY PHRASES HERE: - String queryPhrase = "Hoodie"; - String visitorId = UUID.randomUUID().toString(); - int pageSize = 10; - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setQuery(queryPhrase) - .setVisitorId(visitorId) - .setPageSize(pageSize) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithBoostSpec.java b/samples/interactive-tutorials/src/main/java/search/SearchWithBoostSpec.java deleted file mode 100644 index caf5df7d..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithBoostSpec.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog, rerank the - * results boosting or burying the products that match defined condition. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchRequest.BoostSpec; -import com.google.cloud.retail.v2.SearchRequest.BoostSpec.ConditionBoostSpec; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithBoostSpec { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT CONDITIONS HERE: - String searchQuery = "Tee"; - String condition = "(colorFamilies: ANY(\"Blue\"))"; - float boost = 0.0f; - int pageSize = 10; - String visitorId = UUID.randomUUID().toString(); - - BoostSpec boostSpec = - BoostSpec.newBuilder() - .addConditionBoostSpecs( - ConditionBoostSpec.newBuilder().setCondition(condition).setBoost(boost).build()) - .build(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setQuery(searchQuery) - .setVisitorId(visitorId) - .setBoostSpec(boostSpec) - .setPageSize(pageSize) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithFacetSpec.java b/samples/interactive-tutorials/src/main/java/search/SearchWithFacetSpec.java deleted file mode 100644 index 9688a871..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithFacetSpec.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchRequest.FacetSpec; -import com.google.cloud.retail.v2.SearchRequest.FacetSpec.FacetKey; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithFacetSpec { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT CONDITIONS HERE: - String searchQuery = "Tee"; - String facetKeyParam = "colorFamilies"; - int pageSize = 10; - String visitorId = UUID.randomUUID().toString(); - - FacetKey facetKey = FacetKey.newBuilder().setKey(facetKeyParam).build(); - FacetSpec facetSpec = FacetSpec.newBuilder().setFacetKey(facetKey).build(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setQuery(searchQuery) - .setVisitorId(visitorId) - .addFacetSpecs(facetSpec) - .setPageSize(pageSize) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithFiltering.java b/samples/interactive-tutorials/src/main/java/search/SearchWithFiltering.java deleted file mode 100644 index 1c46b164..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithFiltering.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog, - * filter the results by different product fields. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithFiltering { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT FILTER EXPRESSIONS HERE: - String filter = "(colorFamilies: ANY(\"Black\"))"; - String queryPhrase = "Tee"; - int pageSize = 10; - String visitorId = UUID.randomUUID().toString(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setVisitorId(visitorId) - .setQuery(queryPhrase) - .setPageSize(pageSize) - .setFilter(filter) - .build(); - - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithOrdering.java b/samples/interactive-tutorials/src/main/java/search/SearchWithOrdering.java deleted file mode 100644 index d3139a08..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithOrdering.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog, - * order the results by different product fields. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithOrdering { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT ORDER BY EXPRESSION HERE: - String order = "price desc"; - String queryPhrase = "Hoodie"; - int pageSize = 10; - String visitorId = UUID.randomUUID().toString(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setQuery(queryPhrase) - .setOrderBy(order) - .setVisitorId(visitorId) - .setPageSize(pageSize) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithPagination.java b/samples/interactive-tutorials/src/main/java/search/SearchWithPagination.java deleted file mode 100644 index c3d80c1a..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithPagination.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog, - * limit the number of the products per page and go to the next page - * using "next_page_token" or jump to chosen page using "offset". - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithPagination { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT PAGINATION PARAMETERS HERE: - int pageSize = 6; - String queryPhrase = "Hoodie"; - int offset = 0; - String pageToken = ""; - String visitorId = UUID.randomUUID().toString(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setVisitorId(visitorId) - .setQuery(queryPhrase) - .setPageSize(pageSize) - .setOffset(offset) - .setPageToken(pageToken) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponseFirstPage = client.search(searchRequest).getPage().getResponse(); - if (searchResponseFirstPage.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponseFirstPage); - } - - // PASTE CALL WITH NEXT PAGE TOKEN HERE: - - // PASTE CALL WITH OFFSET HERE: - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/search/SearchWithQueryExpansionSpec.java b/samples/interactive-tutorials/src/main/java/search/SearchWithQueryExpansionSpec.java deleted file mode 100644 index 0576de17..00000000 --- a/samples/interactive-tutorials/src/main/java/search/SearchWithQueryExpansionSpec.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Call Retail API to search for a products in a catalog, - * enabling the query expansion feature to let the Google Retail Search - * build an automatic query expansion. - */ - -package search; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.SearchRequest; -import com.google.cloud.retail.v2.SearchRequest.QueryExpansionSpec; -import com.google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition; -import com.google.cloud.retail.v2.SearchResponse; -import com.google.cloud.retail.v2.SearchServiceClient; -import java.io.IOException; -import java.util.UUID; - -public class SearchWithQueryExpansionSpec { - - public static void main(String[] args) throws IOException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - - searchResponse(defaultSearchPlacementName); - } - - public static void searchResponse(String defaultSearchPlacementName) throws IOException { - // TRY DIFFERENT QUERY EXPANSION CONDITION HERE: - Condition condition = Condition.AUTO; - int pageSize = 10; - String queryPhrase = "Google Youth Hero Tee Grey"; - String visitorId = UUID.randomUUID().toString(); - - QueryExpansionSpec queryExpansionSpec = - QueryExpansionSpec.newBuilder().setCondition(condition).build(); - - SearchRequest searchRequest = - SearchRequest.newBuilder() - .setPlacement(defaultSearchPlacementName) - .setQuery(queryPhrase) - .setVisitorId(visitorId) - .setQueryExpansionSpec(queryExpansionSpec) - .setPageSize(pageSize) - .build(); - System.out.println("Search request: " + searchRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (SearchServiceClient client = SearchServiceClient.create()) { - SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse(); - if (searchResponse.getTotalSize() == 0) { - System.out.println("The search operation returned no matching results."); - } else { - System.out.println("Search response: " + searchResponse); - } - } - } -} diff --git a/samples/interactive-tutorials/src/main/java/setup/SetupCleanup.java b/samples/interactive-tutorials/src/main/java/setup/SetupCleanup.java deleted file mode 100644 index 9e6b3d5c..00000000 --- a/samples/interactive-tutorials/src/main/java/setup/SetupCleanup.java +++ /dev/null @@ -1,407 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package setup; - -import static com.google.cloud.storage.StorageClass.STANDARD; - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.api.gax.paging.Page; -import com.google.api.gax.rpc.NotFoundException; -import com.google.cloud.ServiceOptions; -import com.google.cloud.bigquery.BigQuery; -import com.google.cloud.bigquery.BigQuery.DatasetDeleteOption; -import com.google.cloud.bigquery.BigQueryException; -import com.google.cloud.bigquery.BigQueryOptions; -import com.google.cloud.bigquery.Dataset; -import com.google.cloud.bigquery.DatasetId; -import com.google.cloud.bigquery.DatasetInfo; -import com.google.cloud.bigquery.Field; -import com.google.cloud.bigquery.FieldList; -import com.google.cloud.bigquery.FormatOptions; -import com.google.cloud.bigquery.Job; -import com.google.cloud.bigquery.JobId; -import com.google.cloud.bigquery.LegacySQLTypeName; -import com.google.cloud.bigquery.Schema; -import com.google.cloud.bigquery.StandardTableDefinition; -import com.google.cloud.bigquery.TableDataWriteChannel; -import com.google.cloud.bigquery.TableDefinition; -import com.google.cloud.bigquery.TableId; -import com.google.cloud.bigquery.TableInfo; -import com.google.cloud.bigquery.WriteChannelConfiguration; -import com.google.cloud.retail.v2.CreateProductRequest; -import com.google.cloud.retail.v2.DeleteProductRequest; -import com.google.cloud.retail.v2.FulfillmentInfo; -import com.google.cloud.retail.v2.GetProductRequest; -import com.google.cloud.retail.v2.PriceInfo; -import com.google.cloud.retail.v2.Product; -import com.google.cloud.retail.v2.Product.Availability; -import com.google.cloud.retail.v2.Product.Type; -import com.google.cloud.retail.v2.ProductDetail; -import com.google.cloud.retail.v2.ProductServiceClient; -import com.google.cloud.retail.v2.PurgeMetadata; -import com.google.cloud.retail.v2.PurgeUserEventsRequest; -import com.google.cloud.retail.v2.PurgeUserEventsResponse; -import com.google.cloud.retail.v2.UserEvent; -import com.google.cloud.retail.v2.UserEventServiceClient; -import com.google.cloud.retail.v2.WriteUserEventRequest; -import com.google.cloud.storage.Blob; -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.BlobInfo; -import com.google.cloud.storage.Bucket; -import com.google.cloud.storage.BucketInfo; -import com.google.cloud.storage.Storage; -import com.google.cloud.storage.StorageException; -import com.google.cloud.storage.StorageOptions; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.protobuf.Int32Value; -import com.google.protobuf.Timestamp; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.channels.Channels; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.time.Instant; -import java.util.Arrays; -import java.util.Collections; -import java.util.UUID; -import java.util.concurrent.ExecutionException; - -public class SetupCleanup { - - private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); - private static final String DEFAULT_CATALOG = - String.format("projects/%s/locations/global/catalogs/default_catalog", PROJECT_ID); - private static final Storage STORAGE = - StorageOptions.newBuilder().setProjectId(PROJECT_ID).build().getService(); - private static final String DEFAULT_BRANCH_NAME = - String.format("projects/%s/locations/global/catalogs/default_catalog/branches/0", PROJECT_ID); - - public static UserEvent getUserEvent(String visitorId) { - int value = 3; - - Timestamp timestamp = Timestamp.newBuilder().setSeconds(Instant.now().getEpochSecond()).build(); - - Product product = Product.newBuilder().setId(UUID.randomUUID().toString()).build(); - - ProductDetail productDetail = - ProductDetail.newBuilder() - .setProduct(product) - .setQuantity(Int32Value.newBuilder().setValue(value).build()) - .build(); - - UserEvent userEvent = - UserEvent.newBuilder() - .setEventType("detail-page-view") - .setVisitorId(visitorId) - .setEventTime(timestamp) - .addAllProductDetails(Collections.singletonList(productDetail)) - .build(); - System.out.println(userEvent); - - return userEvent; - } - - public static UserEvent writeUserEvent(String visitorId) throws IOException { - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - WriteUserEventRequest writeUserEventRequest = - WriteUserEventRequest.newBuilder() - .setUserEvent(getUserEvent(visitorId)) - .setParent(DEFAULT_CATALOG) - .build(); - - UserEvent userEvent = userEventServiceClient.writeUserEvent(writeUserEventRequest); - System.out.printf("The user event is written. %n%s%n", userEvent); - return userEvent; - } - } - - public static void purgeUserEvent(String visitorId) - throws IOException, ExecutionException, InterruptedException { - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) { - PurgeUserEventsRequest purgeUserEventsRequest = - PurgeUserEventsRequest.newBuilder() - .setFilter(String.format("visitorId=\"%s\"", visitorId)) - .setParent(DEFAULT_CATALOG) - .setForce(true) - .build(); - - OperationFuture purgeOperation = - userEventServiceClient.purgeUserEventsAsync(purgeUserEventsRequest); - System.out.printf("The purge operation was started: %s%n", purgeOperation.getName()); - } - } - - public static Product generateProduct() { - float price = 30.0f; - float originalPrice = 35.5f; - - PriceInfo priceInfo = - PriceInfo.newBuilder() - .setPrice(price) - .setOriginalPrice(originalPrice) - .setCurrencyCode("USD") - .build(); - - FulfillmentInfo fulfillmentInfo = - FulfillmentInfo.newBuilder() - .setType("pickup-in-store") - .addAllPlaceIds(Arrays.asList("store0", "store1")) - .build(); - - return Product.newBuilder() - .setTitle("Nest Mini") - .setType(Type.PRIMARY) - .addCategories("Speakers and displays") - .addBrands("Google") - .setPriceInfo(priceInfo) - .setAvailability(Availability.IN_STOCK) - .addFulfillmentInfo(fulfillmentInfo) - .build(); - } - - public static Product createProduct(String productId) throws IOException { - CreateProductRequest createProductRequest = - CreateProductRequest.newBuilder() - .setProduct(generateProduct()) - .setProductId(productId) - .setParent(DEFAULT_BRANCH_NAME) - .build(); - System.out.printf("Create product request: %s%n", createProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - Product createdProduct = serviceClient.createProduct(createProductRequest); - System.out.printf("Created product: %s%n", createdProduct); - return createdProduct; - } - } - - public static Product getProduct(String productName) throws IOException { - Product product = Product.newBuilder().build(); - - GetProductRequest getProductRequest = - GetProductRequest.newBuilder().setName(productName).build(); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - product = serviceClient.getProduct(getProductRequest); - System.out.println("Get product response: " + product); - return product; - } catch (NotFoundException e) { - System.out.printf("Product %s not found", productName); - return product; - } - } - - public static void deleteProduct(String productName) throws IOException { - DeleteProductRequest deleteProductRequest = - DeleteProductRequest.newBuilder().setName(productName).build(); - System.out.printf("Delete product request %s%n", deleteProductRequest); - - // Initialize client that will be used to send requests. This client only - // needs to be created once, and can be reused for multiple requests. After - // completing all of your requests, call the "close" method on the client to - // safely clean up any remaining background resources. - try (ProductServiceClient serviceClient = ProductServiceClient.create()) { - serviceClient.deleteProduct(deleteProductRequest); - System.out.printf("Product %s was deleted.%n", productName); - } - } - - public static Bucket createBucket(String bucketName) { - if (checkIfBucketExists(bucketName)) { - System.out.printf("Bucket %s already exists. %n", bucketName); - Page bucketList = STORAGE.list(); - for (Bucket itrBucket : bucketList.iterateAll()) { - if (itrBucket.getName().equals(bucketName)) { - return itrBucket; - } - } - } - - System.out.printf("Creating new bucket: %s %n", bucketName); - - Bucket bucket = - STORAGE.create( - BucketInfo.newBuilder(bucketName).setStorageClass(STANDARD).setLocation("US").build()); - - System.out.println( - "Bucket was created " - + bucket.getName() - + " in " - + bucket.getLocation() - + " with storage class " - + bucket.getStorageClass()); - - return bucket; - } - - public static boolean checkIfBucketExists(String bucketToCheck) { - boolean bucketExists = false; - - Page bucketList = STORAGE.list(); - for (Bucket bucket : bucketList.iterateAll()) { - if (bucket.getName().equals(bucketToCheck)) { - bucketExists = true; - break; - } - } - - return bucketExists; - } - - public static void deleteBucket(String bucketName) { - try { - Bucket bucket = STORAGE.get(bucketName); - if (bucket != null) { - bucket.delete(); - } - } catch (StorageException e) { - System.out.printf("Bucket is not empty. Deleting objects from bucket.%n"); - deleteObjectsFromBucket(STORAGE.get(bucketName)); - System.out.printf("Bucket %s was deleted.%n", STORAGE.get(bucketName).getName()); - } - - if (STORAGE.get(bucketName) == null) { - System.out.printf("Bucket '%s' already deleted.%n", bucketName); - } - } - - public static void deleteObjectsFromBucket(Bucket bucket) { - Page blobs = bucket.list(); - for (Blob blob : blobs.iterateAll()) { - blob.delete(); - } - System.out.printf("All objects are deleted from GCS bucket %s%n", bucket.getName()); - } - - public static void uploadObject(String bucketName, String objectName, String filePath) - throws IOException { - BlobId blobId = BlobId.of(bucketName, objectName); - BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build(); - STORAGE.create(blobInfo, Files.readAllBytes(Paths.get(filePath))); - System.out.println( - "File " + filePath + " uploaded to bucket " + bucketName + " as " + objectName); - } - - public static void createBqDataset(String datasetName) { - try { - BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); - DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build(); - Dataset newDataset = bigquery.create(datasetInfo); - String newDatasetName = newDataset.getDatasetId().getDataset(); - System.out.printf("Dataset '%s' created successfully.%n", newDatasetName); - } catch (BigQueryException e) { - System.out.printf("Dataset '%s' already exists.%n", datasetName); - } - } - - public static void deleteDataset(String projectId, String datasetName) { - try { - BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); - DatasetId datasetId = DatasetId.of(projectId, datasetName); - boolean success = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents()); - if (success) { - System.out.printf("Dataset '%s' deleted successfully.%n", datasetName); - } - } catch (BigQueryException e) { - System.out.printf("Dataset '%s' was not found.%n", datasetName); - } - } - - public static void createBqTable(String datasetName, String tableName, Schema schema) { - try { - BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); - TableId tableId = TableId.of(datasetName, tableName); - TableDefinition tableDefinition = StandardTableDefinition.of(schema); - TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build(); - bigquery.create(tableInfo); - System.out.printf("Table '%s' created successfully.%n", tableName); - } catch (BigQueryException e) { - System.out.printf("Table '%s' already exists.%n", tableName); - } - } - - public static void uploadDataToBqTable(String datasetName, String tableName, String sourceUri) { - try { - BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); - TableId tableId = TableId.of(datasetName, tableName); - - WriteChannelConfiguration writeChannelConfiguration = - WriteChannelConfiguration.newBuilder(tableId) - .setFormatOptions(FormatOptions.json()) - .build(); - - String jobName = "jobId_" + UUID.randomUUID(); - JobId jobId = JobId.newBuilder().setLocation("us").setJob(jobName).build(); - - try (TableDataWriteChannel writer = bigquery.writer(jobId, writeChannelConfiguration); - OutputStream stream = Channels.newOutputStream(writer)) { - Files.copy(Paths.get(sourceUri), stream); - } - - Job job = bigquery.getJob(jobId); - Job completedJob = job.waitFor(); - if (job.isDone()) { - System.out.printf("Json successfully loaded in a table '%s'.%n", tableName); - } else { - System.out.println( - "BigQuery was unable to load into the table due to an error:" - + job.getStatus().getError()); - } - } catch (BigQueryException | InterruptedException e) { - System.out.printf("Column not added during load append: %s%n", e.getMessage()); - } catch (IOException e) { - System.out.printf("Error copying file: %s%n", e.getMessage()); - } - } - - public static Gson getGson() { - JsonDeserializer typeDeserializer = - (jsonElement, type, deserializationContext) -> { - return LegacySQLTypeName.valueOf(jsonElement.getAsString()); - }; - - JsonDeserializer subFieldsDeserializer = - (jsonElement, type, deserializationContext) -> { - Field[] fields = - deserializationContext.deserialize(jsonElement.getAsJsonArray(), Field[].class); - return FieldList.of(fields); - }; - - return new GsonBuilder() - .registerTypeAdapter(LegacySQLTypeName.class, typeDeserializer) - .registerTypeAdapter(FieldList.class, subFieldsDeserializer) - .create(); - } -} diff --git a/samples/interactive-tutorials/src/main/resources/events_schema.json b/samples/interactive-tutorials/src/main/resources/events_schema.json deleted file mode 100644 index a52c0e56..00000000 --- a/samples/interactive-tutorials/src/main/resources/events_schema.json +++ /dev/null @@ -1,73 +0,0 @@ -[ - { - "fields":[ - { - "mode": "NULLABLE", - "name": "currencyCode", - "type": "STRING" - }, - { - "mode": "NULLABLE", - "name": "revenue", - "type": "FLOAT" - } - ], - "mode": "NULLABLE", - "name": "purchaseTransaction", - "type": "RECORD" - }, - { - "fields":[ - { - "mode": "NULLABLE", - "name": "quantity", - "type": "INTEGER" - }, - { - "fields":[ - { - "mode": "NULLABLE", - "name": "id", - "type": "STRING" - } - ], - "mode": "NULLABLE", - "name": "product", - "type": "RECORD" - } - ], - "mode": "REPEATED", - "name": "productDetails", - "type": "RECORD" - }, - { - "mode": "REQUIRED", - "name": "eventTime", - "type": "STRING" - }, - { - "mode": "REQUIRED", - "name": "visitorId", - "type": "STRING" - }, - { - "mode": "REQUIRED", - "name": "eventType", - "type": "STRING" - }, - { - "mode": "NULLABLE", - "name": "searchQuery", - "type": "STRING" - }, - { - "mode": "NULLABLE", - "name": "cartId", - "type": "STRING" - }, - { - "mode": "REPEATED", - "name": "pageCategories", - "type": "STRING" - } - ] \ No newline at end of file diff --git a/samples/interactive-tutorials/src/main/resources/product_schema.json b/samples/interactive-tutorials/src/main/resources/product_schema.json deleted file mode 100644 index 2dcc79f7..00000000 --- a/samples/interactive-tutorials/src/main/resources/product_schema.json +++ /dev/null @@ -1,317 +0,0 @@ -[ - { - "name": "name", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "id", - "type": "STRING", - "mode": "REQUIRED" - }, - { - "name": "type", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "primaryProductId", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "collectionMemberIds", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "gtin", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "categories", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "title", - "type": "STRING", - "mode": "REQUIRED" - }, - { - "name": "brands", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "description", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "languageCode", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "attributes", - "type": "RECORD", - "mode": "REPEATED", - "fields": [ - { - "name": "key", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "value", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "text", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "numbers", - "type": "FLOAT", - "mode": "REPEATED" - }, - { - "name": "searchable", - "type": "BOOLEAN", - "mode": "NULLABLE" - }, - { - "name": "indexable", - "type": "BOOLEAN", - "mode": "NULLABLE" - } - ] - } - ] - }, - { - "name": "tags", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "priceInfo", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "currencyCode", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "price", - "type": "FLOAT", - "mode": "NULLABLE" - }, - { - "name": "originalPrice", - "type": "FLOAT", - "mode": "NULLABLE" - }, - { - "name": "cost", - "type": "FLOAT", - "mode": "NULLABLE" - }, - { - "name": "priceEffectiveTime", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "priceExpireTime", - "type": "STRING", - "mode": "NULLABLE" - } - ] - }, - { - "name": "rating", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "ratingCount", - "type": "INTEGER", - "mode": "NULLABLE" - }, - { - "name": "averageRating", - "type": "FLOAT", - "mode": "NULLABLE" - }, - { - "name": "ratingHistogram", - "type": "INTEGER", - "mode": "REPEATED" - } - ] - }, - { - "name": "expireTime", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "ttl", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "seconds", - "type": "INTEGER", - "mode": "NULLABLE" - }, - { - "name": "nanos", - "type": "INTEGER", - "mode": "NULLABLE" - } - ] - }, - { - "name": "availableTime", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "availability", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "availableQuantity", - "type": "INTEGER", - "mode": "NULLABLE" - }, - { - "name": "fulfillmentInfo", - "type": "RECORD", - "mode": "REPEATED", - "fields": [ - { - "name": "type", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "placeIds", - "type": "STRING", - "mode": "REPEATED" - } - ] - }, - { - "name": "uri", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "images", - "type": "RECORD", - "mode": "REPEATED", - "fields": [ - { - "name": "uri", - "type": "STRING", - "mode": "REQUIRED" - }, - { - "name": "height", - "type": "INTEGER", - "mode": "NULLABLE" - }, - { - "name": "width", - "type": "INTEGER", - "mode": "NULLABLE" - } - ] - }, - { - "name": "audience", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "genders", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "ageGroups", - "type": "STRING", - "mode": "REPEATED" - } - ] - }, - { - "name": "colorInfo", - "type": "RECORD", - "mode": "NULLABLE", - "fields": [ - { - "name": "colorFamilies", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "colors", - "type": "STRING", - "mode": "REPEATED" - } - ] - }, - { - "name": "sizes", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "materials", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "patterns", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "conditions", - "type": "STRING", - "mode": "REPEATED" - }, - { - "name": "retrievableFields", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "publishTime", - "type": "STRING", - "mode": "NULLABLE" - }, - { - "name": "promotions", - "type": "RECORD", - "mode": "REPEATED", - "fields": [ - { - "name": "promotionId", - "type": "STRING", - "mode": "NULLABLE" - } - ] - } -] \ No newline at end of file diff --git a/samples/interactive-tutorials/src/main/resources/products.json b/samples/interactive-tutorials/src/main/resources/products.json deleted file mode 100644 index 39dea765..00000000 --- a/samples/interactive-tutorials/src/main/resources/products.json +++ /dev/null @@ -1,316 +0,0 @@ -{"id": "GGCOGOAC101259","name": "GGCOGOAC101259","title": "#IamRemarkable Pen","brands": ["#IamRemarkable"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGOAC101259.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/IamRemarkable+Pen"} -{"id": "GGOEAAEC172013","name": "GGOEAAEC172013","title": "Android Embroidered Crewneck Sweater","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Embroidered+Crewneck+Sweater"} -{"id": "GGPRAHPL107110","name": "GGPRAHPL107110","title": "Android Iconic Hat Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAHPL130910.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Android+Iconic+Hat+Green"} -{"id": "GGOEAAKQ137410","name": "GGOEAAKQ137410","title": "Android Iconic Sock","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "17"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAAKQ137410.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Sock"} -{"id": "GGOEAAWL130147","name": "GGOEAAWL130147","title": "Android Pocket Onesie Navy","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1301.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Onesie+Navy"} -{"id": "GGOEGAED142617","name": "GGOEGAED142617","title": "Google Austin Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1426.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Austin+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ163316","name": "GGOEGAEJ163316","title": "Google Charcoal Unisex Badge Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "21"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1633.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Charcoal+Unisex+Badge+Tee"} -{"id": "GGOEGDWC140899","name": "GGOEGDWC140899","title": "Google Chicago Campus Mug","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "12"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDWC140899.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Drinkware/Google+Chicago+Campus+Mug"} -{"id": "GGOEGCBD142299","name": "GGOEGCBD142299","title": "Google Cork Tablet Case","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBD142299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Cork+Tablet+Case"} -{"id": "GGOEGAEB119414","name": "GGOEGAEB119414","title": "Google Dino Game Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1194.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dino+Game+Tee"} -{"id": "GGOEGAAH134316","name": "GGOEGAAH134316","title": "Google Heather Green Speckled Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1343.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Heather+Green+Speckled+Tee"} -{"id": "GGPRGBRC104499","name": "GGPRGBRC104499","title": "Google Incognito Zippack V2","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBRC128099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Incognito+Zippack+V2"} -{"id": "GGOEGAEH146017","name": "GGOEGAEH146017","title": "Google LA Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1460.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+LA+Campus+Unisex+Tee"} -{"id": "GGOEGAED161612","name": "GGOEGAED161612","title": "Google LA Campus Women Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1569.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Land+and+Sea+Unisex+Tee+LS"} -{"id": "GGOEGCBA150799","name": "GGOEGCBA150799","title": "Google Large Pet Leash (Red/Yellow)","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA150799.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Large+Pet+Leash+Red+Yellow"} -{"id": "GGOEGADJ137115","name": "GGOEGADJ137115","title": "Google Men's Tech Fleece Vest Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1371.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mens+Tech+Fleece+Vest+Charcoal"} -{"id": "GGOEGAER119515","name": "GGOEGAER119515","title": "Google Mountain View Tee Red","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Neon red"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1195.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mountain+View+Tee+Red"} -{"id": "GGOEGAEB140413","name": "GGOEGAEB140413","title": "Google NYC Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1404.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+NYC+Campus+Zip+Hoodie"} -{"id": "GGOEGAEC165215","name": "GGOEGAEC165215","title": "Google Navy French Terry Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1652.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Navy+French+Terry+Zip+Hoodie"} -{"id": "GGOEGALJ148813","name": "GGOEGALJ148813","title": "Google Seattle Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1488.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Ladies+Tee"} -{"id": "GGOEGALJ148816","name": "GGOEGALJ148816","title": "Google Seattle Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1488.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Ladies+Tee"} -{"id": "GGOEGAAQ117715","name": "GGOEGAAQ117715","title": "Google Striped Tank","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1177.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Striped+Tank"} -{"id": "GGOEGAAQ117716","name": "GGOEGAAQ117716","title": "Google Striped Tank","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1177.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Striped+Tank"} -{"id": "GGCOGAEJ153718","name": "GGCOGAEJ153718","title": "Google TYCTWD Gray Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1537.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Charcoal+Tee"} -{"id": "GGOEGAER090417","name": "GGOEGAER090417","title": "Google Tee Red","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Flame red"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0904.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tee+Red"} -{"id": "GGOEGAXB135628","name": "GGOEGAXB135628","title": "Google Toddler Hero Tee Charcoal Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Ebony","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1356.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Toddler+Hero+Tee+Black"} -{"id": "GGOEGHBJ101899","name": "GGOEGHBJ101899","title": "Google Twill Cap Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "13"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGHBJ101899.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Twill+Cap+Charcoal"} -{"id": "GGOEGAEB125316","name": "GGOEGAEB125316","title": "Google Unisex Pride Eco-Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1253.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+Pride+Eco-Tee+Black"} -{"id": "GGOEGAEB170917","name": "GGOEGAEB170917","title": "Google Unisex V-neck Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1709.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+V+neck+Tee"} -{"id": "GGOEGAPC167099","name": "GGOEGAPC167099","title": "Google Vintage Cap Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGAPC167099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Vintage+Cap+Navy"} -{"id": "GGOEGAEH174914","name": "GGOEGAEH174914","title": "Google Vintage Olive Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1749.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Vintage+Olive+Tee"} -{"id": "GGOEGAPJ108213","name": "GGOEGAPJ108213","title": "Google Women's Discovery Lt. Rain Shell","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1082.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Discovery"} -{"id": "GGOEGALB119017","name": "GGOEGALB119017","title": "Google Women's Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1190.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Eco+Tee+Black"} -{"id": "GGOEGAWH126845","name": "GGOEGAWH126845","title": "Stan and Friends 2019 Onesie","brands": ["Stan and Friends"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1268.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Stan+and+Friends+Onesie+Green"} -{"id": "GGOEYOCR125599","name": "GGOEYOCR125599","title": "YouTube Transmission Journal Red","brands": ["YouTube"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Neon red","Flame red"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYOCR125599.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Transmission+Journal+Red"} -{"id": "GGCOGADC100815","name": "GGCOGADC100815","title": "#IamRemarkable Hoodie","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1008.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Hoodie"} -{"id": "GGCOGALC100713","name": "GGCOGALC100713","title": "#IamRemarkable Ladies T-Shirt","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "12"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1007.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Ladies+T-Shirt"} -{"id": "GGOEAAYH130212","name": "GGOEAAYH130212","title": "Android Pocket Youth Tee Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1302.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Youth+Tee+Green"} -{"id": "GGPRGCBA104199","name": "GGPRGCBA104199","title": "Google ApPeel Journal Red","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3.67"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGCBA104199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Sustainable+Kit"} -{"id": "GGOEGAFB134012","name": "GGOEGAFB134012","title": "Google Badge Heavyweight Pullover Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1340.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Badge+Heavyweight+Pullover+Black"} -{"id": "GGOEGAFB134018","name": "GGOEGAFB134018","title": "Google Badge Heavyweight Pullover Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1340.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Badge+Heavyweight+Pullover+Black"} -{"id": "GGOEGALL144015","name": "GGOEGALL144015","title": "Google Boulder Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1440.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Boulder+Campus+Ladies+Tee"} -{"id": "GGOEGADH120418","name": "GGOEGADH120418","title": "Google Campus Raincoat Green","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Campus+Raincoat+Green"} -{"id": "GGOEGBJD141499","name": "GGOEGBJD141499","title": "Google Chicago Campus Tote","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "11"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBJD141499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Bags/Google+Chicago+Campus+Tote"} -{"id": "GGPRGDHB106099","name": "GGPRGDHB106099","title": "Google Chrome Dino Light Up Water Bottle","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDHB163199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Chrome+Dino+Light+Up+Water+Bottle"} -{"id": "GGOEGAEB173714","name": "GGOEGAEB173714","title": "Google Crewneck Sweatshirt Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "37"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Crewneck+Sweatshirt+Black"} -{"id": "GGOEGADH134214","name": "GGOEGADH134214","title": "Google Crewneck Sweatshirt Green","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1342.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Crewneck+Sweatshirt+Green"} -{"id": "GGOEGAER149217","name": "GGOEGAER149217","title": "Google Kirkland Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1492.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Kirkland+Campus+Unisex+Tee"} -{"id": "GGOEGOAA172399","name": "GGOEGOAA172399","title": "Google Ombre Pen","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAA172399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Ombre+Pen+Yellow"} -{"id": "GGOEGAEJ148013","name": "GGOEGAEJ148013","title": "Google PNW Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1480.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+PNW+Campus+Zip+Hoodie"} -{"id": "GGOEGAEJ148214","name": "GGOEGAEJ148214","title": "Google PNW Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1482.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+PNW+Campus+Unisex+Tee"} -{"id": "GGPRGAAB100712","name": "GGPRGAAB100712","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Ebony","Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGXXX1007.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAQB107813","name": "GGOEGAQB107813","title": "Google Women's Grid Zip-Up","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "33"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1078.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Grid+Zip+Up"} -{"id": "GGOEGAPB176914","name": "GGOEGAPB176914","title": "Google Women's Puffer Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Womens+Puffer+Jacket"} -{"id": "GGOEGATB176713","name": "GGOEGATB176713","title": "Google Women's Puffer Vest","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "34"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Womens+Puffer+Vest"} -{"id": "GGOEGAPJ138615","name": "GGOEGAPJ138615","title": "Google Women's Tech Fleece Grey","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1386.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Tech+Fleece+Grey"} -{"id": "GGOEGAYH135914","name": "GGOEGAYH135914","title": "Google Youth Badge Tee Olive","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1359.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Youth+Badge+Tee+Olive"} -{"id": "GGOEGAYB113113","name": "GGOEGAYB113113","title": "Google Youth FC Longsleeve Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1131.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Youth+FC+Longsleeve+Charcoal"} -{"id": "GGOEGAEH126718","name": "GGOEGAEH126718","title": "Stan and Friends 2019 Tee","brands": ["Stan and Friends"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1267.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Stan+and+Friends+Tee+Green"} -{"id": "GGOEYAEB093815","name": "GGOEYAEB093815","title": "YouTube Icon Pullover Black","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Ebony","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX0938.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Icon+Hoodie+Black"} -{"id": "GGOEYAEJ120318","name": "GGOEYAEJ120318","title": "YouTube Icon Tee Grey","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX1203.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Icon+Tee+Grey"} -{"id": "GGPRAOAL107699","name": "GGPRAOAL107699","title": "Android Iconic Pen","brands": ["Android"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAOAL129199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Android+Iconic+Pen"} -{"id": "GGOEAAEH129617","name": "GGOEAAEH129617","title": "Android Pocket Tee Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1296.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Tee+Green"} -{"id": "GGPRAAEH107217","name": "GGPRAAEH107217","title": "Android Pocket Tee Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1296.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Android+Pocket+Tee+Green"} -{"id": "GGOEAAXL129928","name": "GGOEAAXL129928","title": "Android Pocket Toddler Tee Navy","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "23"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1299.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Toddler+Tee+Navy"} -{"id": "GGOEGAEC171813","name": "GGOEGAEC171813","title": "Google Bike Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1718.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Bike+Eco+Tee"} -{"id": "GGOEGALL144016","name": "GGOEGALL144016","title": "Google Boulder Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1440.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Boulder+Campus+Ladies+Tee"} -{"id": "GGOEGAEC176213","name": "GGOEGAEC176213","title": "Google Camp Fleece Snap Pullover","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Camp+Fleece+Snap+Pullover"} -{"id": "GGOEGAER141014","name": "GGOEGAER141014","title": "Google Chicago Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1410.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ096415","name": "GGOEGAEJ096415","title": "Google Crewneck Sweatshirt Grey","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0964.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Crew+Grey"} -{"id": "GGOEGCBA139099","name": "GGOEGCBA139099","title": "Google Emoji Magnet Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "10"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA139099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Emoji+Magnet+Set"} -{"id": "GGOEGBRC127999","name": "GGOEGBRC127999","title": "Google Incognito Techpack V2","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBRC127999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Bags/Google+Incognito+Techpack+V2"} -{"id": "GGPRGCBA105199","name": "GGPRGCBA105199","title": "Google Medium Pet Collar (Blue/Green)","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Green blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA139599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Medium+Pet+Collar+Blue+Green"} -{"id": "GGOEGAER119516","name": "GGOEGAER119516","title": "Google Mountain View Tee Red","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Flame red","Dark red"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1195.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mountain+View+Tee+Red"} -{"id": "GGOEGAEJ148014","name": "GGOEGAEJ148014","title": "Google PNW Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1480.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+PNW+Campus+Zip+Hoodie"} -{"id": "GGPRGOAH102499","name": "GGPRGOAH102499","title": "Google Pen Citron","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGOAH102499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Pen+Citron"} -{"id": "GGOEGAEL146914","name": "GGOEGAEL146914","title": "Google SF Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1469.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+SF+Campus+Unisex+Tee"} -{"id": "GGCOGALB153913","name": "GGCOGALB153913","title": "Google TYCTWD Black Women's Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1539.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Womens+Tee"} -{"id": "GGCOGAEJ153715","name": "GGCOGAEJ153715","title": "Google TYCTWD Gray Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1537.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Charcoal+Tee"} -{"id": "GGOEGAEC173816","name": "GGOEGAEC173816","title": "Google Tonal Shirt Marine Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Tonal+Shirt+Marine+Blue"} -{"id": "GGOEGAEJ104015","name": "GGOEGAEJ104015","title": "Google Tudes Recycled Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1040.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tudes+Recycled+Tee"} -{"id": "GGPRGAAB100718","name": "GGPRGAAB100718","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGXXX1007.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAPH138213","name": "GGOEGAPH138213","title": "Google Women's Softshell Moss","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1382.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Softshell+Moss"} -{"id": "GGOEGAYB113713","name": "GGOEGAYB113713","title": "Google Youth FC Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1137.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Youth+FC+Zip+Hoodie"} -{"id": "GGOEGAEB110915","name": "GGOEGAEB110915","title": "Google Zip Hoodie F/C","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1109.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Zip+Hoodie+FC"} -{"id": "GGPRACBA107016","name": "GGPRACBA107016","title": "I \u003c3 Android Kit","brands": ["Android"],"categories": ["Kit"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44.75"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRAXXX1070.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/I+Love+Android+Kit"} -{"id": "GGOEYAEJ120313","name": "GGOEYAEJ120313","title": "YouTube Icon Tee Grey","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX1203.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Icon+Tee+Grey"} -{"id": "GGOEYADJ173418","name": "GGOEYADJ173418","title": "YouTube Ultralight Embroidered Sweatshirt","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "33"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/YouTube+Ultralight+Embroidered+Sweatshirt"} -{"id": "GGOEAFDH105799","name": "GGOEAFDH105799","title": "Android Cardboard Sculpture","brands": ["Android"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "17"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAFDH105799.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Android+Cardboard+Sculpture"} -{"id": "GGOEGAEM126414","name": "GGOEGAEM126414","title": "Android Garden 2019 Tee","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1264.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Garden+Tee+Orange"} -{"id": "GGOEAFBA115599","name": "GGOEAFBA115599","title": "Google Android Super Hero 3D Framed Art","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAFBA115599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Android+Super+Hero+3D+Framed+Art"} -{"id": "GGOECAEB163614","name": "GGOECAEB163614","title": "Google Black Cloud Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECXXX1636.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Black+Cloud+Tee"} -{"id": "GGOEGAEH143916","name": "GGOEGAEH143916","title": "Google Boulder Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1439.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Boulder+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ133717","name": "GGOEGAEJ133717","title": "Google Cambridge Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1337.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Cambridge+Campus+Zip+Hoodie"} -{"id": "GGOEGAEJ168612","name": "GGOEGAEJ168612","title": "Google Campus Unisex Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1686.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Campus+Unisex+Zip+Hoodie"} -{"id": "GGOEGAEJ168613","name": "GGOEGAEJ168613","title": "Google Campus Unisex Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1686.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Campus+Unisex+Zip+Hoodie"} -{"id": "GGPRGCBD102699","name": "GGPRGCBD102699","title": "Google Cork Tablet Case","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGCBD102699.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Cork+Tablet+Case"} -{"id": "GGOEGAER149212","name": "GGOEGAER149212","title": "Google Kirkland Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1492.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Kirkland+Campus+Unisex+Tee"} -{"id": "GGOEGCBA162099","name": "GGOEGCBA162099","title": "Google Land Sea Tech Taco","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGCBA161199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Land+and+Sea+Tech+Taco+LS"} -{"id": "GGOEGALC153213","name": "GGOEGALC153213","title": "Google Mountain View Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1532.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Mountain+View+Campus+Ladies+Tee"} -{"id": "GGOEGAEH153016","name": "GGOEGAEH153016","title": "Google Mountain View Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1530.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Mountain+View+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ153416","name": "GGOEGAEJ153416","title": "Google Mountain View Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1534.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Mountain+View+Campus+Zip+Hoodie"} -{"id": "GGOEGAEJ140215","name": "GGOEGAEJ140215","title": "Google NYC Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1402.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+NYC+Campus+Unisex+Tee"} -{"id": "GGOEGBBA175499","name": "GGOEGBBA175499","title": "Google Recycled Drawstring Bag","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Recycled+Drawstring+Bag"} -{"id": "GGOEGALL147017","name": "GGOEGALL147017","title": "Google SF Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1470.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+SF+Campus+Ladies+Tee"} -{"id": "GGOEGALJ148814","name": "GGOEGALJ148814","title": "Google Seattle Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1488.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Ladies+Tee"} -{"id": "GGOEGAEH148718","name": "GGOEGAEH148718","title": "Google Seattle Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1487.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ153514","name": "GGOEGAEJ153514","title": "Google Sunnyvale Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1535.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Sunnyvale+Campus+Zip+Hoodie"} -{"id": "GGOEGAED176313","name": "GGOEGAED176313","title": "Google Sweatshirt Brick Red","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Flame red","Dark red"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Sweatshirt+Brick+Red"} -{"id": "GGOEGAEC090714","name": "GGOEGAEC090714","title": "Google Tee Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0907.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tee+Blue"} -{"id": "GGOEGAAB118913","name": "GGOEGAAB118913","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1189.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAPB176915","name": "GGOEGAPB176915","title": "Google Women's Puffer Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Womens+Puffer+Jacket"} -{"id": "GGOEGAEB110912","name": "GGOEGAEB110912","title": "Google Zip Hoodie F/C","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1109.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Zip+Hoodie+FC"} -{"id": "GGPRACBA107018","name": "GGPRACBA107018","title": "I \u003c3 Android Kit","brands": ["Android"],"categories": ["Kit"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44.75"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRAXXX1070.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/I+Love+Android+Kit"} -{"id": "GGOEYAEA105610","name": "GGOEYAEA105610","title": "YouTube Crew Socks","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYAEA105610.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Crew+Socks"} -{"id": "GGCOGADC100817","name": "GGCOGADC100817","title": "#IamRemarkable Hoodie","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1008.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Hoodie"} -{"id": "GGCOGAEC100613","name": "GGCOGAEC100613","title": "#IamRemarkable T-Shirt","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "12"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1006.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Unisex+T-Shirt"} -{"id": "GGOEGCKR133899","name": "GGOEGCKR133899","title": "Google Cambridge Campus Sticker","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "2"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCKR133899.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Cambridge+Campus+Sticker"} -{"id": "GGOEGAEJ168615","name": "GGOEGAEJ168615","title": "Google Campus Unisex Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1686.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Campus+Unisex+Zip+Hoodie"} -{"id": "GGOEGAER141013","name": "GGOEGAER141013","title": "Google Chicago Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1410.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Unisex+Tee"} -{"id": "GGOECOLJ164299","name": "GGOECOLJ164299","title": "Google Cloud Journal","brands": ["Google Cloud"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "18"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECOLJ164299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Stationery/Google+Cloud+Journal"} -{"id": "GGOEGHPB178810","name": "GGOEGHPB178810","title": "Google Corduroy Black Cap","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "19"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Corduroy+Black+Cap"} -{"id": "GGOEGAXA123610","name": "GGOEGAXA123610","title": "Google Crew Combed Cotton Sock","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "17"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGAXA123610.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Crew+Combed+Cotton+Sock"} -{"id": "GGOEGAXA123510","name": "GGOEGAXA123510","title": "Google Crew Striped Athletic Sock","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "17"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGAXA123510.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Crew+Striped+Athletic+Sock"} -{"id": "GGOEGAEJ103915","name": "GGOEGAEJ103915","title": "Google F/C Longsleeve Ash","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1039.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+FC+Longsleeve+Ash"} -{"id": "GGOEGAEJ165013","name": "GGOEGAEJ165013","title": "Google Gray French Terry Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1650.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Gray+French+Terry+Sweatshirt"} -{"id": "GGOEGAXJ164914","name": "GGOEGAXJ164914","title": "Google Gray Toddler Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver","Stone gray","Cool gray"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1649.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Gray+Toddler+Zip+Hoodie"} -{"id": "GGOEGCBA169499","name": "GGOEGCBA169499","title": "Google Kirkland Campus Patch Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA169499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Kirkland+Campus+Patch+Set"} -{"id": "GGOEGCBA150599","name": "GGOEGCBA150599","title": "Google Large Pet Collar (Red/Yellow)","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA150599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Large+Pet+Collar+Red+Yellow"} -{"id": "GGOEGOAH090199","name": "GGOEGOAH090199","title": "Google Light Pen Green","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAH090199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/Google+Light+Up+Pen+Green"} -{"id": "GGOEGCBA169399","name": "GGOEGCBA169399","title": "Google Los Angeles Campus Patch Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA169399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Los+Angeles+Campus+Patch+Set"} -{"id": "GGOEGOAB177399","name": "GGOEGOAB177399","title": "Google Maps Wheat Pen","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAB177399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Maps+Wheat+Pen"} -{"id": "GGOEGAEH153018","name": "GGOEGAEH153018","title": "Google Mountain View Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1530.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Mountain+View+Campus+Unisex+Tee"} -{"id": "GGOEGALJ140315","name": "GGOEGALJ140315","title": "Google NYC Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1403.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+NYC+Campus+Ladies+Tee"} -{"id": "GGOEGAEC165218","name": "GGOEGAEC165218","title": "Google Navy French Terry Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1652.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Navy+French+Terry+Zip+Hoodie"} -{"id": "GGPRGADC107914","name": "GGPRGADC107914","title": "Google Raincoat Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1350.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Raincoat+Navy"} -{"id": "GGOEGALJ148815","name": "GGOEGALJ148815","title": "Google Seattle Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1488.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Ladies+Tee"} -{"id": "GGOEGADJ135212","name": "GGOEGADJ135212","title": "Google Sherpa Zip Hoodie Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1352.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Sherpa+Zip+Hoodie+Charcoal"} -{"id": "GGCOGAYC154115","name": "GGCOGAYC154115","title": "Google TYCTWD Blue Youth Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1541.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Blue+Youth+Tee"} -{"id": "GGOEGAEC164713","name": "GGOEGAEC164713","title": "Google Tonal Blue Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1647.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tonal+Blue+Eco+Tee"} -{"id": "GGOEGHPL107710","name": "GGOEGHPL107710","title": "Google Twill Cap Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "13"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGHPL107710.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dad+Hat+Navy"} -{"id": "GGPRGAAB100714","name": "GGPRGAAB100714","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGXXX1007.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAEH174912","name": "GGOEGAEH174912","title": "Google Vintage Olive Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1749.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Vintage+Olive+Tee"} -{"id": "GGOEGAEH175114","name": "GGOEGAEH175114","title": "Google Vintage Pullover Olive","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Vintage+Pullover+Olive"} -{"id": "GGOEAAXQ129830","name": "GGOEAAXQ129830","title": "Android Pocket Toddler Tee White","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "23"},"colorInfo": {"colorFamilies": ["White"],"colors": ["White"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1298.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Toddler+Tee+White"} -{"id": "GGOEGBJC122399","name": "GGOEGBJC122399","title": "Google Campus Bike Tote Navy","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "11"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBJC122399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Bags/Google+Google+Campus+Bike+Tote+Navy"} -{"id": "GGOEGAEC141216","name": "GGOEGAEC141216","title": "Google Chicago Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1412.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Zip+Hoodie"} -{"id": "GGOEGAEA137817","name": "GGOEGAEA137817","title": "Google Cotopaxi Shell","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1378.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Cotopaxi+Shell"} -{"id": "GGOEGAED168116","name": "GGOEGAED168116","title": "Google Earth Day Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1681.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Earth+Day+Eco+Tee"} -{"id": "GGOEGAEJ165116","name": "GGOEGAEJ165116","title": "Google Gray French Terry Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver","Stone gray","Cool gray"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1651.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Gray+French+Terry+Zip+Hoodie"} -{"id": "GGPRGBRC101599","name": "GGPRGBRC101599","title": "Google Incognito Laptop Organizer V2","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGBRC101599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Incognito+Laptop+Organizer"} -{"id": "GGOEGALJ149314","name": "GGOEGALJ149314","title": "Google Kirkland Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1493.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Kirkland+Campus+Ladies+Tee"} -{"id": "GGOEGACH161516","name": "GGOEGACH161516","title": "Google Land Sea French Terry Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1609.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Land+and+Sea+French+Terry+Sweatshirt+LS"} -{"id": "GGOEGACH161517","name": "GGOEGACH161517","title": "Google Land Sea French Terry Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1609.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Land+and+Sea+French+Terry+Sweatshirt+LS"} -{"id": "GGCOGAED156912","name": "GGCOGAED156912","title": "Google Land Sea Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1569.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Land+and+Sea+Unisex+Tee"} -{"id": "GGOEGOAR090099","name": "GGOEGOAR090099","title": "Google Light Pen Red","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Flame red","Dark red"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAR090099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/Google+Light+Up+Pen+Red"} -{"id": "GGOEGCBA168999","name": "GGOEGCBA168999","title": "Google Patch","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3.5"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA168999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Lifestyle/Google+Patch"} -{"id": "GGOEGOAC123799","name": "GGOEGOAC123799","title": "Google Pen Bright Blue","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAC123799.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/Google+Pen+Bright+Blue"} -{"id": "GGOEGAEL146912","name": "GGOEGAEL146912","title": "Google SF Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1469.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+SF+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ118215","name": "GGOEGAEJ118215","title": "Google Summer19 Crew Grey","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1182.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2020.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Summer19+Crew+Grey"} -{"id": "GGOEGAEJ153515","name": "GGOEGAEJ153515","title": "Google Sunnyvale Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1535.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Sunnyvale+Campus+Zip+Hoodie"} -{"id": "GGCOGAEJ153717","name": "GGCOGAEJ153717","title": "Google TYCTWD Gray Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1537.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Charcoal+Tee"} -{"id": "GGCOGAXT154229","name": "GGCOGAXT154229","title": "Google TYCTWD Yellow Toddler Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "23"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1542.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Yellow+Toddler+Tee"} -{"id": "GGOEGAEC090718","name": "GGOEGAEC090718","title": "Google Tee Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0907.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tee+Blue"} -{"id": "GGOEGAXQ134629","name": "GGOEGAXQ134629","title": "Google Toddler Tee White V2","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"colorInfo": {"colorFamilies": ["White"],"colors": ["White"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1346.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Toddler+Tee+White"} -{"id": "GGOEGAED175017","name": "GGOEGAED175017","title": "Google Tonal Brick Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Tonal+Brick+Tee"} -{"id": "GGOEGAEC173818","name": "GGOEGAEC173818","title": "Google Tonal Shirt Marine Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Tonal+Shirt+Marine+Blue"} -{"id": "GGOEGAEB125312","name": "GGOEGAEB125312","title": "Google Unisex Pride Eco-Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1253.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino","Membrane"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+Pride+Eco-Tee+Black"} -{"id": "GGOEGAEC164612","name": "GGOEGAEC164612","title": "Google Vintage Navy Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1646.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Vintage+Navy+Tee"} -{"id": "GGOEGABB099199","name": "GGOEGABB099199","title": "Google Wallet Stand Black","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGABB099199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Wallet+Stand+Black"} -{"id": "GGOEGAPJ108216","name": "GGOEGAPJ108216","title": "Google Women's Discovery Lt. Rain Shell","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1082.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Discovery"} -{"id": "GGOEGALB109913","name": "GGOEGALB109913","title": "Google Women's Tee F/C Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1099.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Tee+FC+Black"} -{"id": "GGOEGAYB116714","name": "GGOEGAYB116714","title": "Google Youth F/C Pullover Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1167.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual","Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Youth+FC+Pullover+Hoodie"} -{"id": "GGOEYCBR138999","name": "GGOEYCBR138999","title": "YouTube Iconic Play Pin","brands": ["YouTube"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYCBR138999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/YouTube+Iconic+Play+Pin"} -{"id": "GGCOGADC100814","name": "GGCOGADC100814","title": "#IamRemarkable Hoodie","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1008.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Hoodie"} -{"id": "GGOEAFKQ130599","name": "GGOEAFKQ130599","title": "Android Iconic 4in Decal","brands": ["Android"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.5"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAFKQ130599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Android+Iconic+4in+Decal"} -{"id": "GGOEAAEL130815","name": "GGOEAAEL130815","title": "Android Iconic Crew","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1308.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Crew"} -{"id": "GGOEGCOA173158","name": "GGOEGCOA173158","title": "Google Bike Paper Clip Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3.5"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Bike+Paper+Clip+Set"} -{"id": "GGOEGALJ141117","name": "GGOEGALJ141117","title": "Google Chicago Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1411.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Ladies+Tee"} -{"id": "GGOEGCBA169599","name": "GGOEGCBA169599","title": "Google Chicago Campus Patch Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA169599.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Chicago+Campus+Patch+Set"} -{"id": "GGOECAEB165513","name": "GGOECAEB165513","title": "Google Cloud Tri-Blend Crew Tee","brands": ["Google Cloud"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECXXX1655.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Cloud+Unisex+Tri-Blend+Crew+Tee"} -{"id": "GGOEGDNQ138099","name": "GGOEGDNQ138099","title": "Google Cork Base Tumbler","categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDNQ138099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Drinkware/Google+Cork+Base+Tumbler"} -{"id": "GGOEGAEL091315","name": "GGOEGAEL091315","title": "Google Crewneck Sweatshirt Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0913.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Crew+Sweater+Navy"} -{"id": "GGPRGAEL101415","name": "GGPRGAEL101415","title": "Google Crewneck Sweatshirt Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGXXX1014.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Crewneck+Sweatshirt+Navy"} -{"id": "GGOEGAWH144552","name": "GGOEGAWH144552","title": "Google Infant Hero Tee Olive","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1445.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Infant+Hero+Tee+Olive"} -{"id": "GGOEGAEH146018","name": "GGOEGAEH146018","title": "Google LA Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1460.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+LA+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ146218","name": "GGOEGAEJ146218","title": "Google LA Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1462.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+LA+Campus+Zip+Hoodie"} -{"id": "GGOEGADB138314","name": "GGOEGADB138314","title": "Google Men's Puff Jacket Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1383.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mens+Puff+Jacket+Black"} -{"id": "GGOEGDHH177299","name": "GGOEGDHH177299","title": "Google Olive Tundra Bottle","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "31"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Olive+Tundra+Bottle"} -{"id": "GGOEGAEC153118","name": "GGOEGAEC153118","title": "Google Sunnyvale Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1531.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Sunnyvale+Campus+Unisex+Tee"} -{"id": "GGOEGAEC090713","name": "GGOEGAEC090713","title": "Google Tee Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0907.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tee+Blue"} -{"id": "GGOEGAXC171928","name": "GGOEGAXC171928","title": "Google Tricyle Toddler Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "23"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1719.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tricyle+Toddler+Tee"} -{"id": "GGOEGAEJ173613","name": "GGOEGAEJ173613","title": "Google Ultralight Gray Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Ultralight+Gray+Sweatshirt"} -{"id": "GGOEGAEJ173615","name": "GGOEGAEJ173615","title": "Google Ultralight Gray Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Stone gray","Cool gray"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Ultralight+Gray+Sweatshirt"} -{"id": "GGOEGAEQ120116","name": "GGOEGAEQ120116","title": "Google Unisex 3/4 Raglan Red","categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Red"],"colors": ["Red","Flame red","Dark red"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1201.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+3+4+Raglan+Red"} -{"id": "GGOEGADB176812","name": "GGOEGADB176812","title": "Google Unisex Puffer Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Unisex+Puffer+Jacket"} -{"id": "GGOEGAEC164617","name": "GGOEGAEC164617","title": "Google Vintage Navy Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "27"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1646.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Vintage+Navy+Tee"} -{"id": "GGOEACBA116699","name": "GGOEACBA116699","title": "Noogler Android Figure 2019","brands": ["Android"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEACBA116699.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Noogler+Android+Figure+2019"} -{"id": "GGOEYAXB089629","name": "GGOEYAXB089629","title": "YouTube Kids Tee Black","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "20"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX0896.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Kids/Youtube+Kids+Tee+Black"} -{"id": "GGOEYALQ091917","name": "GGOEYALQ091917","title": "YouTube Women's Favorite Tee White","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["White"],"colors": ["White"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0919.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Youtube+Favorite+Tee+White"} -{"id": "GGOEAAYL130315","name": "GGOEAAYL130315","title": "Android Pocket Youth Tee Navy","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1303.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Youth+Tee+Navy"} -{"id": "GGOEGPJC019099","name": "GGOEGPJC019099","title": "Google 7-inch Dog Flying Disc Blue","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.5"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGPJC019099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Lifestyle/Google-Frisbee"} -{"id": "GGOEGAED142612","name": "GGOEGAED142612","title": "Google Austin Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1426.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Austin+Campus+Unisex+Tee"} -{"id": "GGOEGAEJ144113","name": "GGOEGAEJ144113","title": "Google Boulder Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1441.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Boulder+Campus+Zip+Hoodie"} -{"id": "GGOEGAEJ133712","name": "GGOEGAEJ133712","title": "Google Cambridge Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1337.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Cambridge+Campus+Zip+Hoodie"} -{"id": "GGOEGCBA096099","name": "GGOEGCBA096099","title": "Google Campus Bike","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA096099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Campus+Bike"} -{"id": "GGOECAEB165413","name": "GGOECAEB165413","title": "Google Cloud Carhartt Crew Sweatshirt","brands": ["Google Cloud"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECXXX1654.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Cloud+Unisex+Carhartt+Crew+Sweatshirt"} -{"id": "GGOEGAEL091312","name": "GGOEGAEL091312","title": "Google Crewneck Sweatshirt Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0913.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Crew+Sweater+Navy"} -{"id": "GGOEGAEL091318","name": "GGOEGAEL091318","title": "Google Crewneck Sweatshirt Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0913.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Crew+Sweater+Navy"} -{"id": "GGOEGBMH177899","name": "GGOEGBMH177899","title": "Google ecofriendly Green Duffel","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "31"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+ecofriendly+Green+Duffel"} -{"id": "GGOEGBMR177799","name": "GGOEGBMR177799","title": "Google ecofriendly Red Duffel","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "31"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+ecofriendly+Red+Duffel"} -{"id": "GGOEGAEB103815","name": "GGOEGAEB103815","title": "Google F/C Longsleeve Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1038.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+FC+Longsleeve+Charcoal"} -{"id": "GGPRGBRC103299","name": "GGPRGBRC103299","title": "Google Incognito Dopp Kit V2","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGBRC103299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Incognito+Dopp+Kit+V2"} -{"id": "GGPRGCBA100399","name": "GGPRGCBA100399","title": "Google Journal Set","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "10.75"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGCBA100399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Journal+Set"} -{"id": "GGOEGAYC118315","name": "GGOEGAYC118315","title": "Google Kids Playful Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1183.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Google+Kids+Playful+Tee"} -{"id": "GGOEGDHJ145999","name": "GGOEGDHJ145999","title": "Google LA Campus Bottle","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "20"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDHJ145999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Drinkware/Google+LA+Campus+Bottle"} -{"id": "GGOEMAEB164115","name": "GGOEMAEB164115","title": "Google F/C Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "21"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEMXXX1641.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Maps+Pin+Tee"} -{"id": "GGOEGAEB165317","name": "GGOEGAEB165317","title": "Google Marine Layer Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1653.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Marine+Layer+Tee"} -{"id": "GGOEGADH138114","name": "GGOEGADH138114","title": "Google Men's Softshell Moss","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1381.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mens+Softshell+Moss"} -{"id": "GGOEGAEC119613","name": "GGOEGAEC119613","title": "Google Mountain View Tee Blue","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1196.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mountain+View+Tee+Blue"} -{"id": "GGOEGAEC165212","name": "GGOEGAEC165212","title": "Google Navy French Terry Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1652.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Navy+French+Terry+Zip+Hoodie"} -{"id": "GGOEGCBA169999","name": "GGOEGCBA169999","title": "Google New York Campus Patch Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA169999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+New+York+Campus+Patch+Set"} -{"id": "GGOEGBJD148499","name": "GGOEGBJD148499","title": "Google PNW Campus Tote","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "11"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBJD148499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Bags/Google+PNW+Campus+Tote"} -{"id": "GGOEGAAR134513","name": "GGOEGAAR134513","title": "Google Red Speckled Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1345.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Red+Speckled+Tee"} -{"id": "GGOEGAEH148715","name": "GGOEGAEH148715","title": "Google Seattle Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1487.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Seattle+Campus+Unisex+Tee"} -{"id": "GGOEGADC134712","name": "GGOEGADC134712","title": "Google Sherpa Zip Hoodie Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1347.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Sherpa+Zip+Hoodie+Navy"} -{"id": "GGOEGAEC134910","name": "GGOEGAEC134910","title": "Google Speckled Beanie Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "20"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGAEC134910.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Speckled+Beanie+Navy"} -{"id": "GGOEGOCB178199","name": "GGOEGOCB178199","title": "Google Stitched Journal Set","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Stitched+Journal+Set"} -{"id": "GGOEGAXB113351","name": "GGOEGAXB113351","title": "Google Toddler FC Tee Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1133.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Toddler+FC+Tee+Charcoal"} -{"id": "GGOEGAED175014","name": "GGOEGAED175014","title": "Google Tonal Brick Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Tonal+Brick+Tee"} -{"id": "GGOEGADB176613","name": "GGOEGADB176613","title": "Google Unisex Puffer Vest","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "34"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Unisex+Puffer+Vest"} -{"id": "GGOEGAPJ178414","name": "GGOEGAPJ178414","title": "Google Women's Essential Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1784.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Womens+Essential+Jacket"} -{"id": "GGOEGAPB096315","name": "GGOEGAPB096315","title": "Google Womens Microfleece Jacket Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0963.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Microfleece+Jacket+Black"} -{"id": "GGOEYAXB089655","name": "GGOEYAXB089655","title": "YouTube Kids Tee Black","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "20"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX0896.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Kids/Youtube+Kids+Tee+Black"} -{"id": "GGOEYAEJ092115","name": "GGOEYAEJ092115","title": "Youtube 3 lines Tee Grey","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0921.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Youtube+3+lines+tee+grey"} -{"id": "GGCOGADC100813","name": "GGCOGADC100813","title": "#IamRemarkable Hoodie","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1008.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Hoodie"} -{"id": "GGCOGAEC100616","name": "GGCOGAEC100616","title": "#IamRemarkable T-Shirt","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "12"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1006.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Unisex+T-Shirt"} -{"id": "GGOEAAEL130813","name": "GGOEAAEL130813","title": "Android Iconic Crew","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1308.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Crew"} -{"id": "GGOEAAEL130818","name": "GGOEAAEL130818","title": "Android Iconic Crew","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1308.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Crew"} -{"id": "GGOEAAWL130145","name": "GGOEAAWL130145","title": "Android Pocket Onesie Navy","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1301.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Onesie+Navy"} -{"id": "GGPRAAEH107214","name": "GGPRAAEH107214","title": "Android Pocket Tee Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1296.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Android+Pocket+Tee+Green"} -{"id": "GGOEGAEC171816","name": "GGOEGAEC171816","title": "Google Bike Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1718.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Bike+Eco+Tee"} -{"id": "GGOECAEB163513","name": "GGOECAEB163513","title": "Google Black Cloud Polo","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "36"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Ebony","Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECXXX1635.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Black+Cloud+Polo"} -{"id": "GGOEGALC133617","name": "GGOEGALC133617","title": "Google Cambridge Campus Ladies Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1336.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Cambridge+Campus+Ladies+Tee"} -{"id": "GGOEGAEC176217","name": "GGOEGAEC176217","title": "Google Camp Fleece Snap Pullover","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Camp+Fleece+Snap+Pullover"} -{"id": "GGPRGBJC103999","name": "GGPRGBJC103999","title": "Google Campus Bike Tote Navy","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3.4"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Campus+Bike+Tote+Navy"} -{"id": "GGOEGAEJ168513","name": "GGOEGAEJ168513","title": "Google Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1685.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Campus+Unisex+Tee"} -{"id": "GGOEGDWH175999","name": "GGOEGDWH175999","title": "Google Ceramic Glazed Mug","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "12"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Ceramic+Glazed+Mug"} -{"id": "GGOEGAEJ163317","name": "GGOEGAEJ163317","title": "Google Charcoal Unisex Badge Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "21"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1633.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Charcoal+Unisex+Badge+Tee"} -{"id": "GGPRGCBA100499","name": "GGPRGCBA100499","title": "Google Confetti Task Pad","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3.75"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGCBA100499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Confetti+Combo"} -{"id": "GGPRGOCA102299","name": "GGPRGOCA102299","title": "Google Confetti Slim Task Pad","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGOCA102299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Confetti+Slim+Task+Pad"} -{"id": "GGPRGOCD102099","name": "GGPRGOCD102099","title": "Google Cork Journal","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGOCD102099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Cork+Journal"} -{"id": "GGOEGAEJ096412","name": "GGOEGAEJ096412","title": "Google Crewneck Sweatshirt Grey","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0964.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Crew+Grey"} -{"id": "GGOEGAEL091316","name": "GGOEGAEL091316","title": "Google Crewneck Sweatshirt Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0913.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Crew+Sweater+Navy"} -{"id": "GGOEGHGA174599","name": "GGOEGHGA174599","title": "Google Gradient Green Sunglasses","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Gradient+Green+Sunglasses"} -{"id": "GGOEGAER149216","name": "GGOEGAER149216","title": "Google Kirkland Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1492.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Kirkland+Campus+Unisex+Tee"} -{"id": "GGOEGCBA139899","name": "GGOEGCBA139899","title": "Google Large Pet Leash (Blue/Green)","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA139899.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Large+Pet+Leash+Blue+Green"} -{"id": "GGOEGAEB165316","name": "GGOEGAEB165316","title": "Google Marine Layer Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1653.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Cotton"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Marine+Layer+Tee"} -{"id": "GGOEGBJA127699","name": "GGOEGBJA127699","title": "Google Mural Tote","brands": ["Google"],"categories": ["Bags"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "18"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGBJA127699.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Bags/Google+Mural+Tote"} -{"id": "GGOEGAEC165217","name": "GGOEGAEC165217","title": "Google Navy French Terry Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1652.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Navy+French+Terry+Zip+Hoodie"} -{"id": "GGOEGOAQ101299","name": "GGOEGOAQ101299","title": "Google Pen White","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"colorInfo": {"colorFamilies": ["White"],"colors": ["White"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAQ101299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/Google+Pen+White"} -{"id": "GGOEGADC135016","name": "GGOEGADC135016","title": "Google Raincoat Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1350.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Raincoat+Navy"} -{"id": "GGCOAAPR155410","name": "GGCOAAPR155410","title": "Google TYCTWD Red Cap","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "13"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGAPR155410.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Red+Cap"} -{"id": "GGOEGAEH090616","name": "GGOEGAEH090616","title": "Google Tee Green","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0906.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Greenesign/Apparel/Google+Tee+Green"} -{"id": "GGOEGAXB113330","name": "GGOEGAXB113330","title": "Google Toddler FC Tee Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1133.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Toddler+FC+Tee+Charcoal"} -{"id": "GGOEGAXB113617","name": "GGOEGAXB113617","title": "Google Toddler FC Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1136.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Toddler+FC+Zip+Hoodie"} -{"id": "GGOEGAEC164718","name": "GGOEGAEC164718","title": "Google Tonal Blue Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1647.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tonal+Blue+Eco+Tee"} -{"id": "GGOEGAED175018","name": "GGOEGAED175018","title": "Google Tonal Brick Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "28"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Tonal+Brick+Tee"} -{"id": "GGPRGALB100815","name": "GGPRGALB100815","title": "Google Women's Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGXXX1008.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Womens+Eco+Tee+Black"} -{"id": "GGOEGATJ137214","name": "GGOEGATJ137214","title": "Google Women's Tech Fleece Vest Charcoal","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1372.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Womens+Tech+Fleece+Vest+Charcoal"} -{"id": "GGPRACBA107014","name": "GGPRACBA107014","title": "I \u003c3 Android Kit","brands": ["Android"],"categories": ["Kit"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44.75"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRAXXX1070.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/I+Love+Android+Kit"} -{"id": "GGOEGAWH126846","name": "GGOEGAWH126846","title": "Stan and Friends 2019 Onesie","brands": ["Stan and Friends"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1268.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Stan+and+Friends+Onesie+Green"} -{"id": "GGOEGAYH126913","name": "GGOEGAYH126913","title": "Stan and Friends 2019 Youth Tee","brands": ["Stan and Friends"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1269.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Stan+and+Friends+Youth+Tee+Green"} -{"id": "GGCOGADC100816","name": "GGCOGADC100816","title": "#IamRemarkable Hoodie","brands": ["#IamRemarkable"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1008.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/IamRemarkable+Hoodie"} -{"id": "GGOEAAEC172017","name": "GGOEAAEC172017","title": "Android Embroidered Crewneck Sweater","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Embroidered+Crewneck+Sweater"} -{"id": "GGOEAHPL130910","name": "GGOEAHPL130910","title": "Android Iconic Hat Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAHPL130910.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Hat+Green"} -{"id": "GGOEAAEH129616","name": "GGOEAAEH129616","title": "Android Pocket Tee Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "29"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1296.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Tee+Green"} -{"id": "GGOEAAYL130313","name": "GGOEAAYL130313","title": "Android Pocket Youth Tee Navy","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAXXX1303.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Pocket+Youth+Tee+Navy"} -{"id": "GGOEGCBA169899","name": "GGOEGCBA169899","title": "Google Austin Campus Patch Set","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA169899.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Campus+Collection/Google+Austin+Campus+Patch+Set"} -{"id": "GGOEGAXN127229","name": "GGOEGAXN127229","title": "Google Beekeepers 2019 Toddler Tee, Pink","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1272.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/ApparelGoogle+Beekeepers+Toddler+Tee+Pink"} -{"id": "GGOEGDWJ141799","name": "GGOEGDWJ141799","title": "Google Camp Mug Gray","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "13"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Cool gray"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDWJ141799.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Lifestyle/Google+Camp+Mug+Gray"} -{"id": "GGPRGCBA101299","name": "GGPRGCBA101299","title": "Google Cork Set","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20210405858/assets/items/images/GGPRGCBA101299.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Cork+Set"} -{"id": "GGOEGAED168115","name": "GGOEGAED168115","title": "Google Earth Day Eco Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1681.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Earth+Day+Eco+Tee"} -{"id": "GGOEGAEJ103917","name": "GGOEGAEJ103917","title": "Google F/C Longsleeve Ash","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1039.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+FC+Longsleeve+Ash"} -{"id": "GGOEGFSR022099","name": "GGOEGFSR022099","title": "Google Kick Ball","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "2"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGFSR022099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Lifestyle/Fun/Google+Kick+Ball.axd"} -{"id": "GGCOGCBA164499","name": "GGCOGCBA164499","title": "Google Knit Blanket","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "0"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGCBA164499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Lifestyle/Google+Knit+Blanket"} -{"id": "GGOEGAEJ146213","name": "GGOEGAEJ146213","title": "Google LA Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1462.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+LA+Campus+Zip+Hoodie"} -{"id": "GGOEGACH161518","name": "GGOEGACH161518","title": "Google Land Sea French Terry Sweatshirt","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1609.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Land+and+Sea+French+Terry+Sweatshirt+LS"} -{"id": "GGCOGCBA161199","name": "GGCOGCBA161199","title": "Google Land Sea Tech Taco","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGCBA161199.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Land+and+Sea+Tech+Taco"} -{"id": "GGOEGAED161615","name": "GGOEGAED161615","title": "Google Land Sea Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGXXX1569.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Land+and+Sea+Unisex+Tee+LS"} -{"id": "GGOEMAEB164113","name": "GGOEMAEB164113","title": "Google Maps Pin Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "21"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEMXXX1641.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Maps+Pin+Tee"} -{"id": "GGOEGADH138118","name": "GGOEGADH138118","title": "Google Men's Softshell Moss","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "39"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1381.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Mens+Softshell+Moss"} -{"id": "GGOEGDHJ147999","name": "GGOEGDHJ147999","title": "Google PNW Campus Bottle","brands": ["Google"],"categories": ["Drinkware"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "20"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGDHJ147999.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Drinkware/Google+PNW+Campus+Bottle"} -{"id": "GGOEGOAJ101399","name": "GGOEGOAJ101399","title": "Google Pen Grey","brands": ["Google"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "1.75"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGOAJ101399.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/Google+pen+grey"} -{"id": "GGPRGADC107915","name": "GGPRGADC107915","title": "Google Raincoat Navy","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "44"},"colorInfo": {"colorFamilies": ["Navy"],"colors": ["Navy"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1350.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Raincoat+Navy"} -{"id": "GGOEGAAH136915","name": "GGOEGAAH136915","title": "Google Split Seam Tee Olive","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "26"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1369.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Split+Seam+Tee+Olive"} -{"id": "GGCOGAEC153813","name": "GGCOGAEC153813","title": "Google TYCTWD Blue Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1538.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/TYCTWD/Google+TYCTWD+Blue+Tee"} -{"id": "GGOEGAEB110018","name": "GGOEGAEB110018","title": "Google Tee F/C Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Ebony"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1100.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Tee+FC+Black"} -{"id": "GGOEGAAB118914","name": "GGOEGAAB118914","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1189.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAAB118916","name": "GGOEGAAB118916","title": "Google Unisex Eco Tee Black","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Outer Space","Jet"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1189.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Unisex+Eco+Tee+Black"} -{"id": "GGOEGAEJ178314","name": "GGOEGAEJ178314","title": "Google Unisex Essential Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1783.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Unisex+Essential+Jacket"} -{"id": "GGOEGAPJ178416","name": "GGOEGAPJ178416","title": "Google Women's Essential Jacket","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1784.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Womens+Essential+Jacket"} -{"id": "GGOEGCBD165799","name": "GGOEGCBD165799","title": "Google Wooden Yo-Yo","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "3"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBD165799.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Wooden+Yo+Yo"} -{"id": "GGOEGAYJ136014","name": "GGOEGAYJ136014","title": "Google Youth Hero Tee Grey","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "24"},"colorInfo": {"colorFamilies": ["Gray"],"colors": ["Light gray","Silver"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1360.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Youth+Hero+Tee+Grey"} -{"id": "GGOEYAEB120713","name": "GGOEYAEB120713","title": "YouTube Standards Zip Hoodie Black","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX1207.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Standards+Zip+Hoodie+Black"} -{"id": "GGOEYAEB120715","name": "GGOEYAEB120715","title": "YouTube Standards Zip Hoodie Black","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"colorInfo": {"colorFamilies": ["Black"],"colors": ["Onyx","Outer Space","Jet"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEYXXX1207.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/YouTube+Standards+Zip+Hoodie+Black"} -{"id": "GGOEYALQ091914","name": "GGOEYALQ091914","title": "YouTube Women's Favorite Tee White","brands": ["YouTube"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"colorInfo": {"colorFamilies": ["White"],"colors": ["White"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX0919.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Youtube+Favorite+Tee+White"} -{"id": "GGOEGCKA151899","name": "GGOEGCKA151899","title": "Google 4in Decal","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "2"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCKA151899.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Stationery/Google+4in+Decal"} -{"id": "GGOEGAEQ162514","name": "GGOEGAEQ162514","title": "Google 5k Run 2020 Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "22"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1625.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/5k+run/Google+5K+Run+2020+Unisex+Tee"} -{"id": "GGOEGEBK094499","name": "GGOEGEBK094499","title": "Google Bot Natural","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "10"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGEBK094499.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Accessories/Google+Bot"} -{"id": "GGPRGCBA106399","name": "GGPRGCBA106399","title": "Google Campus Bike","brands": ["Google"],"categories": ["Accessories"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGCBA096099.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Google+Campus+Bike"} -{"id": "GGOEGAER141015","name": "GGOEGAER141015","title": "Google Chicago Campus Unisex Tee","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "25"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1410.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Unisex+Tee"} -{"id": "GGOEGAEC141218","name": "GGOEGAEC141218","title": "Google Chicago Campus Zip Hoodie","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "38"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1412.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Chicago+Campus+Zip+Hoodie"} -{"id": "GGOECAEB165414","name": "GGOECAEB165414","title": "Google Cloud Carhartt Crew Sweatshirt","brands": ["Google Cloud"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "30"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOECXXX1654.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Cloud+Unisex+Carhartt+Crew+Sweatshirt"} -{"id": "GGOEGAEJ178516","name": "GGOEGAEJ178516","title": "Google Cloud Packable Lightweight Jacket","brands": ["Google Cloud"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "32"},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/noimage.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Google+Cloud+Packable+Lightweight+Jacket"} -{"id": "GGOEGADH134212","name": "GGOEGADH134212","title": "Google Crewneck Sweatshirt Green","brands": ["Google"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "35"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "OUT_OF_STOCK","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEGXXX1342.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2021.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Merino"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Casual"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Crewneck+Sweatshirt+Green"} diff --git a/samples/interactive-tutorials/src/main/resources/products_some_invalid.json b/samples/interactive-tutorials/src/main/resources/products_some_invalid.json deleted file mode 100644 index f46dc761..00000000 --- a/samples/interactive-tutorials/src/main/resources/products_some_invalid.json +++ /dev/null @@ -1,3 +0,0 @@ -{"id": "GGCOGOAC101259","name": "GGCOGOAC101259","title": "#IamRemarkable Pen","brands": ["#IamRemarkable"],"categories": ["Office"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Blue"],"colors": ["Light blue","Blue","Dark blue"]},"availability": "INVALID_VALUE","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGCOGOAC101259.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Metal","Recycled Plastic"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Office/IamRemarkable+Pen"} -{"id": "GGPRAHPL107110","name": "GGPRAHPL107110","title": "Android Iconic Hat Green","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "16"},"colorInfo": {"colorFamilies": ["Green"],"colors": ["Olive","Grass green","Light green"]},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAHPL130910.jpg"}],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","uri": "https://shop.googlemerchandisestore.com/Google+Prize+Portal/Android+Iconic+Hat+Green"} -{"id": "GGOEAAKQ137410","name": "GGOEAAKQ137410","title": "Android Iconic Sock","brands": ["Android"],"categories": ["Apparel"],"priceInfo": {"cost": "12.0","currencyCode": "USD","originalPrice": "45.0","priceEffectiveTime": "2020-08-01T12:00:00+00:00","priceExpireTime": "2120-08-01T12:00:00+00:00","price": "17"},"availability": "IN_STOCK","availableQuantity": 50,"availableTime": "2021-10-11T12:00:00+00:00","images": [{"height": "300","width": "400","uri": "https://shop.googlemerchandisestore.com/store/20160512512/assets/items/images/GGOEAAKQ137410.jpg"}],"sizes": ["XS","S","M","L","XL"],"retrievableFields": "name,title,brands,categories,priceInfo,colorInfo,availability,images,attributes.material,attributes.ecofriendly,attributes.style,attributes.collection,uri","attributes":[ {"key":"collection", "value": {"indexable": "true","numbers": [2022.0]}},{"key":"material", "value": {"indexable": "true","searchable": "true","text": ["Polyester","Membrane"]}},{"key":"ecofriendly", "value": {"indexable": "false","searchable": "false","text": ["Low-impact fabrics","recycled fabrics","recycled packaging","plastic-free packaging","ethically made"]}},{"key":"style", "value": {"indexable": "true","searchable": "true","text": ["Sport","Functional"]}}],"uri": "https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Android+Iconic+Sock"} \ No newline at end of file diff --git a/samples/interactive-tutorials/src/main/resources/user_events.json b/samples/interactive-tutorials/src/main/resources/user_events.json deleted file mode 100644 index 56bd7c44..00000000 --- a/samples/interactive-tutorials/src/main/resources/user_events.json +++ /dev/null @@ -1,4 +0,0 @@ -{"eventType":"home-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","searchQuery":"RockerJeans teenagers blue jeans"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","searchQuery":"SocksUnlimited teenagers black socks"} -{"eventType":"detail-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","productDetails":{"product":{"id":"GGCOGAEC100616"},"quantity":3}} \ No newline at end of file diff --git a/samples/interactive-tutorials/src/main/resources/user_events_some_invalid.json b/samples/interactive-tutorials/src/main/resources/user_events_some_invalid.json deleted file mode 100644 index c98b1699..00000000 --- a/samples/interactive-tutorials/src/main/resources/user_events_some_invalid.json +++ /dev/null @@ -1,4 +0,0 @@ -{"eventType":"home-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00"} -{"eventType":"invalid","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","searchQuery":"RockerJeans teenagers blue jeans"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","searchQuery":"SocksUnlimited teenagers black socks"} -{"eventType":"detail-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2021-12-12T10:27:42+00:00","productDetails":{"product":{"id":"GGCOGAEC100616"},"quantity":3}} diff --git a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsBigQueryTest.java b/samples/interactive-tutorials/src/test/java/events/ImportUserEventsBigQueryTest.java deleted file mode 100644 index a7f9a7a6..00000000 --- a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsBigQueryTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertThrows; - -import com.google.api.gax.rpc.InvalidArgumentException; -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class ImportUserEventsBigQueryTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - } - - @Test - public void testValidImportUserEventsBigQuery() throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String datasetId = "user_events"; - String tableId = "events"; - - ImportUserEventsBigQuery.importUserEventsFromBigQuery( - projectId, defaultCatalog, datasetId, tableId); - - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import user events from BigQuery source request"); - assertThat(outputResult).contains("table_id: \"events\""); - assertThat(outputResult).contains("Number of successfully imported events:"); - assertThat(outputResult).contains("Number of failures during the importing: 0"); - } - - @Test - public void testInvalidImportUserEventsBigQuery() throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/invalid_catalog_name", projectId); - String datasetId = "user_events"; - String tableId = "events_some_invalid"; - - ImportUserEventsBigQuery.importUserEventsFromBigQuery( - projectId, defaultCatalog, datasetId, tableId); - - String outputResult = bout.toString(); - - assertThat(outputResult).contains("table_id: \"events_some_invalid\""); - assertThat(outputResult).contains("Catalog name is not found."); - } - - @Test - public void testInvalidDefaultCatalogBigQuery() { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = "invalid_catalog_name"; - String datasetId = "user_events"; - String tableId = "events"; - - assertThrows( - InvalidArgumentException.class, - () -> - ImportUserEventsBigQuery.importUserEventsFromBigQuery( - projectId, defaultCatalog, datasetId, tableId)); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsGcsTest.java b/samples/interactive-tutorials/src/test/java/events/ImportUserEventsGcsTest.java deleted file mode 100644 index 8ee3488f..00000000 --- a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsGcsTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; -import static events.ImportUserEventsGcs.importUserEventsFromGcs; - -import com.google.cloud.ServiceOptions; -import events.setup.EventsCreateGcsBucket; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class ImportUserEventsGcsTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException { - EventsCreateGcsBucket.main(); - - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String bucketName = EventsCreateGcsBucket.getBucketName(); - String gcsEventsObject = "user_events.json"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - importUserEventsFromGcs(defaultCatalog, bucketName, gcsEventsObject); - } - - @Test - public void testValidImportUserEventsGcs() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import user events from google cloud source request"); - assertThat(outputResult).contains("Number of successfully imported events:"); - assertThat(outputResult).contains("Number of failures during the importing: 0"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsInlineTest.java b/samples/interactive-tutorials/src/test/java/events/ImportUserEventsInlineTest.java deleted file mode 100644 index f182a5ad..00000000 --- a/samples/interactive-tutorials/src/test/java/events/ImportUserEventsInlineTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class ImportUserEventsInlineTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, ExecutionException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - ImportUserEventsInline.importUserEventsFromInlineSource(defaultCatalog); - } - - @Test - public void testImportUserEventsInline() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import user events from inline source request"); - assertThat(outputResult).contains("The operation was started"); - assertThat(outputResult).contains("Number of successfully imported events"); - assertThat(outputResult).contains("Number of failures during the importing"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/events/PurgeUserEventTest.java b/samples/interactive-tutorials/src/test/java/events/PurgeUserEventTest.java deleted file mode 100644 index 13e68970..00000000 --- a/samples/interactive-tutorials/src/test/java/events/PurgeUserEventTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class PurgeUserEventTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String visitorId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - PurgeUserEvent.callPurgeUserEvents(defaultCatalog, visitorId); - } - - @Test - public void testPurgeUserEvent() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("The user event is written"); - assertThat(outputResult).contains("Purge user events request"); - assertThat(outputResult).contains("The purge operation was started"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/events/RejoinUserEventTest.java b/samples/interactive-tutorials/src/test/java/events/RejoinUserEventTest.java deleted file mode 100644 index 446ab2d9..00000000 --- a/samples/interactive-tutorials/src/test/java/events/RejoinUserEventTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class RejoinUserEventTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String visitorId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - RejoinUserEvent.callRejoinUserEvents(defaultCatalog, visitorId); - } - - @Test - public void testPurgeUserEvent() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("The user event is written"); - assertThat(outputResult).contains("Rejoin user events request"); - assertThat(outputResult).contains("The rejoin operation was started"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/events/WriteUserEventTest.java b/samples/interactive-tutorials/src/test/java/events/WriteUserEventTest.java deleted file mode 100644 index 46f5a652..00000000 --- a/samples/interactive-tutorials/src/test/java/events/WriteUserEventTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package events; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class WriteUserEventTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalog = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String visitorId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - WriteUserEvent.writeUserEvent(defaultCatalog, visitorId); - } - - @Test - public void testPurgeUserEvent() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Write user event request"); - assertThat(outputResult).contains("Written user event"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/AddFulfillmentPlacesTest.java b/samples/interactive-tutorials/src/test/java/product/AddFulfillmentPlacesTest.java deleted file mode 100644 index c80d7d65..00000000 --- a/samples/interactive-tutorials/src/test/java/product/AddFulfillmentPlacesTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.AddFulfillmentPlaces.addFulfillmentPlaces; -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class AddFulfillmentPlacesTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - // TODO(developer): Replace these variables before running the sample. - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - createProduct(generatedProductId); - addFulfillmentPlaces(productName, "store2"); - getProduct(productName); - deleteProduct(productName); - } - - @Test - public void testAddFulfillment() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Add fulfilment places"); - assertThat(outputResult).contains("Waiting for operation to finish..."); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/CreateProductTest.java b/samples/interactive-tutorials/src/test/java/product/CreateProductTest.java deleted file mode 100644 index ebadae2a..00000000 --- a/samples/interactive-tutorials/src/test/java/product/CreateProductTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.CreateProduct.createProduct; -import static setup.SetupCleanup.deleteProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.Product; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class CreateProductTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String generatedProductId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - Product createdProduct = createProduct(generatedProductId, branchName); - deleteProduct(createdProduct.getName()); - } - - @Test - public void testCreateProduct() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Create product request"); - assertThat(outputResult).contains("Created product"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/CrudProductTest.java b/samples/interactive-tutorials/src/test/java/product/CrudProductTest.java deleted file mode 100644 index 40e0c3bb..00000000 --- a/samples/interactive-tutorials/src/test/java/product/CrudProductTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.CreateProduct.createProduct; -import static product.CrudProduct.deleteProduct; -import static product.CrudProduct.getProduct; -import static product.CrudProduct.updateProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.Product; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class CrudProductTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String productName = String.format("%s/products/%s", branchName, generatedProductId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - Product createdProduct = createProduct(generatedProductId, branchName); - getProduct(productName); - updateProduct(createdProduct, productName); - deleteProduct(productName); - } - - @Test - public void testCrudProduct() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Create product request"); - assertThat(outputResult).contains("Created product"); - assertThat(outputResult).contains("Get product response"); - assertThat(outputResult).contains("Update product request"); - assertThat(outputResult).contains("Updated product"); - assertThat(outputResult).contains("Delete product request name"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/DeleteProductTest.java b/samples/interactive-tutorials/src/test/java/product/DeleteProductTest.java deleted file mode 100644 index e4c0d4ab..00000000 --- a/samples/interactive-tutorials/src/test/java/product/DeleteProductTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.DeleteProduct.deleteProduct; -import static setup.SetupCleanup.createProduct; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class DeleteProductTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String generatedProductId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - String createdProductName = createProduct(generatedProductId).getName(); - deleteProduct(createdProductName); - } - - @Test - public void testDeleteProduct() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Delete product request"); - assertThat(outputResult).contains("was deleted"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/GetProductTest.java b/samples/interactive-tutorials/src/test/java/product/GetProductTest.java deleted file mode 100644 index 6961ae68..00000000 --- a/samples/interactive-tutorials/src/test/java/product/GetProductTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.CrudProduct.getProduct; -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; - -import com.google.cloud.retail.v2.Product; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class GetProductTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String generatedProductId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - Product createdProduct = createProduct(generatedProductId); - Product product = getProduct(createdProduct.getName()); - deleteProduct(product.getName()); - } - - @Test - public void testGetProduct() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Create product request"); - assertThat(outputResult).contains("Created product"); - assertThat(outputResult).contains("Get product response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/ImportProductsBigQueryTableTest.java b/samples/interactive-tutorials/src/test/java/product/ImportProductsBigQueryTableTest.java deleted file mode 100644 index fce668a3..00000000 --- a/samples/interactive-tutorials/src/test/java/product/ImportProductsBigQueryTableTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.ImportProductsBigQueryTable.importProductsFromBigQuery; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class ImportProductsBigQueryTableTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - } - - @Test - public void testValidImportProductsBigQueryTable() throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String datasetId = "products"; - String tableId = "products"; - - importProductsFromBigQuery(projectId, branchName, datasetId, tableId); - - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import products from big query table request"); - assertThat(outputResult).contains("Number of successfully imported products:"); - assertThat(outputResult).contains("Number of failures during the importing: 0"); - } - - @Test - public void testInvalidImportProductsBigQueryTable() throws IOException, InterruptedException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String datasetId = "products"; - String tableId = "products_some_invalid"; - - importProductsFromBigQuery(projectId, branchName, datasetId, tableId); - - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import products from big query table request"); - assertThat(outputResult).contains("Number of successfully imported products:"); - assertThat(outputResult).contains("Number of failures during the importing:"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/ImportProductsGcsTest.java b/samples/interactive-tutorials/src/test/java/product/ImportProductsGcsTest.java deleted file mode 100644 index 22594f6b..00000000 --- a/samples/interactive-tutorials/src/test/java/product/ImportProductsGcsTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.ImportProductsGcs.importProductsFromGcs; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import product.setup.ProductsCreateGcsBucket; - -@RunWith(JUnit4.class) -public class ImportProductsGcsTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - ProductsCreateGcsBucket.main(); - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String bucketName = ProductsCreateGcsBucket.getBucketName(); - String gcsBucket = String.format("gs://%s", bucketName); - String gscProductsObject = "products.json"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - importProductsFromGcs(branchName, gcsBucket, gscProductsObject); - } - - @Test - public void testValidImportProductsGcs() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import products from google cloud source request"); - assertThat(outputResult).contains("Number of successfully imported products:"); - assertThat(outputResult).contains("Number of failures during the importing: 0"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/ImportProductsInlineSourceTest.java b/samples/interactive-tutorials/src/test/java/product/ImportProductsInlineSourceTest.java deleted file mode 100644 index b5a424dc..00000000 --- a/samples/interactive-tutorials/src/test/java/product/ImportProductsInlineSourceTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.ImportProductsInlineSource.importProductsInlineSource; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class ImportProductsInlineSourceTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - importProductsInlineSource(branchName); - } - - @Test - public void testImportProductsInlineSource() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Import products from inline source request"); - assertThat(outputResult).contains("Number of successfully imported products"); - assertThat(outputResult).contains("Number of failures during the importing"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/RemoveFulfillmentPlacesTest.java b/samples/interactive-tutorials/src/test/java/product/RemoveFulfillmentPlacesTest.java deleted file mode 100644 index fd4d041e..00000000 --- a/samples/interactive-tutorials/src/test/java/product/RemoveFulfillmentPlacesTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.RemoveFulfillmentPlaces.removeFulfillmentPlaces; -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class RemoveFulfillmentPlacesTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - createProduct(generatedProductId); - removeFulfillmentPlaces(productName, "store0"); - getProduct(productName); - deleteProduct(productName); - } - - @Test - public void testRemoveFulfillmentPlaces() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Remove fulfilment places with current date"); - assertThat(outputResult).contains("Waiting for operation to finish..."); - assertThat(outputResult).contains("Delete product request name"); - assertThat(outputResult).contains("was deleted"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/SetInventoryTest.java b/samples/interactive-tutorials/src/test/java/product/SetInventoryTest.java deleted file mode 100644 index 12d0f716..00000000 --- a/samples/interactive-tutorials/src/test/java/product/SetInventoryTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.SetInventory.setInventory; -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; -import static setup.SetupCleanup.getProduct; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SetInventoryTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String generatedProductId = UUID.randomUUID().toString(); - String productName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0/products/%s", - projectId, generatedProductId); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - createProduct(generatedProductId); - setInventory(productName); - getProduct(productName); - deleteProduct(productName); - } - - @Test - public void testSetInventoryTest() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Set inventory request"); - assertThat(outputResult).contains("Waiting for operation to finish..."); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/product/UpdateProductTest.java b/samples/interactive-tutorials/src/test/java/product/UpdateProductTest.java deleted file mode 100644 index 78756acf..00000000 --- a/samples/interactive-tutorials/src/test/java/product/UpdateProductTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package product; - -import static com.google.common.truth.Truth.assertThat; -import static product.UpdateProduct.updateProduct; -import static setup.SetupCleanup.createProduct; -import static setup.SetupCleanup.deleteProduct; - -import com.google.cloud.ServiceOptions; -import com.google.cloud.retail.v2.Product; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class UpdateProductTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String branchName = - String.format( - "projects/%s/locations/global/catalogs/default_catalog/branches/0", projectId); - String generatedProductId = UUID.randomUUID().toString(); - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - Product createdProduct = createProduct(generatedProductId); - updateProduct(createdProduct, branchName); - deleteProduct(createdProduct.getName()); - } - - @Test - public void testUpdateProduct() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Update product request"); - assertThat(outputResult).contains("Updated product"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/resources/user_events.json b/samples/interactive-tutorials/src/test/java/resources/user_events.json deleted file mode 100644 index 76d7c0df..00000000 --- a/samples/interactive-tutorials/src/test/java/resources/user_events.json +++ /dev/null @@ -1,4 +0,0 @@ -{"eventType":"home-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","searchQuery":"RockerJeans teenagers blue jeans"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","searchQuery":"SocksUnlimited teenagers black socks"} -{"eventType":"detail-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","productDetails":{"product":{"id":"GGCOGAEC100616"},"quantity":3}} \ No newline at end of file diff --git a/samples/interactive-tutorials/src/test/java/resources/user_events_some_invalid.json b/samples/interactive-tutorials/src/test/java/resources/user_events_some_invalid.json deleted file mode 100644 index 27e00a0c..00000000 --- a/samples/interactive-tutorials/src/test/java/resources/user_events_some_invalid.json +++ /dev/null @@ -1,4 +0,0 @@ -{"eventType":"home-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00"} -{"eventType":"invalid","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","searchQuery":"RockerJeans teenagers blue jeans"} -{"eventType":"search","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","searchQuery":"SocksUnlimited teenagers black socks"} -{"eventType":"detail-page-view","visitorId":"bjbs_group1_visitor1","eventTime":"2022-04-13T10:27:42+00:00","productDetails":{"product":{"id":"GGCOGAEC100616"},"quantity":3}} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchSimpleQueryTest.java b/samples/interactive-tutorials/src/test/java/search/SearchSimpleQueryTest.java deleted file mode 100644 index a5e8f118..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchSimpleQueryTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchSimpleQuery.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchSimpleQueryTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithBoostSpecTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithBoostSpecTest.java deleted file mode 100644 index aa93dd83..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithBoostSpecTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithBoostSpec.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithBoostSpecTest { - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithFacetSpecTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithFacetSpecTest.java deleted file mode 100644 index 9b7a8c4d..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithFacetSpecTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithFacetSpec.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithFacetSpecTest { - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithFilteringTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithFilteringTest.java deleted file mode 100644 index 25550258..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithFilteringTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithFiltering.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithFilteringTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithOrderingTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithOrderingTest.java deleted file mode 100644 index 7a597745..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithOrderingTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithOrdering.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithOrderingTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithPaginationTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithPaginationTest.java deleted file mode 100644 index 1c9de653..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithPaginationTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithPagination.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithPaginationTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/src/test/java/search/SearchWithQueryExpansionSpecTest.java b/samples/interactive-tutorials/src/test/java/search/SearchWithQueryExpansionSpecTest.java deleted file mode 100644 index 492ca775..00000000 --- a/samples/interactive-tutorials/src/test/java/search/SearchWithQueryExpansionSpecTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package search; - -import static com.google.common.truth.Truth.assertThat; -import static search.SearchWithQueryExpansionSpec.searchResponse; - -import com.google.cloud.ServiceOptions; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.ExecutionException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class SearchWithQueryExpansionSpecTest { - - private ByteArrayOutputStream bout; - private PrintStream originalPrintStream; - - @Before - public void setUp() throws IOException, InterruptedException, ExecutionException { - String projectId = ServiceOptions.getDefaultProjectId(); - String defaultCatalogName = - String.format("projects/%s/locations/global/catalogs/default_catalog", projectId); - String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search"; - bout = new ByteArrayOutputStream(); - PrintStream out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - - searchResponse(defaultSearchPlacementName); - } - - @Test - public void testOutput() { - String outputResult = bout.toString(); - - assertThat(outputResult).contains("Search request"); - assertThat(outputResult).contains("Search response"); - } - - @After - public void tearDown() { - System.out.flush(); - System.setOut(originalPrintStream); - } -} diff --git a/samples/interactive-tutorials/user_environment_setup.sh b/samples/interactive-tutorials/user_environment_setup.sh deleted file mode 100644 index f2ba633d..00000000 --- a/samples/interactive-tutorials/user_environment_setup.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -# Copyright 2022 Google Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -failure() { - echo "=========================================" - echo "The Google Cloud setup was not completed." - echo "Please fix the errors above!" - echo "=========================================" - exit 0 -} - -# catch any error that happened during execution -trap 'failure' ERR - -# set the Google Cloud Project ID - -project_id=$1 -echo "Project ID: $project_id" -gcloud config set project "$project_id" - -email=$(gcloud auth list --filter="status:ACTIVE account:$project_id.iam.gserviceaccount.com" --format="value(account)") -echo $email - -# Check if user has service account active -if [ -z "$email" ] -then - # Create a new service account - timestamp=$(date +%s) - - service_account_id="service-acc-$timestamp" - echo "Service Account: $service_account_id" - - # create service account (your service-acc-$timestamp) - gcloud iam service-accounts create "$service_account_id" -else - service_account_id="${email%@*}" - # Log out of service account - gcloud auth revoke 2>/dev/null -fi -echo "$service_account_id" - -editor=$(gcloud projects get-iam-policy $project_id \ ---flatten="bindings[].members" \ ---format='table(bindings.role)' \ ---filter="bindings.members:$service_account_id ROLE=roles/editor") - -retail_admin=$(gcloud projects get-iam-policy $project_id \ ---flatten="bindings[].members" \ ---format='table(bindings.role)' \ ---filter="bindings.members:$service_account_id ROLE=roles/retail.admin") - - -# assign necessary roles to your new service account -# Check if any of the needed roles is missing -if [ -z "$editor" ] || [ -z "$retail_admin" ] -then - # Assign necessary roles to your new service account. - for role in {retail.admin,editor} - do - gcloud projects add-iam-policy-binding "$project_id" --member="serviceAccount:$service_account_id@$project_id.iam.gserviceaccount.com" --role=roles/"${role}" - done - echo "Wait ~60 seconds to be sure the appropriate roles have been assigned to your service account" - sleep 60 -fi - -# upload your service account key file -service_acc_email="$service_account_id@$project_id.iam.gserviceaccount.com" -gcloud iam service-accounts keys create ~/key.json --iam-account "$service_acc_email" - -# activate the service account using the key -gcloud auth activate-service-account --key-file ~/key.json - - -# install needed Google client libraries -cd ~/cloudshell_open/java-retail/samples/interactive-tutorials || exit -mvn clean install -DskipTests - - -# Print success message -echo "========================================" -echo "The Google Cloud setup is completed." -echo "Please proceed with the Tutorial steps" -echo "========================================" diff --git a/samples/interactive-tutorials/user_import_data_to_catalog.sh b/samples/interactive-tutorials/user_import_data_to_catalog.sh deleted file mode 100644 index 57d86329..00000000 --- a/samples/interactive-tutorials/user_import_data_to_catalog.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -# Copyright 2022 Google Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -{ - # set the key as GOOGLE_APPLICATION_CREDENTIALS - export GOOGLE_APPLICATION_CREDENTIALS=~/key.json - - # Change the working directory - cd ~/cloudshell_open/java-retail/samples/interactive-tutorials/ || exit - - # Run the sample for creating the GCS bucket and extract the output of that execution - output=$(mvn compile exec:java -Dexec.mainClass="product.setup.ProductsCreateGcsBucket") - - # Get the bucket name and store it in the env variable BUCKET_NAME - temp="${output#*gcs bucket }" - bucket_name="${temp% was created*}" - export BUCKET_NAME=$bucket_name - - # Import products to the Retail catalog - mvn compile exec:java -Dexec.mainClass="product.ImportProductsGcs" - -} && { - - # Print success message - echo "=====================================" - echo "Your Retail catalog is ready to use!" - echo "=====================================" - - } || { - - # Print error message - echo "=====================================" - echo "Your Retail catalog wasn't created! Please fix the errors above!" - echo "=====================================" - - } diff --git a/samples/pom.xml b/samples/pom.xml index a45e5bad..baabc22c 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -31,7 +31,6 @@ install-without-bom snapshot snippets - interactive-tutorials