Endpoints publics
GET /api/machinesGET /api/machines/{id}GET /api/formationsGET /api/badgesGET /api/opening-hoursGET /api/horairesGET /api/leaderboardGET /api/search?q=laser
API
FABOS expose plusieurs endpoints JSON utilisés par l'interface, les intégrations et les machines physiques du FabLab. Cette documentation est provisoire et sera stabilisée avec le projet.
GET /api/machinesGET /api/machines/{id}GET /api/formationsGET /api/badgesGET /api/opening-hoursGET /api/horairesGET /api/leaderboardGET /api/search?q=laserGET /api/usersGET /api/utilisateursGET /api/reservationsPOST /api/reservationsPOST /api/reservations/{id}/cancelLes endpoints RFID V1 sont pensés pour un Raspberry Pi, un lecteur RFID ou une machine physique. Ils utilisent le machineToken pour identifier la machine installée dans le FabLab.
Le machineToken est différent de l'id interne de base de données. Il reste lisible et stable pour les intégrations externes, par exemple printer-01, laser-co2-01 ou cnc-fraiseuse-01.
Vérifie si un badge RFID peut accéder à une machine via MACHINE_BADGE et UTILISATEUR_BADGE. La tentative alimente ACCESS_RFID_LOG.
POST /api/rfid/machines/{machineToken}/authorizationBody JSON :
{"rfid":"8C52B359"}Exemple curl :
curl -X POST http://127.0.0.1:8010/api/rfid/machines/printer-01/authorization -H 'Content-Type: application/json' -d '{"rfid":"8C52B359"}'Réponses possibles : 200 authorized, 200 no_badge_required, 403 missing_badge, 404 unknown_machine, 404 unknown_rfid, 400 invalid_payload.
Démarre une session d'utilisation machine après autorisation RFID. Une ligne ouverte est créée dans LOG_UTILISATION avec dateFin à null.
POST /api/rfid/machines/{machineToken}/work-sessionsBody JSON :
{"rfid":"8C52B359"}Exemple curl :
curl -X POST http://127.0.0.1:8010/api/rfid/machines/printer-01/work-sessions -H 'Content-Type: application/json' -d '{"rfid":"8C52B359"}'Réponses possibles : 201 work_session_started, 403 missing_badge, 404 unknown_machine, 404 unknown_rfid, 409 machine_already_in_use, 409 user_already_working, 400 invalid_payload.
Termine la session ouverte pour le couple machine + utilisateur RFID, renseigne dateFin et calcule duree dans LOG_UTILISATION.
PATCH /api/rfid/machines/{machineToken}/work-sessions/currentBody JSON :
{"rfid":"8C52B359"}Exemple curl :
curl -X PATCH http://127.0.0.1:8010/api/rfid/machines/printer-01/work-sessions/current -H 'Content-Type: application/json' -d '{"rfid":"8C52B359"}'Réponses possibles : 200 work_session_stopped, 404 no_open_session, 404 unknown_machine, 404 unknown_rfid, 400 invalid_payload.
Les routes RFID acceptent un token optionnel configuré avec FABOS_RFID_API_TOKEN. Si cette variable est définie et non vide, le header X-FABOS-DEVICE-TOKEN devient obligatoire.
Sans token configuré, les routes restent accessibles pour faciliter les tests locaux. Ce mode ne doit pas être utilisé en production.
X-FABOS-DEVICE-TOKEN: secret-interneauthorizedno_badge_requiredmissing_badgeunknown_rfidunknown_machineinvalid_payloadwork_session_startedwork_session_stoppedmachine_already_in_useuser_already_workingno_open_sessionCette page utilise volontairement l'URL /api-docs afin de ne pas entrer en conflit avec les routes JSON existantes sous /api. Avant production, il faudra activer le token RFID, limiter l'exposition réseau et prévoir du rate limiting.