Projet non maintenu.
Interroger le serveur : https://juniapocketapi.herokuapp.com
Enregistrement de l'utilisateur sur JuniaPocjet.
Methode : POST
Route : /user/signup
Data :
{
aurionID: <votre_identifiant_sur_Aurion>,
aurionPassword: <votre_mdp_sur_Aurion>;
jpocketPassword: <choisir_un_mdp_pour_se_connecter_a_JuniaPocket>
}Status Code : 201 (Created) / Si Inscription réussie, user enregistré dans la collection 'users' dans la database.
Status Code : 401 (Unauthorized) / Si l'identifiant ou le mot de passe Aurion fournis sont incorrects, il est impossible de créer un compte.
Status Code : 500 (Server Error) / Il y a une erreur interne.
Methode : POST
Route : /user/login
Data :
{
aurionID: <votre_identifiant_sur_Aurion>,
jpocketPassword: <votre_mdp_JuniaPocket>
}Status Code : 201 (Created) / Connexion réussie. Le serveur renvoie ces infos à récupérer :
{
user._id: <value>,
aurionID: <value>;
token: <value>
}Ce token JWT vous permettra de vous authenfier pour les rĂ©quĂȘtes nĂ©cessitant un droit d'accĂšs.
Status Code : 401 (Unauthorized) / Utilisateur non trouvé ou mot de passe JuniaPocket incorrect.
Status Code : 500 (Server Error) / Il y a une erreur interne.
Et d'autres erreur diverses ...
RequĂȘte POST Ă l'url : /user/change-aurion-login-credentials
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Le body de la requĂȘte doit contenir :
{
aurionID: <updated__value>
aurionPassword: <updated_value>
}Status code : 200 (OK)
Status code :401 (Unauthorized) et en body {error: 'INVALID_AURION_LOGIN_CRED' }
Status code :401 (Unauthorized) et en body {error: 'NOT_YOUR_AURION_ACCOUNT' }
Bad Request, Server Error, etc...
RequĂȘte POST Ă l'url : /user/change-jpocket-password
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Le body de la requĂȘte doit contenir :
{
jpocketPassword: <new_value>
}Status code : 200 (OK)
Status code :401 (Unauthorized)
Bad Request, Server Error, etc...
RequĂȘte POST Ă l'url : /user/delete
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body :
{
jpocketPassword: <value>
}Pour un utilisateur authentifié (via token), on lit dans la BDD les notes qui sont enregistrées dans son document de la collection 'marks' puis on les renvoie au client.
Si c'est la premiĂšre fois que l'utilisateur utilise cette requĂȘte, le serveur rĂ©cupĂšre les notes de l'utilisateur sur Aurion et les sauvegarde dans la BDD pour les prochaines fois.
Methode : POST
Route : /marks/get
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Data : rien Ă envoyer
Status Code : 200 (OK)
Data : un Array contenant des Objets regroupant toutes les infos des notes disponibles dans la BDD (ou sur le compte aurion de l'utilisateur si c'est la 1ere fois que cette requĂȘte est effectuĂ©e). Les clĂ©s des objects peuvent varier entre les utilisateurs.
Pour récupérer la liste des clés : Object.keys(responseData)
Cette requĂȘte n'est Ă effectuer QUE pour un utilisateur ayant dĂ©jĂ utilisĂ©e la requĂȘte prĂ©cedente. Elle permet de lancer une nouvelle rĂ©cupĂ©ration des notes sur Aurion et mettre Ă jour les donnĂ©es de notes pour l'utilisateur dans la BDD.
Methode : POST
Route : /marks/update
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Data : rien Ă envoyer
Status Code : 200 (OK)
Data : un Array contenant des Objets regroupant toutes les infos des notes disponibles sur le compte aurion de l'utilisateur. Les clés peuvent varier selon les utilisateurs.
Pour récupérer la liste des clés : Object.keys(responseData)
La récupération d'un planning se fait semaine par semaine.
Pour un utilisateur authentifié (via token), on lit dans la BDD les semaines qui sont enregistrées dans son document de la collection 'plannings' puis on renvoie la semaine demandée.
Si c'est la premiĂšre fois que l'utilisateur utilise cette requĂȘte, le serveur rĂ©cupĂšre la semaine demandĂ©e par l'utilisateur sur Aurion et la sauvegarde dans la BDD pour les prochaines fois.
Methode : POST
Route : /planning/get-week
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Data :
{
date: <jj/mm/aaaa>,
}La valeur de date doit obligatoirement ĂȘtre au format jj/mm/aaaa et le serveur
renvoie le planning de toute la semaine incluant cette date.
REMARQUE IMPORTANTE : Si la valeur de date est laissée vide (une chaine vide), c'est
la semaine actuelle qui va ĂȘtre rĂ©cupĂ©rĂ©e.
A noter : La premiĂšre fois que vous utilisez cette requĂȘte, si vous renvoyez la mĂȘme requĂȘte avant que la premiĂšre ne soit complĂ©tĂ©e, vous recevrez un status code 425 (Too Early) avec en message d'erreur.
A compteter
Methode : POST
Route : /planning/update
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Data :
{
date: <jj/mm/aaaa>,
}La valeur de date doit obligatoirement ĂȘtre au format jj/mm/aaaa, le serveur
renvoie le planning de toute la semaine incluant cette date aprĂšs avoir mis Ă jour
la Database.
REMARQUE IMPORTANTE : Si la valeur de date est laissée vide (une chaine vide), c'est
la semaine actuelle qui va ĂȘtre rĂ©cupĂ©rĂ©e.
MĂȘme type de rĂ©ponse que la requĂȘte prĂ©cĂ©dente.
A l'inscription d'un nouvel utilisateur, un document est initialisé dans la collection 'notification preferences'. Il contient les informations suivantes :
{
_id: <value>
aurionID: <value>
messengerPSID: '',
mail: ''
}A noter pour la suite que si un champs n'est pas laissĂ© vide alors il sera utilisĂ©. Donc si l'utilisateur renseigne un mail et un psid, alors il recevra une notification Ă la fois par mail et sur messenger. De la mĂȘme façon, si ces champs sont laissĂ©s vides, aucune notification sera envoyĂ©e Ă l'utilisateur.
Pour renseigner ces informations, utiliser la requĂȘte suivante.
Methode : POST
Route : /user/preferences/notifications
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Data :
{
messengerPSID: <value>,
mail: <value>
}La valeur de messengerPSID s'obtient en envoyant le message "Je voudrais mon code" au bot Facebook JuniaPocket.
Status Code : 200 (OK) et en réponse : {message: 'Preferences mises à jour !'}
Status Code : 400 (Bad Request)
Satus Code : 500 (Server Error)
Recherche de salles disponibles en fonction d'une date, horaire, temps d'utilisation...
RequĂȘte : POST
Route : /available-rooms
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body de la requĂȘte :
{
date: <string>
beginTime : <string>
timeToSpendInRoom: <string>
}Comment définir ces valeurs :
-
date: si on souhaite choisir la date du jour, envoyer une chaine de caractĂšres vide. Pour choisir un jour particulier, obligatoirement envoyer une date au formatjj/mm/yyyy -
beginTime: envoyer une chaine de caractĂšres vide pour rechercher une salle libre Ă partir de l'heure de la requĂȘte. Pour rechercher une salle Ă partir d'une heure particuliĂšre de la journĂ©e, envoyer une chaine au formatHH:MM(par exemple '12:01'). -
timeToSpendInRoom: Correspond au temps souhaitĂ© pour utiliser la salle. Envoyer une chaine de caractĂšres vide pour ne pas prendre en compte ce paramĂštre (ie qu'on considĂšrera une salle comme disponible mĂȘme si elle sera occupĂ©e dans 5 min). Pour dĂ©finir un temps d'utilisation, envoyer une chaine au formatHH:MM(par exemple '02:15' pour une durĂ©e d'utilisation de 2h15 de la salle au maximum).
REMARQUES :
- Plus il y aura d'utilisateurs Ă Junia Pocket, plus les informations seront fiables.
- On considĂšre que les salles peuvent ĂȘtre disponibles de 8h Ă 21h uniquement. Au delĂ de cet intervalle, aucune salle n'est considĂ©rĂ©e comme libre.
La réponse est une liste vide si aucune salle n'est disponible.
Sinon, c'est une liste contenant des objets Ă la structure suivante :
{
label: <room_label>
timeLimit: <value>
}Si la valeur de timeLimit est null, cela signifie que la salle est disponible jusque 21h.
Sinon, c'est que la salle est réservée prochainement dans la journée et la valeur de timeLimit donne l'heure de la prochaine occupation au format HH:MM.
POST /group/create
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body :
{
groupName: <value>
list: <list_of_AurionID>
}POST /group/join
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body :
{
aurionIDToAdd: <value>
groupID: <value>
}GET /group/get
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body : aucun
POST /group/leave
A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>
Body :
{
"groupID": <value>,
}POST /planning/get-common-availability
Header : Bearer token
Body :
{
"groupID": value,
"date": <jj/mm/yyyy>
}La valeur de date doit obligatoirement ĂȘtre au format jj/mm/aaaa.
Pour utiliser la date du jour de la requĂȘte, laisse le champs vide (une chaine
de caractĂšres vide).
Remarque: si certains membres du groupes n'ont pas encore sauvegardĂ© dans la Database le planning de la semaine incluant la date demandĂ©e, la requĂȘte est augmentĂ©e d'un dĂ©lai d'environ 15 * (nb_de_mb_dans_ce_cas) secondes.
La requĂȘte renvoie l'ensemble des crĂ©neaux disponibles dans la semaine incluant la date demandĂ©e. Elle suit la structure suivante (par exemple) :
{
"Mon, 08 Mar 2021 00:00:00 GMT":[
["10:05","10:20"],
["12:25","13:30"],
["15:35","15:50"],
["17:55","21:00"]
],
"Tue, 09 Mar 2021 00:00:00 GMT":[
["10:05","13:30"],
["15:35","15:50"],
["17:55","21:00"]
],
"Wed, 10 Mar 2021 00:00:00 GMT":[
["10:05","10:20"],
["12:25","13:30"],
["15:35","15:50"],
["17:55","21:00"]
],
"Thu, 11 Mar 2021 00:00:00 GMT":[
["08:00","21:00"]
],
"Fri, 12 Mar 2021 00:00:00 GMT":[
["10:05","10:20"],
["12:25","21:00"]
],
"Sat, 13 Mar 2021 00:00:00 GMT":[
["08:00","21:00"]
]
}