通知設定をテストする

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

はじめに

Monetization には、通知設定のテストに使用できる API セットが用意されています。具体的には、以下のことができます。

Webhook のテスト

Webhook は、イベントによってトリガーされる HTTP コールバック ハンドラを定義します。Webhook の設定については、Webhook を使用して通知を設定するをご覧ください。

Webhook をテストするには、次の操作を行います。

  1. 利用可能な Webhook 通知トリガータイプを表示する
  2. Webhook 通知テスト用のサンプル リクエスト ペイロードを表示する
  3. 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"
}

通知の表示と再処理

収益化では、特定のイベントによってトリガーされる通知を設定できます。通知の設定について詳しくは、通知を設定するをご覧ください。

送信された通知ごとに、次の情報が保存されます。

  • 再試行回数
  • レスポンス コード
  • レスポンス ヘッダー
  • レスポンスのコンテンツ(最初の 1,000 文字のみ)

通知を表示して再処理する手順は次のとおりです。

  1. 送信済みの通知を確認する
  2. 通知の詳細を表示する
  3. 通知を再処理する

送信された通知の表示

組織に送信された通知を表示するには、次のリソースに 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 通知のステータス。有効な値は次のとおりです。
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail 通知が送信されるメール ID または Webhook。

最大 1,000 件の通知が返されます。

レスポンスの hasMoreItems フラグは、指定されたリスト内の通知の数が 1, 000 を超えているかどうかを示します。hasMoreItemstrue で、表示可能な通知数よりも多くの通知があることを示しています。残りの通知を表示するには、リクエストごとにより小さな通知グループを処理するようにクエリ パラメータ フィルタを調整する必要があります。たとえば、より短い期間を複数使用して複数のリクエストを実行する場合や、特定のステータス値のみを持つ通知を返す場合があります。

たとえば、次の 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
}