Configuração de notificações de teste

Você está visualizando a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

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:

Como testar webhooks

Um webhook define um gerenciador de callback HTTP acionado por um evento. Para informações sobre como configurar webhooks, consulte Configurar notificações usando webhooks.

Para testar seus webhooks, siga estas etapas:

  1. Conferir os tipos de acionadores de notificação de webhook disponíveis
  2. Veja um exemplo de payload de solicitação para teste de notificação webhook
  3. Testar a execução de um webhook

Como conferir os tipos de acionador de notificação de webhook disponíveis

Confira os tipos de gatilho 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 receber o ID do webhook, consulte Como visualizar 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 apps na sua organização, consulte Listar IDs de apps 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 de API de uma organização, consulte Listar produtos de 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 mais detalhes sobre o plano de tarifas, incluindo o ID, consulte Conheça a página dos planos de tarifas.

Por exemplo, a chamada de cURL a seguir retorna RATEPLANQUOTAUSAGE como o tipo de gatilho de notificação do 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 de solicitação para o tipo de acionador de notificação do webhook.

Como exibir um payload de solicitação de amostra para teste de notificação do webhook

Confira um exemplo de payload de solicitação que pode ser usado para testar notificações de webhook 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}/{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 visualizar 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 apps na sua organização, consulte Listar IDs de apps 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 de API de uma organização, consulte Listar produtos de 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 a página Conhecer os planos de tarifas.
  • {trigger_type} especifica o nome do tipo de gatilho de notificação de webhook retornado na etapa anterior (Listar os tipos de gatilho 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 tipo de acionador de notificação de 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

Confira a seguir um exemplo de payload de solicitação:

{
   "eventTriggerReason": "RATEPLANQUOTAUSAGE",
   "properties": [
   {
        "key": "quotaPercentUsed",
        "value": "100"
   }
   ]
}

Em seguida, modifique o payload de solicitação de exemplo 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 apps na sua organização, consulte Listar IDs de apps em uma organização.
  • {product_id} especifica o ID do produto de API em que você está testando o acionamento 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 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 a página Conhecer os planos de tarifas.

Modifique o payload de solicitação de exemplo retornado na etapa anterior (Conferir um payload de solicitação de exemplo para testes de notificação de webhook) conforme desejado e transmita-o no payload de 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 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 visualizar e reprocessar notificações

Com a monetização, você pode configurar notificações acionadas por eventos específicos. Para saber mais sobre como configurar as 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 as notificações novamente, siga estas etapas:

  1. Conferir as notificações enviadas
  2. Conferir os detalhes de uma notificação
  3. Reprocessar uma notificação

Visualização das notificações enviadas

Para conferir as notificações enviadas a 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:
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail ID de e-mail ou webhook para o qual a notificação foi enviada.

Um máximo de 1.000 notificações é retornado.

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âmetro 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 determinados valores de status.

Por exemplo, a chamada de cURL a seguir lista as notificações que FALHOU para o webhook especificado 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 conferir os 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 conferir o ID da notificação na saída de resposta ao acessar 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
}

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 para o qual você quer mostrar detalhes. É possível conferir o ID da notificação na saída de resposta ao acessar 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
}