Vous consultez la documentation Apigee Edge.
Accédez à la
documentation Apigee X. info
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 l'exécution des webhooks pour vous assurer que les notifications sont envoyées
- Examiner et retraiter les notifications envoyées
Tester les webhooks
Un webhook définit un gestionnaire de rappel HTTP déclenché par un événement. Pour en savoir plus sur la configuration des webhooks, consultez Configurer des notifications à l'aide de webhooks.
Pour tester vos webhooks, procédez comme suit :
- Afficher les types de déclencheurs de notification de webhook disponibles
- Afficher un exemple de charge utile de requête pour tester les notifications de webhook testing
- Tester l'exécution d'un webhook
Afficher les types de déclencheurs de notification de webhook disponibles
Affichez les types de déclencheurs de notification de webhook disponibles 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}
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 l'ID de webhook, 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 du webhook. Pour afficher la liste des ID d'application dans votre organisation, consultez Répertorier les ID d'application dans une organisation.{product_id}spécifie l'ID du produit API pour lequel vous testez le déclenchement du webhook. Pour afficher la liste des produits API d'une organisation, consultez Répertorier les produits API.{rateplan_id}spécifie l'ID du forfait pour lequel vous testez le déclenchement du webhook. L'ID du forfait est différent du nom à afficher. Pour afficher les détails du forfait , y compris l'ID, consultez Explorer la page des forfaits.
Par exemple, l'appel cURL suivant renvoie RATEPLANQUOTAUSAGE comme type de déclencheur de notification de 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 de notification 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ù :
{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 l'ID de webhook, 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 du webhook. Pour afficher la liste des ID d'application dans votre organisation, consultez Répertorier les ID d'application dans une organisation.{product_id}spécifie l'ID du produit API pour lequel vous testez le déclenchement du webhook. Pour afficher la liste des produits API d'une organisation, consultez Répertorier les produits API.{rateplan_id}spécifie l'ID du forfait pour lequel vous testez le déclenchement du webhook. L'ID du forfait est différent du nom à afficher. Pour afficher les détails du forfait , y compris l'ID, consultez Explorer la page des forfaits.{trigger_type}spécifie le nom du type de déclencheur de notification de webhook renvoyé à l’étape précédente (Répertorier les types de déclencheurs de notification de webhook disponibles).
Par exemple, l'appel cURL suivant renvoie un exemple de charge utile de requête pour le
RATEPLANQUOTAUSAGE type de déclencheur de notification de 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/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é comme vous le souhaitez, puis 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 l'ID de webhook, 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 du webhook. Pour afficher la liste des ID d'application dans votre organisation, consultez Répertorier les ID d'application dans une organisation.{product_id}spécifie l'ID du produit API pour lequel vous testez le déclenchement du webhook. Pour afficher la liste des produits API d'une organisation, consultez Répertorier les produits API.{rateplan_id}spécifie l'ID du forfait pour lequel vous testez le déclenchement du webhook. L'ID du forfait est différent du nom à afficher. Pour afficher les détails du forfait , y compris l'ID, consultez Explorer la page des forfaits.
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 de 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
Voici 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 retraiter les notifications
La monétisation vous permet de configurer des notifications déclenchées par des événements spécifiques. Pour en savoir plus sur la configuration des notifications, consultez Configurer des notifications.
Pour chaque notification envoyée, les informations suivantes sont stockées :
- Réessayer le décompte
- Code de réponse
- En-tête de réponse
- Contenu de la réponse (1 000 premiers caractères uniquement)
Pour afficher et retraiter les notifications, procédez comme suit :
- Afficher les notifications qui ont été envoyées
- Afficher les détails d'une notification
- 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
Où {org_name} spécifie le nom de l'organisation.
Vous pouvez également 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. Les valeurs valides incluent :
|
toemail |
ID d'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'indicateur hasMoreItems indique si le nombre de
notifications dans la liste spécifiée est supérieur à 1 000. Si hasMoreItems est
true, ce qui indique qu'il existe plus de notifications que celles qui peuvent être affichées, et que vous
souhaitez afficher les notifications restantes, vous devez affiner les filtres de vos paramètres de requête
pour traiter des groupes de notifications plus petits par requête. Par exemple, vous pouvez effectuer plusieurs
requêtes à l'aide de plusieurs plages de dates plus petites ou renvoyer des notifications avec uniquement certaines valeurs d'état.
Par exemple, l'appel cURL suivant répertorie les notifications qui ont ÉCHOUÉ pour le webhook spécifié dans la plage de dates 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 dont vous souhaitez afficher les détails. Vous pouvez obtenir l'ID de notification à partir de la sortie 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
}
Retraiter une notification
Retraitez 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 dont vous souhaitez afficher les détails. Vous pouvez obtenir l'ID de notification à partir de la sortie de la réponse lorsque vous affichez les notifications envoyées.
Par exemple, l'appel cURL suivant retraite la notification avec 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
}