Tester la configuration des notifications

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Introduction

La monétisation fournit un ensemble d'API que vous pouvez utiliser pour tester la configuration de vos notifications. Précisément, vous pouvez effectuer les opérations suivantes :

Tester les webhooks

Un webhook définit un gestionnaire de rappel HTTP qui est déclenché par un événement. Pour en savoir plus sur la configuration de webhooks, consultez Configurer des notifications à l'aide de webhooks.

Pour tester vos webhooks:

  1. Afficher les types de déclencheurs des notifications webhook disponibles
  2. Voir un exemple de charge utile de requête pour tester les notifications de webhook
  3. Tester l'exécution d'un webhook

Afficher les types de déclencheurs de notifications webhook disponibles

Pour afficher les types de déclencheurs de notifications de webhook disponibles, envoyez une requête GET à la ressource suivante:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}

Où :

  • {org_name} spécifie le nom de l'organisation.
  • {webhook_id} spécifie l'ID du webhook. Pour afficher la liste des webhooks et obtenir leur ID, consultez Afficher tous les webhooks à l'aide de l'API.
  • {developer_email_or_id} spécifie l'ID du développeur. Pour afficher la liste des développeurs, consultez Répertorier les développeurs.
  • {app_id} spécifie l'ID de l'application pour laquelle vous testez le déclenchement d'un webhook. Pour répertorier les ID d'application de votre organisation, consultez Répertorier les ID d'application d'une organisation.
  • {product_id} spécifie l'ID du produit d'API pour lequel vous testez le déclenchement de webhook. Pour afficher la liste des produits d'API d'une entreprise, consultez Répertorier les produits d'API.
  • {rateplan_id} spécifie l'ID du plan tarifaire pour lequel vous testez le déclenchement de webhook. L'ID du plan tarifaire est différent du nom à afficher. Pour afficher les détails du plan tarifaire, y compris l'ID, consultez la section Explorer la page des plans tarifaires.

Par exemple, l'appel cURL suivant renvoie RATEPLANQUOTAUSAGE comme type de déclencheur de notification webhook.

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp" \ 
-u email:password

Voici un exemple de réponse :

[
  "RATEPLANQUOTAUSAGE"
]

Vous devez ensuite déterminer le schéma de la charge utile de la requête pour le type de déclencheur des notifications de webhook.

Afficher un exemple de charge utile de requête pour tester les notifications de webhook

Affichez un exemple de charge utile de requête que vous pouvez utiliser pour tester les notifications de webhook en envoyant une requête GET à la ressource suivante:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}

Où :

Par exemple, l'appel cURL suivant renvoie un exemple de charge utile de requête pour le type de déclencheur de notification de webhook RATEPLANQUOTAUSAGE:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp/RATEPLANQUOTAUSAGE" \ 
-u email:password

Voici un exemple de charge utile de requête:

{
   "eventTriggerReason": "RATEPLANQUOTAUSAGE",
   "properties": [
   {
        "key": "quotaPercentUsed",
        "value": "100"
   }
   ]
}

Ensuite, modifiez l'exemple de charge utile de requête renvoyée si vous le souhaitez et utilisez-le pour tester l'exécution du webhook.

Tester l'exécution d'un webhook

Testez l'exécution d'un webhook en envoyant une requête POST à la ressource suivante:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}.

Où :

  • {org_name} spécifie le nom de l'organisation.
  • {webhook_id} spécifie l'ID du webhook. Pour afficher la liste des webhooks et obtenir leur ID, consultez Afficher tous les webhooks à l'aide de l'API.
  • {developer_email_or_id} spécifie l'ID du développeur. Pour afficher la liste des développeurs, consultez Répertorier les développeurs.
  • {app_id} spécifie l'ID de l'application pour laquelle vous testez le déclenchement d'un webhook. Pour répertorier les ID d'application de votre organisation, consultez Répertorier les ID d'application d'une organisation.
  • {product_id} spécifie l'ID du produit d'API pour lequel vous testez le déclenchement de webhook. Pour afficher la liste des produits d'API d'une entreprise, consultez Répertorier les produits d'API.
  • {rateplan_id} spécifie l'ID du plan tarifaire pour lequel vous testez le déclenchement de webhook. L'ID du plan tarifaire est différent du nom à afficher. Pour afficher les détails du plan tarifaire, y compris l'ID, consultez la section Explorer la page des plans tarifaires.

Modifiez l'exemple de charge utile de requête renvoyé à l'étape précédente (Afficher un exemple de charge utile de requête pour tester les notifications webhook) comme vous le souhaitez, puis transmettez-le dans la charge utile de la requête.

Par exemple, l'appel cURL suivant teste l'exécution du webhook spécifié:

curl -H "Content-Type: application/json" -X POST -d \
'{
  "eventTriggerReason": "RATEPLANQUOTAUSAGE",
  "properties": [
    {
      "key": "quotaPercentUsed",
      "value": "120"
    }
  ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/webhooks/0a07eb1f-f485-4539-8beb-01be449699b3/test/joe@example.com/e759c119-510c-49a8-886c-f184091944bd/myproduct/mypackage_anrp" \ 
-u email:password

Vous trouverez ci-dessous un exemple de réponse indiquant que la notification a bien été envoyée au webhook:

{
  "original": {
    "createdDate": 1463619959930,
    "createdTimeStamp": 1463616000000,
    "notificationType": "WEBHOOK",
    "orgId": "myorg",
    "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"MyPackage\",\"packageId\":\"mypackage\",\"ratePlanId\":\"mypackage_anrp\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":200,\"quotaPercentUsed\":\"120\",\"ratePlanStartDate\":1463616000000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[]\"triggerTime\":1463619959929,\"triggerReason\":\"RATEPLANQUOTAUSAGE\",\"developerQuotaResetDate\":null}",
    "retryCount": 0,
    "retryStatuses": [],
    "source": "MailTo: [36112720-1304-4e0b-9b17-991f5e121ebb], Org: [myorg], TransactionId: [], LimitId: [], Key: []",
    "toEmail": "http://123.45.67.89/webhook",
    "updatedDate": 1463619959930
  },
  "raw": "This is the response",
  "responseCode": 200,
  "status": "NOTIFICATION_SENT"
}

Afficher et traiter à nouveau les notifications

La monétisation vous permet de configurer des notifications qui sont déclenchées par des événements spécifiques. Pour en savoir plus sur la configuration des notifications, consultez Configurer les notifications.

Pour chaque notification envoyée, les informations suivantes sont stockées:

  • Nombre de nouvelles tentatives
  • Code de réponse
  • En-tête de réponse
  • Contenu de la réponse (1 000 premiers caractères uniquement)

Pour consulter et traiter à nouveau les notifications, procédez comme suit:

  1. Consulter les notifications envoyées
  2. Afficher les détails d'une notification
  3. Retraiter une notification

Afficher les notifications envoyées

Affichez les notifications qui ont été envoyées pour une organisation en envoyant une requête GET à la ressource suivante:

/organizations/{org_name}/notification-service-items

{org_name} spécifie le nom de l'organisation.

Vous pouvez éventuellement spécifier un ou plusieurs des paramètres de requête suivants pour filtrer la liste des notifications renvoyées dans la réponse:

Paramètre de requête Description
startdate Date de début au format YYYY-MM-DD HH:mm:ss.
enddate Date de fin au format YYYY-MM-DD HH:mm:ss.
status État des notifications. Voici les valeurs possibles :
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail ID d'adresse e-mail ou webhook auquel la notification a été envoyée.

Un maximum de 1 000 notifications sont renvoyées.

Dans la réponse, l'option hasMoreItems indique si le nombre de notifications de la liste spécifiée est supérieur à 1 000. Si hasMoreItems est défini sur true, cela signifie qu'il y a plus de notifications qu'il ne pourrait être affiché et que vous souhaitez afficher les notifications restantes, vous devez affiner vos filtres de paramètres de requête pour traiter des groupes plus petits de notifications par requête. Par exemple, vous pouvez envoyer plusieurs requêtes utilisant plusieurs plages de dates plus restreintes ou afficher des notifications ne contenant que certaines valeurs d'état.

Par exemple, l'appel cURL suivant répertorie les notifications qui ont ÉCHEC pour le webhook spécifié au cours de la période spécifiée:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items?enddate=2016-05-19 12:00:00&startdate=2016-05-18 12:00:00&status=FAILED&toemail=http://123.45.6789:8000/webhook" \ 
-u email:password 

Voici un exemple de réponse :

 {
   "hasMoreItems": false,
   "notifications": [
   { 
      "createdDate": 1463626865974, 
      "createdTimeStamp": 1463616000000, 
      "id": "9d87c6ea-1394-495b-bfb7-1d2e7ef3f837", 
      "notificationType": "WEBHOOK", 
      "orgId": "Org_d40f6c2e-1d6d-11e6-a4ed-af8444f24e4f", 
      "rawMessage": "{\"orgName\":\"Org_d40f6c2e-1d6d-11e6-a4ed-af8444f24e4f\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"MyApp\",
\"packageName\":\"test-package\",\"packageId\":\"myorg@@@test-package-9ubo\",\"ratePlanId\":\"myorg@@@test-package-9ubo_anrp\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",
\"developerRatePlanQuotaTarget\":10,\"quotaPercentUsed\":\"20\",\"ratePlanStartDate\":1463616000000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":1464739200000,\"products\":[\"product1\"],
\"developerCustomAttributes\":[],\"triggerTime\":1463626865907,\"triggerReason\":\"RatePlanQuotaUsage\",\"developerQuotaResetDate\":\"1464810145000\"}", 
      "retryCount": 3, 
      "retryStatuses": [ 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869184,
         "retryAttempt": 1 
      }, 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869318, 
         "retryAttempt": 2 
      }, 
      { 
         "responseCode": 500, 
         "responseMessage": "{\"Headers\":\"[{\"name\":\"Content-length\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":15,\"value\":\"20\",\"elements\":[{\"name\":\"20\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]},{\"name\":\"Date\",\"buffer\":{\"empty\":false,\"full\":false},\"valuePos\":5,\"value\":\"Thu, 19 May 2016 03:01:09 GMT\",\"elements\":[{\"name\":\"Thu\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"19 May 2016 03:01:09 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}]}]\",\"StatusCode\":\"500\",\"Content : \":\"This is the response\"}", 
         "retriedAt": 1463626869378, 
         "retryAttempt": 3 
      } 
      ], 
      "source": "MailTo: [6c3cde37-a8f1-4077-adbe-e9f6605a7299], Org: [myorg], TransactionId: [b8d763be-7185-450d-b421-df38c870fabd], LimitId: [RatePlan-Limit:myorg@@@test-package-9ubo_anrp], Key: [myorg@@@kjGSxEGtZeekBEyI~myorg@@@test-package-9ubo_anrp~Transactions~Calls~20]", 
      "status": "FAILED", 
      "toEmail": "http://123.45.67.89:8000/webhook", 
      "updatedDate": 1463626865974 
   } 
   ] 
}

Afficher les détails d'une notification

Affichez les détails d'une notification spécifique en envoyant une requête GET à la ressource suivante:

/organizations/{org_name}/notification-service-items/{notification_id}

Où :

  • {org_name} spécifie le nom de l'organisation.
  • {notification_id} spécifie l'ID de la notification pour laquelle vous souhaitez afficher les détails. Vous pouvez obtenir l'ID de notification dans le résultat de la réponse lorsque vous affichez les notifications envoyées.

Par exemple, l'appel cURL suivant répertorie les détails de la notification avec l'ID 4b3dfadf-3a96-4a92-9512-1feff22f74f3:

curl -H "Content-Type: application/json" -X GET \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items/faa8e6a8-754e-40e8-9e0c-4dee6c9aca23" \ 
-u email:password
 

Voici un exemple de réponse :

 {
  "createdDate": 1461062402871,
  "createdTimeStamp": 1461024000000,
  "id": "faa8e6a8-754e-40e8-9e0c-4dee6c9aca23",
  "notificationType": "WEBHOOK",
  "orgId": "myorg",
  "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[],\"triggerTime\":1461062395966,\"triggerReason\":\"RatePlanQuotaUsage\"}",
  "retryCount": 0,
  "retryStatuses": [],
  "source": "MailTo: [c9e42fcd-9632-4376-b92d-0fa27f178a3b], Org: [myorg], TransactionId: [0352e568-2724-42d9-a264-1b62586d5948], LimitId: [RatePlan-Limit:amyorg@@@mypackage-a0y9_anrp], Key: [myorg@@@PPXsQbkyO1bBhQOh~myorg@@@mypackage-a0y9_anrp~Transactions~Calls~1]",
  "status": "NOTIFICATION_SENT",
  "toEmail": "http://123.45.67.89:8000/webhook",
  "updatedDate": 1461062402871
}

Nouveau traitement d'une notification

Traitez à nouveau une notification en envoyant une requête POST à la ressource suivante:

/organizations/{org_name}/notification-service-items/{notification_id}/reprocess

Où :

  • {org_name} spécifie le nom de l'organisation.
  • {notification_id} spécifie l'ID de l'élément de notification pour lequel vous souhaitez afficher les détails. Vous pouvez obtenir l'ID de notification dans le résultat de la réponse lorsque vous affichez les notifications envoyées.

Par exemple, l'appel cURL suivant retraite la notification associée à l'ID 4b3dfadf-3a96-4a92-9512-1feff22f74f3:

curl -H "Content-Type: application/json" -X POST \ 
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/notification-service-items/faa8e6a8-754e-40e8-9e0c-4dee6c9aca23/reprocess" \ 
-u email:password
 
{
  "createdDate": 1461062402871,
  "createdTimeStamp": 1461024000000,
  "id": "faa8e6a8-754e-40e8-9e0c-4dee6c9aca23",
  "notificationType": "WEBHOOK",
  "orgId": "myorg",
  "rawMessage": "{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"myapp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"myproduct\"],\"developerCustomAttributes\":[],\"triggerTime\":1461062395966,\"triggerReason\":\"RatePlanQuotaUsage\"}",
  "retryCount": 0,
  "retryStatuses": [
    {
      "responseCode": 200,
      "responseMessage": "{\"Headers\":\"[{\"name\":\"Accept-Encoding\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":16,\"elements\":[{\"name\":\"gzip\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"deflate\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"gzip,deflate\"},{\"name\":\"Content-Type\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":13,\"elements\":[{\"name\":\"application/json\",\"value\":null,\"parameters\":[{\"name\":\"charset\",\"value\":\"UTF-8\"}],\"parameterCount\":1}],\"value\":\"application/json; charset=UTF-8\"},{\"name\":\"Date\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":5,\"elements\":[{\"name\":\"Mon\",\"value\":null,\"parameters\":[],\"parameterCount\":0},{\"name\":\"23 May 2016 21:46:37 GMT\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Mon, 23 May 2016 21:46:37 GMT\"},{\"name\":\"Server\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":7,\"elements\":[{\"name\":\"Apigee Router\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Apigee Router\"},{\"name\":\"User-Agent\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":11,\"elements\":[{\"name\":\"Apache-HttpClient/4.3.5 (java 1.5)\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"Apache-HttpClient/4.3.5 (java 1.5)\"},{\"name\":\"X-Forwarded-For\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":16,\"elements\":[{\"name\":\"54.200.58.80\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"54.200.58.80\"},{\"name\":\"X-Forwarded-Port\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":17,\"elements\":[{\"name\":\"80\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"80\"},{\"name\":\"X-Forwarded-Proto\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":18,\"elements\":[{\"name\":\"http\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"http\"},{\"name\":\"Content-Length\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":15,\"elements\":[{\"name\":\"1173\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"1173\"},{\"name\":\"Connection\",\"buffer\":{\"full\":false,\"empty\":false},\"valuePos\":11,\"elements\":[{\"name\":\"keep-alive\",\"value\":null,\"parameters\":[],\"parameterCount\":0}],\"value\":\"keep-alive\"}]\",\"StatusCode\":\"200\",\"Content : \":\"{\"orgName\":\"myorg\",\"developerEmail\":\"joe@example.com\",\"developerFirstName\":\"Joe\",\"developerLastName\":\"Smith\",\"applicationName\":\"MyApp\",\"packageName\":\"mypackage\",\"ratePlanName\":\"anrp\",\"ratePlanType\":\"STANDARD\",\"developerRatePlanQuotaTarget\":54000,\"quotaPercentUsed\":\"1\",\"ratePlanStartDate\":1460419200000,\"ratePlanEndDate\":null,\"nextBillingCycleStartDate\":null,\"products\":[\"product1\"],\"developerCustomAttributes\":[],
  "source": "MailTo: [c9e42fcd-9632-4376-b92d-0fa27f178a3b], Org: [myorg], TransactionId: [0352e568-2724-42d9-a264-1b62586d5948], LimitId: [RatePlan-Limit:amyorg@@@mypackage-a0y9_anrp], Key: [myorg@@@PPXsQbkyO1bBhQOh~myorg@@@mypackage-a0y9_anrp~Transactions~Calls~1]",
  "status": "NOTIFICATION_SENT",
  "toEmail": "http://123.45.67.89:8000/webhook",
  "updatedDate": 1461062402871
}