Regiões

O serviço regions permite criar e gerenciar regiões geográficas que podem ser usadas como destinos com os serviços regionalinventory e shippingsettings. É possível definir regiões como coleções de CEPs ou, em alguns países, usando geotargets predefinidos. Este guia mostra exemplos de como definir cada tipo de região e como criar uma substituição de preço regional. Para mais informações sobre o serviço regions, incluindo todos os métodos e parâmetros disponíveis, consulte a documentação de referência.

Qualificação da região

Ao criar uma região, o serviço de regiões determina se você pode usar a região com outros serviços da API Content. O objeto de resposta retornado para uma chamada regions.create bem-sucedida inclui dois campos booleanos, regionalInventoryEligible e shippingEligible, que indicam se você pode usar a região com os serviços regionalinventory e shippingsettings, respectivamente.

regionalInventoryEligible

Para ser qualificada para uso com o serviço regionalinventory, uma região precisa atender aos seguintes critérios:

  • O regionId, que você especifica ao criar uma região, precisa conter apenas dígitos e ter pelo menos seis dígitos.
  • A região precisa atender aos requisitos mínimos de tamanho para área geográfica e população on-line.

shippingEligible

Para ser qualificada para uso com o serviço shippingsettings, uma região precisa atender aos seguintes critérios:

  • A região precisa ser definida usando códigos postais.
  • A região precisa fazer parte de um país compatível com o serviço shippingsettings.

Amostras

Confira um exemplo de código completo que você pode usar para criar uma nova região em 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.content.v2_1.samples.regions;

import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.services.content.model.Region;
import com.google.api.services.content.model.RegionPostalCodeArea;
import com.google.api.services.content.model.RegionPostalCodeAreaPostalCodeRange;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import shopping.content.v2_1.samples.ContentSample;

/**
 * Creates a region. The region created here can be used with the regional inventory service.
 * Regional availability and pricing lets you provide product availability and variable pricing
 * based on your business presence and the location of your customer base. Regional availability and
 * pricing is available for products advertised through Shopping ads on Google Search, and listed in
 * free listings on the Shopping tab.
 */
public class RegionCreateSample extends ContentSample {
  public RegionCreateSample(String[] args) throws IOException {
    super(args);
  }

  @Override
  public void execute() throws IOException {
    checkNonMCA();

    // Creates a List of Postal Code Area Postal Code Ranges.
    // This allows you to flexibly define regions as combinations of postal code
    // ranges. Each postal code range in the list has its own start and end zip code.
    List<RegionPostalCodeAreaPostalCodeRange> postalCodeRanges =
        new ArrayList<RegionPostalCodeAreaPostalCodeRange>();

    // Creates a new postal code range from two postal code values.
    // This range is equivalent to all postal codes in the USA state of New York (00501 - 14925)
    RegionPostalCodeAreaPostalCodeRange postalCodeRange =
        new RegionPostalCodeAreaPostalCodeRange().setBegin("00501").setEnd("14925");

    // Adds the NY State postal code range into the list of postal code ranges that a postal
    // code area accepts.
    postalCodeRanges.add(postalCodeRange);

    // Creates Postal Code Area for the Region that will be inserted, using the NY State postal code
    // ranges, and the US CLDR territory/country code that the postal code ranges applies to.
    RegionPostalCodeArea postalCodeArea =
        new RegionPostalCodeArea().setPostalCodes(postalCodeRanges).setRegionCode("US");

    // Creates a region with example values for displayName and postalCodeArea
    Region region = new Region().setDisplayName("NYState").setPostalCodeArea(postalCodeArea);

    // Tries to create the region, and catches any exceptions
    try {
      System.out.println("Creating region");
      Region result =
          content
              .regions()
              .create(this.config.getMerchantId().longValue(), region)
              .setRegionId("12345678") // User-defined, numeric, minimum of 6 digits
              .execute();
      System.out.println("Listing succesfully created region");
      System.out.println(result);
    } catch (GoogleJsonResponseException e) {
      checkGoogleJsonResponseException(e);
    }
  }

  public static void main(String[] args) throws IOException {
    new RegionCreateSample(args).execute();
  }
}

Criar uma região usando códigos postais

Você pode usar o método regions.create para criar uma região definida como um conjunto de códigos postais. O exemplo abaixo cria uma nova região para o estado americano do Arizona especificando um intervalo de CEPs.

Para criar a região, faça uma solicitação POST com o seguinte URL e corpo da solicitação:

https://shoppingcontent.googleapis.com/content/v2.1/merchantId/regions?regionId=456789
{
  postalCodeArea: {
    regionCode: "US",
    postalCodes: [
      {
        begin: "850*",
        end: "860*"
      }
    ]
   }
}

Há um limite absoluto de 2 MB de dados para regions e shippingsettings por conta do Merchant Center. As configurações de frete e região são copiadas internamente de uma MCA para todas as subcontas. Por isso, em MCAs maiores, você pode atingir o limite de armazenamento rapidamente. Nesse caso, uma solução alternativa é gerenciar regions e shippingsettings no nível do ID do comerciante. Não é possível aumentar a cota de regiões além do limite de 2 MB.

Criar uma região usando a segmentação geográfica

Para regiões no Brasil e na Rússia, também é possível usar o método regions.create para criar uma região definida como uma coleção de geotargets, que são áreas geográficas predefinidas. Exemplos de tipos de segmentação geográfica incluem países, estados, cidades, bairros e aeroportos. No entanto, o serviço regions atualmente só oferece suporte ao tipo "Estado" para o Brasil e "Região" para a Rússia. Para baixar um arquivo CSV com todos os IDs de segmentação geográfica, incluindo os que podem ser usados com o serviço regions, consulte Segmentações geográficas. O exemplo abaixo cria uma região com os IDs de segmentação geográfica de três estados brasileiros.

Para criar a região, faça uma solicitação POST usando o seguinte URL e corpo da solicitação:

https://shoppingcontent.googleapis.com/content/v2.1/merchantId/regions?regionId=123456
{
  geoTargetAreas: {
    geotargetCriteriaId: [20106, 20102, 20101] //Sao Paulo, Rio de Janeiro, Parana
  }
}

Usar regiões para criar substituições de preço regionais

Ao criar uma região, o serviço regions retorna um objeto de resposta que inclui um regionId e dois campos de status de qualificação. Se o valor de regionalInventoryEligible for true, use o serviço regionaliventory para criar uma substituição que defina um preço diferente para a região. O exemplo abaixo cria uma substituição regional de preço usando a região baseada em código postal criada no exemplo acima, que tem um regionId de "456789".

Para criar a substituição, faça uma solicitação POST usando o seguinte URL e corpo da solicitação:

https://shoppingcontent.googleapis.com/content/v2.1/merchantId/products/{productId}/regionalinventory
{
  “regionId”: "456789"
  “price”: {
    value: 10
    currency: “USD”
  },
  “availability”: “in stock”
}