Compatibilità dell'API Content for Shopping

Puoi utilizzare questa guida per integrare l'API Merchant con la tua implementazione esistente dell'API Content for Shopping.

Inizia

Consulta la sezione Design dell'API Merchant per informazioni dettagliate sull'API Merchant e sulle relative API secondarie.

Per iniziare a utilizzare l'API Merchant, modifica gli URL delle richieste nel seguente formato:

https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}

Per ulteriori informazioni, consulta la guida rapida e il riferimento dell'API Merchant.

Supporto gRPC

L'API Merchant supporta gRPC e REST. Puoi utilizzare contemporaneamente gRPC per l'API Merchant e REST per l'API Content for Shopping.

Le librerie client dell'API Merchant richiedono gRPC.

Per ulteriori informazioni, consulta la sezione Utilizzare gRPC.

Compatibilità

Questa guida descrive le modifiche generali che si applicano all'intera API Merchant. Consulta le seguenti guide per le modifiche a funzionalità specifiche:

L'API Merchant è progettata per funzionare insieme alle funzionalità esistenti della versione 2.1 dell'API Content for Shopping.

Ad esempio, puoi utilizzare l'API Merchant Inventories insieme alla tua implementazione esistente dell'API Content for Shopping v2.1 products. Puoi utilizzare l'API Content for Shopping per caricare un nuovo prodotto locale (che vendi in un negozio locale) e poi utilizzare la risorsa API Merchant Inventories LocalInventory per gestire le informazioni in negozio per quel prodotto.

Richieste batch

L'API Merchant non supporta il metodo customBatch presente nell'API Content for Shopping. Leggi invece la sezione Inviare più richieste contemporaneamente o esegui le chiamate in modo asincrono.

Il seguente esempio mostra come inserire un input relativo al prodotto.

Java

  public static void asyncInsertProductInput(Config config, String dataSource) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    ProductInputsServiceSettings productInputsServiceSettings =
        ProductInputsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates parent to identify where to insert the product.
    String parent = getParent(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (ProductInputsServiceClient productInputsServiceClient =
        ProductInputsServiceClient.create(productInputsServiceSettings)) {

      // Creates five insert product input requests with random product IDs.
      List<InsertProductInputRequest> requests = new ArrayList<>(5);
      for (int i = 0; i < 5; i++) {
        InsertProductInputRequest request =
            InsertProductInputRequest.newBuilder()
                .setParent(parent)
                // You can only insert products into datasource types of Input "API" and "FILE", and
                // of Type "Primary" or "Supplemental."
                // This field takes the `name` field of the datasource.
                .setDataSource(dataSource)
                // If this product is already owned by another datasource, when re-inserting, the
                // new datasource will take ownership of the product.
                .setProductInput(createRandomProduct())
                .build();

        requests.add(request);
      }

      System.out.println("Sending insert product input requests");
      List<ApiFuture<ProductInput>> futures =
          requests.stream()
              .map(
                  request ->
                      productInputsServiceClient.insertProductInputCallable().futureCall(request))
              .collect(Collectors.toList());

      // Creates callback to handle the responses when all are ready.
      ApiFuture<List<ProductInput>> responses = ApiFutures.allAsList(futures);
      ApiFutures.addCallback(
          responses,
          new ApiFutureCallback<List<ProductInput>>() {
            @Override
            public void onSuccess(List<ProductInput> results) {
              System.out.println("Inserted products below");
              System.out.println(results);
            }

            @Override
            public void onFailure(Throwable throwable) {
              System.out.println(throwable);
            }
          },
          MoreExecutors.directExecutor());

    } catch (Exception e) {
      System.out.println(e);
    }
  }

Se utilizzi customBatch nell'API Content e hai bisogno di questa funzionalità per l'API Merchant, comunicaci il motivo nel tuo feedback.

Identificatori

Per allinearci ai principi di miglioramento delle API di Google, abbiamo apportato alcune modifiche agli identificatori delle risorse dell'API Merchant.

Il nome sostituisce l'ID

Tutte le risorse dell'API Merchant utilizzano il campo name come identificatore univoco.

Ecco un esempio di come utilizzare il campo name nelle chiamate:

POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert

Questo nuovo campo name viene restituito come identificatore della risorsa per tutte le chiamate di lettura e scrittura nell'API Merchant.

Ad esempio, implementa un metodo getName() per recuperare il name da una risorsa e memorizza l'output come variabile anziché creare autonomamente il name dagli ID commerciante e risorsa.

campi parent per le risorse secondarie

Nell'API Merchant, tutte le risorse secondarie hanno il campo parent. Puoi utilizzare il campo parent per specificare il name della risorsa in cui inserire la risorsa secondaria, anziché passare l'intera risorsa principale. Puoi anche utilizzare il campo parent con i metodi list per elencare le risorse secondarie di quel parent.

Ad esempio, per elencare gli inventari locali di un determinato prodotto, specifica il valore name del prodotto nel campo parent per il metodo list. In questo caso, product è il parent delle risorse LocalInventory riportate.

Tipi

Di seguito sono riportati alcuni tipi comuni condivisi tra le sottoAPI dell'API Merchant.

Prezzo

Ecco cosa è cambiato per Price nel pacchetto Merchant Common:

API Content API Merchant
Campo dell'importo value:string amountMicros:int64
Campo Valuta currency:string currencyCode:string

L'importo in Price viene ora registrato in micro, dove 1 milione di micro è equivalente all'unità standard della tua valuta.

Nell'API Content for Shopping, Price era un numero decimale sotto forma di stringa.

Il nome del campo dell'importo è passato da value a amountMicros

Il nome del campo valuta è passato da currency a currencyCode. Il formato rimane ISO 4217.