Skip to content

Endpoints ​

Cette page est l'index des routes : de quoi trouver la bonne en un coup d'œil. Le détail de chacune (corps attendu, réponses, exemples, et un formulaire pour l'essayer) est dans Swagger :

EnvironnementSwaggerDescription OpenAPI (JSON)
Localhttp://localhost:4000/api/docs/api/openapi
Productionapi.time.jostud.com/api/docs/api/openapi

Essayer une route protégée dans Swagger

POST /api/auth/login avec "client": "mobile", puis le bouton Authorize, et colle l'access_token. Les routes avec un cadenas sont alors utilisables.

Légende : E employé, M manager, GM General Manager. « Soi » = sur son propre compte, « ses gens » = les membres de ses équipes (voir Droits par rôle).

Sessions et liens envoyés par e-mail ​

Publiques : personne n'a besoin d'être connecté.

MéthodeRouteRôle
POST/api/auth/loginse connecter ("client": "mobile" pour recevoir les jetons)
POST/api/auth/refreshobtenir de nouveaux jetons
POST/api/auth/logoutse déconnecter
GET/api/auth/mela personne connectée (connecté)
POST/api/auth/forgot-passwordenvoyer un lien de réinitialisation (toujours 204)
GET/api/password-tokens/:tokence lien est-il encore valable, et pour qui ?
POST/api/password-tokens/:tokenchoisir son mot de passe (réinitialisation ou invitation)
POST/api/email-change/:tokenconfirmer une nouvelle adresse e-mail

Comptes ​

MéthodeRouteQui
GET/api/usersM (comptes actifs), GM (tous)
POST/api/usersGM : inviter une personne
GET/api/users/:idsoi, ses gens (M), tous (GM)
PUT, PATCH/api/users/:idsoi : changer son nom
DELETE/api/users/:idsoi (sauf le GM), les autres (GM)
PUT/api/users/:id/roleGM : promouvoir ou retirer les droits (jamais soi)
POST/api/users/:id/invitationGM : renvoyer l'invitation
PUT/api/users/:id/passwordsoi : changer de mot de passe
PUT/api/users/:id/preferencessoi : langue et thème
POST, GET/api/users/:id/email-changeGM, soi : demander à changer d'e-mail, voir la demande en attente
GET/api/users/:id/datasoi : tout ce que l'API garde sur soi

Pointage ​

MéthodeRouteQui
GET/api/clocks/:userIDsoi, ses gens (M), tous (GM)
POST/api/clocks/:userIDsoi : arrivée ou départ
POST/api/clocks/:userID/breaksoi : début ou fin de pause

Journées de travail ​

Les routes imposées par le sujet, où :userID désigne la personne et :id la journée.

MéthodeRouteQui
GET/api/workingtime/:userIDsoi, ses gens (M), tous (GM) ; ?start=…&end=… facultatifs
GET/api/workingtime/:userID/:idles mêmes
POST/api/workingtime/:userIDses gens (M), tous (GM), jamais soi
PUT/api/workingtime/:idles mêmes
DELETE/api/workingtime/:idles mêmes
GET/api/users/:id/changesle journal des modifications : soi, ses gens (M), tous (GM)

Absences et semaines ​

MéthodeRouteQui
GET/api/users/:id/absencessoi, ses gens (M), tous (GM)
POST/api/users/:id/absencesses gens (M), tous (GM), jamais soi
DELETE/api/absences/:idles mêmes
GET/api/users/:id/week-validationssoi, ses gens (M), tous (GM)
POST/api/users/:id/week-validationsses gens (M), tous (GM), jamais soi
PUT/api/week-validations/:id/reopenle manager qui l'a validée, le GM

Demandes de correction ​

MéthodeRouteQui
GET/api/correctionsles siennes, plus celles qu'on peut examiner
POST/api/correctionstous, pour leurs propres heures
PUT/api/corrections/:id/approveses gens (M), toutes (GM, la sienne comprise)
PUT/api/corrections/:id/rejectles mêmes

Équipes et moyennes ​

MéthodeRouteQui
GET/api/teamsles siennes (M), toutes (GM)
POST/api/teamsM (dont il est le manager), GM
GET, PUT, PATCH, DELETE/api/teams/:idson manager, le GM (changer de manager : GM seulement)
POST/api/teams/:id/membersson manager, le GM
DELETE/api/teams/:id/members/:user_idson manager, le GM
GET/api/teams/:id/averagesson manager, le GM ; ?start=…&end=… obligatoires
GET/api/users/:id/averagessoi, ses gens (M), tous (GM) ; ?start=…&end=… obligatoires

Notifications ​

MéthodeRouteQui
GET/api/notificationsles siennes (les 30 plus récentes)
PUT/api/notifications/readmarquer les siennes comme lues

Documentation ​

MéthodeRouteRôle
GET/api/docsSwagger UI
GET/api/openapila description OpenAPI, en JSON

Une nouvelle route se documente

Le test api_docs_test.exs vérifie que chaque route du routeur est décrite dans Swagger, et que les vraies réponses respectent leurs schémas. Une route ajoutée sans sa description fait échouer les tests (voir Ajouter une route).