Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。 情報
はじめに
収益化には、通知設定のテストに使用できる一連の API が用意されています。具体的には、以下のことができます。
- Webhook の実行をテストして、通知が送信されていることを確認する
- 送信された通知を確認して再処理する
Webhook をテストする
Webhook は、イベントによってトリガーされる HTTP コールバック ハンドラを定義します。webhook の設定については、webhook を使用して通知を設定するをご覧ください。
ウェブフックをテストするには、次の手順を行います。
利用可能な webhook 通知トリガーのタイプを表示する
使用可能な Webhook 通知トリガー タイプを表示するには、次のリソースに GET リクエストを発行します。
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
ここで
{org_name}には、組織の名前を指定します。{webhook_id}は、Webhook の ID を指定します。Webhook のリストを表示して Webhook ID を取得するには、API を使用してすべての Webhook を表示するをご覧ください。{developer_email_or_id}は、デベロッパーの ID を指定します。デベロッパーのリストを表示するには、デベロッパーのリストを取得するをご覧ください。{app_id}は、Webhook トリガーをテストするアプリケーションの ID を指定します。組織内のアプリ ID を一覧表示するには、組織内のアプリ ID の一覧表示をご覧ください。{product_id}は、Webhook トリガーをテストする API プロダクトの ID を指定します。組織の API プロダクトのリストを表示するには、API プロダクトを一覧表示するをご覧ください。{rateplan_id}には、Webhook トリガーをテストする料金プランの ID を指定します。料金プラン ID は表示名とは異なります。ID などの料金プランの詳細を表示するには、 料金プラン ページの詳細をご覧ください。
たとえば、次の cURL 呼び出しは、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" \ -u email:password
レスポンスの例を次に示します。
[ "RATEPLANQUOTAUSAGE" ]
次に、Webhook 通知トリガー タイプのリクエスト ペイロードのスキーマを決定する必要があります。
Webhook 通知のテスト用のサンプル リクエスト ペイロードを表示する
次のリソースに GET リクエストを発行して、Webhook 通知のテストに使用できるリクエスト ペイロードのサンプルを表示します。
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}
ここで
{org_name}には、組織の名前を指定します。{webhook_id}は、Webhook の ID を指定します。Webhook のリストを表示して Webhook ID を取得するには、API を使用してすべての Webhook を表示するをご覧ください。{developer_email_or_id}は、デベロッパーの ID を指定します。デベロッパーのリストを表示するには、デベロッパーのリストを取得するをご覧ください。{app_id}は、Webhook トリガーをテストするアプリケーションの ID を指定します。組織内のアプリ ID を一覧表示するには、組織内のアプリ ID の一覧表示をご覧ください。{product_id}は、Webhook トリガーをテストする API プロダクトの ID を指定します。組織の API プロダクトのリストを表示するには、API プロダクトを一覧表示するをご覧ください。{rateplan_id}には、Webhook トリガーをテストする料金プランの ID を指定します。料金プラン ID は表示名とは異なります。ID などの料金プランの詳細を表示するには、 料金プラン ページの詳細をご覧ください。{trigger_type}は、前の手順(使用可能な Webhook 通知トリガー タイプを一覧表示する)で返された Webhook 通知トリガー タイプの名前を指定します。
たとえば、次の cURL 呼び出しは、RATEPLANQUOTAUSAGE 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
リクエスト ペイロードの例を次に示します。
{
"eventTriggerReason": "RATEPLANQUOTAUSAGE",
"properties": [
{
"key": "quotaPercentUsed",
"value": "100"
}
]
}
次に、返されたサンプル リクエスト ペイロードを必要に応じて変更し、Webhook の実行をテストするために使用します。
Webhook の実行をテストする
次のリソースに POST リクエストを発行して、Webhook の実行をテストします。
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}。
ここで
{org_name}には、組織の名前を指定します。{webhook_id}は、Webhook の ID を指定します。Webhook のリストを表示して Webhook ID を取得するには、API を使用してすべての Webhook を表示するをご覧ください。{developer_email_or_id}は、デベロッパーの ID を指定します。デベロッパーのリストを表示するには、デベロッパーのリストを取得するをご覧ください。{app_id}は、Webhook トリガーをテストするアプリケーションの ID を指定します。組織内のアプリ ID を一覧表示するには、組織内のアプリ ID の一覧表示をご覧ください。{product_id}は、Webhook トリガーをテストする API プロダクトの ID を指定します。組織の API プロダクトのリストを表示するには、API プロダクトを一覧表示するをご覧ください。{rateplan_id}には、Webhook トリガーをテストする料金プランの ID を指定します。料金プラン ID は表示名とは異なります。ID などの料金プランの詳細を表示するには、 料金プラン ページの詳細をご覧ください。
前の手順で返されたリクエスト ペイロードのサンプル(Webhook 通知テスト用のリクエスト ペイロードのサンプルを表示する)を必要に応じて変更し、リクエスト ペイロードで渡します。
たとえば、次の cURL 呼び出しは、指定された Webhook の実行をテストします。
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
以下に、通知が 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"
}
通知の表示と再処理
Monetization では、特定のイベントによってトリガーされる通知を設定できます。通知の設定については、通知を設定するをご覧ください。
送信された通知ごとに、次の情報が保存されます。
- 再試行回数
- レスポンス コード
- レスポンス ヘッダー
- レスポンスのコンテンツ(最初の 1,000 文字のみ)
通知を表示して再処理する手順は次のとおりです。
送信された通知を表示する
組織に送信された通知を表示するには、次のリソースに GET リクエストを発行します。
/organizations/{org_name}/notification-service-items
ここで、{org_name} は組織の名前を指定します。
必要に応じて、次のクエリ パラメータを 1 つ以上指定して、レスポンスで返される通知のリストをフィルタできます。
| クエリ パラメータ | 説明 |
|---|---|
startdate |
開始日(YYYY-MM-DD HH:mm:ss 形式)。 |
enddate |
終了日(YYYY-MM-DD HH:mm:ss 形式)。 |
status |
通知のステータス。有効な値は次のとおりです。
|
toemail |
通知が送信されたメール ID または Webhook。 |
最大 1,000 件の通知が返されます。
レスポンスの hasMoreItems フラグは、指定されたリスト内の通知数が 1, 000 を超えるかどうかを示します。hasMoreItems が true の場合、表示できる通知よりも多くの通知があることを示しています。残りの通知を表示するには、リクエストごとに少数の通知グループを処理するようにクエリ パラメータ フィルタを調整する必要があります。たとえば、複数の小さな期間を使用して複数のリクエストを作成したり、特定のステータス値のみを含む通知を返したりできます。
たとえば、次の cURL 呼び出しでは、指定された日付範囲内で指定された Webhook に対して失敗した通知が一覧表示されます。
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
レスポンスの例を次に示します。
{
"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
}
]
}
通知の詳細を表示する
特定のアラートの詳細を表示するには、次のリソースに GET リクエストを発行します。
/organizations/{org_name}/notification-service-items/{notification_id}
ここで
{org_name}には、組織の名前を指定します。{notification_id}は、詳細を表示する通知の ID を指定します。通知 ID は、送信された通知を表示するときに、レスポンス出力から取得できます。
たとえば、次の cURL 呼び出しは、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
レスポンスの例を次に示します。
{
"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
}
通知の再処理
通知を再処理するには、次のリソースに POST リクエストを発行します。
/organizations/{org_name}/notification-service-items/{notification_id}/reprocess
ここで
{org_name}には、組織の名前を指定します。{notification_id}は、詳細を表示する通知アイテムの ID を指定します。通知 ID は、送信された通知を表示するときに、レスポンス出力から取得できます。
たとえば、次の cURL 呼び出しは、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
}