Tester la configuration des notifications

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur 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 des webhooks

Un webhook définit un gestionnaire de rappel HTTP qui est déclenché par un événement. Pour plus d'informations sur la configuration des webhooks, consultez la section Configurer des notifications avec webhooks.

Pour tester vos webhooks, procédez comme suit:

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

Afficher les types de déclencheurs de notification webhook disponibles

Affichez les types de déclencheurs de notification webhook disponibles en envoyant une requête GET au 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 pour obtenir l'ID du webhook, consultez la section Afficher tous les webhooks à l'aide de la méthode API.
  • {developer_email_or_id} spécifie l'ID du développeur. Pour afficher une liste développeurs, consultez la section Liste Développeurs
  • {app_id} spécifie l'ID de l'application pour laquelle vous testez le webhook le déclenchement. Pour répertorier les ID d'application de votre organisation, consultez la section Répertorier les ID d'application dans une Organisation.
  • {product_id} spécifie l'ID du produit d'API pour lequel vous effectuez le test. le déclenchement de webhooks. Pour afficher la liste des produits d'API d'une organisation, consultez Répertorier les produits d'API.
  • {rateplan_id} spécifie l'ID du plan tarifaire pour lequel vous effectuez le test. le déclenchement de webhooks. L'ID du plan tarifaire est différent du nom à afficher. Pour afficher le plan tarifaire plus d'informations, y compris son identifiant, reportez-vous à la section Explorer la page "Plans tarifaires"

Par exemple, l'appel cURL suivant renvoie RATEPLANQUOTAUSAGE en tant que webhook le type de déclencheur de notification.

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 la notification webhook. type de déclencheur.

Afficher un exemple de charge utile de requête pour une notification webhook test

Affichez un exemple de charge utile de requête que vous pouvez utiliser pour tester les notifications webhook en émettant une 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 pour obtenir l'ID du webhook, consultez la section Afficher tous les webhooks à l'aide de la méthode API.
  • {developer_email_or_id} spécifie l'ID du développeur. Pour afficher une liste développeurs, consultez la section Liste Développeurs
  • {app_id} spécifie l'ID de l'application pour laquelle vous testez le webhook le déclenchement. Pour répertorier les ID d'application de votre organisation, consultez la section Répertorier les ID d'application dans une Organisation.
  • {product_id} spécifie l'ID du produit d'API pour lequel vous effectuez le test. le déclenchement de webhooks. Pour afficher la liste des produits d'API d'une organisation, consultez Répertorier les produits d'API.
  • {rateplan_id} spécifie l'ID du plan tarifaire pour lequel vous effectuez le test. le déclenchement de webhooks. L'ID du plan tarifaire est différent du nom à afficher. Pour afficher le plan tarifaire plus d'informations, y compris son identifiant, reportez-vous à la section Explorer la page "Plans tarifaires"
  • {trigger_type} spécifie le nom du type de déclencheur de notification webhook. affiché à l'étape précédente (Lister les webhooks disponibles déclencheurs de notification).

Par exemple, l'appel cURL suivant renvoie un exemple de charge utile de requête pour le paramètre Type de déclencheur de notification 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, vous modifiez l'exemple de charge utile de requête renvoyée, si vous le souhaitez, et vous l'utilisez 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 pour obtenir l'ID du webhook, consultez la section Afficher tous les webhooks à l'aide de la méthode API.
  • {developer_email_or_id} spécifie l'ID du développeur. Pour afficher une liste développeurs, consultez la section Liste Développeurs
  • {app_id} spécifie l'ID de l'application pour laquelle vous testez le webhook le déclenchement. Pour répertorier les ID d'application de votre organisation, consultez la section Répertorier les ID d'application dans une Organisation.
  • {product_id} spécifie l'ID du produit d'API pour lequel vous effectuez le test. le déclenchement de webhooks. Pour afficher la liste des produits d'API d'une organisation, consultez Répertorier les produits d'API.
  • {rateplan_id} spécifie l'ID du plan tarifaire pour lequel vous effectuez le test. le déclenchement de webhooks. L'ID du plan tarifaire est différent du nom à afficher. Pour afficher le plan tarifaire plus d'informations, y compris son identifiant, reportez-vous à la section Explorer la page "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 suit : souhaité et le transmettre 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 é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 informations sur la configuration des notifications, consultez la section Configurer les 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 traiter à nouveau les notifications, procédez comme suit:

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

Affichage des notifications envoyées

Affichez les notifications envoyées pour une organisation en envoyant une demande GET au 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 de 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 possibles sont les suivantes: <ph type="x-smartling-placeholder">
    </ph>
  • 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 est renvoyée.

Dans la réponse, l'option hasMoreItems indique si le nombre des notifications de la liste spécifiée dépasse 1 000. Si hasMoreItems correspond à true, pour indiquer qu'il y a plus de notifications que possible et que vous vous souhaitez afficher les notifications restantes, vous devez affiner vos filtres de paramètres de requête de traiter de plus petits groupes de notifications par demande. Par exemple, vous pouvez créer plusieurs requêtes associées à des périodes plus courtes ou qui renvoient des notifications associées à un certain état seulement valeurs.

Par exemple, l'appel cURL suivant répertorie les notifications qui ont échoué pour l'événement spécifié webhook 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 demande GET à ressource:

/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 à partir du résultat de la réponse lorsque vous consultez 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 de 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 pour afficher des détails. Vous pouvez obtenir l'ID de notification à partir du résultat de la réponse lorsque vous consultez les notifications envoyées.

Par exemple, l'appel cURL suivant traite à nouveau 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
}