#%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 /personne: get: description: Obtenir la liste des persones. Nécessite PERSONNE_LIST. responses: 200: body: application/json: post: description: Ajoute une nouvelle personne. Nécessite PERSONNE_ADD. 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: /{idPersonne}: uriParameters: idPersonne: type: integer required: true description: ID de la personne minimum: 0 get: description: Obtenir les infos sur une personne. Nécessite PERSONNE_GET responses: 200: description: Utilisateur récupéré body: application/json: 404: description: Utilisateur non trouvé put: description: Modifer les infos d'une personne. Nécessite PERSONNE_EDIT 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: Supprime une personne. Nécessite PERSONNE_REMOVE responses: 204: description: Utilisateur supprimé 404: description: Utilisateur non trouvé /virer: post: description: Permet de créditer ou débiter un compte body: application/json: schema: | { "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "http://jsonschema.net", "required": true, "properties": { "prix": { "type": "number", "required": true } } } responses: 201: description: La personne a bien été virée 406: description: La personne n'a pas assez de fonds pour être débitée /role: get: description: Liste les rôles. Nécessite ROLE_LIST responses: 200: body: application/json: example: | [ { "nom": "etudiant", "permissions": [] }, { "nom": "bde", "permissions": [ { "nom": "EVNMT_ADD" }, { "nom": "EVNMT_REMOVE" } ] } ] post: description: Ajoute un nouveau rôle. Nécessite ROLE_ADD 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_REMOVE responses: 204: description: Rôle supprimé 404: description: Rôle inconnu post: description: Ajoute une permission à un rôle. Nécessite ROLE_PERMISSION_ADD 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: 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_PERMISSION_REMOVE 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_LIST 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_LIST responses: 200: body: application/json: example: | [ { "id": 1, "nom": "WEC", "prix": 4, "date": "2001-09-11" }, { "id": 2, "nom": "MidWork", "prix": 5, "date": "2001-09-11" } ] post: description: Permet de creer un nouvel evenement. Nécessite EVNMT_ADD 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: description: L'évènement a bien été créé /{idEvenement}: uriParameters: idEvenement: type: integer required: true description: ID de l'evenement minimum: 0 put: description: Permet de modifier un évènement existant. Nécessite EVNMT_EDIT 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: Évènement modifié 404: description: L'evenement n'existe pas get: description: Affiche l'évènement. Nécessite EVNMT_GET responses: 200: body: application/json: example: | [ { "id": 1, "nom": "WEC", "prix": 4, "date": "2001-09-11" } ] 404: description: Evenement non existant delete: description: Permet de supprimer l'evenement. Nécessite EVNMT_REMOVE responses: 200: description: L'evenement a été bien supprimé /participe: post: description: Enregistre la participation de quelqu'un à un évènement 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 participation a bien été enregistrée 402: description: La personne n'a pas payé pour participer à l'évènement /reserve: post: description: Payer pour un évènement 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é resérvé /consommation: get: description: Obtenir la liste de toutes les consommations. Nécessite CONSO_LIST 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_ADD 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: /{idConsommation}: uriParameters: idConsommation: 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 /achete: 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 } } } responses: 201: description: La consommation a été bien payée /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 } ] delete: description: Annuler une transaction responses: 405: description: Non implémenté /{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 } ]