API de statut
Points de terminaison publics JSON et RSS pour les intégrations, les tableaux d'état et la surveillance.
Tous les horodatages dans les réponses utilisent ISO-8601 le cas échéant.
URL de base de production : https://status.licensechain.app
CORS
GET réponses de
/api/status,
/api/v2/status,
/api/status/stream,
/api/v2/status/stream,
/api/status/uptime,
/api/v2/status/uptime,
/api/incidents, et
/api/v2/incidents
inclure Access-Control-Allow-Origin: *
afin que les tableaux de bord basés sur un navigateur puissent les récupérer sans proxy de même origine.
Intégration mobile et dans l'application
Les shells natifs Android, iOS et hybrides peuvent traiter l'hôte de statut comme un API JSON en lecture seule (aucune séance LicenseChain requise).
| Point de terminaison | Utilisation sur mobile |
|---|---|
GET /api/status |
Écran d’accueil/récapitulatif « état du système » des paramètres (services, metrics). |
GET /api/incidents?limit=20 |
Liste des incidents ; prend en charge q, status, service paramètres de requête. |
GET /api/status/uptime?days=30 |
Données sparkline ou graphique. |
GET /api/status/stream?interval=15 |
SSE - même JSON que /api/status sur chaque événement ; OkHttp et NSURLSession peuvent consommer des flux ou interroger /api/status toutes les 30 à 60 secondes. |
GET /api/status/rss |
Facultatif : transfert au lecteur système RSS. |
Android (Kotlin) – récupération en une seule fois avec 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()
Utiliser HTTPS, respectez la batterie (évitez les interrogations inférieures à la seconde) et la surface
lastUpdated ou
checkedAt
des charges utiles afin que les utilisateurs connaissent la fraîcheur des données.
Résumé des services
GET /api/status
Renvoie les lignes de service agrégées avec des étiquettes orientées vers l'humain et des chaînes de disponibilité formatées.
Réponse (200) :
status—operational|degradedservices[]—name,status,description,lastChecked,responseTime,uptime,category, et facultatifregions[]lorsque la surveillance multirégion est configurée (code,status,responseTime?,checkedAtISO). Les URL de contrôle de santé ne sont jamais incluses.metrics—operational,total,avgResponseTime,uptimelastUpdated— Horodatage ISO
Surveillance multirégionale
Lorsque des sondes multirégions sont configurées, l'API publique expose la région codes et le statut cumulé uniquement : ne sondez jamais les URL.
GET /api/status/stream
Server-Sent Events (text/event-stream) :
instantanés JSON répétés avec le même forme comme
GET /api/status.
L'intervalle de poussée par défaut est 15s; requête facultative
interval
(secondes, serré 5–60).
Les navigateurs et les WebViews mobiles peuvent s'abonner avec
EventSource
lorsque la même origine ou CORS le permet.
GET /api/status/uptime
Paramètres de requête :
days— fenêtre d'analyse (par défaut 30, maximum 90).service- facultatif; filtrer sur un nom de service.region- facultatif; filtrer sur un code de région de sonde. Nécessiteserviceune fois réglé.
Réponse: { success, service, region, days, points[] }
où chaque point a bucket (date),
uptime (0-100), et
checks.
API v2 (schéma stable pour les intégrations)
Préférer ces parcours pour les nouveaux clients ; La v1 reste prise en charge pour les intégrations existantes.
GET /api/v2/status
api.version—"2.0"generatedAt— ISO-8601overall.status—operational|degradedmetrics—operational,total,avgResponseTimeMs,avgUptimePercentservices[]—id,name,status,description,lastCheckedAt(ISO),responseTimeMs,uptimePercent,category,monitorRegions[](codeuniquement), en optionregions[](code,status,responseTimeMs,checkedAtISO). Les URL de contrôle de santé ne sont jamais incluses.
GET /api/v2/status/stream
SSE avec le même corps JSON que GET /api/v2/status;
requête interval
(secondes, 5–60, défaut 15).
GET /api/v2/status/uptime
Même sémantique de requête que la v1, avec enveloppe :
api,
generatedAt,
success,
service,
region,
days,
points.
GET /api/v2/incidents
Mêmes paramètres de requête que la v1 (limit,
q,
status,
service).
La réponse comprend api,
generatedAt,
success, et
incidents[]
avec des champs de date ISO (startsAt,
endsAt,
createdAt,
updatedAt,
resolvedAt — Nullable le cas échéant).
Chaque incident peut inclure timeline:
un tableau de { at, fromStatus?, toStatus?, message? }
avec des messages publics et des transitions de statut uniquement.
GET /api/v2/status/customization
Charge utile de marque publique :
brandName,
logoUrl,
supportUrl,
whiteLabelEnabled,
publicSiteUrl,
themeCssVars.
GET /api/v2/enterprise/features
Indicateurs et compteurs d'entreprise de haut niveau pour les fonctionnalités de page d'état.
RSS flux
GET /api/status/rss
Flux RSS/Atom des incidents récents (liés via
<link rel="alternate">
sur le site de statut).
Incidents
GET /api/incidents
Prend en charge des filtres tels que q,
status, et
service.
Renvoie les enregistrements d'incidents pour l'interface utilisateur d'état et les consommateurs externes.
La charge utile correspond aux objets d'incident v2, y compris facultatifs
timeline
(activité de workflow public).
Webhook de modification de service sortant
Lorsqu'un service surveillé change d'état (par exemple opérationnel → dégradé), un webhook sortant facultatif peut informer votre point de terminaison. Exemple de corps :
{
"source": "licensechain-status",
"event": "service_status_changed",
"service": {
"name": "API Service",
"previousStatus": "operational",
"newStatus": "degraded",
"checkedAt": "2026-04-04T12:00:00.000Z"
}
}
Statut en direct
Consultez le tableau d'état public ou récupérez directement le résumé JSON :