Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Pengantar
Monetisasi menyediakan serangkaian API yang dapat Anda gunakan untuk menguji penyiapan notifikasi. Secara khusus, Anda dapat:
- Menguji eksekusi webhook untuk memastikan notifikasi dikirim
- Meninjau dan memproses ulang notifikasi yang dikirim
Menguji webhook
Webhook menentukan handler callback HTTP yang dipicu oleh sebuah peristiwa. Untuk informasi tentang cara menyiapkan webhook, lihat Menyiapkan notifikasi menggunakan webhook.
Anda dapat menguji webhook dengan melakukan langkah-langkah berikut:
- Melihat jenis pemicu notifikasi webhook yang tersedia
- Melihat contoh payload permintaan untuk pengujian notifikasi webhook
- Menguji eksekusi webhook
Melihat jenis pemicu notifikasi webhook yang tersedia
Lihat jenis pemicu notifikasi webhook yang tersedia dengan mengeluarkan permintaan GET ke resource berikut:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
Dengan keterangan:
{org_name}
menentukan nama organisasi.{webhook_id}
menentukan ID webhook. Untuk melihat daftar webhook dan mendapatkan ID webhook, lihat Melihat semua webhook menggunakan API.{developer_email_or_id}
menentukan ID developer. Untuk melihat daftar developer, lihat Daftar Developer.{app_id}
menentukan ID aplikasi yang pemicu webhook-nya sedang Anda uji. Untuk mencantumkan ID aplikasi di organisasi Anda, lihat Mencantumkan ID Aplikasi di Organisasi.{product_id}
menentukan ID produk API yang pemicu webhook-nya sedang Anda uji. Untuk melihat daftar produk API untuk organisasi, lihat Mencantumkan Produk API.{rateplan_id}
menentukan ID paket tarif yang pemicu webhook-nya sedang Anda uji. ID paket tarif berbeda dengan nama tampilan. Untuk melihat detail paket tarif, termasuk ID, lihat Menjelajahi halaman paket tarif.
Misalnya, panggilan cURL berikut menampilkan RATEPLANQUOTAUSAGE
sebagai jenis pemicu notifikasi 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
Berikut ini contoh responsnya:
[ "RATEPLANQUOTAUSAGE" ]
Selanjutnya, Anda harus menentukan skema untuk payload permintaan untuk jenis pemicu notifikasi webhook.
Melihat contoh payload permintaan untuk pengujian notifikasi webhook
Lihat contoh payload permintaan yang dapat Anda gunakan untuk pengujian notifikasi webhook dengan mengirimkan permintaan GET ke resource berikut:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}
Dengan keterangan:
{org_name}
menentukan nama organisasi.{webhook_id}
menentukan ID webhook. Untuk melihat daftar webhook dan mendapatkan ID webhook, lihat Melihat semua webhook menggunakan API.{developer_email_or_id}
menentukan ID developer. Untuk melihat daftar developer, lihat Daftar Developer.{app_id}
menentukan ID aplikasi yang pemicu webhook-nya sedang Anda uji. Untuk mencantumkan ID aplikasi di organisasi Anda, lihat Mencantumkan ID Aplikasi di Organisasi.{product_id}
menentukan ID produk API yang pengujian pemicu webhook-nya sedang Anda lakukan. Untuk melihat daftar produk API untuk organisasi, lihat Mencantumkan Produk API.{rateplan_id}
menentukan ID paket tarif tempat Anda menguji pemicu webhook. ID paket tarif berbeda dengan nama tampilan. Untuk melihat detail paket tarif, termasuk ID, lihat Menjelajahi halaman paket tarif.{trigger_type}
menentukan nama jenis pemicu notifikasi webhook yang ditampilkan di langkah sebelumnya (Mencantumkan jenis pemicu notifikasi webhook yang tersedia).
Misalnya, panggilan cURL berikut menampilkan contoh payload permintaan untuk jenis pemicu notifikasi 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
Berikut adalah contoh payload permintaan:
{ "eventTriggerReason": "RATEPLANQUOTAUSAGE", "properties": [ { "key": "quotaPercentUsed", "value": "100" } ] }
Selanjutnya, Anda akan mengubah payload permintaan contoh yang ditampilkan, sesuai keinginan, dan menggunakannya untuk menguji eksekusi webhook.
Menguji eksekusi webhook
Uji eksekusi webhook dengan mengeluarkan permintaan POST ke resource berikut:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
.
Dengan keterangan:
{org_name}
menentukan nama organisasi.{webhook_id}
menentukan ID webhook. Untuk melihat daftar webhook dan mendapatkan ID webhook, lihat Melihat semua webhook menggunakan API.{developer_email_or_id}
menentukan ID developer. Untuk melihat daftar developer, lihat Daftar Developer.{app_id}
menentukan ID aplikasi tempat Anda menguji pemicuan webhook. Untuk mencantumkan ID aplikasi di organisasi Anda, lihat Mencantumkan ID Aplikasi di Organisasi.{product_id}
menentukan ID produk API yang pengujian pemicu webhook-nya sedang Anda lakukan. Untuk melihat daftar produk API untuk organisasi, lihat Membuat Daftar Produk API.{rateplan_id}
menentukan ID paket tarif yang pemicu webhook-nya sedang Anda uji. ID paket tarif berbeda dengan nama tampilan. Untuk melihat detail paket tarif, termasuk ID, lihat Menjelajahi halaman paket tarif.
Ubah payload permintaan contoh yang ditampilkan di langkah sebelumnya (Lihat payload permintaan contoh untuk pengujian notifikasi webhook) sesuai keinginan, dan teruskan dalam payload permintaan.
Misalnya, panggilan cURL berikut menguji eksekusi webhook yang ditentukan:
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
Berikut adalah contoh respons yang menunjukkan bahwa notifikasi berhasil dikirim ke 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" }
Melihat dan memproses ulang notifikasi
Monetisasi memungkinkan Anda menyiapkan notifikasi yang dipicu oleh peristiwa tertentu. Untuk informasi tentang cara menyiapkan notifikasi, lihat Menyiapkan notifikasi
Untuk setiap notifikasi yang dikirim, informasi berikut akan disimpan:
- Coba hitung lagi
- Response code
- Header respons
- Konten respons (hanya 1.000 karakter pertama)
Anda dapat melihat dan memproses ulang notifikasi dengan melakukan langkah-langkah berikut:
Melihat notifikasi yang dikirim
Lihat notifikasi yang telah dikirim untuk organisasi dengan mengeluarkan permintaan GET ke resource berikut:
/organizations/{org_name}/notification-service-items
Tempat {org_name}
menentukan nama organisasi.
Anda juga dapat menentukan satu atau beberapa parameter kueri berikut untuk memfilter daftar notifikasi yang ditampilkan dalam respons:
Parameter Kueri | Deskripsi |
---|---|
startdate |
Tanggal mulai dalam format YYYY-MM-DD HH:mm:ss . |
enddate |
Tanggal akhir dalam format YYYY-MM-DD HH:mm:ss . |
status |
Status notifikasi. Nilai yang valid mencakup:
|
toemail |
ID email atau webhook yang menerima notifikasi. |
Maksimum 1.000 notifikasi akan ditampilkan.
Dalam respons, tanda hasMoreItems
menunjukkan apakah jumlah notifikasi dalam daftar yang ditentukan berjumlah lebih dari 1.000. Jika hasMoreItems
adalah
true
, yang menunjukkan bahwa ada lebih banyak notifikasi daripada yang dapat ditampilkan, dan Anda
ingin melihat notifikasi yang tersisa, Anda perlu menyaring filter parameter kueri
untuk memproses grup notifikasi yang lebih kecil per permintaan. Misalnya, Anda dapat membuat beberapa
permintaan menggunakan beberapa rentang tanggal yang lebih kecil, atau menampilkan notifikasi hanya dengan nilai status
tertentu.
Misalnya, panggilan cURL berikut mencantumkan notifikasi yang GAGAL untuk webhook yang ditentukan dalam rentang tanggal yang ditentukan:
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
Berikut adalah contoh respons:
{ "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 } ] }
Melihat detail untuk notifikasi
Lihat detail untuk notifikasi tertentu dengan mengeluarkan permintaan GET ke resource berikut:
/organizations/{org_name}/notification-service-items/{notification_id}
Dengan keterangan:
{org_name}
menentukan nama organisasi.{notification_id}
menentukan ID notifikasi yang detailnya ingin Anda tampilkan. Anda bisa mendapatkan ID notifikasi dari output respons saat melihat notifikasi yang dikirim.
Misalnya, panggilan cURL berikut mencantumkan detail untuk notifikasi dengan 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
Berikut ini contoh responsnya:
{ "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 }
Memproses ulang notifikasi
Proses ulang notifikasi dengan mengeluarkan permintaan POST ke resource berikut:
/organizations/{org_name}/notification-service-items/{notification_id}/reprocess
Dengan keterangan:
{org_name}
menentukan nama organisasi.{notification_id}
menentukan ID item notifikasi yang detailnya ingin Anda tampilkan. Anda bisa mendapatkan ID notifikasi dari output respons saat melihat notifikasi yang dikirim.
Misalnya, panggilan cURL berikut memproses ulang notifikasi dengan 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 }