Développeurs

API publique

Intégrez l’état de l’infrastructure FiveHeberg à votre bot Discord, votre site ou vos outils : incidents, maintenances et interventions planifiées, en temps réel.

  • Sans clé ni compte
  • JSON, UTF-8
  • CORS ouvert (appel depuis un navigateur)
  • Mise en cache 60 s
  • Lecture seule

Démarrage rapide

Un seul point d’accès, en GET, sans authentification :

GET https://travaux.fiveheberg.fr/api/

Le champ status résume l’état de l’infrastructure, pour afficher une pastille en une ligne :

  • operational Tous les services fonctionnent normalement.
  • maintenance Une maintenance est en cours, sans incident.
  • incident Un incident est en cours ou un service est hors ligne.

Réponse

ChampTypeDescription
statusstringÉtat général : operational, maintenance ou incident.
labelstringLibellé lisible de l’état, en français.
generated_atdate ISO 8601Date de génération de la réponse.
servicesobjet | nullServices surveillés : total, online, checked_at. null si la dernière mesure date de plus d’une heure.
incidentsTâche[]Incidents en cours (non terminés).
maintenancesTâche[]Maintenances en cours (non terminées).
plannedTâche[]Interventions planifiées dont le créneau n’a pas encore commencé.
linksobjetLiens utiles : portail, page status, flux RSS, calendrier iCal.

Exemple de réponse

{
    "status": "maintenance",
    "label": "Maintenance en cours",
    "generated_at": "2026-11-01T14:05:00+01:00",
    "services": { "total": 16, "online": 16, "checked_at": "2026-11-01T14:04:12+01:00" },
    "incidents": [],
    "maintenances": [
        {
            "id": "4937534",
            "title": "Migration réseau des nœuds de jeux",
            "type": "Maintenance",
            "status": "En Cours",
            "progress": 60,
            "nodes": ["Venus", "Terre", "Mars"],
            "impact": "majeur",
            "starts_at": "2026-11-01T22:00:00+01:00",
            "ends_at": "2026-11-01T23:30:00+01:00",
            "created_at": "2026-11-01T10:12:00+01:00",
            "updated_at": "2026-11-01T13:50:00+01:00",
            "url": "https://travaux.fiveheberg.fr/travaux/travaux-info.php?id=4937534"
        }
    ],
    "planned": [],
    "links": {
        "portal": "https://travaux.fiveheberg.fr/home/",
        "status": "https://travaux.fiveheberg.fr/status/",
        "rss": "https://travaux.fiveheberg.fr/travaux/rss.php",
        "calendar": "https://travaux.fiveheberg.fr/travaux/calendar.php"
    }
}

Objet Tâche

Chaque élément de incidents, maintenances et planned a la même forme :

ChampTypeDescription
idstringRéférence de la tâche.
titlestringTitre de la tâche.
typestringIncident, Maintenance, Amélioration ou Information.
statusstringStatut : En Cours, Maintenance, Reportée ou Terminée.
progressentierAvancement de 0 à 100.
nodesstring[]Nœuds concernés (ex. Venus, Panel Games, Tous les nœuds).
impactstring | nullImpact client : aucun, mineur, majeur ou critique.
starts_atdate | nullDébut du créneau planifié.
ends_atdate | nullFin prévue du créneau.
created_atdateDate de publication.
updated_atdateDernière mise à jour.
urlstringPage de suivi publique de la tâche.

Exemples

curl -s https://travaux.fiveheberg.fr/api/

Widget pour votre site

Collez ce code dans n’importe quelle page : il affiche l’état en direct (🟢 / 🟠 / 🔴) et renvoie vers la page status.

<a id="fh-statut" href="https://travaux.fiveheberg.fr/status/" target="_blank" rel="noopener">Statut des services</a>
<script>
fetch('https://travaux.fiveheberg.fr/api/')
  .then(r => r.json())
  .then(etat => {
    const lien = document.getElementById('fh-statut');
    const pastille = { operational: '🟢', maintenance: '🟠', incident: '🔴' }[etat.status];
    lien.textContent = pastille + ' ' + etat.label;
  });
</script>

RSS et calendrier

Pour s’abonner au calendrier : copiez son adresse, puis « Ajouter un agenda › À partir de l’URL » dans Google Agenda (ou « S’abonner au calendrier » dans Outlook et Apple Calendrier).

Essayer en direct

Appel réel de l’API depuis votre navigateur.

Bonnes pratiques

  • Interrogez l’API au plus une fois par minute : la réponse est mise en cache 60 secondes.
  • Prévoyez un délai d’attente (5 s) et un affichage neutre si l’API ne répond pas.
  • Renvoyez vos utilisateurs vers url ou links.status pour le détail.
  • De nouveaux champs peuvent être ajoutés : ignorez ceux que vous ne connaissez pas.

Une question ou un besoin particulier ? Écrivez-nous sur le Discord FiveHeberg.