Configuración de la notificación de prueba

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Introducción

La monetización proporciona un conjunto de APIs que puedes usar para probar la configuración de tus notificaciones. En concreto, puedes hacer lo siguiente:

Prueba webhooks

Un webhook define un controlador de devolución de llamada HTTP que un evento activa. Para obtener información sobre la configuración de webhooks, consulta Configura notificaciones mediante webhooks.

Para probar tus webhooks, sigue estos pasos:

  1. Consulta los tipos de activadores de notificaciones de webhook disponibles
  2. Consulta una carga útil de solicitud de muestra para la prueba de notificaciones de webhook
  3. Prueba la ejecución de un webhook

Consulta los tipos de activadores de notificaciones de webhook disponibles

Para ver los tipos de activadores de notificaciones de webhook disponibles, envía una solicitud GET al siguiente recurso:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}

Aquí:

  • {org_name} especifica el nombre de la organización.
  • {webhook_id} especifica el ID del webhook. Para ver una lista de webhooks y obtener su ID, consulta Visualiza todos los webhooks mediante la API.
  • {developer_email_or_id} especifica el ID del desarrollador. Para ver una lista de desarrolladores, consulta Lista de desarrolladores.
  • {app_id} especifica el ID de la aplicación para la que estás probando la activación de webhook. Para enumerar los IDs de app de tu organización, consulta Enumera los IDs de apps de una organización.
  • {product_id} especifica el ID del producto de API para el que pruebas la activación de webhook. Si quieres ver una lista de productos de API para una organización, consulta Enumera productos de API.
  • {rateplan_id} especifica el ID del plan de tarifas para el que pruebas la activación de webhook. El ID del plan de tarifas es distinto del nombre visible. Para ver los detalles del plan de tarifas, incluido el ID, consulta Explora la página de los planes de tarifas.

Por ejemplo, la siguiente llamada cURL muestra RATEPLANQUOTAUSAGE como el tipo de activador de notificaciones 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

A continuación, se proporciona un ejemplo de la respuesta.

[
  "RATEPLANQUOTAUSAGE"
]

A continuación, debes determinar el esquema de la carga útil de la solicitud para el tipo de activador de notificación de webhook.

Visualiza una carga útil de solicitud de muestra para la prueba de notificaciones de webhook

Consulta una carga útil de solicitud de muestra que puedes usar para probar la notificación de webhook mediante la emisión de una solicitud GET al siguiente recurso:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}/{trigger_type}

Aquí:

Por ejemplo, la siguiente llamada cURL muestra una carga útil de solicitud de muestra para el tipo de activador de notificaciones 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

A continuación, se proporciona una carga útil de solicitud de muestra:

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

A continuación, modifica la carga útil de la solicitud de muestra que se muestra, según lo desees, y úsala para probar la ejecución del webhook.

Prueba la ejecución de un webhook

Prueba la ejecución de un webhook mediante la emisión de una solicitud POST al siguiente recurso:

/organizations/{org_name}/webhooks/{webhook_id}/test/{developer_email_or_id}/{app_id}/{product_id}/{rateplan_id}.

Aquí:

  • {org_name} especifica el nombre de la organización.
  • {webhook_id} especifica el ID del webhook. Para ver una lista de webhooks y obtener su ID, consulta Visualiza todos los webhooks mediante la API.
  • {developer_email_or_id} especifica el ID del desarrollador. Para ver una lista de desarrolladores, consulta Lista de desarrolladores.
  • {app_id} especifica el ID de la aplicación para la que estás probando la activación de webhook. Para enumerar los IDs de app de tu organización, consulta Enumera los IDs de apps de una organización.
  • {product_id} especifica el ID del producto de API para el que pruebas la activación de webhook. Si quieres ver una lista de productos de API para una organización, consulta Enumera productos de API.
  • {rateplan_id} especifica el ID del plan de tarifas para el que pruebas la activación de webhook. El ID del plan de tarifas es distinto del nombre visible. Para ver los detalles del plan de tarifas, incluido el ID, consulta Explora la página de los planes de tarifas.

Modifica la carga útil de la solicitud de muestra que se mostró en el paso anterior (consulta una carga útil de solicitud de muestra para la prueba de notificaciones de webhook) como desees y pásala en la carga útil de la solicitud.

Por ejemplo, la siguiente llamada cURL prueba la ejecución del 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

A continuación, se proporciona un ejemplo de la respuesta que indica que la notificación se envió de forma correcta al 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"
}

Visualiza y vuelve a procesar notificaciones

La monetización te permite configurar notificaciones que se activan por eventos específicos. Para obtener más información sobre la configuración de notificaciones, consulta Cómo configurar notificaciones.

Para cada notificación enviada, se almacena la siguiente información:

  • Conteo de repeticiones de intento
  • Código de respuesta
  • Encabezado de respuesta
  • Contenido de la respuesta (solo los primeros 1,000 caracteres)

Para ver y volver a procesar notificaciones, sigue estos pasos:

  1. Cómo ver las notificaciones que se enviaron
  2. Cómo ver los detalles de una notificación
  3. Cómo volver a procesar una notificación

Cómo ver las notificaciones enviadas

Consulta las notificaciones que se enviaron para una organización mediante la emisión de una solicitud GET al siguiente recurso:

/organizations/{org_name}/notification-service-items

En el ejemplo anterior, {org_name} especifica el nombre de la organización.

De manera opcional, puedes especificar uno o más de los siguientes parámetros de consulta para filtrar la lista de notificaciones que se muestran en la respuesta:

Parámetro de consulta Descripción
startdate Es la fecha de inicio en el formato YYYY-MM-DD HH:mm:ss.
enddate La fecha de finalización tiene el formato YYYY-MM-DD HH:mm:ss.
status Estado de las notificaciones. Entre los valores válidos, se incluyen los siguientes:
  • BLANK_MESSAGE
  • DUPLICATE
  • FAILED
  • NOTIFICATION_SENT
  • OPT_OUT
  • QUEUED
  • TEMPLATE_NOT_FOUND
toemail ID de correo electrónico o webhook al que se envió la notificación.

Se muestra un máximo de 1,000 notificaciones.

En la respuesta, la marca hasMoreItems indica si la cantidad de notificaciones en la lista especificada es superior a 1,000. Si hasMoreItems es true, lo que indica que hay más notificaciones de las que se podrían mostrar y que deseas ver las notificaciones restantes, debes definir mejor los filtros de parámetros de consulta para procesar grupos más pequeños de notificaciones por solicitud. Por ejemplo, puedes realizar varias solicitudes con varios períodos más pequeños o mostrar notificaciones con solo ciertos valores de estado.

Por ejemplo, la siguiente llamada cURL enumera las notificaciones que FUERON para el webhook especificado dentro del rango de fechas 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 

A continuación, se proporciona un ejemplo de la respuesta.

 {
   "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 
   } 
   ] 
}

Visualiza los detalles de una notificación

Envía una solicitud GET al siguiente recurso para ver los detalles de una notificación específica:

/organizations/{org_name}/notification-service-items/{notification_id}

Aquí:

  • {org_name} especifica el nombre de la organización.
  • {notification_id} especifica el ID de la notificación sobre la que deseas mostrar los detalles. Puedes obtener el ID de notificación del resultado de la respuesta cuando visualizas las notificaciones enviadas.

Por ejemplo, la siguiente llamada cURL muestra los detalles de la notificación con el 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
 

A continuación, se proporciona un ejemplo de la respuesta.

 {
  "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
}

Vuelve a procesar una notificación

Vuelve a procesar una notificación mediante la emisión de una solicitud POST al siguiente recurso:

/organizations/{org_name}/notification-service-items/{notification_id}/reprocess

Aquí:

  • {org_name} especifica el nombre de la organización.
  • {notification_id} especifica el ID del elemento de notificación sobre el que deseas mostrar los detalles. Puedes obtener el ID de notificación del resultado de la respuesta cuando visualizas las notificaciones enviadas.

Por ejemplo, la siguiente llamada cURL vuelve a procesar la notificación con el 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
}