Referencia
Sandbox
Escenarios de prueba con relojes simulados, para integrar sin relojes. Solo en sandbox.api.safeonuba.com.
Lanzar un escenario de prueba
POST/v1/sandbox/scenarios
Cualquier token válido.
Solo en sandbox.api.safeonuba.com; en producción, 404. Un escenario no inventa alertas: relojes simulados de un centro de sandbox mandan sus hechos y el motor de siempre decide, así que lo que llega —webhook, GET, recuento— es lo mismo que llegaría de un reloj de verdad, marcado simulated: true. Como mucho cinco abiertos a la vez por cliente y una evacuación por centro.
Cuerpo application/json SandboxScenarioRequest
Valores posibles:
sosfallheat_stressevacuationsite_idstring (uuid)El centro de sandbox. Sin él, el primero de los vuestros que sea de sandbox.
Respuestas
- 202
Lanzado.
application/json
SandboxScenarioRun - 401
Falta el token, ha caducado o se ha revocado.
application/problem+json
Problem - 403
Al token le falta el scope que pide la ruta, o el centro no es del cliente.
application/problem+json
Problem - 404
No es el sandbox, o el centro no es vuestro.
application/problem+json
Problem - 409
Ya hay una evacuación en marcha en ese centro, o cinco escenarios abiertos.
application/problem+json
Problem - 422
El centro no es de sandbox, o tiene un reloj de verdad y no corre nada.
application/problem+json
Problem - 429
Demasiadas peticiones, o demasiado tiempo de consulta: cada cliente tiene un número de peticiones por minuto (600 de serie) y un tiempo de consulta por minuto (30 s de serie), y cada petición gasta lo que tarda, así que una lista larga cuenta más que una alerta suelta.
Retry-Afterdice cuándo volver.application/problem+json
Problem
Petición · sandbox
curl -X POST "https://sandbox.api.safeonuba.com/v1/sandbox/scenarios" \
-H "Authorization: Bearer $SAFEONUBA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scenario": "sos"
}'const res = await fetch('https://sandbox.api.safeonuba.com/v1/sandbox/scenarios', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SAFEONUBA_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"scenario": "sos"
}),
});
if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);import os
import requests
res = requests.post(
"https://sandbox.api.safeonuba.com/v1/sandbox/scenarios",
headers={"Authorization": f"Bearer {os.environ['SAFEONUBA_TOKEN']}"},
json={
"scenario": "sos",
},
timeout=10,
)
res.raise_for_status()using System.Net.Http.Headers;
using System.Text;
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Bearer", Environment.GetEnvironmentVariable("SAFEONUBA_TOKEN"));
var contenido = new StringContent("""
{
"scenario": "sos"
}
""", Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://sandbox.api.safeonuba.com/v1/sandbox/scenarios", contenido);
res.EnsureSuccessStatusCode();Respuesta 202
{
"run_id": "0f6c2b7e-3a1d-4c55-9b0e-7d2f4a8c1e90",
"scenario": "sos",
"site_id": "0f6c2b7e-3a1d-4c55-9b0e-7d2f4a8c1e90",
"resource": {
"type": "alert",
"id": "0f6c2b7e-3a1d-4c55-9b0e-7d2f4a8c1e90"
},
"ends_at": "2026-09-24T11:04:12Z"
}