Présentation de la sous-API Notifications

Vous pouvez utiliser la sous-API Notifications pour recevoir des notifications push lorsque des données changent dans vos comptes Merchant Center. Au lieu d'interroger régulièrement l'API pour détecter les modifications, vous pouvez vous abonner à des flux d'événements en temps réel qui sont envoyés directement à un point de terminaison HTTPS que vous configurez.

La sous-API Notifications est compatible avec les notifications suivantes :

  • Modifications de l'état des produits : recevez des alertes en temps réel lorsque l'état d'approbation d'un produit change (par exemple, lorsqu'un produit est refusé ou approuvé) dans l'un de vos comptes ou sous-comptes associés.
  • Modifications apportées aux services de compte : recevez des alertes en temps réel lorsqu'une ressource AccountService est créée, mise à jour ou supprimée (par exemple, lorsqu'une relation de service de compte est établie, modifiée ou supprimée).

Prérequis et configuration de l'URI de rappel

Pour recevoir des notifications push, vous devez fournir un callBackUri. Votre URI de rappel doit répondre aux exigences suivantes :

  • Il doit s'agir d'une adresse HTTPS accessible publiquement avec un certificat SSL valide signé par une autorité de certification reconnue.
  • Doit accepter les requêtes HTTP POST avec l'en-tête Content-Type défini sur application/json.
  • Doit renvoyer l'un des codes d'état HTTP suivants pour confirmer la réception de la notification :

    • 102
    • 200
    • 201
    • 202
    • 204

Vous pouvez utiliser le même URI de rappel pour plusieurs abonnements. Pour minimiser la charge sur un point de terminaison unique, utilisez un URI de rappel unique par compte avancé et par type d'événement.

Gérer les abonnements

La sous-API Notifications fournit des méthodes permettant de créer, lister, récupérer, mettre à jour et supprimer des configurations de notifications.

Créer un abonnement

La création d'un abonnement est spécifique au type d'événement que vous souhaitez recevoir. Chaque type d'événement nécessite des champs de configuration différents et fournit des structures de charge utile distinctes.

Pour savoir comment créer des abonnements et afficher des exemples de requêtes pour chaque type d'événement, consultez les guides correspondants :

Répertorier les abonnements

Pour lister tous les abonnements aux notifications d'un compte, envoyez une requête GET à la collection notificationsubscriptions :

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions

Récupérer un abonnement

Pour obtenir des informations sur un abonnement spécifique, utilisez le nom de ressource de l'abonnement :

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Mettre à jour un abonnement

Pour mettre à jour l'URI de rappel d'un abonnement existant, envoyez une requête PATCH avec un update_mask spécifiant les champs à mettre à jour :

PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
  "callBackUri": "https://example.com/updated-callback"
}

Supprimer un abonnement

Pour ne plus recevoir de notifications, supprimez l'abonnement :

DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Décoder les notifications

Lorsqu'un événement se produit, Google envoie une notification à votre callBackUri enregistré. La notification push arrive dans une enveloppe JSON avec une charge utile data encodée en base64 :

{"message":{"data":"{base64_encoded_string}"}}

Décodez la chaîne de données pour accéder à la charge utile de l'événement JSON. L'exemple de contrôleur Spring Boot suivant montre comment recevoir et décoder les notifications push :

@RestController
public class ExampleController {
@RequestMapping(value = "/push",
  method = RequestMethod.POST,
  consumes = {"application/json"},
  produces = {"text/plain"})
  @ResponseStatus(HttpStatus.OK)
  public void handleNotification(@RequestBody String message) {
        JSONObject jsonObject = new JSONObject(message);
        JSONObject jsonMessage = jsonObject.getJSONObject("message");
        String encodedData = jsonMessage.getString("data");
        byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
        String decodedPayload = new String(decodedBytes);
        // Process decodedPayload according to the registered event type
  }
}

Étapes suivantes

Pour configurer des abonnements et gérer les charges utiles décodées pour des événements spécifiques, consultez les ressources suivantes :