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 RSS
  • GET /history.atom - le même en Atom
  • GET /feed.rss - un alias de history.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 reflétant l'état global actuel. Il est prévu pour être intégré dans un README ou une page de documentation :

[![Status](https://acme.loadfoc.us/badge.svg)](https://acme.loadfoc.us)

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