Apigee Edge 문서입니다.
Go to the
Apigee X 문서로 이동합니다. info
소개
수익 창출은 알림 설정을 테스트하는 데 사용할 수 있는 API 집합을 제공합니다. 구체적으로 말하자면 다음을 수행할 수 있습니다.
- 웹훅 실행을 테스트하여 알림이 전송되는지 확인합니다.
- 전송된 알림을 검토하고 다시 처리합니다.
웹훅 테스트
웹훅은 이벤트에 의해 트리거되는 HTTP 콜백 핸들러를 정의합니다. 웹훅 설정에 대한 자세한 내용은 웹훅을 사용하여 알림 설정을 참고하세요.
다음 단계를 수행하여 웹훅을 테스트할 수 있습니다.
사용 가능한 웹훅 알림 트리거 유형 보기
다음 리소스에 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}는 웹훅 트리거링을 테스트하는 애플리케이션의 ID를 지정합니다. 조직의 앱 ID를 나열하려면 조직의 앱 ID 나열 을 참고하세요.{product_id}는 웹훅 트리거를 테스트하는 API 제품의 ID를 지정합니다. 조직의 API 제품 목록을 보려면 API 제품 목록을 참고하세요.{rateplan_id}는 웹훅 트리거를 테스트하는 요금제의 ID를 지정합니다. 요금제 ID는 표시 이름과 다릅니다. ID를 포함한 요금제 세부정보를 보려면 요금제 페이지 살펴보기
예를 들어 다음 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" \ -u email:password
다음은 응답의 예시입니다.
[ "RATEPLANQUOTAUSAGE" ]
다음으로 웹훅 알림 트리거 유형의 요청 페이로드 스키마를 결정해야 합니다.
웹훅 알림 테스트에 사용할 수 있는 샘플 요청 페이로드 보기
다음 리소스에 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}는 웹훅 트리거를 테스트하는 요금제의 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}는 웹훅 트리거링을 테스트하는 애플리케이션의 ID를 지정합니다. 조직의 앱 ID를 나열하려면 조직의 앱 ID 나열 을 참고하세요.{product_id}는 웹훅 트리거를 테스트하는 API 제품의 ID를 지정합니다. 조직의 API 제품 목록을 보려면 API 제품 목록을 참고하세요.{rateplan_id}는 웹훅 트리거를 테스트하는 요금제의 ID를 지정합니다. 요금제 ID는 표시 이름과 다릅니다. ID를 포함한 요금제 세부정보를 보려면 요금제 페이지 살펴보기
이전 단계 (웹훅 알림 테스트에 사용할 수 있는 샘플 요청 페이로드 보기)에서 반환된 샘플 요청 페이로드를 원하는 대로 수정하고 요청 페이로드에 전달합니다.
예를 들어 다음 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
다음은 알림이 웹훅에 성공적으로 전송되었음을 나타내는 응답의 예시입니다.
{
"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 플래그는 지정된 목록의 알림 수가 1000개를 초과하는지 여부를 나타냅니다. hasMoreItems가
true이면 표시할 수 있는 것보다 더 많은 알림이 있음을 나타내며 나머지 알림을 보려면 요청당 더 작은 알림 그룹을 처리하도록 쿼리 매개변수 필터를 세분화해야 합니다. 예를 들어 여러 개의 작은 날짜 범위를 사용하여 여러
요청을 하거나 특정 상태
값만 있는 알림을 반환할 수 있습니다.
예를 들어 다음 cURL 호출은 지정된 날짜 범위 내에서 지정된 웹훅에 대해 실패한 알림을 나열합니다.
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
}