Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Wprowadzenie
Funkcja zarabiania udostępnia zestaw interfejsów API, których możesz używać do testowania konfiguracji powiadomień. W szczególności możesz:
- Sprawdź wykonanie webhooków, aby upewnić się, że powiadomienia są wysyłane.
- Sprawdzanie i ponowne przetwarzanie wysłanych powiadomień
Testowanie webhooków
Webhook definiuje wywołanie zwrotne HTTP, które jest wywoływane przez zdarzenie. Informacje o konfigurowaniu webhooków znajdziesz w artykule Konfigurowanie powiadomień za pomocą webhooków.
Możesz przetestować webhooki, wykonując te czynności:
- Wyświetlanie dostępnych typów reguł powiadomień webhook
- Przykładowy ładunek żądania do testowania powiadomień webhook
- Testowanie działania webhooka
Wyświetlanie dostępnych typów reguł powiadomień webhooka
Wyświetl dostępne typy aktywatorów powiadomień webhooka, wysyłając żądanie GET do tego zasobu:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
Gdzie:
{org_name}
określa nazwę organizacji.{webhook_id}
określa identyfikator webhooka. Aby wyświetlić listę webhooków i uzyskać ich identyfikatory, zapoznaj się z artykułem Wyświetlanie wszystkich webhooków za pomocą interfejsu API.{developer_email_or_id}
określa identyfikator dewelopera. Aby wyświetlić listę deweloperów, przejdź do sekcji Lista deweloperów.{app_id}
określa identyfikator aplikacji, w której testujesz aktywator webhooka. Aby wyświetlić listę identyfikatorów aplikacji w organizacji, zapoznaj się z artykułem Wyświetlanie listy identyfikatorów aplikacji w organizacji.{product_id}
określa identyfikator usługi API, dla której testujesz aktywator webhooka. Aby wyświetlić listę usług API w organizacji, przeczytaj artykuł Wyświetlanie listy usług API.{rateplan_id}
określa identyfikator abonamentu, dla którego testujesz wywoływanie webhooka. Identyfikator planu cenowego różni się od wyświetlanej nazwy. Aby wyświetlić szczegóły abonamentu, w tym jego identyfikator, zapoznaj się z artykułem Poznawanie strony z abonamentami.
Na przykład poniższe wywołanie cURL zwraca RATEPLANQUOTAUSAGE
jako typ aktywatora powiadomień webhooka.
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
Poniżej przedstawiamy przykład odpowiedzi:
[ "RATEPLANQUOTAUSAGE" ]
Następnie musisz określić schemat ładunku żądania dla typu reguły powiadomienia webhook.
Wyświetlanie przykładowego ładunku żądania na potrzeby testowania powiadomienia webhook
Aby wyświetlić przykładowy ładunek żądania, który możesz wykorzystać do testowania powiadomień webhook, wyślij żądanie GET do tego zasobu:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}
Gdzie:
{org_name}
określa nazwę organizacji.{webhook_id}
określa identyfikator webhooka. Informacje o tym, jak wyświetlić listę webhooków i uzyskać identyfikator webhooka, znajdziesz w artykule Wyświetlanie wszystkich webhooków za pomocą interfejsu API.{developer_email_or_id}
określa identyfikator dewelopera. Aby wyświetlić listę deweloperów, przejdź do sekcji Lista deweloperów.{app_id}
określa identyfikator aplikacji, w której testujesz aktywator webhooka. Aby wyświetlić listę identyfikatorów aplikacji w organizacji, zapoznaj się z sekcją Wyświetlanie listy identyfikatorów aplikacji w organizacji.{product_id}
określa identyfikator usługi interfejsu API, dla której testujesz uruchamianie webhooka. Aby wyświetlić listę usług API w organizacji, przeczytaj artykuł Wyświetlanie listy usług API.{rateplan_id}
określa identyfikator abonamentu, dla którego testujesz wywoływanie webhooka. Identyfikator planu cenowego różni się od wyświetlanej nazwy. Aby wyświetlić szczegóły abonamentu, w tym jego identyfikator, zapoznaj się z artykułem Poznawanie strony z abonamentami.{trigger_type}
określa nazwę typu wyzwalacza powiadomienia webhook zwróconego w poprzednim kroku (Lista dostępnych typów wyzwalaczy powiadomień webhook).
Na przykład wywołanie cURL z poniższym parametrem zwraca przykładowy ładunek żądania dla typu wyzwalacza powiadomienia webhooka 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
Poniżej znajdziesz przykładowy ładunek żądania:
{ "eventTriggerReason": "RATEPLANQUOTAUSAGE", "properties": [ { "key": "quotaPercentUsed", "value": "100" } ] }
Następnie odpowiednio modyfikujesz zwrócony ładunek żądania i używasz go do testowania wykonania webhooka.
Testowanie wykonania webhooka
Przetestuj wykonanie webhooka, wysyłając żądanie POST do tego zasobu:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
.
Gdzie:
{org_name}
określa nazwę organizacji.{webhook_id}
określa identyfikator webhooka. Aby wyświetlić listę webhooków i uzyskać ich identyfikatory, zapoznaj się z artykułem Wyświetlanie wszystkich webhooków za pomocą interfejsu API.{developer_email_or_id}
określa identyfikator dewelopera. Aby wyświetlić listę deweloperów, zapoznaj się z sekcją Tworzenie listy deweloperów.{app_id}
określa identyfikator aplikacji, w której przypadku testujesz wywoływanie webhooka. Aby wyświetlić listę identyfikatorów aplikacji w organizacji, zapoznaj się z sekcją Wyświetlanie listy identyfikatorów aplikacji w organizacji.{product_id}
określa identyfikator usługi interfejsu API, dla której testujesz uruchamianie webhooka. Aby wyświetlić listę usług API w organizacji, zapoznaj się z artykułem Lista usług API.{rateplan_id}
określa identyfikator abonamentu, dla którego testujesz wywoływanie webhooka. Identyfikator planu cenowego różni się od wyświetlanej nazwy. Aby wyświetlić szczegóły abonamentu, w tym jego identyfikator, zapoznaj się z artykułem Poznawanie strony z abonamentami.
Zmodyfikuj zgodnie z potrzebami przykładowy ładunek żądania zwrócony w poprzednim kroku (wyświetl przykładowy ładunek żądania na potrzeby testowania powiadomień webhooka) i przekaż go w ładunku żądania.
Na przykład to wywołanie cURL sprawdza wykonanie określonego webhooka:
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
Oto przykład odpowiedzi, która wskazuje, że powiadomienie zostało wysłane do webhooka:
{ "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" }
Wyświetlanie i ponowne przetwarzanie powiadomień
Zarabianie umożliwia konfigurowanie powiadomień wywoływanych przez określone zdarzenia. Informacje o konfigurowaniu powiadomień znajdziesz w artykule Konfigurowanie powiadomień.
W przypadku każdego wysłanego powiadomienia są przechowywane te informacje:
- Liczba ponowień
- Kod odpowiedzi
- Nagłówek odpowiedzi
- Treść odpowiedzi (tylko pierwsze 1000 znaków)
Aby wyświetlić i ponownie przetworzyć powiadomienia, wykonaj te czynności:
- Wyświetlanie wysłanych powiadomień
- Wyświetlanie szczegółów powiadomienia
- Ponowne przetwarzanie powiadomienia
Wyświetlanie wysłanych powiadomień
Wyświetl powiadomienia wysłane dla organizacji, wysyłając żądanie GET do tego zasobu:
/organizations/{org_name}/notification-service-items
Gdzie {org_name}
określa nazwę organizacji.
Opcjonalnie możesz podać co najmniej 1 z tych parametrów zapytania, aby odfiltrować listę powiadomień zwróconych w odpowiedzi:
Parametr zapytania | Opis |
---|---|
startdate |
Data rozpoczęcia w formacie YYYY-MM-DD HH:mm:ss . |
enddate |
Data zakończenia w formacie YYYY-MM-DD HH:mm:ss . |
status |
stan powiadomień. Prawidłowe wartości to:
|
toemail |
Identyfikator e-mail lub webhooka, na które zostało wysłane powiadomienie. |
Zwracane jest maksymalnie 1000 powiadomień.
W odpowiedzi flaga hasMoreItems
wskazuje, czy liczba powiadomień na określonej liście przekracza 1000. Jeśli hasMoreItems
to true
, co oznacza, że jest więcej powiadomień, niż można wyświetlić, i chcesz wyświetlić pozostałe powiadomienia, sprecyzuj filtry parametrów zapytania, tak aby przetwarzały mniejsze grupy powiadomień na żądanie. Możesz na przykład wysyłać wiele żądań za pomocą kilku mniejszych zakresów dat lub zwracać powiadomienia tylko z określonymi wartościami stanu.
Na przykład to wywołanie cURL zawiera listę powiadomień z określonego webhooka, które wygenerowały NIEPRAWDĘ i w wybranym zakresie dat:
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
Oto przykład takiej odpowiedzi:
{ "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 } ] }
Wyświetlanie szczegółów powiadomienia
Aby wyświetlić szczegóły konkretnego powiadomienia, wyślij żądanie GET do tego zasobu:
/organizations/{org_name}/notification-service-items/{notification_id}
Gdzie:
{org_name}
określa nazwę organizacji.{notification_id}
określa identyfikator powiadomienia, którego szczegóły chcesz wyświetlić. Identyfikator powiadomienia znajdziesz w odpowiedziach, gdy przeglądasz wysłane powiadomienia.
Na przykład to wywołanie cURL zawiera szczegóły powiadomienia o identyfikatorze 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
Oto przykład takiej odpowiedzi:
{ "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 }
Ponowne przetwarzanie powiadomienia
Przetwórz ponownie powiadomienie, wysyłając żądanie POST do tego zasobu:
/organizations/{org_name}/notification-service-items/{notification_id}/reprocess
Gdzie:
{org_name}
określa nazwę organizacji.{notification_id}
określa identyfikator elementu powiadomienia, którego szczegóły chcesz wyświetlić. Identyfikator powiadomienia znajdziesz w odpowiedziach, gdy przeglądasz wysłane powiadomienia.
Na przykład to wywołanie cURL ponownie przetwarza powiadomienie o identyfikatorze 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 }