Notificaciones y endpoints públicos de OpenPlatform
Además del lanzamiento y la verificación, OpenPlatform tiene algunos endpoints para las aplicaciones y para otros sistemas. Están en controllers/verify.js, controllers/api.js y controllers/socket.js.
Enviar una notificación
La respuesta de la verificación contiene notify, una dirección con la forma <platform url>/notify/?token=<checksum of user and application>, cuando el usuario acepta notificaciones. La aplicación le envía un POST con la cabecera x-token y un cuerpo JSON:
| Campo | Significado |
|---|---|
body | el texto de la notificación |
path | la ruta dentro de la aplicación que abre la notificación |
icon, color | opcionales: sustituyen el icono y el color de la aplicación |
El valor de x-token es el token de notificación que OpenPlatform deriva para ese usuario y aplicación: el MD5 de la dirección de notificación con la sal del reqtoken de la aplicación, y el MD5 de ese resultado con la sal de su restoken (FUNC.makenotify en definitions/func.js). Ambos secretos son los mismos que la aplicación comparte para el lanzamiento (registrar una app).
OpenPlatform responde Invalid token cuando la suma de comprobación o la cabecera no coinciden, y Not allowed notifications cuando el usuario o la aplicación no las aceptan. También comprueba las direcciones permitidas de la aplicación y que el usuario esté confirmado, habilitado y activo. Cuando todo es correcto:
- guarda la notificación (tabla
tbl_notification) y aumenta el contador de no leídas del usuario; - actualiza las sesiones de ese usuario abiertas en el portal, de modo que el contador aparece al instante;
- publica
Notifications.createpor TMS cuando el ajuste$tmsestá activado; - devuelve el identificador de la notificación.
Para los usuarios que están desconectados y tienen notificaciones sin leer, un trabajo de servicio envía un resumen por correo ("Unread notifications") cuando la configuración del correo está hecha, como máximo una vez cada tres días por usuario (definitions/init.js).
La API de usuarios (un token)
GET /users/ devuelve los grupos y los usuarios de la plataforma como JSON. Está deshabilitada hasta que se definen los ajustes allow_token y token. El llamante envía el token como el parámetro de consulta token o como la cabecera x-token; los intentos erróneos repetidos se bloquean. Los usuarios vienen sin secretos: identificador, referencia, idioma, género, foto (una dirección absoluta), nombre, correo, color, preferencias, banderas (sa, isdisabled, isinactive, isonline), fechas y los ids de sus grupos.
Subir una imagen
POST /upload/base64/ (hasta 2 MB) acepta un cuerpo JSON con el nombre del archivo y file como data URI, y solo JPEG. Necesita un usuario con sesión o el token de consulta del ajuste servicetoken (consulta ajustes y base de datos para saber de dónde sale esa clave). La imagen se guarda en el almacén de archivos files y la respuesta es su dirección, /files/<id and checksum>.jpg; la dirección solo funciona con la suma de comprobación.
Varias instancias: el socket de sincronización
SOCKET /sync/ conecta instancias de OpenPlatform. Se acepta un cliente cuando el ajuste sync está activado y el token de la consulta es igual a sync_token; cualquier otro cliente se cierra con el código 4001 medio segundo después de abrirse. Los mensajes de un cliente confirmado se retransmiten a los demás, y mientras un cliente confirmado se está reconectando los mensajes se ponen en cola hasta diez segundos.