API – Flux Dashboard Campus =========================== Cette API permet d’accéder en temps réel aux données du dashboard Campus (statistiques, historique, derniers invités, etc.). L’accès est protégé par une clé API fournie séparément. ------------------------------------------------------------ 1. URL d’accès ------------------------------------------------------------ JSON (format recommandé) https://dev.campus.cul.nu/dashboard_feed.php?key=VOTRE_CLE_API XML https://dev.campus.cul.nu/dashboard_feed.php?key=VOTRE_CLE_API&format=xml Jour spécifique (ex. 2025-01-01) https://dev.campus.cul.nu/dashboard_feed.php?key=VOTRE_CLE_API&day=2025-01-01 ------------------------------------------------------------ 2. Authentification ------------------------------------------------------------ - L’accès se fait via key=VOTRE_CLE_API - Si la clé est incorrecte → HTTP 403 Forbidden - Aucun autre système d’authentification n’est nécessaire ------------------------------------------------------------ 3. Structure du JSON renvoyé ------------------------------------------------------------ Le fichier contient 5 blocs principaux : - meta - stats - days - hourly - last_invites Exemple simplifié : { "meta": { "generated_at": "2025-01-22T01:42:13+01:00", "selected_day": "2025-01-22" }, "stats": { "total_invites": 2034, "total_nouveaux_arrivants": 351, "total_staff": 842, "invites_today": 124, "invites_last_60": 18 }, "days": [ { "date": "2025-01-15", "total": 350 }, { "date": "2025-01-16", "total": 420 } ], "hourly": { "labels": ["00h","01h","02h", ... "23h"], "values": [0, 2, 1, ...] }, "last_invites": [ { "id": 15592, "invite_prenom": "Laura", "invite_nom": "Martin", "invite_full": "Laura Martin", "staff_prenom": "Jean", "staff_nom": "Dubois", "staff_full": "Jean Dubois", "created_at": "2025-01-22 01:39:44" } ] } ------------------------------------------------------------ 4. Description des sections ------------------------------------------------------------ 4.1 meta - generated_at : date/heure ISO8601 - selected_day : jour utilisé pour le tableau "hourly" 4.2 stats - total_invites - total_nouveaux_arrivants - total_staff - invites_today - invites_last_60 4.3 days Chaque entrée contient : - date (YYYY-MM-DD) - total (invités ce jour-là) 4.4 hourly - labels (24 valeurs de "00h" à "23h") - values (24 entiers) 4.5 last_invites Chaque entrée contient : - id - invite_prenom / invite_nom / invite_full - staff_prenom / staff_nom / staff_full - created_at (timestamp) ------------------------------------------------------------ 5. Codes d’erreur ------------------------------------------------------------ 403 Forbidden { "error": "Accès refusé (clé API invalide)." } 500 Internal Server Error { "error": "Erreur interne.", "message": "Détail." } ------------------------------------------------------------ 6. Conseils d’intégration ------------------------------------------------------------ - Rafraîchir toutes les 5–10 secondes maximum. - "days" et "hourly" sont parfaits pour les graphiques. - "last_invites" permet un flux d’activité en direct (live feed). ------------------------------------------------------------ 7. Exemples de code pour consommer l’API ------------------------------------------------------------ --- PHP --- Invités aujourd'hui : " . $json['stats']['invites_today'] . ""; echo "
Invités aujourd'hui :
Erreur cURL : " . htmlspecialchars($err) . " (HTTP $code)
"; return false; } if ($code !== 200) { echo "Erreur HTTP : $code
"; } return $response; } // ---------- APPEL API ---------- $jsonRaw = callApi($apiUrl); if (!$jsonRaw) { die("Erreur : impossible de charger le flux API."); } // Pour vérifier ce que renvoie l'API en cas de doute : // echo ""; echo htmlspecialchars($jsonRaw); echo ""; exit; $data = json_decode($jsonRaw, true); if (!$data) { echo "
JSON brut :\n" . htmlspecialchars($jsonRaw) . ""; die("Erreur : format JSON invalide. Détail : " . json_last_error_msg()); } // Vérif de la structure attendue if (!isset($data["stats"], $data["hourly"], $data["last_invites"], $data["meta"])) { echo "
JSON décodé :\n" . htmlspecialchars(print_r($data, true)) . ""; die("Erreur : structure inattendue dans la réponse API."); } // Raccourcis $stats = $data["stats"]; $days = $data["days"] ?? []; $hourly = $data["hourly"]; $lastInvites = $data["last_invites"]; ?>
Aucun invité trouvé.
| ID | Invité | Staff | Date / heure |
|---|---|---|---|