Saltar al contenido principal

Monitores vía API

nota

La gestión de monitores vía API está disponible en los planes Pro y Enterprise.

Endpoints

MétodoRutaScopeDescripción
GET/api/v1/monitorsmonitors:readListar monitores
GET/api/v1/monitors/{id}monitors:readDetalle de un monitor
POST/api/v1/monitorsmonitors:writeCrear monitor
PATCH/api/v1/monitors/{id}monitors:writeActualizar monitor (parcial)
DELETE/api/v1/monitors/{id}monitors:writeEliminar monitor

GET /api/v1/monitors

Parámetros de consulta:

ParámetroTipoDescripción
pageintPágina (default: 1)
per_pageintResultados por página (default: 25, máx: 100)
statusstringFiltrar por up, down, degraded o unknown
typestringFiltrar por tipo: http, tcp, dns, ssl, heartbeat, ping
qstringBúsqueda por nombre o target

Ejemplo:

curl -H "Authorization: Bearer <token>" \
"https://back.statusinspector.com/api/v1/monitors?type=http&status=down"

Campos del objeto Monitor

Los campos presentes dependen del monitor_type.

Campos comunes (todos los tipos)

CampoTipoDescripción
idstringID del monitor
namestringNombre
monitor_typestringhttp, tcp, dns, ssl, heartbeat, ping
targetstringURL, IP o hostname objetivo
methodstringMétodo HTTP (GET, POST, etc.) — solo HTTP
interval_secintSegundos entre checks
timeout_msintTimeout en ms
group_idint|nullID de grupo (null si sin grupo)
is_pausedboolSi está pausado
is_in_maintenanceboolSi está en mantenimiento
last_statusstringEstado agregado actual: up, down, degraded, unknown
last_checked_atstring|nullISO 8601 UTC del último check
next_run_atstring|nullISO 8601 UTC del próximo check programado
created_atstringISO 8601 UTC
updated_atstringISO 8601 UTC
synthetic_trace_body_detailstringnone, truncated o full

Campos adicionales — tipo http

CampoTipoDescripción
editor_ui_profilestring|nullhttp_endpoint, api_full, api o null
portint|nullPuerto opcional
expected_http_codesstring|nullCódigos esperados, p.ej. "200,201"
keywordstring|nullTexto buscado en la respuesta
api_expected_content_typestring|nullContent-Type esperado
api_expected_body_containsstring|nullSubstring esperado en el body
api_max_latency_msint|nullUmbral de latencia para estado DEGRADED
synthetic_enabledboolSi el modo sintético multi-step está activo
api_json_assertions_jsonobject|nullReglas de assertions JSON (ver sección)
api_headers_jsonobject|nullHeaders HTTP personalizados
api_bodystring|nullBody de la petición
synthetic_steps_jsonobject|nullEscenario multi-step declarativo
api_auth_typestringnone, bearer, basic o api_key
api_auth_basic_userstring|nullUsuario (autenticación Basic)
api_auth_api_key_headerstring|nullNombre del header de API key
ssl_expiry_warn_daysint|nullDías de antelación para aviso SSL (null = predeterminado)
ssl_expiry_last_not_afterstring|nullFecha de expiración del certificado (snapshot)

Los secretos (api_auth_bearer_token, api_auth_basic_pass, api_auth_api_key_value) nunca se devuelven en respuestas GET. Solo se aceptan en escritura.

Campos adicionales — tipo heartbeat

CampoTipoDescripción
heartbeat_tokenstring|nullToken secreto para el endpoint de ping
heartbeat_period_secint|nullVentana esperada entre pings válidos (segundos)
heartbeat_grace_secint|nullTolerancia adicional antes de marcar DOWN
heartbeat_notify_on_lateboolSi alertar al entrar en DEGRADED por retraso
heartbeat_payload_policystringnone o status_ok
heartbeat_payload_status_keystring|nullClave JSON a evaluar con política status_ok
heartbeat_last_ping_atstring|nullISO 8601 UTC del último ping aceptado

Campos adicionales — tipo ssl

CampoTipoDescripción
ssl_expiry_warn_daysint|nullDías de antelación para aviso SSL
ssl_expiry_last_not_afterstring|nullSnapshot de expiración del certificado

POST /api/v1/monitors — Crear monitor

Acepta payload plano o formato JSON:API:

{
"name": "API de producción",
"monitor_type": "http",
"target": "https://api.ejemplo.com/health",
"method": "GET",
"interval_sec": 60,
"timeout_ms": 5000,
"expected_http_codes": "200",
"api_json_assertions_json": [
{ "path": "status", "op": "equals", "value": "ok" }
]
}

Campos requeridos

CampoDescripción
nameNombre del monitor
monitor_typeTipo: http, tcp, dns, ssl, heartbeat, ping
targetURL o host objetivo (no requerido en heartbeat)
interval_secIntervalo entre checks
timeout_msTimeout en ms

Campos opcionales HTTP

Todos los campos de la sección de detalle HTTP son aceptados. Para autenticación:

{
"api_auth_type": "bearer",
"api_auth_bearer_token": "mi-token-secreto"
}

Assertions JSON

Formato de cada regla en api_json_assertions_json:

[
{ "path": "data.status", "op": "equals", "value": "ok" },
{ "path": "data.count", "op": "greater_than", "value": "0" },
{ "path": "error", "op": "is_null" },
{ "path": "items", "op": "contains", "value": "producto" }
]

Operadores disponibles: equals, not_equals, contains, not_contains, greater_than, less_than, is_null, is_not_null, regex.

Respuesta exitosa: 201 Created con el monitor creado.


PATCH /api/v1/monitors/{id} — Actualizar monitor

Solo los campos enviados se actualizan (actualización parcial). Mismo formato que POST.

curl -X PATCH \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"is_paused": true}' \
"https://back.statusinspector.com/api/v1/monitors/42"

DELETE /api/v1/monitors/{id} — Eliminar monitor

curl -X DELETE \
-H "Authorization: Bearer <token>" \
"https://back.statusinspector.com/api/v1/monitors/42"

Respuesta:

{
"data": { "id": "42", "type": "monitor", "attributes": { "deleted": true } },
"meta": { ... }
}