Configuración de la notificación de prueba

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
info

Introducción

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

Prueba los webhooks

Un webhook define un controlador de devolución de llamada HTTP que activa un evento. 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 las pruebas de notificaciones de webhook
  3. Cómo probar la ejecución de un webhook

Cómo ver 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 el ID de webhook, consulta Cómo ver todos los webhooks con la API.
  • {developer_email_or_id} especifica el ID del desarrollador. Para ver la lista de desarrolladores, consulta Lista de desarrolladores.
  • {app_id} especifica el ID de la aplicación para la que estás probando el activación de webhooks. Para obtener una lista de los IDs de app de tu organización, consulta Cómo enumerar los IDs de app de una organización.
  • {product_id} especifica el ID del producto de API para el que estás probando el activación de webhooks. Para ver una lista de los productos de API de una organización, consulta Cómo enumerar productos de API.
  • {rateplan_id} especifica el ID del plan de tarifas para el que estás probando la activación de webhook. El ID del plan de tarifas es diferente del nombre visible. Para ver los detalles del plan de tarifas, incluido el ID, consulta Explorar la página de planes de tarifas.

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

Visualización de una carga útil de solicitud de muestra para pruebas de notificaciones de webhook

Para ver una carga útil de solicitud de muestra que puedes usar para probar notificaciones de webhook, 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}/{trigger_type}

Aquí:

Por ejemplo, la siguiente llamada a 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 sea necesario, y úsala para probar la ejecución del webhook.

Prueba la ejecución de un webhook

Para probar la ejecución de un webhook, envía 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 el ID de webhook, consulta Cómo ver todos los webhooks con 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 el activación de webhooks. Para obtener una lista de los IDs de app de tu organización, consulta Cómo mostrar los IDs de app de una organización.
  • {product_id} especifica el ID del producto de API para el que estás probando el activación de webhooks. Para ver una lista de productos de API de una organización, consulta Cómo enumerar productos de API.
  • {rateplan_id} especifica el ID del plan de tarifas para el que estás probando el activación de webhooks. El ID del plan de tarifas es diferente del nombre visible. Para ver los detalles del plan de tarifas, incluido el ID, consulta Explorar la página de planes de tarifas.

Modifica la carga útil de solicitud de muestra que se devolvió en el paso anterior (Consulta una carga útil de solicitud de muestra para las pruebas de notificaciones de webhook) según sea necesario y pásala en la carga útil de la solicitud.

Por ejemplo, la siguiente llamada a 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ó correctamente 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"
}

Cómo ver y volver a procesar notificaciones

La monetización te permite configurar notificaciones que se activan con eventos específicos. Para obtener información sobre cómo configurar notificaciones, consulta Cómo configurar notificaciones.

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

  • Volver a contar
  • Código de respuesta
  • Encabezado de respuesta
  • Contenido de la respuesta (solo los primeros 1,000 caracteres)

Para ver y volver a procesar las 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

Para ver las notificaciones que se enviaron a una organización, envía una solicitud GET al siguiente recurso:

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

En el que {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 formato YYYY-MM-DD HH:mm:ss.
enddate Es la fecha de finalización en el formato YYYY-MM-DD HH:mm:ss.
status Estado de las notificaciones. Estos son algunos de los valores válidos:
  • 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 devuelven 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 pueden mostrar, y 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 a cURL enumera las notificaciones que fallaron para el webhook especificado dentro del período 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

Para ver los detalles de una notificación específica, envía una solicitud GET al siguiente recurso:

/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 para la que deseas mostrar detalles. Puedes obtener el ID de notificación del resultado de la respuesta cuando veas las notificaciones enviadas.

Por ejemplo, la siguiente llamada a 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
}

Cómo volver a procesar una notificación

Para volver a procesar una notificación, envía 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 para el que deseas mostrar detalles. Puedes obtener el ID de notificación del resultado de la respuesta cuando veas las notificaciones enviadas.

Por ejemplo, la siguiente llamada a 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
}