API de estado

Puntos finales públicos JSON y RSS para integraciones, paneles de estado y monitoreo. Todas las marcas de tiempo en las respuestas usan ISO-8601 cuando corresponda. URL base de producción: https://status.licensechain.app

Abrir página de estado →

CORS

GET respuestas de /api/status, /api/v2/status, /api/status/stream, /api/v2/status/stream, /api/status/uptime, /api/v2/status/uptime, /api/incidents, y /api/v2/incidents incluir Access-Control-Allow-Origin: * para que los paneles basados ​​en navegador puedan recuperarlos sin un proxy del mismo origen.

Integración móvil y en la aplicación

Los shells nativos de Android, iOS e híbridos pueden tratar el host de estado como un API JSON de solo lectura (no se requiere sesión LicenseChain).

Punto final Usar en móvil
GET /api/status Pantalla de inicio/configuración resumen del “estado del sistema” (services, metrics).
GET /api/incidents?limit=20 Lista de incidentes; apoya q, status, service parámetros de consulta.
GET /api/status/uptime?days=30 Minigráfico o datos de gráficos.
GET /api/status/stream?interval=15 SSE - mismo JSON que /api/status en cada evento; OkHttp y NSURLSession pueden consumir transmisiones o realizar encuestas /api/status cada 30 a 60 s.
GET /api/status/rss Opcional: entrega al lector del sistema RSS.

Android (Kotlin): búsqueda única con OkHttp

val client = OkHttpClient()
val req = Request.Builder()
  .url("https://status.licensechain.app/api/status")
  .get()
  .build()
client.newCall(req).execute().use { resp ->
  val body = resp.body?.string() ?: ""
  // Parse JSON: status, services, metrics, lastUpdated
}

iOS (Swift) — URLSession

let url = URL(string: "https://status.licensechain.app/api/status")!
URLSession.shared.dataTask(with: url) { data, _, _ in
  guard let data = data else { return }
  // Decode JSON: status, services, metrics, lastUpdated
}.resume()

Usar HTTPS, respete la batería (evite sondeos de menos de un segundo) y la superficie lastUpdated o checkedAt de cargas útiles para que los usuarios conozcan la actualidad de los datos.

Resumen del servicio

GET /api/status

Devuelve filas de servicios agregadas con etiquetas orientadas a humanos y cadenas de tiempo de actividad formateadas.

Respuesta (200):

  • statusoperational | degraded
  • services[]name, status, description, lastChecked, responseTime, uptime, categoryy opcional regions[] cuando se configura la monitorización multirregional (code, status, responseTime?, checkedAt ISO). Las URL de verificación de estado nunca se incluyen.
  • metricsoperational, total, avgResponseTime, uptime
  • lastUpdated — Marca de tiempo ISO

Monitoreo multirregional

Cuando se configuran sondas multirregionales, la API pública expone la región códigos y solo estado acumulado: nunca sondee las URL.

GET /api/status/stream

Server-Sent Events (text/event-stream): instantáneas JSON repetidas con el misma forma como GET /api/status. El intervalo de inserción predeterminado es 15s; consulta opcional interval (segundos, sujetado 5–60). Los navegadores y WebViews móviles pueden suscribirse con EventSource cuando el mismo origen o CORS lo permita.

GET /api/status/uptime

Parámetros de consulta:

  • days — ventana retrospectiva (predeterminada 30, máximo 90).
  • service - opcional; filtrar a un nombre de servicio.
  • region - opcional; filtrar a un código de región de sonda. Requiere service cuando esté configurado.

Respuesta: { success, service, region, days, points[] } donde cada punto tiene bucket (fecha), uptime (0-100), y checks.

API v2 (esquema estable para integraciones)

Prefiera estos caminos para nuevos clientes; v1 sigue siendo compatible con incrustaciones existentes.

GET /api/v2/status

  • api.version"2.0"
  • generatedAt — ISO-8601
  • overall.statusoperational | degraded
  • metricsoperational, total, avgResponseTimeMs, avgUptimePercent
  • services[]id, name, status, description, lastCheckedAt (ISO), responseTimeMs, uptimePercent, category, monitorRegions[] (code sólo), opcional regions[] (code, status, responseTimeMs, checkedAt ISO). Las URL de verificación de estado nunca se incluyen.

GET /api/v2/status/stream

SSE con el mismo cuerpo JSON que GET /api/v2/status; consulta interval (artículos de segunda clase, 5–60, por defecto 15).

GET /api/v2/status/uptime

Misma semántica de consulta que v1, con sobre: api, generatedAt, success, service, region, days, points.

GET /api/v2/incidents

Los mismos parámetros de consulta que v1 (limit, q, status, service). La respuesta incluye api, generatedAt, success, y incidents[] con campos de fecha ISO (startsAt, endsAt, createdAt, updatedAt, resolvedAt — anulable cuando corresponda). Cada incidente puede incluir timeline: una serie de { at, fromStatus?, toStatus?, message? } con mensajes públicos y transiciones de estado únicamente.

GET /api/v2/status/customization

Carga útil de marca pública: brandName, logoUrl, supportUrl, whiteLabelEnabled, publicSiteUrl, themeCssVars.

GET /api/v2/enterprise/features

Indicadores y contadores empresariales de alto nivel para capacidades de página de estado.

RSS alimentación

GET /api/status/rss

RSS/Atom feed de incidentes recientes (vinculados a través de <link rel="alternate"> en el sitio de estado).

Incidentes

GET /api/incidents

Admite filtros como q, status, y service. Devuelve registros de incidentes para la interfaz de usuario de estado y los consumidores externos. La carga útil coincide con los objetos del incidente v2, incluido el opcional timeline (actividad de flujo de trabajo público).

Webhook de cambio de servicio saliente

Cuando un servicio monitoreado cambia de estado (por ejemplo, operativo → degradado), un webhook saliente opcional puede notificar a su punto final. Cuerpo de ejemplo:

{
  "source": "licensechain-status",
  "event": "service_status_changed",
  "service": {
    "name": "API Service",
    "previousStatus": "operational",
    "newStatus": "degraded",
    "checkedAt": "2026-04-04T12:00:00.000Z"
  }
}

Estado en vivo

Vea el tablero de estado público o obtenga el resumen JSON directamente: