Asset Boards
Principes fonctionnels
Les tableaux remplacent et complètent les anciens paniers V1 et V1.5. La documentation de ces paniers a été archivée.
Les fonctionnalités exhaustives offertes sont :
Enregistrer une sélection d’assets issus de plusieurs fonds.
Permettre à des collaborateurs de modifier cette sélection sur invitation.
Donner un accès en lecture seule à tout autre utilisateur authentifié.
Télécharger tout ou partie de cette sélection au format zip en choisissant le format d’export de ces assets : originaux, vignettes, formats WEB, planche contact, etc..
Envoyer un zip de la même manière à des contacts externes et être notifié du téléchargement de ce zip.
Partager un tableau en lecture seul à des utilisateurs externes ( non authentifiés ) en précisant les actions possibles ( téléchargement des originaux, etc… ).
Typer les paniers pour les filtrer et lui donner d’autres usages : gestion de playlists, gestion de sélection sur un front, etc…
Installation
L’installation nécessite de :
restaurer les objets wxmcart\* du nar produit,
éventuellement désactiver les plugins WXM_CART et WXM_CART_1_5
restaurer et activer le plugin WXM_CART2.
Ce plugin fournit à la fois :
l’interface dans le backoffice,
une API REST ( /api/wedia/cart ) pour l’intégration dans un FO ou un client tierce.
Usage à travers l’API REST
L’API REST fournit différents endpoints qui sont utilisés par le backoffice pour toute la partie UI et peuvent donc être utilisés pour refaire tout ou partie de cette intégration sur un autre frontal.
La documentation en ligne ( /api/wedia/cart ) fournit assez de détails sur l’utilisation de chaque API. Ce chapitre va tenter de donner une vision plus générale de l’interaction entre ces APIs et quelques exemples d’utilisation.
Principes généraux et modèles JSON utilisés par les différents endpoints
La plupart des points d’entrées de cette API nécessitent d’être connecté avec une session standard. La connexion n’est pas gérée par cette API et passe donc par une authentification traditionnelle ou par le endpoint dédié de l’api REST.
Certains points d’entrées ( listCarts par ex ), retourne le détail d’un tableau en y ajoutant systématiquement deux infos additionnelles :
isMine = true/false
isEditable = true/false
Ces propriétés additionnelles permettent de faciliter les tests de droit côté client :
Tableau privé : isMine = true, isEditable = true
Accès collaborateur : isMine = false, isEditable = true,
Accès publique : isMine = false, isEditable = false
La plupart des endpoints visant un tableau prennent l’identifiant du tableau en pathInfo : /api/wedia/cart/deleteCart/42
Un même endpoint peut avoir des comportements différents selon le verbe utilisé. Ex : downloadCart.
Certains endpoints servent de "passe droit" à des assets afin de s’affranchir de la sécurité. Un asset partagé par un panier peut donc être en partie visible par un utilisateur externe ou un utilisateur interne n’ayant pas le droit naturel de les voir.
Liste d’items
{
"typeAsset1": ["1", "2", "3"], // ids
"typeAsset2": ["1", "2", "3"] // ids
}
à partir de la 11.20.0, il est aussi possible d’envoyer la même liste avec le format suivant.
{
{"type": "typeAsset1", "id": "1" },
{"type": "typeAsset1", "id": "2" },
{"type": "typeAsset1", "id": "3" },
{"type": "typeAsset2", "id": "1" },
{"type": "typeAsset2", "id": "2" },
{"type": "typeAsset2", "id": "3" }
}
Création / Edition / Supression d’un panier
La création ou la mise à jour d’un panier utilisent respectivement les endpoints /api/wedia/cart/createCart et /api/wedia/cart/editCart.
Les deux sont appelables en POST avec le contenu suivant :
{
"name": "Nom du panier",
"description": "Description du panier optionnelle",
"public" : false, // optionnel : le panier est privé par défaut
"type": "", // optionnel ( le panier n'est pas typé par défaut )
"collaborators": ["id collab 1", "id collab 2"], //optionnel
"items": {
// liste d'items
}
}
N’importe quel utilisateur connecté peut créer un panier dont il sera automatiquement le propriétaire.
Seul le propriétaire d’un panier peut éditer ce dernier et supprimer un panier avec /api/wedia/cart/deleteCart/{cartId}
Ajout / Suppression d’éléments du panier
Les modifications du contenu d’un panier se font à l’aide de :
addCartItems : Ajoute de nouveaux assets à un tableau. Ajouter plusieurs fois les mêmes assets ne pose aucun problème.
removeCartItems : Supprime certains assets d’un tableau.
removeAllCartItems : Retire tous les assets d’un tableau.
Zip d’un panier
Le téléchargement d’un tableau au format zip se passe en 4 temps :
Test du profil de zip choisi ( POST /testZipCart ),
Création du zip ( POST /buildZip )
Attente de la fin de la construction du zip ( HEAD /downloadZip ),
Téléchargement du zip ( GET /downloadZip ).
L’étape 1 est facultative mais permet d’éviter de faire des paniers trop volumineux. L’appel à buildZip est bloquant par défaut ce qui permet d’éviter l’étape 3 mais bloque alors le client le temps de la construction du zip. Il est donc possible de préciser le paramètre async=<temps en secondes> pour rendre la main le plus rapidement possible et 'poller' l’étape 3 pour tester la disponibilité du zip. Cet appel retourne un 204 No-Content pour dire que le zip est en cours de construction.
Les zips asynchrones sont gérées par le pool de thread partagé et donc il est possible de suivre son exécution dans l’écran d’admin correspondant.
Partage externe d’un panier
Le partage externe permet de partager une version online d’un panier à un utilisateur n’ayant pas accès naturel au DAM.
L’utilisateur peut donc voir les assets partagés et en télécharger tout ou partie selon les droits donnés lors du partage.
Pour créer un partage, il faut appeler le endpoint /shareCart qui enverra un lien à une landing page par mail aux destinataires. La landing page dépend généralement du contexte de création du partage pour respecter une continuité dans la charte graphique et doit donc être renseigné lors du partage : un partage du FO doit atterrir dans le FO et un partage du BO atterit sur une page dédiée du BO. Cette landing page est appelée avec l’uuid du partage permettant d’en faire le rendu à l’aide des endpoints :
/getShare
et /itemPreview
Si la landing page n’est pas précisée, une est ajoutée par défaut.
Si la landing page est précisée, il est toujours possible d’accéder au partage par une autre page comme le endpoint /viewShare.