Une région de l'API Merchant représente une région géographique que vous pouvez utiliser comme cible associée à la ressource accounts.products.regionalInventories. Vous pouvez définir des régions comme des ensembles de codes postaux ou, dans certains pays, à l'aide de cibles géographiques prédéfinies. Pour en savoir plus, consultez Configurer
des régions.
L'API Merchant fournit des points de terminaison par lot pour gérer vos régions. Vous pouvez ainsi créer, modifier et supprimer jusqu'à 100 régions en un seul appel d'API. Cette fonctionnalité est idéale pour les marchands qui gèrent la disponibilité et la tarification selon la région (RAAP) à grande échelle, car elle améliore l'efficacité et simplifie l'intégration.
Présentation
L'API par lot vous permet d'effectuer les opérations suivantes avec les méthodes associées :
- Créer plusieurs régions en une seule requête :
regions:batchCreate - Supprimer plusieurs régions à la fois :
regions:batchDelete - Modifier plusieurs régions simultanément :
regions:batchUpdate
Prérequis
Toutes les requêtes par lot nécessitent le rôle utilisateur ADMIN pour l'authentification.
Créer plusieurs régions
Cet exemple montre comment créer deux régions : l'une définie par des codes postaux et l'autre par ciblage géographique, en un seul appel de BatchCreateRegions.
Requête
Créez l'URL de la requête comme suit :
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate
Le corps de la requête contient une liste de requests, où chaque objet spécifie un
regionId et les données region à créer.
{
"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"
]
}
}
}
]
}
Réponse
Une requête réussie renvoie une liste des nouveaux objets region.
{
"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
}
]
}
Modifier plusieurs régions
Cet exemple montre comment utiliser BatchUpdateRegions pour modifier les displayName et postalCodeArea de deux régions existantes. Vous devez fournir un region.name pour modifier la région ciblée.
Requête
Créez l'URL de la requête comme suit :
POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate
Le corps de la requête contient une liste de requests. Chaque objet doit spécifier les données region à modifier. Le champ region.name doit contenir l'ID de la région à modifier, par exemple "98005". Spécifiez la ressource en tant que name plutôt
que accounts/{ACCOUNT_ID}/regions/name. L'inclusion de updateMask pour indiquer les champs à modifier est facultative.
{
"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"
}
]
}
Réponse
Une requête réussie renvoie une liste des objets region modifiés.
{
"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
}
]
}
Supprimer plusieurs régions
Vous pouvez supprimer plusieurs régions en un seul appel.
Requête
Cet exemple montre comment utiliser BatchDeleteRegions pour supprimer deux régions en un seul appel.
POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete
Le corps de la requête contient une liste de requests, où chaque objet spécifie le
name (sans "accounts/{ACCOUNT_ID}/regions/") de la région à supprimer.
{
"requests":
[
{
"name": "98005"
},
{
"name": "07086"
}
]
}
Réponse
Une requête réussie renvoie un corps de réponse vide, indiquant que les régions spécifiées ont été supprimées (ou n'existaient pas).
{}
Limites
Avant de commencer, gardez à l'esprit les règles suivantes :
- Opérations atomiques : les requêtes par lot sont atomiques. Si une seule opération du lot échoue (par exemple, si une région ne peut pas être créée), l' ensemble du lot échoue et aucune modification n'est apportée. L'API renvoie une erreur détaillant la cause de l'échec.
- Limites de lot : chaque requête par lot peut contenir 100 opérations de région au maximum.
- Quotas : ces points de terminaison utilisent les mêmes groupes de quotas que leurs
homologues à opération unique (
regions.create,regions.delete,regions.update).
Erreurs et problèmes courants
Voici quelques pièges courants et leurs solutions.
"The number of requests in a batch is too large" (Le nombre de requêtes dans un lot est trop élevé)
Cette erreur se produit si le nombre d'opérations dans votre tableau de requêtes dépasse la limite de 100.
"error":
{
"code": 400,
"message": "The number of requests in a batch is too large.",
"status": "INVALID_ARGUMENT"
}
Pour résoudre ce problème, divisez vos opérations en plusieurs requêtes par lot de 100 ou moins.
Un champ obligatoire n'est pas renseigné.
Cette erreur se produit lorsqu'un champ obligatoire n'est pas renseigné. Le message d'erreur spécifie le paramètre manquant.
Les messages d'erreur sont les suivants :
- Pour
batchCreate:[regionId] Required parameter: regionId([regionId] Paramètre obligatoire : regionId) - Pour
batchUpdate:[region.name] Required field not provided.([region.name] Champ obligatoire non fourni.) - Pour
batchDelete:[name] Required parameter: name([name] Paramètre obligatoire : name)
Pour résoudre ce problème, vérifiez que tous les champs obligatoires sont présents dans chaque opération. Par exemple, chaque entrée d'une requête batchUpdate doit inclure le region.name.
L'envoi de la requête suivante génère une erreur :
{
"requests":
[
{
"region":
{
"displayName": "An update without a region name"
},
"updateMask": "displayName"
}
]
}
"Region with specified ID already exists" (Une région avec l'ID spécifié existe déjà)
Une erreur se produit si vous tentez de créer une région avec un regionId qui existe déjà.
Le message d'erreur est [regionId] Region with specified id already exists. ([regionId] Une région avec l'ID spécifié existe déjà.)
Pour résoudre ce problème, vérifiez que toutes les valeurs regionId sont uniques dans le lot et qu'elles ne sont pas en conflit avec des régions existantes.
"Duplicate value found for field region.name or regionId found" (Valeur en double détectée pour le champ region.name ou regionId)
Une erreur se produit si vous tentez de créer ou de modifier plusieurs régions avec le même ID dans une seule requête par lot.
Le message d'erreur est Duplicate value found for field {fieldName} in this batch
request with value {duplicated_value}..
Pour résoudre ce problème, vérifiez que toutes les valeurs regionId (pour batchCreate) ou region.name (pour batchUpdate) sont uniques dans une seule requête par lot.
"Item not found" (Élément introuvable)
Lorsque vous utilisez batchUpdate, si une région spécifiée dans la requête n'existe pas, l'ensemble du lot échoue avec une erreur 404 NOT_FOUND. Cela diffère de batchDelete, qui réussit pour les régions inexistantes.
"error": {
"code": 404,
"message": "item not found",
"status": "NOT_FOUND"
}
Pour résoudre ce problème, vérifiez que toutes les régions que vous tentez de modifier existent avant d'envoyer la requête.