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 :
https://travaux.fiveheberg.fr/api/
Le champ status résume l’état de l’infrastructure, pour afficher une pastille en une ligne :
operationalTous les services fonctionnent normalement.maintenanceUne maintenance est en cours, sans incident.incidentUn incident est en cours ou un service est hors ligne.
Réponse
| Champ | Type | Description |
|---|---|---|
status | string | État général : operational, maintenance ou incident. |
label | string | Libellé lisible de l’état, en français. |
generated_at | date ISO 8601 | Date de génération de la réponse. |
services | objet | null | Services surveillés : total, online, checked_at. null si la dernière mesure date de plus d’une heure. |
incidents | Tâche[] | Incidents en cours (non terminés). |
maintenances | Tâche[] | Maintenances en cours (non terminées). |
planned | Tâche[] | Interventions planifiées dont le créneau n’a pas encore commencé. |
links | objet | Liens 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 :
| Champ | Type | Description |
|---|---|---|
id | string | Référence de la tâche. |
title | string | Titre de la tâche. |
type | string | Incident, Maintenance, Amélioration ou Information. |
status | string | Statut : En Cours, Maintenance, Reportée ou Terminée. |
progress | entier | Avancement de 0 à 100. |
nodes | string[] | Nœuds concernés (ex. Venus, Panel Games, Tous les nœuds). |
impact | string | null | Impact client : aucun, mineur, majeur ou critique. |
starts_at | date | null | Début du créneau planifié. |
ends_at | date | null | Fin prévue du créneau. |
created_at | date | Date de publication. |
updated_at | date | Dernière mise à jour. |
url | string | Page de suivi publique de la tâche. |
Exemples
curl -s https://travaux.fiveheberg.fr/api/
const res = await fetch('https://travaux.fiveheberg.fr/api/');
const etat = await res.json();
if (etat.status === 'operational') {
console.log('Tout fonctionne');
} else {
console.log(etat.label, etat.incidents, etat.maintenances);
}
<?php
$etat = json_decode(file_get_contents('https://travaux.fiveheberg.fr/api/'), true);
echo $etat['label'];
foreach ($etat['incidents'] as $incident) {
echo ' - ' . $incident['title'] . ' (' . $incident['progress'] . ' %)';
}
import requests
etat = requests.get('https://travaux.fiveheberg.fr/api/', timeout=5).json()
print(etat['label'])
for tache in etat['maintenances']:
print('-', tache['title'], tache['progress'], '%')
// discord.js v14 : commande /statut
const res = await fetch('https://travaux.fiveheberg.fr/api/');
const etat = await res.json();
const couleurs = { operational: 0x22c55e, maintenance: 0xf59e0b, incident: 0xef4444 };
await interaction.reply({ embeds: [{
title: etat.label,
color: couleurs[etat.status],
description: [...etat.incidents, ...etat.maintenances]
.map(t => `• [${t.title}](${t.url}) — ${t.progress} %`)
.join('\n') || 'Aucune intervention en cours.',
url: etat.links.status,
}] });
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
https://travaux.fiveheberg.fr/travaux/rss.php
Calendrier iCal
Les interventions planifiées dans Google Agenda, Outlook ou Apple Calendrier, avec rappel 1 h avant.
https://travaux.fiveheberg.fr/travaux/calendar.php
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
urloulinks.statuspour 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.