# SafeOnuba API > API REST y webhooks para recibir en la sala de control del cliente (SCADA, PSIM, intranet) las alertas y evacuaciones de SafeOnuba, consultarlas, y reconocer o cerrar alertas desde allí. v1 en vista previa (`api_version: "2026-09-24"`): el contrato puede cambiar. Antes de integrar: - Sandbox: `https://sandbox.api.safeonuba.com`, con relojes simulados. Producción (`https://api.safeonuba.com`) se activa al dar de alta al cliente y hoy todavía no está abierta al público. - Autenticación OAuth2 `client_credentials` en `POST /v1/oauth/token`; el resto de llamadas con `Authorization: Bearer `. - La API no tiene CORS: se llama desde un servidor, nunca desde el navegador. - En v1 la API no abre evacuaciones, y nunca entrega constantes vitales. - Cada webhook va firmado con HMAC-SHA256 en `X-SafeOnuba-Signature`; hay que verificarlo sobre el cuerpo en bruto. ## Empezar - [API de SafeOnuba](https://safeonuba.com/desarrolladores.md): Recibe las alertas y evacuaciones de SafeOnuba en tu sala de control, tu SCADA, tu PSIM o tu intranet, y reconoce o cierra alertas desde allí. - [Primeros pasos](https://safeonuba.com/desarrolladores/primeros-pasos.md): Del acceso a tu primer webhook en cinco minutos: pide un token, haz la primera llamada, crea un destino y lanza una alerta de prueba en el sandbox. - [Autenticación y scopes](https://safeonuba.com/desarrolladores/autenticacion.md): OAuth2 client_credentials: cómo pedir un token, qué scopes existen, cómo rotar el client_secret sin cortes y qué errores devuelve el endpoint del token. ## Conceptos - [Centros y zonas](https://safeonuba.com/desarrolladores/conceptos/centros.md): Un centro es una planta del cliente. Sus zonas y puntos de reunión llegan en GeoJSON, y su nivel de privacidad decide qué posiciones ve la API. - [Alertas](https://safeonuba.com/desarrolladores/conceptos/alertas.md): Tipos, gravedad y estados de una alerta; la diferencia entre que la sala se haga cargo y que el trabajador vea el aviso; y cómo reconocerla o cerrarla. - [Evacuaciones y recuento](https://safeonuba.com/desarrolladores/conceptos/evacuaciones.md): Tipos, estados y fases de una evacuación, el recuento por persona y por punto de reunión, los puntos descartados y la lista de quién falta. - [Trabajadores y relojes](https://safeonuba.com/desarrolladores/conceptos/trabajadores-y-relojes.md): Cómo identifica la API a cada persona y a su reloj: identificador de empresa, nombre opcional por contrato, batería, si lo lleva puesto y última conexión. - [Posiciones](https://safeonuba.com/desarrolladores/conceptos/posiciones.md): Cuándo entrega la API una posición, qué significa location_withheld, cómo se representan las zonas de privacidad y qué precisión trae cada punto. ## Tiempo real - [Webhooks](https://safeonuba.com/desarrolladores/webhooks.md): Crea un destino, entiende el formato de cada envío, responde a tiempo, deduplica, filtra por centro o gravedad y envía un evento de prueba. - [Verificar la firma de un webhook](https://safeonuba.com/desarrolladores/webhooks/verificar-firma.md): Cómo comprobar que un envío viene de SafeOnuba: HMAC-SHA256 sobre el cuerpo en bruto, comparación en tiempo constante, ventana de 5 minutos y rotación del secreto. - [Eventos](https://safeonuba.com/desarrolladores/eventos.md): Los tipos de evento, el sobre común y cómo recuperar los que se perdieron con /v1/events, que devuelve exactamente lo mismo que se envió por webhook. - [Sandbox: integrar sin relojes](https://safeonuba.com/desarrolladores/sandbox.md): Lanza escenarios de SOS, caída, estrés térmico o una evacuación completa con relojes simulados y recibe lo mismo que llegaría de una planta real. ## Funcionamiento - [Límites de uso](https://safeonuba.com/desarrolladores/limites.md): Peticiones y tiempo de consulta por minuto, qué pasa al superarlos, las cabeceras que lo cuentan y por qué conviene usar webhooks en vez de consultar en bucle. - [Errores](https://safeonuba.com/desarrolladores/errores.md): Los errores llegan en application/problem+json (RFC 9457) con el código HTTP real y un code estable para programar contra él. - [Paginación](https://safeonuba.com/desarrolladores/paginacion.md): Las listas se recorren con limit y un cursor opaco: la respuesta trae next_cursor y se pasa como cursor. - [Versiones](https://safeonuba.com/desarrolladores/versiones.md): Qué significa v1 en la ruta y api_version en cada evento, y en qué estado está hoy el contrato. - [Privacidad y seguridad](https://safeonuba.com/desarrolladores/privacidad-y-seguridad.md): La API ve lo mismo que una persona del panel con esos permisos. Posiciones solo cuando la planta lo permite, nunca constantes vitales, y cada petición registrada. ## Más - [Changelog](https://safeonuba.com/desarrolladores/changelog.md): Los cambios del contrato de la API, del más reciente al más antiguo. - [Preguntas frecuentes](https://safeonuba.com/desarrolladores/preguntas-frecuentes.md): Cómo pedir acceso, a quién escribir para soporte y las dudas que suelen salir al integrar. ## Referencia - [Referencia de la API](https://safeonuba.com/desarrolladores/referencia.md): Entornos y todas las operaciones de un vistazo. - [Autenticación](https://safeonuba.com/desarrolladores/referencia/autenticacion.md): OAuth2 `client_credentials`: un token opaco de una hora. - [Centros](https://safeonuba.com/desarrolladores/referencia/centros.md): Los centros del cliente y sus zonas. - [Alertas](https://safeonuba.com/desarrolladores/referencia/alertas.md): Lo que ha pasado, y reconocerlo o cerrarlo desde la sala del cliente. - [Evacuaciones](https://safeonuba.com/desarrolladores/referencia/evacuaciones.md): Estado, recuento por estado y por punto, descartes y quién falta. - [Trabajadores](https://safeonuba.com/desarrolladores/referencia/trabajadores.md): Trabajadores y relojes. - [Posiciones](https://safeonuba.com/desarrolladores/referencia/posiciones.md): Solo las que el velo deja ver. - [Eventos](https://safeonuba.com/desarrolladores/referencia/eventos.md): Reproducir los eventos de los últimos 30 días. - [Webhooks](https://safeonuba.com/desarrolladores/referencia/webhooks.md): Destinos y el formato de lo que se les envía. - [Sandbox](https://safeonuba.com/desarrolladores/referencia/sandbox.md): Escenarios de prueba con relojes simulados, para integrar sin relojes. Solo en `sandbox.api.safeonuba.com`. - [Esquemas](https://safeonuba.com/desarrolladores/referencia/esquemas.md): Todos los objetos del contrato, campo a campo. ## Contrato - [OpenAPI 3.1](https://safeonuba.com/desarrolladores/openapi.json): la fuente de verdad de la referencia. ## Optional - [Toda la documentación en un solo fichero](https://safeonuba.com/llms-full.txt)