Merchant API code sample to list regional inventories.

### Java

    // Copyright 2023 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
    //
    //     https://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 shopping.merchant.samples.inventories.v1;
    import com.google.api.gax.core.FixedCredentialsProvider;
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.shopping.merchant.inventories.v1.ListRegionalInventoriesRequest;
    import com.google.shopping.merchant.inventories.v1.RegionalInventory;
    import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
    import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient.ListRegionalInventoriesPagedResponse;
    import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
    import shopping.merchant.samples.utils.Authenticator;
    import shopping.merchant.samples.utils.Config;

    /** This class demonstrates how to list all the regional inventories on a given product */
    public class ListRegionalInventoriesSample {

      private static String getParent(String accountId, String productId) {
        return String.format("accounts/%s/products/%s", accountId, productId);
      }

      public static void listRegionalInventories(Config config, String productId) throws Exception {
        GoogleCredentials credential = new Authenticator().authenticate();

        RegionalInventoryServiceSettings regionalInventoryServiceSettings =
            RegionalInventoryServiceSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credential))
                .build();

        String parent = getParent(config.getAccountId().toString(), productId);

        try (RegionalInventoryServiceClient regionalInventoryServiceClient =
            RegionalInventoryServiceClient.create(regionalInventoryServiceSettings)) {

          //  The parent product has the format: accounts/{account}/products/{product}
          ListRegionalInventoriesRequest request =
              ListRegionalInventoriesRequest.newBuilder().setParent(parent).build();

          System.out.println("Sending list regional inventory request:");
          ListRegionalInventoriesPagedResponse response =
              regionalInventoryServiceClient.listRegionalInventories(request);

          int count = 0;

          // Iterates over all rows in all pages and prints the regional inventory
          // in each row.
          for (RegionalInventory element : response.iterateAll()) {
            System.out.println(element);
            count++;
          }
          System.out.print("The following count of elements were returned: ");
          System.out.println(count);
        } catch (Exception e) {
          System.out.println(e);
        }
      }

      public static void main(String[] args) throws Exception {
        Config config = Config.load();
        // An ID assigned to a product by Google. In the format
        // contentLanguage~feedLabel~offerId
        String productId = "en~label~1111111111";
        listRegionalInventories(config, productId);
      }
    }

### PHP

    <?php

    /**
     * Copyright 2023 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
     *
     *     https://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.
     */

    require_once __DIR__ . '/../../../vendor/autoload.php';
    require_once __DIR__ . '/../../Authentication/Authentication.php';
    use Google\ApiCore\ApiException;
    use Google\ApiCore\PagedListResponse;
    use Google\Shopping\Merchant\Inventories\V1\RegionalInventory;
    use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
    use Google\Shopping\Merchant\Inventories\V1\ListRegionalInventoriesRequest;

    /**
     * Class to list the `RegionalInventory` resources for the given product in your
     * merchant account. The response might contain fewer items than specified by
     * `pageSize`. If `pageToken` was returned in previous request, it can be
     * used to obtain additional results.
     *
     * `RegionalInventory` resources are listed per product for a given account.
     */

    class ListRegionalInventories
    {

        // ENSURE you fill in the merchant account and product ID for the sample to
        // work.
        private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';

        /**
         * Lists all the regional inventories of a given product.
         *
         * @param string $parent The `name` of the parent product to list `RegionalInventory`
         *     resources for.
         *     Format: `accounts/{account}/products/{product}`
         */
        function listRegionalInventoriesSample(string $parent): void
        {
            // Gets the OAuth credentials to make the request.
            $credentials = Authentication::useServiceAccountOrTokenFile();

            // Creates options config containing credentials for the client to use.
            $options = ['credentials' => $credentials];

            // Creates a client.
            $regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);

            // Prepare the request message.
            $request = (new ListRegionalInventoriesRequest())
                ->setParent($parent);

            // Calls the API and catches and prints any network failures/errors.
            try {
                // Page size is set to the default value. If you are returned more
                // responses than your page size, this code will automatically
                // re-call the service with the `pageToken` until all responses
                // are returned.
                $parameters = ['pageSize' => 25000];

                /** @var PagedListResponse $response */
                $response =
                    $regionalInventoryServiceClient->listRegionalInventories($request, $parameters);

                /** @var RegionalInventory $element */
                foreach ($response as $element) {
                    printf('RegionalInventory data: %s%s', $element->serializeToJsonString(), PHP_EOL);
                }
            } catch (ApiException $ex) {
                printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
            }
        }

        // Helper to execute the sample.
        function callSample(): void
        {
            // Lists all the regional inventories of the parent product.
            $this->listRegionalInventoriesSample($this::PARENT);
        }
    }


    $sample = new ListRegionalInventories();
    $sample->callSample();

### Python

    # -*- coding: utf-8 -*-
    # Copyright 2023 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.
    """A module to list Regional Inventories."""

    from examples.authentication import configuration
    from examples.authentication import generate_user_credentials
    from google.shopping import merchant_inventories_v1

    # ENSURE you fill in the product ID for the sample to
    # work.
    _ACCOUNT = configuration.Configuration().read_merchant_info()
    _PRODUCT = "[INSERT_PRODUCT_HERE]"
    _PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"


    def list_regional_inventories():
      """Lists the `RegionalInventory` resources for the given product.

      The response might contain fewer items than specified by
      `pageSize`. If `pageToken` was returned in previous request, it can be
      used to obtain additional results.

      `RegionalInventory` resources are listed per product for a given account.
      """

      # Gets OAuth Credentials.
      credentials = generate_user_credentials.main()

      # Creates a client.
      client = merchant_inventories_v1.RegionalInventoryServiceClient(
          credentials=credentials)

      # Creates the request.
      # Page size is set to the default value.
      request = merchant_inventories_v1.ListRegionalInventoriesRequest(
          parent=_PARENT,
          page_size=25000
      )

      try:
        # Makes the request and catch and print any error messages.
        # If you are returned more responses than your page size, this code
        # will automatically re-call the service with the `pageToken` until all
        # responses are returned.
        page_result = client.list_regional_inventories(request=request)

        # Print the response.
        for response in page_result:
          print(response)

      except RuntimeError as e:
        print("List failed")
        print(e)


    if __name__ == "__main__":
      list_regional_inventories()