API_reference
APIs
Lista
GET /nc/inbox ? page_size=10 & page=0
Obtiene el listado de eventos ordenados de más reciente a más antiguo. Paginado por default con los primeros 10 eventos. Los eventos pinneados vigentes se entregan siempre primero.
Respuesta:
{
"res": "ok",
"data": {
"page_info": {"page": 0, "page_size": 10, "last_page": false},
"items": [
{
"event_name": "STACKABLE_TEST.V1",
"message": "Tienes una notificación de prueba agrupable",
"payload": {},
"timestamp": "2023-03-29T18:48:01Z",
"dissmisible": true,
"pinned": false,
"item_id": "ccc1e761-30c9-40f5-b292-cc7eff296b1f"
},
{
"event_name": "STACKABLE_TEST.V1",
"message": "Tienes varias notificaciones de prueba agrupadas",
"payload": {},
"timestamp": "2023-03-29T18:47:53Z",
"dissmisible": true,
"pinned": false,
"item_id": "7ed3237c-06d4-4fc2-8727-086ae035114a"
},
{
"event_name": "TEST.V1",
"message": "Tienes una notificación de prueba",
"payload": {},
"timestamp": "2023-03-29T18:09:28Z",
"dissmisible": true,
"pinned": false,
"item_id": "d1170f26-2042-43ce-9410-bf8a19534d43"
},
{
"event_name": "STACKABLE_TEST.V1",
"message": "Tienes varias notificaciones de prueba agrupadas",
"payload": {},
"timestamp": "2023-03-29T18:08:56Z",
"dissmisible": true,
"pinned": false,
"item_id": "cdb6c029-e13c-41ac-adf2-a868f898544a"
},
{
"event_name": "FIELD_SHARE.V1",
"message": "agustina dieser te ha compartido el lote 1",
"payload": {
"fields": [
{
"field_name": "1",
"field_id": 232297,
"field_uuid": "1e9775a7-a182-4691-81f2-37f88aa4cb80",
"farm_id": 64318,
"farm_uuid": "1de771d4-1282-4d91-9539-b89d529cac94",
"source_user_name": "agustina dieser"
}
]
},
"timestamp": "2023-03-28T00:00:00Z",
"dissmisible": true,
"pinned": false,
"item_id": "3b40bc46-e4ce-4af6-908d-f3bc86407887"
}
]}
}
Dismiss
DELETE /nc/inbox ? item_id=<item_id>
DELETE /nc/inbox ? all=true
Elimina un item del Inbox.
Alternativamente se puede pasar como parámetro all=true para eliminar todos.
Respuesta:
{
"res": "ok",
"info": "item dismissed"
}
Count
GET /nc/inbox/count
Obtener el número de notificaciones pendientes
Respuesta:
{
"res": "ok",
"data": {
"count": 5
}
}
Server Sent Events (SSE)
Es un canal mediante el cual el cliente recibe las notificaciones en tiempo real.
GET /nc/stream
Cada evento recibido en el stream tendrá:
- type: nombre del canal del cual proviene el mensaje
- data: objeto
SSEMessageDataserializado
objeto SSEMessageData
{
"event_name": "PING.V1",
"event_payload": {},
"event_msg": "message"}
Donde
event_namees el nombre del eventoevent_payloades el payload del eventoevent_msges el mensaje traducido del evento
Testing
Se dispone de un endpoint de prueba para enviar eventos:
POST /nc/events/test
Body: application/json
Body:
user_idsarray[int]: array con los ids de los usuarios a notificarstackablebool: Opcional,truepara que sea un evento apilable.
API interna para crear eventos
Este endpoint permite a servicios internos enviar eventos a usuarios.
POST /nc-internal/events
Body: application/json
Schema:
{
"event_name": {"type": "string"},
"data": {"type": "object"},
}
'required': ['event_name', 'data']
El endpoint sólo envía el evento al worker, por lo que siempre responderá con 200, no asegurando su correcta ejecución.