#%RAML 0.8 title: API d'Etunicorn baseUri: https://etunicorn.plil.net/{version}/ version: v1 securitySchemes: - oauth_2_0: description: Il faut un token OAuth 2.0 pour utiliser cette API type: OAuth 2.0 describedBy: headers: Authorization: description: | Utilisé pour envoyer un token d'accès OAuth 2. Ne pas envoyer en même temps que le paramètre de requête "access_token" type: string queryParameters: access_token: description: | Utilisé pour envoyer un token d'accès OAuth 2. Ne pas envoyer en même temps que le header "Authorization" type: string responses: 401: description: Token expiré ou invalide. Reconnectez-vous 403: description: Permission refusée. Se re-connecter ne changera rien # Les codes 400 sont implicites /login: post: description: Instancie une nouvelle connexion queryParameters: login: displayName: Login Polytech type: string required: true password: displayName: Mot de passe Polytech type: string required: false responses: 200: description: Authentification réussie body: application/json: example: | { "token": "ooT6zahdura7vaethuiph1ugiph6co", "expire": 1485607703, "role": "admin", "permissions": [ { "nom": "CREER_EVENEMENT" }, { "nom": "SUPPRIMER_EVENEMENT" } ] } 401: description: Authentication échouée /{token}: delete: description: Se déconnecter responses: 204: description: Déconnecté avec succès 404: description: Jeton invalide ou expiré. À priori, vous êtes déjà déconnecté /personne: get: <<<<<<< HEAD securedBy: [oauth_2_0] description: Obtenir la liste des persones responses: ======= description: Obtenir la liste des persones responses: >>>>>>> 4b12d95... Evenement 200: body: application/json: example: | [ { "id": 42, "carte": "AAAAA", "naissance": "1997-02-14", "solde": 1337, "login": "gbontoux", "role": "etudiant" } ] /{idPersonne}: get: securedBy: [oauth_2_0] description: Obtenir les infos sur une personne responses: 200: description: Utilisateur récupéré body: application/json: example: | { "id": 42, "carte": "AAAAA", "naissance": "1997-02-14", "solde": 1337, "login": "gbontoux", "role": "etudiant" } 404: description: Utilisateur non trouvé put: securedBy: [oauth_2_0] description: Modifer les infos d'une personne queryParameters: carte: displayName: ID de la carte NFC type: string required: false minLength: 14 maxLength: 14 example: 39cdd9ed0b191d naissance: displayName: Date de naissance type: date required: false example: 1997-02-14 login: displayName: Login Polytech type: string required: false example: gbontoux role: displayName: Rôle type: string required: false example: etudiant responses: 202: description: Utilisateur modifié 404: description: Utilisateur non trouvé delete: securedBy: [oauth_2_0] description: Obtenir les infos sur une personne responses: 204: description: Utilisateur supprimé 404: description: Utilisateur non trouvé post: securedBy: [oauth_2_0] description: Ajoute une nouvelle personne queryParameters: carte: displayName: ID de la carte NFC type: string required: false minLength: 14 maxLength: 14 example: 39cdd9ed0b191d naissance: displayName: Date de naissance type: date required: false example: 1997-02-14 login: displayName: Login Polytech type: string required: false example: gbontoux role: displayName: Rôle type: string required: true example: etudiant default: etudiant responses: 201: description: Personne ajoutée avec succès body: application/json: example: | { "id": 42 } /role: get: securedBy: [oauth_2_0] description: Liste les rôles responses: 200: body: application/json: example: | [ { "nom": "etudiant", "permissions": [] }, { "nom": "bde", "permissions": [ { "nom": "CREER_EVENEMENT" }, { "nom": "SUPPRIMER_EVENEMENT" } ] } ] post: securedBy: [oauth_2_0] description: Ajoute un nouveau rôle queryParameters: nom: type: string minLength: 3 required: true example: bde responses: 201: description: Rôle créé avec succès 409: description: Un rôle avec le même nom existe déjà /{nomRole}: delete: securedBy: [oauth_2_0] description: Supprime un rôle responses: 204: description: Rôle supprimé 404: description: Rôle inconnu post: securedBy: [oauth_2_0] description: Ajoute une permission à un rôle queryParameters: nom: type: string required: true minLength: 3 responses: 201: description: Permission ajouté avec succès 404: description: Permission ou rôle inconnu /{nomPermission}: delete: securedBy: [oauth_2_0] description: Enlève la permission du rôle responses: 204: description: Permission enlevée avec succès 404: description: Permission ou rôle inconnu /permission: get: securedBy: [oauth_2_0] description: Liste les permissions responses: 200: body: application/json: example: | [ { "nom": "CREER_EVENEMENT" }, { "nom": "SUPPRIMER_EVENEMENT" } ] /evenement: get: securedBy: [oauth_2_0] description: Obtenir la liste de tout les evenements responses: 200: body: application/json: example: | [ { "id": 1, "nomEvenement": "patate", "prix": 4, "date": "2001-09-11" }, { "id": 2, "nomEvenement": "patate flambe", "prix": 5, "date": "2001-09-11" } ] post: securedBy: [oauth_2_0] description: Permet de creer un nouvel evenement queryParameters: nomEvenement: description: Le nom de l'evenement type: string required: true prix: description: Le prix de l'evenement type: number required: true date: description: La date de l'evenement type: date required: true responses: 201: /{evenementId}: put: securedBy: [oauth_2_0] queryParameters: nomEvenement: description: Le nom de l'evenement type: string required: false prix: description: Le prix de l'evenement type: number required: false date: description: La date de l'evenement type: date required: false responses: 202: description: Modification pris en compte 404: description: L'evenement n'existe pas get: securedBy: [oauth_2_0] description: Obtenir l'evenement {evenementId} responses: 200: body: application/json: example: | [ { "id": 1, "nomEvenement": "patate", "prix": 4, "date": "2001-09-11" } ] 404: description: Evenement non existant delete: securedBy: [oauth_2_0] description: Permet de supprimer l'evenement {evenementId} responses: 200: description: L'evenement a été bien supprimé /consomation: get: securedBy: [oauth_2_0] description: Obtenir la liste de tout les consomations responses: 200: body: application/json: example: | [ { "id": 1, "nomConsomation": "juis de fruit", "prix": 4 }, { "id": 2, "nomEvenement": "juis de fruit flambe", "prix": 5 } ] post: securedBy: [oauth_2_0] description: Permet de creer un nouvel evenement queryParameters: nomConsomation: description: Le nom de la Consomation type: string required: true prix: description: Le prix de la Consomation type: number required: true responses: 201: /{consomationId}: put: securedBy: [oauth_2_0] queryParameters: nomEvenement: description: Le nom de la Consomation type: string required: false prix: description: Le prix de la Consomation type: number required: false responses: 202: description: Modification pris en compte 404: description: L'evenement n'existe pas get: securedBy: [oauth_2_0] description: Obtenir la Consomation {consomationId} responses: 200: body: application/json: example: | [ { "id": 1, "nomEvenement": "patate", "prix": 4, "date": "2001-09-11" } ] 404: description: Consomation non existante delete: securedBy: [oauth_2_0] description: Permet de supprimer la consomation {consomationId} responses: 200: description: La consomation a été bien supprime