Thiết lập thông báo thử nghiệm

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Giới thiệu

Tính năng kiếm tiền cung cấp một bộ API mà bạn có thể dùng để kiểm thử chế độ thiết lập thông báo. Cụ thể, bạn có thể:

Kiểm thử webhook

Webhook xác định trình xử lý gọi lại HTTP được kích hoạt bởi một sự kiện. Để biết thông tin về cách thiết lập webhook, hãy xem bài viết Thiết lập thông báo bằng webhook.

Bạn có thể kiểm tra webhook bằng cách thực hiện các bước sau:

  1. Xem các loại điều kiện kích hoạt thông báo webhook hiện có
  2. Xem tải trọng yêu cầu mẫu để kiểm thử thông báo webhook
  3. Kiểm tra việc thực thi webhook

Xem các loại điều kiện kích hoạt thông báo webhook có sẵn

Xem các loại điều kiện kích hoạt thông báo webhook hiện có bằng cách gửi yêu cầu GET đến tài nguyên sau:

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

Trong trường hợp:

  • {org_name} chỉ định tên của tổ chức.
  • {webhook_id} chỉ định mã nhận dạng của webhook. Để xem danh sách webhook và lấy mã webhook, hãy xem bài viết Xem tất cả webhook bằng API.
  • {developer_email_or_id} chỉ định mã nhận dạng của nhà phát triển. Để xem danh sách nhà phát triển, hãy chuyển đến phần Nhà phát triển danh sách.
  • {app_id} chỉ định mã nhận dạng của ứng dụng mà bạn đang kiểm tra trạng thái kích hoạt webhook. Để liệt kê các mã ứng dụng trong tổ chức của bạn, hãy xem bài viết Liệt kê mã ứng dụng trong một tổ chức.
  • {product_id} chỉ định mã nhận dạng của sản phẩm API mà bạn đang kiểm thử việc kích hoạt webhook. Để xem danh sách các sản phẩm API cho một tổ chức, hãy xem Liệt kê các sản phẩm API.
  • {rateplan_id} chỉ định mã của gói giá mà bạn đang kiểm thử việc kích hoạt webhook. Mã gói giá khác với tên hiển thị. Để xem thông tin chi tiết về gói giá, bao gồm cả mã nhận dạng, hãy xem bài viết Khám phá trang gói giá.

Ví dụ: lệnh gọi cURL sau đây trả về RATEPLANQUOTAUSAGE dưới dạng loại điều kiện kích hoạt thông báo 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

Sau đây là ví dụ về phản hồi:

[
  "RATEPLANQUOTAUSAGE"
]

Tiếp theo, bạn cần xác định giản đồ cho tải trọng yêu cầu đối với loại điều kiện kích hoạt thông báo webhook.

Xem tải trọng yêu cầu mẫu để kiểm thử thông báo webhook

Xem một tải trọng yêu cầu mẫu mà bạn có thể sử dụng để kiểm tra thông báo webhook bằng cách gửi yêu cầu GET đến tài nguyên sau:

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

Trong trường hợp:

  • {org_name} chỉ định tên của tổ chức.
  • {webhook_id} chỉ định mã nhận dạng của webhook. Để xem danh sách webhook và lấy mã webhook, hãy xem bài viết Xem tất cả webhook bằng API.
  • {developer_email_or_id} chỉ định mã nhận dạng của nhà phát triển. Để xem danh sách nhà phát triển, hãy chuyển đến phần Nhà phát triển danh sách.
  • {app_id} chỉ định mã nhận dạng của ứng dụng mà bạn đang kiểm tra trạng thái kích hoạt webhook. Để liệt kê các mã ứng dụng trong tổ chức của bạn, hãy xem bài viết Liệt kê mã ứng dụng trong một tổ chức.
  • {product_id} chỉ định mã nhận dạng của sản phẩm API mà bạn đang kiểm thử việc kích hoạt webhook. Để xem danh sách các sản phẩm API cho một tổ chức, hãy xem Liệt kê các sản phẩm API.
  • {rateplan_id} chỉ định mã của gói giá mà bạn đang kiểm thử việc kích hoạt webhook. Mã gói giá khác với tên hiển thị. Để xem thông tin chi tiết về gói giá, bao gồm cả mã nhận dạng, hãy xem bài viết Khám phá trang gói giá.
  • {trigger_type} chỉ định tên của loại điều kiện kích hoạt thông báo webhook được trả về ở bước trước (Liệt kê các loại điều kiện kích hoạt thông báo webhook có sẵn).

Ví dụ: lệnh gọi cURL sau đây trả về một tải trọng yêu cầu mẫu cho loại điều kiện kích hoạt thông báo 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

Phần sau đây cung cấp tải trọng yêu cầu mẫu:

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

Tiếp theo, bạn sửa đổi tải trọng yêu cầu mẫu được trả về như mong muốn và sử dụng dữ liệu này để kiểm tra việc thực thi webhook.

Kiểm thử việc thực thi webhook

Kiểm tra việc thực thi webhook bằng cách gửi yêu cầu POST tới tài nguyên sau:

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

Trong trường hợp:

  • {org_name} chỉ định tên của tổ chức.
  • {webhook_id} chỉ định mã nhận dạng của webhook. Để xem danh sách webhook và lấy mã webhook, hãy xem bài viết Xem tất cả webhook bằng API.
  • {developer_email_or_id} chỉ định mã nhận dạng của nhà phát triển. Để xem danh sách nhà phát triển, hãy chuyển đến phần Nhà phát triển danh sách.
  • {app_id} chỉ định mã nhận dạng của ứng dụng mà bạn đang kiểm tra trạng thái kích hoạt webhook. Để liệt kê các mã ứng dụng trong tổ chức của bạn, hãy xem bài viết Liệt kê mã ứng dụng trong một tổ chức.
  • {product_id} chỉ định mã nhận dạng của sản phẩm API mà bạn đang kiểm thử việc kích hoạt webhook. Để xem danh sách các sản phẩm API cho một tổ chức, hãy xem Liệt kê các sản phẩm API.
  • {rateplan_id} chỉ định mã của gói giá mà bạn đang kiểm thử việc kích hoạt webhook. Mã gói giá khác với tên hiển thị. Để xem thông tin chi tiết về gói giá, bao gồm cả mã nhận dạng, hãy xem bài viết Khám phá trang gói giá.

Sửa đổi tải trọng yêu cầu mẫu được trả về trong bước trước (Xem tải trọng yêu cầu mẫu để kiểm thử thông báo webhook) như mong muốn và chuyển tải trọng này vào tải trọng yêu cầu.

Ví dụ: lệnh gọi cURL sau đây kiểm tra việc thực thi webhook đã chỉ định:

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

Dưới đây là ví dụ về nội dung phản hồi cho biết rằng thông báo đã được gửi thành công đến 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"
}

Xem và xử lý lại thông báo

Tính năng kiếm tiền cho phép bạn thiết lập các thông báo được kích hoạt bởi các sự kiện cụ thể. Để biết thông tin về cách thiết lập thông báo, hãy xem bài viết Thiết lập thông báo

Đối với mỗi thông báo được gửi, thông tin sau sẽ được lưu trữ:

  • Số lần thử lại
  • Mã phản hồi
  • Tiêu đề phản hồi
  • Nội dung phản hồi (chỉ 1.000 ký tự đầu tiên)

Bạn có thể xem và xử lý lại thông báo bằng cách thực hiện các bước sau:

  1. Xem thông báo đã gửi
  2. Xem chi tiết về thông báo
  3. Xử lý lại thông báo

Xem thông báo đã gửi

Xem các thông báo đã được gửi cho một tổ chức bằng cách gửi yêu cầu GET đến tài nguyên sau:

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

Trong đó {org_name} chỉ định tên của tổ chức.

Nếu muốn, bạn có thể chỉ định một hoặc nhiều tham số truy vấn sau đây để lọc danh sách thông báo được trả về trong phản hồi:

Tham số truy vấn Nội dung mô tả
startdate Ngày bắt đầu ở định dạng YYYY-MM-DD HH:mm:ss.
enddate Ngày kết thúc ở định dạng YYYY-MM-DD HH:mm:ss.
status Trạng thái của thông báo. Sau đây là các giá trị hợp lệ:
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail Mã email hoặc webhook mà thông báo được gửi đến.

Hệ thống sẽ trả về tối đa 1.000 thông báo.

Trong phản hồi, cờ hasMoreItems cho biết số lượng thông báo trong danh sách được chỉ định có lớn hơn 1.000 hay không. Nếu hasMoreItemstrue, cho biết số lượng thông báo nhiều hơn số lượng có thể hiển thị và bạn muốn xem các thông báo còn lại, thì bạn cần tinh chỉnh bộ lọc tham số truy vấn để xử lý các nhóm thông báo nhỏ hơn cho mỗi yêu cầu. Ví dụ: bạn có thể đưa ra nhiều yêu cầu trong một vài phạm vi ngày nhỏ hơn hoặc trả về những thông báo chỉ có một số giá trị trạng thái nhất định.

Ví dụ: lệnh gọi cURL sau đây liệt kê các thông báo KHÔNG THÀNH CÔNG cho webhook đã chỉ định trong phạm vi ngày đã chỉ định:

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 

Sau đây là ví dụ về phản hồi:

 {
   "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 
   } 
   ] 
}

Xem chi tiết về thông báo

Xem chi tiết của một thông báo cụ thể bằng cách gửi yêu cầu GET đến tài nguyên sau:

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

Trong trường hợp:

  • {org_name} chỉ định tên của tổ chức.
  • {notification_id} chỉ định mã nhận dạng của thông báo mà bạn muốn hiện thông tin chi tiết. Bạn có thể lấy mã thông báo từ kết quả phản hồi khi xem thông báo đã gửi.

Ví dụ: lệnh gọi cURL sau đây liệt kê thông tin chi tiết về thông báo có mã 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
 

Sau đây là ví dụ về phản hồi:

 {
  "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
}

Xử lý lại thông báo

Xử lý lại thông báo bằng cách gửi yêu cầu POST tới tài nguyên sau:

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

Trong trường hợp:

  • {org_name} chỉ định tên của tổ chức.
  • {notification_id} chỉ định mã nhận dạng của mục thông báo mà bạn muốn hiện thông tin chi tiết. Bạn có thể lấy mã thông báo từ kết quả phản hồi khi xem thông báo đã gửi.

Ví dụ: lệnh gọi cURL sau đây xử lý lại thông báo có mã nhận dạng 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
}