Notifyme API API Reference
API para la gestión de notifyme.
Notifyme es un centro de notificaciones nutrido de los mensajes que llegan del bus rabbitmq
Schemes: http
Version: 1
Users
Usuarios propios de notifyme a los que mandar notificaciones
GET /users/
Para listar todos los usuarios de la base de datos
Devuelve la lista de usuarios.
POST /users/
Para crear un usuario en la base de datos
Usuario a crear en la base de datos
Request Example
{
"id": "dlopez",
"name": "Diego López",
"email": "example@email.com"
}
Devuelve el usuario creado.
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
PUT /users/{user_id}
Para editar un usuario ya creado. A la petición se le pasa el id del usuario que se quiere modificar
Usuario a modificar en la base de datos. No se puede modificar el id ya que es primary key en la base de datos
Id del usuario a modificar
Request Example
{
"id": "dlopez",
"name": "Diego López",
"email": "example@email.com"
}
Devuelve el usuario modificado.
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
DELETE /users/{user_id}
Para eliminar un usuario creado pasando su id. Al borrar el usuario también se borran de la base de datos las subscripciones asociadas a dicho usuario (no se borran los filtros del bus)
Id del usuario a eliminar
Usuario eliminado
GET /users/{user_id}/bus_filters
Para listar todos las notificaciones a las que un usuario está suscrito
Id del usuario
Devuelve las notificaciones del usuario.
POST /users/{user_id}/bus_filters
Para susbscribir cierto usuario a una notificación. Antes de crear el filtro del bus, se comprueba si existe y en caso de que no exista, se crea en la base de datos.
Filtro del bus a crear en la base de datos y añadir al usuario. No se puede modificar el id ya que es primary key en la base de datos
Id del usuario
Request Example
{
"id": 2,
"exchange": "logs",
"key": "info",
"exchange_type": "fanout",
"durable": true,
"description": "Notificaciones de información de los logs",
"category": "logs",
"template_id": "45h23k45"
}
Devuelve las subscripción creada.
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
DELETE /users/{user_id}/bus_filters/{filter_id}
Para eliminar un filtro del bus en concreto del usuario, es decir, para desuscribirlo de una notificación en concreto. El filtro del bus no se borra, solo se borra la relación entre usuario y filtro.
Id del usuario
Id del filtro
OK, subscripción eliminada
Bus filters
Los filtros del bus definen a qué exchange y key del bus se conectarse para recibir notificaciones
GET /bus_filters/
Para listar todos los filtros del bus
Devuelve la lista de filtros del bus.
POST /bus_filters/
Para crear un filtro del bus
Filtro del bus a crear en la base de datos. No se puede modificar el id ya que es primary key en la base de datos
Request Example
{
"id": 2,
"exchange": "logs",
"key": "info",
"exchange_type": "fanout",
"durable": true,
"description": "Notificaciones de información de los logs",
"category": "logs",
"template_id": "45h23k45"
}
Devuelve el filtro del bus creado.
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
PUT /bus_filters/{filter_id}/
Para modificar un filtro del bus existente
Filtro del bus a modificar en la base de datos. No se puede modificar el id ya que es primary key en la base de datos
Id del filtro del bus a modificar
Request Example
{
"id": 2,
"exchange": "logs",
"key": "info",
"exchange_type": "fanout",
"durable": true,
"description": "Notificaciones de información de los logs",
"category": "logs",
"template_id": "45h23k45"
}
Devuelve el filtro del bus modificado.
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
DELETE /bus_filters/{filter_id}/
Para eliminar un filtro del bus creado pasando su id. Cuando se borra un filtro del bus, también se borran todas las subscripciones asociadas al filtro del bus. Además se borra la conexión del bus con ese exchange y key particular para que no sature el bus.
Id del filtro a eliminar
Filtro eliminado
GET /bus_filters/{filter_id}/users
Para listar todos los usarios de un determinado filtro del bus, es decir, para listar las subscripciones a un determinado tipo de notificación
Id del filtro
Lista con todos los usuarios
POST /bus_filters/{filter_id}/users
Para añadir un usuario a un filtro del bus, es decir, crea una subscripción para el usuario con este tipo de notificación. Si el usuario no existe lo crea y lo añade a la base de datos.
Usuario a añadir en el filtro del bus
Id del filtro
Request Example
{
"id": "dlopez",
"name": "Diego López",
"email": "example@email.com"
}
Lista con todos los usuarios
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
GET /bus_filters/{filter_id}/template
Para listar el template o templates de un filtro del bus. Si un filtro del bus tiene un template, se enviarán correos a esa notificación con ese template
Id del filtro
Devuelve el template asociado
POST /bus_filters/{filter_id}/template
Para asociar un template a un filtro del bus, es decir, cuando llegue un mensaje a este tipo de notificación, se enviará la notificación con el template asociado.
Template a añadir
Id del filtro
Request Example
{
"id": "notifcation2",
"name": "Notificación de información de los logs",
"text": "Texto de ejemplo con una del bus {{ variable }}",
"subject": "Texto del asunto del correo con una variable {{ variable }}"
}
Se ha añadido correctamente el template asociado al bus
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
Subscriptions
Definen la relación entre notifiaciones, usuarios y template.
GET /subscriptions/
Para listar todas las subscriciones. Esta petición hace un matcheo de los usarios y los filtros del bus devolviendo en una sola llamada la información de ambas tablas combinadas.
Devuelve la lista de subscripciones
POST /subscriptions/
Para crear manualmente una subscripción pasando todos los ids
Subscripción a crear
Request Example
{
"id": "notificacion21",
"user_id": "dlopez",
"filter_id": "filtro2",
"template_id": "template_info"
}
Subscripción creada y añadida correctamente a la base de datos
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
DELETE /subscriptions/{sub_id}
Para eliminar una determinada subscripción pasando su id
Id de la subscripción a eliminar
Subscripción eliminada correctamente
PUT /subscriptions/{sub_id}
Para crear manualmente una subscripción pasando todos los ids. No se puede modificar el id ya que es primary key en la base de datos
Subscripción modificada
Request Example
{
"id": "notificacion21",
"user_id": "dlopez",
"filter_id": "filtro2",
"template_id": "template_info"
}
Subscripción modificada correctamente a la base de datos
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
Templates
Plantillas de emails. El mensaje y el asunto utiliza jinja2 como sistema de plantillas para poder pasar variables desde el mensaje del bus
GET /templates/
Para listar todas las plantillas de las notificaciones de la base de datos
Lista de todos los templates
POST /templates/
Para crear un template en la base de datos
Template a crear en la base de datos
Request Example
{
"id": "notifcation2",
"name": "Notificación de información de los logs",
"text": "Texto de ejemplo con una del bus {{ variable }}",
"subject": "Texto del asunto del correo con una variable {{ variable }}"
}
Template creado correctamente
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
DELETE /templates/{template_id}
Para borrar determinado template de la base de datos pasando su template id
Id del template a eliminar de la base de datos
PUT /templates/{template_id}
Para editar un template de la base de datos. No se puede modificar el id ya que es primary key en la base de datos
Template a editar en la base de datos
Id del template a editar en la base de datos
Request Example
{
"id": "notifcation2",
"name": "Notificación de información de los logs",
"text": "Texto de ejemplo con una del bus {{ variable }}",
"subject": "Texto del asunto del correo con una variable {{ variable }}"
}
Template editado correctamente
Error. No se han introducido datos.
Error. Error al comprobar los datos introducidos.
Schema Definitions
User: object
Usuario al que enviar notificaciones
- id: string
-
id del usuario en la base de datos, si no se pasa id se genera automáticamente
- name: string
-
Nombre para identificar mejor al usuario
- email: string
-
Email del usuario para que reciba notificaciones
Example
{
"id": "dlopez",
"name": "Diego López",
"email": "example@email.com"
}
BusFilter: object
Define a que exchange y key conectarse del bus para recibir mensajes
- id: string
-
id del filtro del bus en la base de datos, si no se pasa id se genera automáticamente
- exchange: string
-
Echange al que conectarse del bus
- key: string
-
Key del exchange al que conectarse del bus
- exchange_type: string
-
Tipo de exchange del bus al que conectarse (fanout, direct)
- durable: boolean
-
Si es o no durable el exchange al que conectarse
- description: string
-
Breve descripción de las notificaciones que llegan a traves de este filtro del bus
- category: string
-
Para identificar la categoría del filtro del bus y poder agruparlos
- template_id: string
-
Id de la primary key del template para asociarlo con un template para los emails
Example
{
"id": 2,
"exchange": "logs",
"key": "info",
"exchange_type": "fanout",
"durable": true,
"description": "Notificaciones de información de los logs",
"category": "logs",
"template_id": "45h23k45"
}
Template: object
Plantilla con el que se envían las notificaciones
- id: string
-
Id del template en la base de datos, si no se pasa id se genera automáticamente
- name: string
-
Nombre para identificar mejor los templates,
- text: string
-
Texto de la notificación a enviar, utiliza un sistema de templates llamado jinja2 para incluir variables que puedan venir del bus
- subject: string
-
Texto para enviar en la cabecera de los emails. Utiliza el mismo sistema de plantillas del texto
Example
{
"id": "notifcation2",
"name": "Notificación de información de los logs",
"text": "Texto de ejemplo con una del bus {{ variable }}",
"subject": "Texto del asunto del correo con una variable {{ variable }}"
}
Subscription: object
Relación entre usuario, filtro del bus y plantilla para enviar la notificación
- id: string
-
Id de la subscripción en la base de datos, si no se pasa id se genera automáticamente
- user_id: string
-
Id del usuario en la base de datos
- filter_id: string
-
Id del fitro del bus en la base de datos
- template_id: string
-
Id del template en la base de datos
Example
{
"id": "notificacion21",
"user_id": "dlopez",
"filter_id": "filtro2",
"template_id": "template_info"
}