通知設定をテストする

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

はじめに

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

Webhook をテストする

Webhook は、イベントによってトリガーされる HTTP コールバック ハンドラを定義します。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}

ここで

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