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

200 OK

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"
}
200 OK

Devuelve el usuario creado.

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

user_id

Id del usuario a modificar

type
string
in
path
Request Example
{
  "id": "dlopez",
  "name": "Diego López",
  "email": "example@email.com"
}
200 OK

Devuelve el usuario modificado.

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

Id del usuario a eliminar

type
string
in
query
200 OK

Usuario eliminado

GET /users/{user_id}/bus_filters

Para listar todos las notificaciones a las que un usuario está suscrito

user_id

Id del usuario

type
string
in
path
200 OK

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

user_id

Id del usuario

type
string
in
path
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"
}
200 OK

Devuelve las subscripción creada.

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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.

user_id

Id del usuario

type
string
in
path
filter_id

Id del filtro

type
string
in
path
200 OK

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

200 OK

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"
}
200 OK

Devuelve el filtro del bus creado.

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

filter_id

Id del filtro del bus a modificar

type
string
in
path
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"
}
200 OK

Devuelve el filtro del bus modificado.

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

Id del filtro a eliminar

type
string
in
query
200 OK

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

filter_id

Id del filtro

type
string
in
path
200 OK

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

filter_id

Id del filtro

type
string
in
path
Request Example
{
  "id": "dlopez",
  "name": "Diego López",
  "email": "example@email.com"
}
200 OK

Lista con todos los usuarios

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

filter_id

Id del filtro

type
string
in
path
200 OK

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

filter_id

Id del filtro

type
string
in
path
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 }}"
}
200 OK

Se ha añadido correctamente el template asociado al bus

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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.

200 OK

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"
}
200 OK

Subscripción creada y añadida correctamente a la base de datos

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

Error. Error al comprobar los datos introducidos.

DELETE /subscriptions/{sub_id}

Para eliminar una determinada subscripción pasando su id

sub_id

Id de la subscripción a eliminar

type
string
in
path
200 OK

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"
}
200 OK

Subscripción modificada correctamente a la base de datos

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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

200 OK

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 }}"
}
200 OK

Template creado correctamente

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

Error. Error al comprobar los datos introducidos.

DELETE /templates/{template_id}

Para borrar determinado template de la base de datos pasando su template id

template_id

Id del template a eliminar de la base de datos

type
string
in
path
0
undefined

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

template_id

Id del template a editar en la base de datos

type
string
in
path
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 }}"
}
200 OK

Template editado correctamente

400 Bad Request

Error. No se han introducido datos.

422 Unprocessable Entity

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