API de la page de statut, flux RSS et badge
Ce que votre page de statut expose
Chaque page de statut LoadFocus sert des points d'accès lisibles par une machine à côté de la page destinée aux humains. Ils ne demandent aucune authentification, sont limités en débit par IP et mis en cache 30 secondes.
Les points d'accès JSON suivent le schéma Statuspage, la forme de fait que parlent déjà la plupart des tableaux de bord, bots et intégrations Slack. Si vous migrez depuis Atlassian Statuspage, vos intégrations existantes continuent de fonctionner une fois pointées vers le nouvel hôte, sans changement de code.
Tous les chemins ci-dessous sont relatifs à votre page : https://votre-slug.loadfoc.us, ou votre propre nom d'hôte si vous avez configuré un domaine personnalisé.
GET /api/v2/status.json
L'état global, et rien d'autre. À utiliser pour une interrogation légère.
{"page": {"id": "8f3c1e02-5b74-4a9d-9e21-6c0af7d3b514","name": "Acme Status","url": "https://acme.loadfoc.us","time_zone": "Etc/UTC","updated_at": "2026-08-26T14:05:00.000Z"},"status": {"indicator": "none","description": "All Systems Operational"}}
indicator vaut none, minor, major, critical ou maintenance.
À noter : lorsque la page n'a pas de données récentes, l'indicateur est renvoyé à minor plutôt qu'à none. Un worker mort ne doit jamais apparaître comme un vert fiable via l'API.
GET /api/v2/summary.json
Tout ce que montre la page : état global, chaque composant, les incidents non résolus et les maintenances à venir ou en cours.
{"page": { "id": "8f3c1e02-5b74-4a9d-9e21-6c0af7d3b514", "name": "Acme Status", "url": "https://acme.loadfoc.us", "time_zone": "Etc/UTC", "updated_at": "2026-08-26T14:05:00.000Z" },"status": { "indicator": "minor", "description": "Degraded Performance" },"components": [{"id": "api","name": "Public API","status": "degraded_performance","position": 1,"description": null,"updated_at": "2026-08-26T14:05:00.000Z"}],"incidents": [{"id": "inc_1a2b","name": "Elevated API latency","status": "identified","impact": "minor","created_at": "2026-08-26T13:40:00.000Z","updated_at": "2026-08-26T14:02:00.000Z","monitoring_at": null,"resolved_at": null,"shortlink": "https://acme.loadfoc.us/incidents/inc_1a2b","incident_updates": [{ "status": "identified", "body": "A slow query has been identified.", "created_at": "2026-08-26T14:02:00.000Z" }]}],"scheduled_maintenances": [{"id": "mnt_9x8y","name": "Database upgrade","status": "scheduled","impact": "maintenance","scheduled_for": "2026-08-28T22:00:00.000Z","scheduled_until": "2026-08-29T00:00:00.000Z","incident_updates": []}]}
components[].status vaut operational, degraded_performance, partial_outage, major_outage ou under_maintenance.
incidents ne contient que les incidents non résolus, et scheduled_maintenances que les fenêtres non terminées. Les deux reproduisent le comportement de Statuspage. Pour l'historique résolu, utilisez les flux ci-dessous.
Comportement en cas d'erreur
Les deux points d'accès JSON répondent HTTP 200 avec une structure vide en cas de problème interne, plutôt qu'un 5xx. Un consommateur doit donc traiter un tableau components vide comme « aucune donnée disponible », et non comme « aucun composant configuré ».
Flux d'incidents
Pour les lecteurs et les bots qui suivent des flux plutôt que d'interroger :
GET /history.rss- historique des incidents en RSSGET /history.atom- le même en AtomGET /feed.rss- un alias dehistory.rss
Ces flux contiennent aussi les incidents résolus : c'est donc la bonne source pour l'historique.
Badge de statut
GET /badge.svg renvoie un badge SVG pour un README ou une page de documentation. Sans paramètre, il affiche l'état global de la page :
[](https://acme.loadfoc.us)
Ajoutez component=<id> pour afficher un seul composant. L'identifiant est celui que /data indique pour ce composant, et metric choisit ce que le badge affiche :
metric=status(par défaut) : le nom du composant et son état actuel.metric=uptime: son taux de disponibilité. Ajoutezdays=30oudays=90; sans cela, la fenêtre d'historique de la page est utilisée. Vert à partir de 99,9 %, orange à partir de 99 %, rouge en dessous.metric=latency: son temps de réponse moyen sur les dernières 24 heures. Vert sous 500 ms, orange sous 1500 ms.logo=1: ajoute la marque LoadFocus à gauche, sur n'importe laquelle des variantes ci-dessus.

Un identifiant de composant inconnu renvoie un badge gris "not found" plutôt qu'une erreur, si bien qu'un extrait mal saisi n'affiche jamais une image cassée. Les badges sont mis en cache 60 secondes et ne sont pas servis pour les pages protégées par mot de passe ou restreintes par IP.
Styles shields.io
GET /badge.json renvoie le même badge au format endpoint de shields.io, avec les mêmes paramètres, donc n'importe quel style shields fonctionne :

La chaîne de requête à l'intérieur de url= doit être encodée : ? en %3F, & en %26 et = en %3D.
Visibilité dans les moteurs de recherche
Les pages de statut sont indexables par défaut. Une page créée dans l'application enregistre hideFromSearch: false : elle ne sert donc pas de noindex, son robots.txt renvoie Allow: / avec une ligne Sitemap:, et /sitemap.xml liste la page, ses incidents et son historique de maintenance.
Pour masquer une page aux moteurs, mettez hideFromSearch à true. La page sert alors <meta name="robots" content="noindex,follow">, robots.txt renvoie Disallow: /, /sitemap.xml répond 404, et les balises canonical et Open Graph sont supprimées afin que la page ne se signale pas. Aucun réglage n'existe pour cela dans l'éditeur : passez par l'API.
Voir aussi
- Créer une page de statut publique pour vos moniteurs
- Ajouter un domaine personnalisé à votre page de statut
Migrer depuis Atlassian Statuspage
Si vous venez d'Atlassian Statuspage, deux endpoints reprennent son schéma : la plupart des intégrations existantes continuent de fonctionner en changeant seulement l'hôte.
/api/v2/status.json- statut global de la page/api/v2/summary.json- statut, composants, incidents non résolus et maintenances à venir
LoadFocus ne sert pas les endpoints components.json ni incidents.json de Statuspage.
Tout ce qu'ils renvoient se trouve déjà dans summary.json.
Voir aussi la comparaison des alternatives à Statuspage.