Documentation
Tout ce qu'il faut pour connecter une application front à un coffre : stockage JSON, sessions multijoueurs et temps réel. La référence API complète (Swagger) détaille chaque endpoint.
1. Le coffre
Chaque application dispose d'un coffre identifié par un token
axm_…. Ce token part dans le header X-API-Key de chaque requête ;
il n'y a ni cookie ni session. Créez un coffre depuis votre
espace connecté et copiez son token.
2. Stocker : lire & écrire le payload
Le coffre contient un seul document JSON (objet ou tableau, structure libre).
const API = 'https://hub.exemple.fr/api';
const TOKEN = 'axm_votre_token_ici';
// Lire
const { payload } = await fetch(`${API}/storages`, {
headers: { 'X-API-Key': TOKEN },
}).then(r => r.json());
// Écrire (REMPLACE tout le payload, ce n'est pas un merge)
await fetch(`${API}/storages`, {
method: 'POST',
headers: { 'X-API-Key': TOKEN, 'Content-Type': 'application/json' },
body: JSON.stringify({ score: 42 }),
});
| 200 | {"payload": {...}} — les données du coffre |
| 401 | Header X-API-Key absent |
| 403 | Origine refusée, ou écriture sur un coffre verrouillé |
| 404 | Token inconnu, ou coffre désactivé |
| 422 | Corps non-JSON, ou payload scalaire |
3. Restreindre les origines
Par défaut un coffre répond à toutes les origines. Ajoutez des règles d'accès
(url exacte, wildcard https://*.monjeu.fr, ou regex) sur la page du coffre pour
limiter les sites autorisés. Le CORS est géré automatiquement par le hub.
4. Sessions & temps réel
Pour le multijoueur, ouvrez une session (partie/lobby). Le créateur en devient l'admin et le premier participant ; les autres rejoignent avec l'id de session. Chaque membre reçoit un secret à conserver.
// Créer une session (→ admin + 1er participant)
const s = await fetch(`${API}/sessions`, {
method: 'POST',
headers: { 'X-API-Key': TOKEN, 'Content-Type': 'application/json' },
body: JSON.stringify({ ownerId: 'client-abc', owner: { pseudo: 'Alice' } }),
}).then(r => r.json());
// → s.session.id (à partager), s.participant.secret, s.ownerSecret
Le temps réel (si activé sur le coffre) passe par trois canaux :
| public | Diffusion à toute la session (tout membre publie). |
| admin | Privé entre l'admin et un participant. |
| inbox | Message direct vers un participant. |
// S'abonner : le hub ne délivre un ticket que pour vos canaux autorisés
const sub = await fetch(`${API}/sessions/${sessionId}/realtime/subscribe`, {
headers: { 'X-API-Key': TOKEN, 'X-Participant-Secret': secret },
}).then(r => r.json());
new EventSource(sub.subscribeUrl).onmessage = (e) => {
const { channel, event, data, from } = JSON.parse(e.data);
// router sur channel + event ; `from` = id du participant, ou "admin"
};
// Publier sur le canal public
await fetch(`${API}/sessions/${sessionId}/realtime/publish`, {
method: 'POST',
headers: { 'X-API-Key': TOKEN, 'X-Participant-Secret': secret, 'Content-Type': 'application/json' },
body: JSON.stringify({ channel: 'public', event: 'chat.message', data: { text: 'coucou' } }),
});
Guide d'intégration détaillé (sessions, participants, mots de passe, expiration) : voir la référence API.