- Hugo,
Cartouche | |
---|---|
ZEP | 45 |
Titre | Elaboration de l'API des galeries |
Révision | 1 |
Date de création | 23 mai 2016 |
Dernière révision | 27 juin 2016 |
Type | Feature |
Statut | Rédaction |
Contexte
Cette ZEP ci-présente est une ZEP fille de la ZEP-02 qui concerne l'élaboration d'une API au sens large, c'est-à-dire qu'elle traite toutes les questions générales comme l'authentification, les codes HTTPs, les erreurs, la sécurité, etc.
Cette ZEP permet de créer une API pour gérer les galeries. Le site Zeste de Savoir pourrait l'utiliser pour permettre d'uploader des images depuis l'éditeur markdown. Les applications externes pourrait l'utiliser pour permettre la gestion des galeries dans leurs applications (zest-writter par exemple).
API des galeries
Objectif
Elle permettra de :
- Lister, ajouter, modifier, quitter des galeries ;
- Lister, ajouter des membres à leurs galeries ;
- Téléverser des images et des archives d'images ;
- Modifier et supprimer les informations d'une image.
Représentation
Exemple d'objet galerie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | { "pk": 1, "title": "Titre de la galerie", "subtitle": "Sous-titre de la galerie", "pubdate": "1977-04-22T06:00:00Z", "updatedate": "1977-04-22T06:00:00Z", "participants": [ { "pk": 42, "username": "Clem", "self": "http://api.zestedesavoir.com/membres/42", "permissions": [ "read": true, "write": true, ] }, { "pk": 5, "username": "Clin d'oeil à Andr0", "self": "http://api.zestedesavoir.com/membres/5" "permissions": [ "read": true, ] } ], "permissions": [ "read": true, "write": true, ], "linkToContent": 137 } |
Colonnes
Colonne | Type | Description | |
---|---|---|---|
pk | long | L'identifiant de la galerie | |
title | String | Titre de la galerie | |
subtitle | String | Sous titre de la galerie | |
pubdate | Date | La date de publication de la galerie | |
updatedate | Date | La date de mise à jours de la galerie | |
participants | Array de User | Les participants à la galeries ainsi que leurs droits associés | |
permissions | Array de String | Liste des permissions sur la galerie | |
linkToContent | Integer | Indique si la galerie est liés à un contenu. Dans l'exemple, la galerie est liés au contenu avec l'id 137. L'absence de la balise indique que la galerie n'est pas lié à un contenu. |
Exemple d'objet d'image
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { "pk": 1, "title": "Titre de l'image", "legend": "Legende de l'image", "self": "Lien vers l'image. ex: http://zestedesavoir.com/Andr0/droid.jpg", "pubdate": "1977-04-22T06:00:00Z", "updatedate": "1977-04-22T06:00:00Z", "thumbnail": "Lien vers la miniature de l'image. ex: http://zestedesavoir.com/Andr0/droid-miniature.jpg", "permissions": [ "read": true, "write": true, ], "linkToContent": 137 } |
Colonnes
Colonne | Type | Description | |
---|---|---|---|
pk | long | L'identifiant de l'image | |
title | String | Titre de l'image | |
legend | String | Sous titre de l'image | |
self | String | Lien vers l'image | |
pubdate | Date | La date de publication de la galerie | |
updatedate | Date | La date de mise à jour de la galerie | |
thumbnail | String | Lien vers la miniature de l'image | |
permissions | Array de String | Liste des permissions sur la galerie | |
linkToContent | Integer | Indique si la galerie est liés à un contenu. Dans l'exemple, la galerie est liés au contenu avec l'id 137.L'absence de la balise indique que la galerie n'est pas lié à un contenu. |
Lister les différentes galeries
Fonctionnalité : Renvoie une liste paginée des galeries auquel le membre connecté à les droits.
URL : http://api.zestedesavoir.com/galeries/
Méthode : GET
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- page : Affiche les galeries de la page voulue.
-
sort :
- creation : Tri la liste par date de création.
- modification : Tri la liste par date de modification.
- titre : Tri par ordre alphabétique.
-
search :
- titre : Recherche des galeries par leurs nom.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
Permissions nécessaires : Être authentifié.
Afficher une galerie
Fonctionalité : Renvoie les informations d'une galerie.
URL : http://api.zestedesavoir.com/galeries/{id}
Méthode : GET
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- page : Affiche les galeries de la page voulue.
-
sort :
- creation : Tri la liste par date de création.
- modification : Tri la liste par date de modification.
- titre : Tri par ordre alphabétique.
-
search :
- titre : Recherche des galeries par leurs nom.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404: La galerie n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits sur la galerie.
Ajouter une galerie
Fonctionalité : Permet d'ajouter une galerie.
URL : http://api.zestedesavoir.com/galeries/
Méthode : POST
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- title: Le titre de la galerie
- subtitle: Le sous titre de la galerie
- participants: liste des membres à ajouter dans la galerie.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si un membre n'existe pas.
Permissions nécessaires : Être authentifié.
Modifier une galerie
Fonctionalité : Permet de modifier le titre et le sous-titre d'une galerie.
URL : http://api.zestedesavoir.com/galeries/{id}
Méthode : PUT
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- title: Le titre de la galerie
- subtitle: Le sous titre de la galerie
- participants: liste des membres à ajouter dans la galerie.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si un participant n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Quitter des galeries
Fonctionalité : Permet de quitter des galeries.
URL : http://api.zestedesavoir.com/galeries/
Méthode : DELETE
Headers :
- Authorization: Bearer < access_token >
Paramètres :
pks : La liste des identifiants des galleries à quitter séparé par une virgule.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une galerie n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie, la galerie n'est pas celle d'un tutoriel ou d'un article si il ne reste qu'une seule personne dans la galerie.
Quitter une galerie
Fonctionalité : Permet de quitter une galerie.
URL : http://api.zestedesavoir.com/galeries/{id}
Méthode : DELETE
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une galerie n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie, la galerie n'est pas celle d'un tutoriel ou d'un article si il ne reste qu'une seule personne dans la galerie.
Lister les différentes images d'une galerie
Fonctionnalité : Renvoie une liste paginée des images d'une galerie auquel le membre connecté à les droits.
URL : http://api.zestedesavoir.com/galeries/{id}/images/
Méthode : GET
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id : id de la galerie.
- page : Affiche les images d'une galerie de la page voulue.
-
sort :
- creation : Tri la liste par date de création.
- modification : Tri la liste par date de modification.
- titre : Tri par ordre alphabétique.
-
search :
- titre : Recherche des images par leurs nom.
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
Permissions nécessaires : Être authentifié.
Lister les informations d'une image
Fonctionalité : Permet de lister les différentes information d'une image
URL : http://api.zestedesavoir.com/galeries/{id}/images/{idimage}
Méthode : GET
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- idimage: L'identifiant de l'image
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une image n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Ajouter une image
Fonctionalité : Permet d'ajouter une image à la galerie.
URL : http://api.zestedesavoir.com/galeries/{id}/images
Méthode : POST
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- title: Titre de l'image
- legend: La légende de l'image
- image: L'image en base-64 (cf: débat)
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 413 : L'image est trop volumineuse.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Mettre à jour une image
Fonctionalité : Permet de mettre à jours une image à la galerie.
URL : http://api.zestedesavoir.com/galeries/{id}/images/{idimage}
Méthode : PUT
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- idimage: L'identifiant de l'image
- title: Titre de l'image
- legend: La légende de l'image
- image: L'image en base-64 (cf: débat)
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une image n'existe pas.
- 413 : L'image est trop volumineuse.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Supprimer des images
Fonctionalité : Permet de supprimer des images de la galerie.
URL : http://api.zestedesavoir.com/galeries/{id}/images/
Méthode : DELETE
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- idimage: L'identifiant de l'image
- pks: Liste des identifiants des images à supprimer
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une image n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Supprimer une image
Fonctionalité : Permet de supprimer une image de la galerie.
URL : http://api.zestedesavoir.com/galeries/{id}/images/{idimage}
Méthode : DELETE
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
- idimage: L'identifiant de l'image
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 404 : Si une image n'existe pas.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Upload d'une archive d'image
Fonctionalité : Permet d'upload des images à travers le téléversement d'une archive.
URL : http://api.zestedesavoir.com/galeries/{id}/
Méthode : POST / Multipart
Headers :
- Authorization: Bearer < access_token >
Paramètres :
- id: L'identifiant de la galerie
Codes HTTP :
- 200 : La réponse est renvoyée sans problème.
- 400 : Dès qu'il y a un problème avec les paramètres de la requête.
- 401 : Problème avec l'authentification.
- 403 : Pas les permissions nécessaires.
- 413 : L'archive est trop volumineuse.
Permissions nécessaires : Être authentifié, avoir les droits nécessaires sur la galerie.
Débat:
La question est de savoir comment l'upload d'image marchera, je vois trois solutions:
- Multipart avec du JSON en payload
- Base64
- Envoyer le titre et la légende dans une première requête, le serveur retourne un identifiant unique de transaction. Le client envoi une autre requête avec l'image et l'identifiant généré avant.
Source: - Edition ce soir.
Edit: Correction orthographe, ajout des codes 400 et 413. Edit 2: Ajout du tag ZEP