Apigee Edge 문서입니다.
Apigee X 문서로 이동하세요. 정보
소개
수익 창출은 알림 설정을 테스트하는 데 사용할 수 있는 API 세트를 제공합니다. 구체적으로 말하자면 다음을 수행할 수 있습니다.
- Webhook 실행 테스트를 통해 알림이 전송되는지 확인합니다.
- 전송된 알림 검토 및 재처리하기
웹훅 테스트
웹훅은 이벤트에 의해 트리거되는 HTTP 콜백 핸들러를 정의합니다. 웹훅 설정에 관한 자세한 내용은 웹훅을 사용하여 알림 설정을 참고하세요.
다음 단계에 따라 Webhook을 테스트할 수 있습니다.
사용 가능한 Webhook 알림 트리거 유형 보기
다음 리소스에 GET 요청을 실행하여 사용 가능한 웹훅 알림 트리거 유형을 확인합니다.
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
각 항목의 의미는 다음과 같습니다.
{org_name}
는 조직의 이름을 지정합니다.{webhook_id}
는 웹훅의 ID를 지정합니다. 웹훅 목록을 보고 웹훅 ID를 가져오려면 API를 사용하여 모든 웹훅 보기를 참고하세요.{developer_email_or_id}
는 개발자의 ID를 지정합니다. 개발자 목록을 보려면 개발자 목록을 참고하세요.{app_id}
는 webhook 트리거를 테스트하는 애플리케이션의 ID를 지정합니다. 조직의 앱 ID를 나열하려면 조직의 앱 ID 나열을 참고하세요.{product_id}
는 웹훅 트리거를 테스트하는 API 제품의 ID를 지정합니다. 조직의 API 제품 목록을 보려면 API 제품 나열을 참고하세요.{rateplan_id}
는 webhook 트리거를 테스트하는 요금제의 ID를 지정합니다. 요금제 ID는 표시 이름과 다릅니다. ID를 비롯한 요금제 세부정보를 보려면 요금제 살펴보기 페이지를 참고하세요.
예를 들어 다음 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" \ -u email:password
다음은 응답의 예시입니다.
[ "RATEPLANQUOTAUSAGE" ]
다음으로 webhook 알림 트리거 유형의 요청 페이로드 스키마를 결정해야 합니다.
웹훅 알림 테스트를 위한 샘플 요청 페이로드 보기
다음 리소스에 GET 요청을 실행하여 웹훅 알림 테스트에 사용할 수 있는 샘플 요청 페이로드를 확인합니다.
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}
각 항목의 의미는 다음과 같습니다.
{org_name}
는 조직의 이름을 지정합니다.{webhook_id}
는 웹훅의 ID를 지정합니다. 웹훅 목록을 보고 웹훅 ID를 가져오려면 API를 사용하여 모든 웹훅 보기를 참고하세요.{developer_email_or_id}
는 개발자의 ID를 지정합니다. 개발자 목록을 보려면 개발자 나열을 참조하세요.{app_id}
는 웹훅 트리거를 테스트할 애플리케이션의 ID를 지정합니다. 조직의 앱 ID를 나열하려면 조직의 앱 ID 나열을 참고하세요.{product_id}
는 웹훅 트리거를 테스트하는 API 제품의 ID를 지정합니다. 조직의 API 제품 목록을 보려면 API 제품 나열을 참조하세요.{rateplan_id}
는 webhook 트리거를 테스트하는 요금제의 ID를 지정합니다. 요금제 ID는 표시 이름과 다릅니다. ID를 포함한 요금제 세부정보를 보려면 요금제 탐색 페이지를 참조하세요.{trigger_type}
은 이전 단계에서 반환된 웹훅 알림 트리거 유형의 이름을 지정합니다 (사용 가능한 웹훅 알림 트리거 유형 나열).
예를 들어 다음 cURL 호출은 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
다음은 샘플 요청 페이로드입니다.
{ "eventTriggerReason": "RATEPLANQUOTAUSAGE", "properties": [ { "key": "quotaPercentUsed", "value": "100" } ] }
그런 다음 반환된 샘플 요청 페이로드를 원하는 대로 수정하고 이를 사용하여 웹훅 실행을 테스트합니다.
웹훅 실행 테스트
다음 리소스에 POST 요청을 실행하여 웹훅 실행을 테스트합니다.
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
.
각 항목의 의미는 다음과 같습니다.
{org_name}
는 조직의 이름을 지정합니다.{webhook_id}
는 웹훅의 ID를 지정합니다. 웹훅 목록을 보고 웹훅 ID를 가져오려면 API를 사용하여 모든 웹훅 보기를 참고하세요.{developer_email_or_id}
는 개발자의 ID를 지정합니다. 개발자 목록을 보려면 개발자 나열을 참조하세요.{app_id}
는 webhook 트리거를 테스트하는 애플리케이션의 ID를 지정합니다. 조직의 앱 ID를 나열하려면 조직의 앱 ID 나열을 참고하세요.{product_id}
는 웹훅 트리거를 테스트하는 API 제품의 ID를 지정합니다. 조직의 API 제품 목록을 보려면 API 제품 나열을 참고하세요.{rateplan_id}
은 웹훅 트리거를 테스트할 요금제의 ID를 지정합니다. 요금제 ID는 표시 이름과 다릅니다. ID를 포함한 요금제 세부정보를 보려면 요금제 탐색 페이지를 참조하세요.
이전 단계 (Webhook 알림 테스트를 위한 샘플 요청 페이로드 보기)에서 반환된 샘플 요청 페이로드를 원하는 대로 수정하고 요청 페이로드에 전달합니다.
예를 들어 다음 cURL 호출은 지정된 웹훅의 실행을 테스트합니다.
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자만)
다음 단계에 따라 알림을 확인하고 다시 처리할 수 있습니다.
전송된 알림 보기
다음 리소스에 GET 요청을 실행하여 조직에 전송된 알림을 확인합니다.
/organizations/{org_name}/notification-service-items
여기서 {org_name}
은 조직의 이름을 지정합니다.
원하는 경우 다음 쿼리 매개변수 중 하나 이상을 지정하여 응답에 반환된 알림 목록을 필터링할 수 있습니다.
쿼리 매개변수 | 설명 |
---|---|
startdate |
YYYY-MM-DD HH:mm:ss 형식의 시작일입니다. |
enddate |
YYYY-MM-DD HH:mm:ss 형식의 종료일입니다. |
status |
알림의 상태입니다. 유효한 값은 다음과 같습니다.
|
toemail |
알림이 전송된 이메일 ID 또는 웹훅입니다. |
최대 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 }