Monitoreo de API y assertions JSON
Un HTTP 200 solo confirma que el servidor aceptó la petición. En APIs reales, basta un error de negocio, un despliegue fallido o un feature flag mal configurado para que el cuerpo de la respuesta ya no sea el esperado — mientras el monitor sigue en verde.
Las assertions JSON de StatusInspector te permiten definir reglas declarativas sobre el cuerpo de la respuesta: qué campos deben existir, qué valores deben tener y qué comparaciones numéricas deben cumplirse. Si una regla falla, el check se trata como fallo operativo igual que un timeout o un código 500.
Disponibilidad según plan
Las assertions JSON avanzadas están disponibles en los planes Pro y Enterprise. En el plan Gratuito puedes seguir usando las comprobaciones básicas del monitor HTTP: código de respuesta esperado, palabra clave en el cuerpo y validación de Content-Type.
Cómo funcionan las assertions
- El probe ejecuta un único request al endpoint configurado (con el método, cabeceras, cuerpo y autenticación que hayas definido).
- Si el cuerpo de la respuesta es JSON válido, se decodifica y se aplican las reglas en orden.
- La primera regla que no se cumple hace fallar el check — enfoque fail-fast. El error indica qué regla falló y por qué, sin exponer el cuerpo completo en logs ni alertas.
- Si todas las reglas pasan, el check se evalúa como UP (salvo que la latencia supere el umbral configurado, en cuyo caso sería DEGRADED).
Esto evita la situación de "está verde en el balanceador y roto en negocio".
Cuándo un 200 no es suficiente
| Situación | ¿200? | Lo que hace el monitor con assertions |
|---|---|---|
El endpoint devuelve { "error": "db_timeout" } | Sí | Exige ausencia del campo error o presencia de status: "ok" |
La lista de items llega vacía: "items": [] | Sí | Usa gt para verificar que la longitud o un conteo es mayor que cero |
La versión de API bajó: "apiVersion": 1 en lugar de 2 | Sí | Usa gte para confirmar que el valor es al menos 2 |
| El cuerpo no es JSON o está truncado | A veces | Falla en la fase de parseo antes de evaluar las reglas |
Sintaxis de rutas (path)
Las reglas se aplican sobre un path dentro del JSON, usando notación punto para acceder a campos anidados:
status → campo en la raíz
data.user.id → campo id dentro de user dentro de data
items.0.name → primer elemento del array items, campo name
Ejemplos de respuesta y sus paths:
{
"status": "ok",
"data": {
"user": { "id": 42, "active": true }
},
"items": [
{ "name": "primer item" }
]
}
| Path | Valor accedido |
|---|---|
status | "ok" |
data.user.id | 42 |
data.user.active | true |
items.0.name | "primer item" |
Los campos cuyo nombre contiene puntos u otros caracteres especiales no están soportados en la notación actual. Si tu API usa ese tipo de claves, considera si puedes validarlo con una comprobación de texto en el cuerpo.
Operadores disponibles
| Operador | Descripción | Requiere value |
|---|---|---|
exists | El path existe en el JSON | No |
not_exists | El path no existe | No |
equals | El valor en el path es igual al esperado | Sí |
not_equals | El valor en el path es diferente al esperado | Sí |
contains | El valor (string) contiene el texto esperado como subcadena | Sí |
gt | El valor numérico es mayor que el esperado | Sí |
gte | El valor numérico es mayor o igual que el esperado | Sí |
lt | El valor numérico es menor que el esperado | Sí |
lte | El valor numérico es menor o igual que el esperado | Sí |
Las reglas se evalúan en el orden en que las defines. El panel te permite reordenarlas.