Cette API permet d'effectuer des opérations sur des associations (assos) et des événements (events) à l'aide de différentes méthodes. Elle prend en charge les opérations de lecture, de mise à jour, d'ajout et de suppression d'associations, d'événements et de sessions.
Les paramètres peuvent être passés dans l'URL ou dans le corps de la requête au format formulaire (x-www-form-urlencoded).
| Méthode | URL | Description |
|---|---|---|
| 🔵 GET | /api/assos | Récupère toutes les associations |
| 🔵 GET | /api/assos/{id} | Récupère l'association avec l'identifiant {id} |
| 🟡 PUT | /api/assos/{id} | Met à jour l'association avec l'identifiant {id} |
| 🔵 GET | /api/assos/{id}/events | Récupère tous les événements de l'association avec l'identifiant {id} |
| 🔵 GET | /api/events | Récupère tous les événements |
| 🟢 POST | /api/events | Ajoute un événement |
| 🔵 GET | /api/events/{id} | Récupère l'événement avec l'identifiant {id} |
| 🟡 PUT | /api/events/{id} | Met à jour l'événement avec l'identifiant {id} |
| 🔴 DELETE | /api/events/{id} | Supprime l'événement avec l'identifiant {id} |
| 🟢 POST | /api/sessions | Crée une session lié à une association |
| 🔵 GET | /api/sessions/{id} | Récupère la session avec l'identifiant {id} |
| 🔴 DELETE | /api/sessions/{id} | Supprime la session avec l'identifiant {id} |
| 🔵 GET | /api/templates | Récupère les identifiants de toutes les templates |
| 🔵 GET | /api/templates/{id} | Récupère la template avec l'identifiant {id} |
| 🔵 GET | /api/templates/{id}/{event_id} | Récupère le mail pour l'event {event_id} généré par la template avec l'identifiant {id} |
| 🟢 POST | /api/templates/{id}/{event_id}/send | Envoie un email à propos de l'évenement {event_id} via la template {id} |
| 🔵 GET | /api/socials | Récupère la liste des réseaux sociaux supportés |
| 🔵 GET | /api/emails | Récupère la liste des groupe d'emails (uniquement les noms et les ids) |
| 🔵 GET | /api/campus | Récupère la liste des campus (uniquement les noms) |
Les requêtes sont au format HTTP. Les paramètres peuvent être passés dans l'URL ou dans le corps de la requête au format formulaire (x-www-form-urlencoded).
Pour les paramètres dits "multiple", ils doivent être passés suivis de crochets [] pour être interprétés comme un tableau. Par exemple, names[]=nom1&names[]=nom2.
Les réponses sont au format JSON. Le champ booléen success indique si la requête a abouti.
S'il est à true, le champ data contient les données retournées. Éventuellement, le champ count contient le nombre d'éléments existants. (Pas forcément égal à la taille de data, car il peut y avoir une limite ou un décalage.)
S'il est à false, une erreur est survenue et le champ error contient un message d'erreur.
Récupère toutes les associations.
- Paramètres :
- campus : filtre les associations par campus (facultatif)
- before : filtre les associations existantes avant l'année spécifiée (facultatif)
- after : filtre les associations existantes après l'année spécifiée (facultatif)
- order : tri les associations, "start" "end" "color" ou "random" (facultatif)
- desc : tri les associations par ordre décroissant (facultatif)
- limit : limite le nombre d'associations retournées (facultatif)
- offset : décale le début de la liste d'associations retournées (facultatif)
- Fonction api.js :
Api.assos.get()
Récupère l'association avec l'identifiant {id}.
- Paramètres :
- id : identifiant de l'association
- Fonction api.js :
Api.assos.getOne(id)
Met à jour l'association avec l'identifiant {id}. Fonctionne aussi avec la méthode 🟠 PATCH.
- Paramètres :
- id : identifiant de l'association
- session : identifiant de la session lié à l'association
- id : nouvel identifiant de l'association (facultatif)
- names[] : nouveaux noms de l'association dans l'ordre chronologique (multiple, facultatif)
- logos[] : nouveaux logos de l'association dans l'ordre chronologique au format URL base64 (multiple, facultatif)
- start : nouvelle date de début de l'association (facultatif)
- end : nouvelle date de fin de l'association (facultatif)
- theme : nouveau thème de l'association (facultatif)
- campus : nouveau campus de l'association (facultatif)
- room : nouvelle salle de l'association (facultatif)
- socials[] : nouveaux réseaux sociaux de l'association (au format
id:valuevalidant la regex[a-z]+:.+, multiple, facultatif) - description : nouvelle description de l'association (facultatif)
- color : nouvelle couleur de l'association au format hexadécimal (validant la regex
#[0-9a-fA-F]{1,6}, facultatif)
- Fonction api.js :
Api.assos.update(id, asso)
Récupère tous les événements de l'association avec l'identifiant {id}.
- Paramètres :
- id : identifiant de l'association
- before : filtre les événements avant la date spécifiée, format SQL (facultatif)
- after : filtre les événements après la date spécifiée, format SQL (facultatif)
- order : tri les événements, "date" ou "random", (facultatif, par défaut date)
- desc : tri les événements par ordre décroissant (facultatif)
- limit : limite le nombre d'événements retournés (facultatif)
- offset : décale le début de la liste d'événements retournés (facultatif)
- Fonction api.js :
Api.assos.getEvents(id)
Récupère tous les événements.
- Paramètres :
- before : filtre les événements avant la date spécifiée, format SQL (facultatif)
- after : filtre les événements après la date spécifiée, format SQL (facultatif)
- campus : filtre les événements par campus (multiple, facultatif)
- order : tri les événements, "date" ou "random", (facultatif, par défaut date)
- desc : tri les événements par ordre décroissant (facultatif)
- limit : limite le nombre d'événements retournés (facultatif)
- offset : décale le début de la liste d'événements retournés (facultatif)
- Fonction api.js :
Api.events.get()
Ajoute un événement.
- Paramètres :
- session : identifiant de la session lié à l'association organisant l'événement
- title : titre de l'événement
- date : date et heure de l'événement au format SQL
- place : lieu de l'événement
- poster : affiche de l'événement au format URL base64 (facultatif)
- description : description de l'événement (facultatif)
- duration : durée de l'événement en minutes (facultatif)
- price : prix de l'événement (facultatif)
- link : lien de l'événement (facultatif)
- access : accès à l'événement (facultatif)
- status : statut de l'événement (programmed, cancelled, rescheduled, full, movedOnline) (facultatif)
- capacity : capacité de l'événement (facultatif)
- Fonction api.js :
Api.events.create(event)
Récupère l'événement avec l'identifiant {id}.
- Paramètres :
- id : identifiant de l'événement
- Fonction api.js :
Api.events.getOne(id)
Met à jour l'événement avec l'identifiant {id}. Fonctionne aussi avec la méthode 🟠 PATCH.
- Paramètres :
- id : identifiant de l'événement
- session : identifiant de la session lié à l'association organisant l'événement
- title : titre de l'événement (facultatif)
- date : date et heure de l'événement au format SQL (facultatif)
- place : lieu de l'événement (facultatif)
- poster : affiche de l'événement au format URL base64 (facultatif)
- description : description de l'événement (facultatif)
- duration : durée de l'événement en minutes (facultatif)
- price : prix de l'événement (facultatif)
- link : lien de l'événement (facultatif)
- access : accès à l'événement (facultatif)
- status : statut de l'événement (programmed, cancelled, rescheduled, full, movedOnline) (facultatif)
- capacity : capacité de l'événement (facultatif)
- Fonction api.js :
Api.events.update(id, event)
Supprime l'événement avec l'identifiant {id}.
- Paramètres :
- id : identifiant de l'événement
- session : identifiant de la session lié à l'association organisant l'événement
- Fonction api.js :
Api.events.delete(id)
Demande un challenge au serveur pour vérifier le mot de passe.
- Paramètres :
- asso : identifiant de l'association
Le serveur envoie un challenge (sous forme de chaine de caractères) et le sel du hash bcrypt (sous la forme $alg$rounds$salt) utilisé pour hasher le mot de passe.
- Réponse :
- challenge : challenge envoyé par le serveur
- salt : sel du hash bcrypt
Le client doit hacher le mot de passe avec le sel. Puis hasher ce hash concaténé avec le identifiant de la session identifiant de la session challenge (challenge + bcrypt_hash) avec SHA256.
-
Paramètres :
- asso : identifiant de l'association
- hash : hash SHA256 du hash bcrypt concaténé avec le challenge : SHA256(challenge + bcrypt_hash)
-
Réponse :
- id : identifiant de la session
- asso_id : identifiant de l'association
Récupère la session avec l'identifiant {id}.
- Paramètres :
- id : identifiant de la session
- Fonction api.js :
Api.sessions.getOne(id)
Supprime la session avec l'identifiant {id}.
- Paramètres :
- id : identifiant de la session
- Fonction api.js :
Api.sessions.delete(id)
Récupère les identifiants de toutes les templates.
- Fonction api.js :
Api.templates.get()
Récupère la template avec l'identifiant {id}.
- Paramètres :
- id : identifiant de la template
- Fonction api.js :
Api.templates.getOne(id)
Récupère le mail pour l'event {event_id} généré par la template avec l'identifiant {id}.
- Paramètres :
- id : identifiant de la template
- event_id : identifiant de l'événement à rendre sur la template
- Fonction api.js :
Api.templates.getEmail(id, eventId)
Envoie un email à propos de l'évenement {event_id} via la template {id}
- Paramètres :
- id : identifiant de la template
- event_id : identifiant de l'événement à rendre sur la template
- recipients : adresses email auxquelles envoyer l'email (multiple)
- Fonction api.js :
Api.templates.send(id, eventId, to)
Récupère la liste des réseaux sociaux supportés.
- Fonction api.js :
Api.socials.get()
Récupère la liste des adresses email (aka mailing list) de cy-tech
- Fonction api.js :
Api.emails.get()
Récupère la liste des campus de cy-tech
- Fonction api.js :
Api.campus.get()