Skip to content

DanielArian/JuniaPocket-API

Repository files navigation

Junia Pocket API

Projet non maintenu.

Documentation

  1. Gestion des utilisateurs
    1. Inscription
    2. Login
    3. Changer ses identifiants Aurion
    4. Changer son mot de passe Junia Pocket
    5. Supprimer son compte Junia Pocket
  2. Notes
    1. Récupération des notes
    2. Vérifier si de nouvelles notes ont été ajoutées
  3. Planning
    1. Récupération des Planning
    2. Vérifier s'il y a des modifications dans un planning
  4. Notifications
  5. Salles disponibles
  6. Groupes
    1. Créer un groupe
    2. Ajouter membre Ă  un groupe
    3. Connaitre les groupes auxquels on appartient
    4. Quitter un groupe
    5. Recherche créneaux commun emploi du temps
  7. Widget

Interroger le serveur : https://juniapocketapi.herokuapp.com

Gestion des utilisateurs

Inscription

Enregistrement de l'utilisateur sur JuniaPocjet.

RequĂȘte Ă  effectuer

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

Réponses possibles

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.

Login

RequĂȘte Ă  effectuer

Methode : POST

Route : /user/login

Data :

{
  aurionID: <votre_identifiant_sur_Aurion>,
  jpocketPassword: <votre_mdp_JuniaPocket>
}

Réponses possibles

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

Mettre Ă  jour ses identifiants Aurion

RequĂȘte Ă  effectuer

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

Réponses possibles (non exhaustif)

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

Changer son mot de passe Junia Pocket

RequĂȘte Ă  effectuer

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

Réponses possibles (non exhaustif)

Status code : 200 (OK)

Status code :401 (Unauthorized)

Bad Request, Server Error, etc...

Supprimer son compte Junia Pocket

RequĂȘte POST Ă  l'url : /user/delete

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Body :

{
  jpocketPassword: <value>
}

Notes

Récupération des notes

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.

RequĂȘte Ă  effectuer

Methode : POST

Route : /marks/get

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Data : rien Ă  envoyer

Réponse attendue

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)

Vérifier si de nouvelles notes ont été ajoutées

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.

RequĂȘte Ă  effectuer

Methode : POST

Route : /marks/update

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Data : rien Ă  envoyer

Réponse attendue

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)

Planning

Récupération Planning

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.

RequĂȘte Ă  effectuer

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.

Réponse attendue

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

Vérifier s'il y a des modifications dans un planning

RequĂȘte Ă  effectuer

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.

Réponse attendue

MĂȘme type de rĂ©ponse que la requĂȘte prĂ©cĂ©dente.

Notifications

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.

RequĂȘte Ă  effectuer

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.

Réponse attendue

Status Code : 200 (OK) et en réponse : {message: 'Preferences mises à jour !'}

Status Code : 400 (Bad Request)

Satus Code : 500 (Server Error)

Salles disponibles

Recherche de salles disponibles en fonction d'une date, horaire, temps d'utilisation...

RequĂȘte Ă  effectuer

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 format jj/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 format HH: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 format HH: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.

Format de la réponse

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.

Groupes

Créer un groupe

POST /group/create

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Body :

{
  groupName: <value>
  list: <list_of_AurionID>
}

Ajouter membre Ă  un groupe

POST /group/join

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Body :

{
  aurionIDToAdd: <value>
  groupID: <value>
}

Connaitre les groupes auxquels on appartient

GET /group/get

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Body : aucun

Quitter un groupe

POST /group/leave

A ajouter dans le Header : Authorization: Bearer <token_obtenu_au_login>

Body :

{
    "groupID": <value>,
}

Recherche créneaux commun emploi du temps

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

About

API de l'application JuniaPocket

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors