Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Introdução
A monetização fornece um conjunto de APIs que podem ser usadas para testar sua configuração de notificações. Mais especificamente, será possível fazer o seguinte:
- Testar a execução de webhooks para garantir que as notificações sejam sendo enviados
- Analisar e reprocessar as notificações enviadas
Como testar webhooks
Um webhook define um gerenciador de callback HTTP acionado por um evento. Para informações sobre a configuração de webhooks, consulte Configurar notificações usando webhooks.
Para testar os webhooks, siga estas etapas:
- Visualizar os tipos de acionadores de notificação de webhook disponíveis
- Veja um exemplo de payload de solicitação para notificação webhook testes
- Testar a execução de um webhook
Como visualizar os tipos de gatilho de notificação de webhook disponíveis
Veja os tipos de acionadores de notificação de webhook disponíveis emitindo 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 obter o ID do webhook, consulte Como exibir todos os webhooks usando o API.{developer_email_or_id}
especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte a Lista Desenvolvedores.{app_id}
especifica o ID do aplicativo em que você está testando o webhook. gatilhos. Para listar os IDs de aplicativos em sua organização, consulte Listar IDs de aplicativos em uma Organização.{product_id}
especifica o ID do produto de API que você está testando. gatilho de webhook. Para ver uma lista dos produtos de API de uma organização, consulte Listar produtos da API.{rateplan_id}
especifica o ID do plano de tarifas que você está testando. gatilho de webhook. O ID do plano de tarifação é diferente do nome de exibição. Para acessar o plano de tarifa 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 webhook.
tipo de acionador de notificação.
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, é preciso determinar o esquema do payload da solicitação para a notificação do webhook tipo de acionador.
Como exibir um payload de solicitação de amostra para uma notificação de webhook testes
Veja um exemplo de payload de solicitação que pode ser usado para testes de notificação de webhook emitindo uma 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 obter o ID do webhook, consulte Como exibir todos os webhooks usando o API.{developer_email_or_id}
especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte a Lista Desenvolvedores.{app_id}
especifica o ID do aplicativo em que você está testando o webhook. gatilhos. Para listar os IDs de aplicativos em sua organização, consulte Listar IDs de aplicativos em uma Organização.{product_id}
especifica o ID do produto de API que você está testando. gatilho de webhook. Para ver uma lista dos produtos de API de uma organização, consulte Listar produtos da API.{rateplan_id}
especifica o ID do plano de tarifas que você está testando. gatilho de webhook. O ID do plano de tarifação é diferente do nome de exibição. Para acessar o plano de tarifa 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 (liste o webhook disponível tipos de acionadores de notificação).
Por exemplo, a chamada de cURL a seguir retorna um exemplo de payload de solicitação para o
Tipo de acionador de notificação do 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/RATEPLANQUOTAUSAGE" \ -u email:password
Veja a seguir um exemplo de payload de solicitação:
{ "eventTriggerReason": "RATEPLANQUOTAUSAGE", "properties": [ { "key": "quotaPercentUsed", "value": "100" } ] }
Em seguida, modifique o payload da solicitação de amostra retornado, conforme desejado, e use-o para testar o a execução do webhook.
Como testar a execução de um webhook
Teste a execução de um webhook emitindo 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 obter o ID do webhook, consulte Como exibir todos os webhooks usando o API.{developer_email_or_id}
especifica o ID do desenvolvedor. Para conferir uma lista de desenvolvedores, consulte a Lista Desenvolvedores.{app_id}
especifica o ID do aplicativo em que você está testando o webhook. gatilhos. Para listar os IDs de aplicativos em sua organização, consulte Listar IDs de aplicativos em uma Organização.{product_id}
especifica o ID do produto de API que você está testando. gatilho de webhook. Para ver uma lista dos produtos de API de uma organização, consulte Listar produtos da API.{rateplan_id}
especifica o ID do plano de tarifas que você está testando. gatilho de webhook. O ID do plano de tarifação é diferente do nome de exibição. Para acessar o plano de tarifa 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 (Visualizar um payload de solicitação de amostra para testes de notificação de webhook) como desejado e transmiti-lo 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 indicando que a notificação foi enviada 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 visualizar e reprocessar notificações
A monetização permite que você configure notificações que são acionadas por eventos específicos. Para 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 (apenas os primeiros mil caracteres)
Para visualizar e reprocessar notificações, siga estas etapas:
Visualização das notificações enviadas
Visualize as notificações que foram enviadas para uma organização emitindo uma solicitação GET para o seguinte recurso:
/organizations/{org_name}/notification-service-items
Em que {org_name}
especifica o nome da organização.
Opcionalmente, você pode especificar um ou mais dos seguintes parâmetros de consulta 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 do e-mail ou webhook para onde a notificação foi enviada. |
São retornadas no máximo 1.000 notificações.
Na resposta, a sinalização hasMoreItems
indica se o número de
na lista especificada é maior que 1.000. Se hasMoreItems
for
true
, indicando que há mais notificações do que poderiam ser exibidas, e você
quiser visualizar as notificações restantes, será necessário refinar seus filtros de parâmetros de consulta
para processar grupos menores de notificações por solicitação. Por exemplo, é possível fazer várias
solicitações usando vários períodos menores ou retornar notificações com apenas alguns status
e a distribuição dos valores dos dados.
Por exemplo, a chamada de cURL a seguir lista as notificações que FALHOU para o webhook dentro do 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 visualizar os detalhes de uma notificação
Veja os detalhes de uma notificação específica emitindo 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 a que você quer exibir detalhes. Você pode conseguir o ID da notificação na saída da resposta ao visualizar 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 reprocessar uma notificação
Reprocesse uma notificação emitindo 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 a que você quer para exibir detalhes. Você pode conseguir o ID da notificação na saída da resposta ao visualizar as notificações enviadas.
Por exemplo, a chamada de cURL a seguir reprocessa a notificação com 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 }