Regionen-Batching verwalten

Eine Merchant API-Region stellt eine geografische Region dar, die Sie als Ziel für die Ressource accounts.products.regionalInventories verwenden können. Sie können Regionen als Sammlungen von Postleitzahlen oder in einigen Ländern mit vordefinierten geografischen Zielen definieren. Weitere Informationen finden Sie unter Regionen einrichten.

Die Merchant API bietet Batch-Endpunkte zum Verwalten Ihrer Regionen. So können Sie mit einem einzigen API-Aufruf bis zu 100 Regionen erstellen, aktualisieren und löschen. Das ist ideal für Händler, die die Angabe regionaler Preise und Verfügbarkeit (RAAP) im großen Maßstab verwalten, da es die Effizienz steigert und die Integration vereinfacht.

Übersicht

Mit der Batch API können Sie mit den zugehörigen Methoden Folgendes tun:

  • Mehrere Regionen in einer einzigen Anfrage erstellen: regions:batchCreate
  • Mehrere Regionen gleichzeitig löschen: regions:batchDelete
  • Mehrere Regionen gleichzeitig aktualisieren: regions:batchUpdate

Vorbereitung

Für alle Batchanfragen ist die Nutzerrolle ADMIN für die Authentifizierung erforderlich.

Mehrere Regionen erstellen

In diesem Beispiel wird gezeigt, wie Sie mit einem einzigen Aufruf von BatchCreateRegions zwei neue Regionen erstellen – eine, die durch Postleitzahlen definiert ist, und eine andere, die auf geografischem Targeting basiert.

Anfrage

Erstellen Sie die Anfrage-URL so:

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate

Der Anfragetext enthält eine Liste von requests. Jedes Objekt gibt eine regionId und die region-Daten an, die erstellt werden sollen.

{
  "requests": [
    {
      "regionId": "seattle-area-98340",
      "region": {
        "displayName": "Seattle Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98340"
            }
          ]
        }
      }
    },
    {
      "regionId": "co-de-states",
      "region": {
        "displayName": "Colorado and Delaware",
        "geoTargetArea": {
          "geotargetCriteriaIds": [
            "21138",
            "21141"
          ]
        }
      }
    }
  ]
}

Antwort

Bei einer erfolgreichen Anfrage wird eine Liste der neuen region-Objekte zurückgegeben.

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/seattle-area-98340",
      "displayName": "Seattle Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98340"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/co-de-states",
      "displayName": "Colorado and Delaware",
      "geotargetArea": {
        "geotargetCriteriaIds": [
          "21138",
          "21141"
        ]
      },
      "regionalInventoryEligible": false,
      "shippingEligible": false
    }
  ]
}

Mehrere Regionen aktualisieren

In diesem Beispiel wird gezeigt, wie Sie mit BatchUpdateRegions die displayName und postalCodeArea für zwei vorhandene Regionen aktualisieren. Sie müssen eine region.name angeben, um die Zielregion zu aktualisieren.

Anfrage

Erstellen Sie die Anfrage-URL so:

POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate

Der Anfragetext enthält eine Liste von requests. Jedes Objekt muss die region-Daten angeben, die aktualisiert werden sollen. Das Feld region.name muss die ID der zu aktualisierenden Region enthalten, z. B. „98005“. Geben Sie die Ressource als name und nicht als accounts/{ACCOUNT_ID}/regions/name an. Die Angabe von updateMask zur Angabe der zu ändernden Felder ist optional.

{
  "requests": [
    {
      "region": {
        "name": "98005",
        "displayName": "Seattle Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98330"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    },
    {
      "region": {
        "name": "07086",
        "displayName": "NewYork Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "11*"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    }
  ]
}

Antwort

Bei einer erfolgreichen Anfrage wird eine Liste der aktualisierten region-Objekte zurückgegeben.

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/98005",
      "displayName": "Seattle Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98330"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/07086",
      "displayName": "NewYork Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "11*"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    }
  ]
}

Mehrere Regionen löschen

Sie können mehrere Regionen mit einem einzigen Aufruf löschen.

Anfrage

In diesem Beispiel wird gezeigt, wie Sie mit BatchDeleteRegions zwei Regionen mit einem einzigen Aufruf löschen.

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete

Der Anfragetext enthält eine Liste von requests. Jedes Objekt gibt den name (ohne "accounts/{ACCOUNT_ID}/regions/") der zu löschenden Region an.

{
  "requests":
   [
    {
      "name": "98005"
    },
    {
      "name": "07086"
    }
   ]
}

Antwort

Bei einer erfolgreichen Anfrage wird ein leerer Antworttext zurückgegeben, der angibt, dass die angegebenen Regionen gelöscht wurden (oder nicht vorhanden waren).

{}

Beschränkungen

Beachten Sie vor dem Start folgende Regeln:

  • Atomare Vorgänge: Batchanfragen sind atomar. Wenn ein einzelner Vorgang im Batch fehlschlägt (z. B. wenn eine Region nicht erstellt werden kann), schlägt der gesamte Batch fehl und es werden keine Änderungen vorgenommen. Die API gibt einen Fehler zurück, in dem die Ursache des Fehlers angegeben ist.
  • Batchlimits: Jede Batchanfrage kann ein Maximum von 100 Regions vorgängen enthalten.
  • Kontingente: Diese Endpunkte verwenden dieselben Kontingentgruppen wie ihre Pendants für einzelne Vorgänge (regions.create, regions.delete, regions.update).

Häufige Fehler und Probleme

Hier sind einige häufige Fehler und ihre Lösungen.

„Die Anzahl der Anfragen in einem Batch ist zu groß“

Dieser Fehler tritt auf, wenn die Anzahl der Vorgänge im Array der Anfragen das Limit von 100 überschreitet.

"error":
  {
    "code": 400,
    "message": "The number of requests in a batch is too large.",
    "status": "INVALID_ARGUMENT"
  }

Teilen Sie die Vorgänge in mehrere Batchanfragen mit jeweils maximal 100 Vorgängen auf.

Ein Pflichtfeld fehlt

Dieser Fehler tritt auf, wenn ein Pflichtfeld fehlt. In der Fehlermeldung wird der fehlende Parameter angegeben.

Die Fehlermeldungen lauten so:

  • Für batchCreate: [regionId] Required parameter: regionId
  • Für batchUpdate: [region.name] Required field not provided.
  • Für batchDelete: [name] Required parameter: name

Prüfen Sie, ob alle Pflichtfelder in jedem Vorgang vorhanden sind. Jeder Eintrag in einer batchUpdate-Anfrage muss beispielsweise region.name enthalten. Wenn Sie die folgende Anfrage senden, wird ein Fehler zurückgegeben:

{
  "requests":
  [
    {
      "region":
        {
          "displayName": "An update without a region name"
        },
        "updateMask": "displayName"
    }
  ]
}

„Region mit angegebener ID ist bereits vorhanden“

Ein Fehler tritt auf, wenn Sie versuchen, eine Region mit einer regionId zu erstellen, die bereits vorhanden ist.

Die Fehlermeldung lautet [regionId] Region with specified id already exists..

Prüfen Sie, ob alle regionId-Werte im Batch eindeutig sind und nicht mit vorhandenen Regionen in Konflikt stehen.

„Doppelter Wert für das Feld region.name oder regionId gefunden“

Ein Fehler tritt auf, wenn Sie versuchen, mehrere Regionen mit derselben ID in einer einzigen Batchanfrage zu erstellen oder zu aktualisieren.

Die Fehlermeldung lautet Duplicate value found for field {fieldName} in this batch request with value {duplicated_value}..

Prüfen Sie, ob alle regionId-Werte (für batchCreate) oder region.name-Werte (für batchUpdate) in einer einzigen Batchanfrage eindeutig sind.

„Element nicht gefunden“

Wenn bei der Verwendung von batchUpdate eine in der Anfrage angegebene Region nicht vorhanden ist, schlägt der gesamte Batch mit dem Fehler 404 NOT_FOUND fehl. Das unterscheidet sich von batchDelete, das für nicht vorhandene Regionen erfolgreich ausgeführt wird.

"error": {
    "code": 404,
    "message": "item not found",
    "status": "NOT_FOUND"
}

Prüfen Sie, ob alle Regionen, die Sie aktualisieren möchten, vorhanden sind, bevor Sie die Anfrage senden.