#%RAML 0.8 title: API d'Etunicorn baseUri: https://etunicorn.plil.net/{version}/ version: v1 securitySchemes: - oauth_2_0: settings: authorizationUri: /oauth2/authorize accessTokenUri: /oauth2/token authorizationGrants: [ code, token ] 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: true responses: 200: description: Authentification réussie body: application/json: example: | { "token": "ooT6zahdura7vaethuiph1ugiph6co", "expire": 1485607703, "role": "admin", "permissions": [ { "nom": "CREER_EVNMT" }, { "nom": "SUPPRIMER_EVNMT" } ] } 401: description: Authentication échouée /{token}: delete: description: Se déconnecter responses: 204: description: Déconnecté avec succès 404: description: Jeton non trouvé /personne: get: securedBy: [oauth_2_0] description: Obtenir la liste des persones. Nécessite COMPTE_ADMIN responses: 200: body: application/json: example: | [ { "id": 42, "carte": "AAAAA", "naissance": "855874800000", "solde": 1337, "login": "gbontoux", "role": "etudiant" } ] /{idPersonne}: uriParameters: idPersonne: type: number required: true description: ID de la personne minimum: 0 get: securedBy: [oauth_2_0] description: Obtenir les infos sur une personne. Nécessite COMPTE_ADMIN responses: 200: description: Utilisateur récupéré body: application/json: example: | { "id": 42, "carte": "AAAAA", "naissance": "855874800000", "solde": 1337, "login": "gbontoux", "role": "etudiant" } 404: description: Utilisateur non trouvé put: securedBy: [oauth_2_0] description: Modifer les infos d'une personne. Nécessite COMPTE_ADMIN 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 example: "14-Feb-1997" required: false login: displayName: Login Polytech type: string required: false example: gbontoux role: displayName: Rôle description: Nécessite ROLE_ADMIN 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. Nécessite COMPTE_ADMIN responses: 204: description: Utilisateur supprimé 404: description: Utilisateur non trouvé post: 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 description: Nécessite ROLE_ADMIN type: string required: false example: 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. Nécessite ROLE_ADMIN responses: 200: body: application/json: example: | [ { "nom": "etudiant", "permissions": [] }, { "nom": "bde", "permissions": [ { "nom": "CREER_EVNMT" }, { "nom": "SUPPRIMER_EVNMT" } ] } ] post: securedBy: [oauth_2_0] description: Ajoute un nouveau rôle. Nécessite ROLE_ADMIN 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. Nécessite ROLE_ADMIN responses: 204: description: Rôle supprimé 404: description: Rôle inconnu post: securedBy: [oauth_2_0] description: Ajoute une permission à un rôle. Nécessite ROLE_ADMIN 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. Nécessite ROLE_ADMIN 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. Nécessite ROLE_ADMIN responses: 200: body: application/json: example: | [ { "nom": "CREER_EVNMT" }, { "nom": "SUPPRIMER_EVNMT" } ] /evenement: get: securedBy: [oauth_2_0] description: Obtenir la liste de tout les evenements. Nécessite EVNMT_ADMIN ou EVNMT_ACHETER ou EVNMT_REMBOURSER 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. Nécessite EVNMT_ADMIN 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: description: Permet de modifier un évènement existant. Nécessite EVNMT_ADMIN 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}. Nécessite EVNMT_ADMIN ou EVNMT_ACHETER ou EVNMT_REMBOURSER 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}. Nécessite EVNMT_ADMIN responses: 200: description: L'evenement a été bien supprimé /consommation: get: securedBy: [oauth_2_0] description: Obtenir la liste de toutes les consommations. Nécessite CONSO_ADMIN ou CONSO_ACHETER ou CONSO_REMBOURSER responses: 200: body: application/json: example: | [ { "id": 1, "nomconsommation": "juis de fruit", "prix": 4 }, { "id": 2, "nomEvenement": "juis de fruit flambe", "prix": 5 } ] post: securedBy: [oauth_2_0] description: Permet de creer une nouvelle consommation. Nécessite CONSO_ADMIN queryParameters: nomconsommation: description: Le nom de la consommation type: string required: true prix: description: Le prix de la consommation type: number required: true responses: 201: /{consommationId}: put: securedBy: [oauth_2_0] description: Permet de modifier une consommation. Nécessite CONSO_ADMIN queryParameters: nomEvenement: description: Le nom de la consommation type: string required: false prix: description: Le prix de la consommation 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 consommation {consommationId}. Nécessite CONSO_ADMIN ou CONSO_ACHETER ou CONSO_REMBOURSER responses: 200: body: application/json: example: | [ { "id": 1, "nomEvenement": "patate", "prix": 4, "date": "2001-09-11" } ] 404: description: consommation non existante delete: securedBy: [oauth_2_0] description: Permet de supprimer la consommation {consommationId}. Nécessite CONSO_ADMIN responses: 200: description: La consommation a été bien supprime /participe: post: description: Permet d'ajouter une personne a un evenement queryParameters: idPersonne: type: integer required: true description: l'identifiant unique de l'utilisateur idEvenement: type: integer required: true description: l'identifiant unique d'un evenement responses: 201: description: La personne est bien inscrite a cet evenement get: description: Permet de savoir si une personne participe a un evenement queryParameters: idPersonne: type: integer required: true description: l'identifiant unique de l'utilisateur idEvenement: type: integer required: true description: l'identifiant unique d'un evenement responses: 200: description: La personne est bien inscrite à l'evenement 404: description: La personne n'est pas inscrite à l'evenement /transaction: get: description: Permet de recuperer la liste des transaction responses: 200: description: On recupere la liste des transactions body: application/json: example: | [ { "participant": 1, "acteur": 18, "idTransaction": 42, "type": true, "date": "2003-12-01", "prix": 25.23 }, { "participant": 5, "acteur": 1, "idTransaction": 43, "type": true, "date": "2003-12-01", "prix": -25.23 } ] /consommation: post: description: Permet de faire payer ou de crediter un Compte. >0 la personne a crediter de l'argent. <0 la personne a été débité. queryParameters: participant: type: integer required: true description: L'identifiant de la personne qui utilise son compte id: type: integer required: true description: l'indentification de la consommation qui vient d'être payé responses: 201: description: La consommation a été bien payé /evenement: post: description: queryParameters: participant: type: integer required: true description: L'identifiant de la personne qui utilise son compte id: type: integer required: true description: l'identifiant de l'evenement responses: 201: description: L'evenement a bien été payé /credit: post: description: Permet de recharger un compte queryParameters: participant: type: integer required: true description: L'identifiant de la personne crédité prix: type: number required: true description: La valeur credité sur le solde de participant responses: 201: description: La personne a bien été crédité /debit: post: description: Permet de debiter la carte queryParameters: participant: type: integer required: true description: L'identifiant de la personne debité prix: type: number required: true description: La valeur debité sur le solde de participant responses: 201: description: La personne a bien été débité /participant/{idPersonne}: get: description: Permet de recuperer la liste des transaction d'une personne responses: 200: description: On recupere la liste des transactions body: application/json: example: | [ { "participant": 1, "acteur": 18, "id": 42, "type": true, "date": "2003-12-01", "prix": 25.23 }, { "participant": 1, "acteur": 12, "id": 43, "type": true, "date": "2003-12-01", "prix": -25.23 } ] /acteur/{idPersonne}: get: description: Permet de recuperer la liste des transaction d'une personne responses: 200: description: On recupere la liste des transactions body: application/json: example: | [ { "participant": 1, "acteur": 18, "idTransaction": 42, "type": true, "date": "2003-12-01", "prix": 25.23 }, { "participant": 1, "acteur": 12, "idTransaction": 43, "type": true, "date": "2003-12-01", "prix": -25.23 } ]