Event Driven Callback

Durante la operación normal del API Manager, es común encontrar casos donde queremos notificar sistemas externos. Por ejemplo, cuando algunos objetos importantes son creados, modificados o borrados. Para esto, el API Manager permite registrar event-driven callbacks, que son llamadas externas desde disparadores pre-configurados (eventos).

La página Event-Driven Callbacks puede ser accedida a través del menú lateral, en Notification. Ella permite crear, modificar, eliminar y visualizar las llamadas de eventos ya registradas y también verificar el historial de activación de cada llamada, separadamente.

event driven callbacks

Es posible registrar varias llamadas para un mismo tipo de objeto. Por ejemplo, si usted desea ejecutar dos acciones diferentes (como enviar email y generar log) en respuesta a un mismo evento (como la creación de una app). Para reducir el acoplamiento, podrían ser creados dos event-driven callbacks, uno para http://host/send-email y otro para http://host/generate-log.

A continuación, tenemos algunos ejemplos de cómo puede ser usada esta funcionalidad:

Cada vez que…​ …​haga esto:

un usuario se registra en el Portal de Desarrolladores

envíe un email para un administrador.

una app es creada

cree objetos de sandbox para esta app.

una app es creada

cree tokens provisorios para acelerar la experimentación de los desarrolladores.

una policy es modificada

valide que ninguna regla permite más de 100 accesos por segundo.

Funcionamiento

Existen dos tipos de eventos: el tipo After (después) y el tipo Before (antes). Eventos del tipo After son ejecutados después que un objeto es creado, actualizado o eliminado en el Manager. Por ejemplo, si un usuario crea una app y existe un evento registrado como After App, la llamada será disparada después de la creación de la app en el backend.

Ya eventos del tipo Before son disparados antes de una acción en el Manager. Siendo así, la creación/actualización/eliminación podrá ser cancelada en el caso que la llamada a la URL registrada en el event-driven callback falle por cualquier motivo.

Un administrador crea un event-driven callback informando: a) cuál es el tipo de objeto que desea observar; y b) una URL. Cuando objetos del tipo seleccionado fueren creados/modificados/eliminados, el API Manager hará un POST para la URL informada. Decimos en este caso que el event-driven callback es «activado». El cuerpo de la petición contendrá una representación JSON del objeto en cuestión, más algunos datos, como la acción (created, updated o deleted) y el usuario responsable.

callbacks diagram

El event-driven callback registrado puede ser disparado ANTES o DESPUÉS, dependiendo de su tipo (Before o After). Después de disparado, un listener es notificado de un evento y, en el caso que el callback sea del tipo Before, el propio callback puede bloquear la acción de creación/actualización/eliminación de un objeto cualquiera, pues puede ser realizada una validación antes de que la acción se realice efectivamente.

En el caso de event-driven callbacks del tipo After, la acción (creación/actualización/eliminación) no será bloqueada, pero generará un mensaje de error o una advertencia sobre el evento que ocurrió.

Si se registran una llamada de tipo After y una de tipo Before para el mismo tipo de objeto, se ejecutan ambas, pero las de tipo Before tienen prioridad sobre las de tipo After.

Cómo crear event-driven callbacks

Para crear un nuevo callback, haga clic en el botón Create Event-Driven Callback, representado por el símbolo + en la esquina inferior derecha de la pantalla. Se abrirá una ventana modal para rellenar los datos.

create callback

Entre con el nombre (Name), eleja el tipo de evento que será observado e informe una URL de un sistema creado para el propósito de notificar.

El campo Expected HTTP Status tendrá utilidad solamente para eventos del tipo Before y debe ser llenado con el estado HTTP esperado cuando se devuelva la llamada a la URL registrada. Esto es porque eventos de este tipo realizan la comparación del estado registrado con el estado retornado por la llamada para saber si pueden proseguir con la operación o no.

El campo Request Headers no es obligatorio. Como ya hemos mencionado, las llamadas se desencadenan a partir de la supervisión de las acciones de creación, actualización y eliminación de objetos. Si queremos usar sólo una o dos de las acciones como disparador, debemos insertar la propiedad action en el campo Request Headers.

Después de llenar los campos, haga clic en Save.

Tipos de eventos

Las llamadas pueden ser registradas como de tipo Before o After para acciones (creación, edición y eliminación) de estes objetos: access token, API, app, desarrollador, plan y configuración del sistema.

Las páginas a continuación muestran ejemplos de request body enviados en cada caso:

Edición de event-driven callbacks

Para editar un callback ya registrado, haga clic en el icono icon edit, en la columna Actions de la lista de callbacks. Se abrirá una ventana modal que contiene las informaciones del callback, y podrá cambiar los datos. Cuando termine, haga clic en Save.

edit callback

Eliminación de event-driven callbacks

Para editar un callback ya registrado, haga clic en el icono icon delete, en la columna Actions de la lista de callbacks.

Un mensaje de confirmación será exhibido. Haga clic en Ok para llevar a cabo la eliminación.

delete callback

Errores e historial de activación

En el caso que ocurra algún error durante el POST para la URL informada (incluyendo casos en los que el host es desconocido o rechaza conexiones), el procesamiento del API Manager no será afectado y no serán hechas nuevas tentativas de POST.

Sin embargo, el API Manager mantiene un historial de todas las notificaciones que intentó enviar. Para ver el historial de activación de un event-driven callback, haga clic en el enlace compuesto por la fecha y la hora en la columna Last triggered on en el listado de callbacks. Una pantalla como la siguiente mostrará los detalles de la llamada seleccionada.

callback errors

Llamando la API del Manager en sus event-driven callbacks

Muchas veces, será deseable crear un callback para modificar complemente informaciones recibidas. Por ejemplo, puedes establecer que cuando se crea una app, el valor Java se toma siempre que no se especifique ningún valor en los campos extra fields.

Sin embargo, dado que el listener recibe el objeto después que él ya fue creado, será necesario llamar la API del Manager para hacer la modificación.

Observe, sin embargo, que modificaciones en el Manager pueden, a su vez, disparar otros listeners. Se debe tomar cuidado para no crear un loop infinito de eventos.

Note también que la API del Manager está, por si sola, protegida con credenciales de acceso (para mayores detalles, vea el tópico Users). Usted debe crear credenciales del tipo «Integration» para que su sistema interactúe con el Manager con éxito.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]