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"]
]
}