Pour réserver un créneau pour utiliser une machine du FabLab, veuillez vous identifier.

API

Documentation API publique

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.

Endpoints publics

  • GET /api/machines
  • GET /api/machines/{id}
  • GET /api/formations
  • GET /api/badges
  • GET /api/opening-hours
  • GET /api/horaires
  • GET /api/leaderboard
  • GET /api/search?q=laser

Endpoints réservés admin

  • GET /api/users
  • GET /api/utilisateurs

Réservations connectées

  • GET /api/reservations
  • POST /api/reservations
  • POST /api/reservations/{id}/cancel

API RFID / machines physiques

Les 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.

Autoriser un badge RFID

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}/authorization

Body 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émarrer une session

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-sessions

Body 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.

Terminer la session courante

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/current

Body 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.

Sécurité RFID

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-interne

Statuts possibles

  • authorized
  • no_badge_required
  • missing_badge
  • unknown_rfid
  • unknown_machine
  • invalid_payload
  • work_session_started
  • work_session_stopped
  • machine_already_in_use
  • user_already_working
  • no_open_session

Note d'intégration

Cette 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.