通知設定をテストする

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動
情報

はじめに

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

Webhook のテスト

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

次の手順で Webhook をテストできます。

  1. 使用可能な Webhook 通知トリガーの種類を確認する
  2. Webhook 通知テスト用のリクエスト ペイロードのサンプルを表示する
  3. Webhook の実行をテストする

使用可能な webhook 通知トリガーの種類を表示する

次のリソースに GET リクエストを発行して、使用可能な 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 を含む料金プランの詳細を表示するには、 料金プランのページをご覧ください。

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

ここで

たとえば、次の 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 文字のみ)

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

  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 またはウェブフック。

返される通知は最大 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
}