#%RAML 0.8 title: API d'Etunicorn baseUri: https://etunicorn.plil.net/{version}/ version: v1 # Les codes 400 sont implicites /login: post: description: Instancie une nouvelle connexion body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "login": { "type": "string", "required": true }, "password": { "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 delete: description: Se déconnecter responses: 204: description: Déconnecté avec succès 404: description: Jeton non trouvé /personne: get: 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: 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: description: Modifer les infos d'une personne. Nécessite COMPTE_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "carte": { "type": "string", "required": false, "minLength": 14, "maxLength": 14 }, "naissance": { "type": "string", "required": false, "format": "date" }, "login": { "type": "string", "required": false }, "role": { "type": "role", "required": false } } } responses: 202: description: Utilisateur modifié 404: description: Utilisateur non trouvé delete: 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 body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "carte": { "type": "string", "required": false, "minLength": 14, "maxLength": 14 }, "naissance": { "type": "string", "required": false, "format": "date" }, "login": { "type": "string", "required": false }, "role": { "type": "role", "required": false } } } responses: 201: description: Personne ajoutée avec succès body: application/json: example: | { "id": 42 } /role: get: 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: description: Ajoute un nouveau rôle. Nécessite ROLE_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": true, "minLength": 3 } } } responses: 201: description: Rôle créé avec succès 409: description: Un rôle avec le même nom existe déjà /{nomRole}: uriParameters: nomRole: type: string required: true description: Nom du role delete: description: Supprime un rôle. Nécessite ROLE_ADMIN responses: 204: description: Rôle supprimé 404: description: Rôle inconnu post: description: Ajoute une permission à un rôle. Nécessite ROLE_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": true } } } responses: 201: description: Permission ajouté avec succès 404: description: Permission ou rôle inconnu /{nomPermission}: uriParameters: nomPermission: type: string required: true description: nom de la permission delete: 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: description: Liste les permissions. Nécessite ROLE_ADMIN responses: 200: body: application/json: example: | [ { "nom": "CREER_EVNMT" }, { "nom": "SUPPRIMER_EVNMT" } ] /evenement: get: 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, "nom": "patate", "prix": 4, "date": "2001-09-11" }, { "id": 2, "nom": "patate flambe", "prix": 5, "date": "2001-09-11" } ] post: description: Permet de creer un nouvel evenement. Nécessite EVNMT_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": true }, "prix": { "type": "number", "required": true }, "date": { "type": "string", "required": true, "format": "date" } } } responses: 201: /{evenementId}: uriParameters: evenementId: type: integer required: true description: id de l'evenement minimum: 0 put: description: Permet de modifier un évènement existant. Nécessite EVNMT_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": false }, "prix": { "type": "number", "required": false }, "date": { "type": "string", "required": false, "format": "date" } } } responses: 202: description: Modification pris en compte 404: description: L'evenement n'existe pas get: description: Obtenir l'evenement {evenementId}. Nécessite EVNMT_ADMIN ou EVNMT_ACHETER ou EVNMT_REMBOURSER responses: 200: body: application/json: example: | [ { "id": 1, "nom": "patate", "prix": 4, "date": "2001-09-11" } ] 404: description: Evenement non existant delete: description: Permet de supprimer l'evenement {evenementId}. Nécessite EVNMT_ADMIN responses: 200: description: L'evenement a été bien supprimé /participe: post: description: Permet de notifier que quelqu'un a participer à l'evenement (id de la personne a envoyer) body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "id": { "type": "integer", "required": true } } } responses: 201: description: La personne est bien inscrite a cet evenement ou a bien était ajouté a la liste des participant 402: description: La personne n'a pas payé pour participer à l'evenement /consommation: get: 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, "nom": "juis de fruit", "prix": 4 }, { "id": 2, "nom": "juis de fruit flambe", "prix": 5 } ] post: description: Permet de creer une nouvelle consommation. Nécessite CONSO_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": true }, "prix": { "type": "number", "required": true } } } responses: 201: /{consommationId}: uriParameters: consommationId: type: integer required: true description: id de la consommation minimum: 0 put: description: Permet de modifier une consommation. Nécessite CONSO_ADMIN body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "nom": { "type": "string", "required": false }, "prix": { "type": "number", "required": false } } } responses: 202: description: Modification pris en compte 404: description: L'evenement n'existe pas get: 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: description: Permet de supprimer la consommation {consommationId}. Nécessite CONSO_ADMIN responses: 200: description: La consommation a été bien supprime /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: Achat d'une consomation (id) par un participant à un acteur body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "participant": { "type": "Personne", "required": true }, "id": { "type": "Consommation", "required": true } } } responses: 201: description: La consommation a été bien payé /evenement: post: body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "participant": { "type": "Personne", "required": true }, "id": { "type": "Evenement", "required": true } } } responses: 201: description: L'evenement a bien été payé /credit: post: description: Permet de recharger ou debiter un compte body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "participant": { "type": "Personne", "required": true }, "prix": { "type": "number", "required": true } } } responses: 201: description: La personne a bien été crédité /{idPersonne}: uriParameters: idPersonne: type: integer required: true description: id de la personne dont on veut regarder les transactions minimum: 0 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}: uriParameters: idPersonne: type: integer required: true description: id de la personne dont on veut regarder les transactions minimum: 0 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 } ]