Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Introdução
A monetização oferece um conjunto de APIs que podem ser usadas para testar a configuração de notificação. Mais especificamente, será possível fazer o seguinte:
- Testar a execução de webhooks para garantir que as notificações estejam sendo enviadas
- Revisar e processar novamente as notificações enviadas
Como testar webhooks
Um webhook define um gerenciador de callback HTTP acionado por um evento. Para mais informações sobre como configurar webhooks, consulte Configurar notificações usando webhooks.
Para testar seus webhooks, siga estas etapas:
- Conferir os tipos de acionadores de notificação de webhook disponíveis
- Conferir um payload de solicitação de amostra para testes de notificação de webhook
- Testar a execução de um webhook
Como conferir os tipos de acionadores de notificação de webhook disponíveis
Para conferir os tipos de acionadores de notificação de webhook disponíveis, emita uma solicitação GET para o seguinte recurso:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}
Em que:
{org_name}especifica o nome da organização.{webhook_id}especifica o ID do webhook. Para conferir uma lista de webhooks e receber o ID do webhook, consulte Como conferir todos os webhooks usando a API.{developer_email_or_id}especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte Listar desenvolvedores.{app_id}especifica o ID do aplicativo para o qual você está testando o acionamento do webhook. Para listar os IDs de aplicativos na sua organização, consulte Listar IDs de aplicativos em uma organização.{product_id}especifica o ID do produto da API para o qual você está testando o acionamento do webhook. Para conferir uma lista de produtos da API de uma organização, consulte Listar produtos da API.{rateplan_id}especifica o ID do plano de tarifas para o qual você está testando o acionamento do webhook. O ID do plano de tarifas é diferente do nome de exibição. Para conferir os detalhes do plano de tarifas , incluindo o ID, consulte Como explorar a página de planos de tarifas.
Por exemplo, a chamada de cURL a seguir retorna RATEPLANQUOTAUSAGE como o tipo de acionador de notificação de 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
Veja a seguir um exemplo de resposta:
[ "RATEPLANQUOTAUSAGE" ]
Em seguida, determine o esquema do payload da solicitação para o tipo de acionador de notificação de webhook.
Como conferir um payload de solicitação de amostra para testes de notificação de webhook
Para conferir um payload de solicitação de amostra que pode ser usado para testes de notificação de webhook, emita uma solicitação GET para o seguinte recurso:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}
Em que:
{org_name}especifica o nome da organização.{webhook_id}especifica o ID do webhook. Para conferir uma lista de webhooks e receber o ID do webhook, consulte Como conferir todos os webhooks usando a API.{developer_email_or_id}especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte Listar desenvolvedores.{app_id}especifica o ID do aplicativo para o qual você está testando o acionamento do webhook. Para listar os IDs de aplicativos na sua organização, consulte Listar IDs de aplicativos em uma organização.{product_id}especifica o ID do produto da API para o qual você está testando o acionamento do webhook. Para conferir uma lista de produtos da API de uma organização, consulte Listar produtos da API.{rateplan_id}especifica o ID do plano de tarifas para o qual você está testando o acionamento do webhook. O ID do plano de tarifas é diferente do nome de exibição. Para conferir os detalhes do plano de tarifas , incluindo o ID, consulte Como explorar a página de planos de tarifas.{trigger_type}especifica o nome do tipo de acionador de notificação de webhook retornado na etapa anterior (Listar os tipos de acionadores de notificação de webhook disponíveis).
Por exemplo, a chamada de cURL a seguir retorna um payload de solicitação de amostra para o
RATEPLANQUOTAUSAGE tipo de acionador de notificação de 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
Confira a seguir um payload de solicitação de amostra:
{
"eventTriggerReason": "RATEPLANQUOTAUSAGE",
"properties": [
{
"key": "quotaPercentUsed",
"value": "100"
}
]
}
Em seguida, modifique o payload de solicitação de amostra retornado conforme desejado e use-o para testar a execução do webhook.
Como testar a execução de um webhook
Para testar a execução de um webhook, emita uma solicitação POST para o seguinte recurso:
/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}.
Em que:
{org_name}especifica o nome da organização.{webhook_id}especifica o ID do webhook. Para conferir uma lista de webhooks e receber o ID do webhook, consulte Como conferir todos os webhooks usando a API.{developer_email_or_id}especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte Listar desenvolvedores.{app_id}especifica o ID do aplicativo para o qual você está testando o acionamento do webhook. Para listar os IDs de aplicativos na sua organização, consulte Listar IDs de aplicativos em uma organização.{product_id}especifica o ID do produto da API para o qual você está testando o acionamento do webhook. Para conferir uma lista de produtos da API de uma organização, consulte Listar produtos da API.{rateplan_id}especifica o ID do plano de tarifas para o qual você está testando o acionamento do webhook. O ID do plano de tarifas é diferente do nome de exibição. Para conferir os detalhes do plano de tarifas , incluindo o ID, consulte Como explorar a página de planos de tarifas.
Modifique o payload de solicitação de amostra retornado na etapa anterior (Conferir um payload de solicitação de amostra para testes de notificação de webhook) conforme desejado e transmita-o no payload da solicitação.
Por exemplo, a chamada de cURL a seguir testa a execução do webhook especificado:
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
Veja a seguir um exemplo de resposta que indica que a notificação foi enviada com sucesso para o 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"
}
Como conferir e processar novamente notificações
A monetização permite configurar notificações acionadas por eventos específicos. Para mais informações sobre como configurar notificações, consulte Configurar notificações
Para cada notificação enviada, as seguintes informações são armazenadas:
- Repetir contagem
- Código de resposta
- Cabeçalho de resposta
- Conteúdo da resposta (somente os primeiros 1.000 caracteres)
Para conferir e processar novamente as notificações, siga estas etapas:
- Conferir as notificações enviadas
- Conferir detalhes de uma notificação
- Processar novamente uma notificação
Como conferir as notificações enviadas
Para conferir as notificações enviadas para uma organização, emita uma solicitação GET para o seguinte recurso:
/organizations/{org_name}/notification-service-items
Em que {org_name} especifica o nome da organização.
Também é possível especificar um ou mais dos parâmetros de consulta a seguir para filtrar a lista de notificações retornadas na resposta:
| Parâmetro de consulta | Descrição |
|---|---|
startdate |
Data de início no formato YYYY-MM-DD HH:mm:ss. |
enddate |
Data de término no formato YYYY-MM-DD HH:mm:ss. |
status |
Status das notificações. Os valores válidos incluem:
|
toemail |
ID de e-mail ou webhook para o qual a notificação foi enviada. |
Um máximo de 1.000 notificações são retornadas.
Na resposta, a flag hasMoreItems indica se o número de
notificações na lista especificada é maior que 1.000. Se hasMoreItems for
true, indicando que há mais notificações do que podem ser exibidas, e você
quiser conferir as notificações restantes, refine os filtros de parâmetros de consulta
para processar grupos menores de notificações por solicitação. Por exemplo, você pode fazer várias
solicitações usando vários intervalos de datas menores ou retornar notificações com apenas determinados valores de status.
Por exemplo, a chamada de cURL a seguir lista as notificações que FALHARAM para o webhook especificado no intervalo de datas especificado:
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
Veja a seguir um exemplo de resposta:
{
"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
}
]
}
Como conferir detalhes de uma notificação
Para conferir os detalhes de uma notificação específica, emita uma solicitação GET para o seguinte recurso:
/organizations/{org_name}/notification-service-items/{notification_id}
Em que:
{org_name}especifica o nome da organização.{notification_id}especifica o ID da notificação para a qual você quer mostrar detalhes. É possível receber o ID da notificação na saída da resposta ao conferir as notificações enviadas.
Por exemplo, a chamada de cURL a seguir lista detalhes da notificação com o 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
Veja a seguir um exemplo de resposta:
{
"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
}
Como processar novamente uma notificação
Para processar novamente uma notificação, emita uma solicitação POST para o seguinte recurso:
/organizations/{org_name}/notification-service-items/{notification_id}/reprocess
Em que:
{org_name}especifica o nome da organização.{notification_id}especifica o ID do item de notificação para o qual você quer mostrar detalhes. É possível receber o ID da notificação na saída da resposta ao conferir as notificações enviadas.
Por exemplo, a chamada de cURL a seguir processa novamente a notificação com o 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
}