# Smart Element
Cette collection décrit les Smart Elements de Anakeen Platform
# URL
L'url d'accès est: /api/v2/smart-elements
# Méthodes
La collection Smart Element implémente les éléments suivants:
- Collection
Action | URL | Action effectuée |
---|---|---|
GET | api/v2/smart-elements/ | Retourne la liste des Smart Elements |
POST | api/v2/smart-elements/ | N/A |
PUT | api/v2/smart-elements/ | N/A |
DELETE | api/v2/smart-elements/ | N/A |
- Ressource:
Action | URL | Action effectuée |
---|---|---|
GET | api/v2/smart-elements/<docid> | Retourne le Smart Element docid |
POST | api/v2/smart-elements/<docid> | N/A |
PUT | api/v2/smart-elements/<docid> | Modifie le Smart Element docid |
DELETE | api/v2/smart-elements/<docid> | Supprime le Smart Element docid |
GET | /api/v2/smart-elements/<docid>.xml | Retourne les données XML du Smart Element docid |
POST | /api/v2/smart-elements/<docid>.xml | N/A |
PUT | /api/v2/smart-elements/<docid>.xml | N/A |
DELETE | /api/v2/smart-elements/<docid>.xml | N/A |
# Consultation de la liste des Smart Element
# URL canonique
GET /api/v2/smart-elements/
Récupération de la liste des Smart Elements présents sur Anakeen Platform.
# Contenu
Le contenu de la requête est vide.
# Structure de retour
Le retour est une donnée JSON.
# En cas de réussite
La partie data
contient les champs suivants:
requestParameters
: contient un résumé des paramètres de la requête en cours (pagination et ordre),uri
: URI d'accès à la collection,documents
: un tableau de Smart Elements ( sous la même forme que les Smart Elements unitaires); chaque Smart Element est un objet contenant les champs suivants: -properties
: liste des propriétés d'un Smart Element,attributes
: liste des Smart Fields du Smart Element, -uri
: URI d'accès au Smart Element.
Exemple:
{
"success": true,
"data": {
"requestParameters": {
"slice": 10,
"offset": 0,
"length": 10,
"orderBy": "title asc, id desc"
},
"uri": "/api/v2/smart-elements/",
"documents": [
{
"properties": {
"id": 97507,
"title": "Bill",
"initid": 97507,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": "DEVBILL",
"revision": 0,
"status": "alive"
},
"uri": "/api/v2/smart-structures/DEVBILL.json"
}
]
}
}
N.B.
Les valeurs retournées correspondent aux valeurs de la vue de consultation par défaut.
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont
Raison | Status HTTP | Code d'erreur |
---|---|---|
Smart Field ou propriété de slice invalide | 400 | ROUTES0139 |
# Résultat partiel
# Pagination et tri
La liste des Smart Elements est paginée et ordonnée. Les mts clefs GET sont les suivants:
- orderBy :
<Smart Field|propriété>: <asc:desc>
- indique dans quel sens la collection doit être triée; on peut mettre plusieurs valeurs séparées par des
,
, - valeur par défaut:
title:asc
,
- indique dans quel sens la collection doit être triée; on peut mettre plusieurs valeurs séparées par des
- slice :
- indique le nombre maximum de Smart Elements à retourner; sa valeur est un entier ou le mot clef
all
, - sa valeur par défaut est
10
,
- indique le nombre maximum de Smart Elements à retourner; sa valeur est un entier ou le mot clef
- offset:
- indique de passer ce nombre de Smart Elements avant de renvoyer les Smart Elements restants,
- valeur par défaut: 0.
N.B.
Les paramètres appliqués sont résumés dans le retour de la collection requestParameters
.
Exemple:
- GET
/api/v2/smart-elements/?orderBy=title:asc,id:desc&slice=100&offset=20
.
# Informations retournées
Les Smart Elements peuvent être retournés avec plus ou moins d'informations:
- GET
/api/v2/smart-elements/?fields=document.properties
, - GET
/api/v2/smart-elements/?fields=document.properties.id,document.properties.title
.Note
Par défaut:
fields=document.properties
.
Fields | Signification | Remarques |
---|---|---|
document.properties | Récupère l'ensemble des propriétés par défaut | "id","title","icon","initid","name" |
document.properties.all | Récupère toutes les propriétés | |
document.properties.<prop> | Récupère la propriété indiquée | |
document.attributes.my_attribute | Ajoute l'attribut my_attribute | Si l'attribut n'existe pas dans un des Smart Elements, il est retourné vide. |
requestParameters.slice | Nombre maximum de Smart Elements demandés | |
requestParameters.offset | Nombre de premiers Smart Elements à ignorer | |
requestParameters.orderBy | Tri demandé | |
requestParameters.length | Nombre de Smart Elements effectivement retournés |
# Cache
La collection n'a pas de cache.
# Consultation d'un Smart Element
# URL canonique
GET /api/v2/smart-elements/<docid>
Récupération de la dernière version du Smart Element ayant l'identifiant docid
.
L'extension .json
peut être ajoutée pour expliciter le format de sortie.
Exemple: GET /api/v2/smart-elements/DEVBILL
ou GET /api/v2/smart-elements/DEVBILL.json
.
N.B.
L'identifiant ajouté peut être, soit:
initid
,id de révision
oulastid
du Smart Element,name
: nom logique du Smart Element.
Dans tous les cas, le Smart Element retourné est le dernier de sa lignée documentaire.
N.B.
Si vous souhaitez accéder à une révision précise du Smart Element, il faut utiliser la collection
/api/v2/smart-elements/<docid>/revisions/
.
GET /api/v2/smart-structures/<family>/smart-elements/<docid>
Récupération de la dernière révision du Smart Element de la Smart Structure family
ayant l'identifiant docid
.
N.B.
La différence entre les collections Smart Structure
et Smart Element
est que pour la collection
smart-structures/<family>/smart-elements/
l'identifiant doit être dans la smart Structure indiquée pour être retourné,
sinon une erreur 404 (ressource non trouvée) est retournée.
N.B.
Un Smart Element "supprimé" peut être récupéré via l'url trash.
N.B.
Les Smart Elements accédés via les collections smart-structures/<family>/smart-elements
et trash
possèdent aussi les
sous-collections:
history
,revisions
.
# Contenu
Le contenu de la requête est vide.
# Structure de retour
Le retour est une donnée JSON.
# En cas de réussite
La partie data
contient les champs suivants:
document.uri
: URI d'accès à la ressource modifiée,document.properties
: liste des valeurs des propriétés,document.attributes
: liste des valeurs des Smart Fields.
Exemple:
{
"success": true,
"data": {
"document": {
"properties": {
"id": 97507,
"title": "Bill",
"initid": 97507,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": "DEVBILL",
"revision": 0,
"status": "alive"
},
"uri": "/api/v2/smart-structures/DEVBILL.json"
}
},
"messages": []
}
N.B.
Les valeurs retournées correspondent aux valeurs de la vue de consultation par défaut.
N.B.
Les Smart Fields en visibilité I
dans la vue de consultation par défaut ne sont pas retournés. Leur existence n'est
dévoilée, ni dans les données, ni dans la structure.
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont:
Raison | Status HTTP | Code d'erreur |
---|---|---|
Smart Element non trouvé | 404 Document not found | ROUTES0100 |
Accès au Smart Element refusé | 403 Forbidden | ROUTES0101 |
Smart Element supprimé | 404 Document deleted | ROUTES0102 |
# Résultat partiel
Le Smart Element peut être retourné avec plus ou moins d'informations:
GET /api/v2/smart-elements/DEVBILL.json?fields=document.properties
,GET /api/v2/smart-elements/DEVBILL.json?fields=document.properties.id,document.properties.title,document.attributes
,GET /api/v2/smart-elements/DEVBILL.json?fields=document.properties.id,document.properties.title,document.attributes.my_example
,GET /api/v2/smart-elements/DEVBILL.json?fields=document.properties.id,document.properties.title,document.attributes,family.structure
.
Par défaut : fields=document.properties,document.attributes
.
Fields | Signification | Remarques |
---|---|---|
document.properties | Récupère l'ensemble des propriétés "visibles" | "state", "fromname", "id", "postitid", "initid", "locked", "revision", "wid", "cvid", "profid", "fromid", "owner", "domainid" |
document.properties.<prop> | Récupère la propriété indiquée | |
document.attributes | Récupère les valeurs et les valeurs affichable des Smart Fields | |
document.attributes.<id> | Récupère la valeur d'un Smart Field particulier | |
family.structure | Récupère la structure de la Smart Structure |
# Cache
Dans le cadre du cache, le Etag
est calculé à l'aide des éléments suivants:
- identifiant du Smart Element,
- date de dernière modification,
- identifiant de l'utilisateur,
- identifiant des droits portés sur le Smart Element (vecteur de droits),
- langue sélectionnée.
Dans changelog Tous ces éléments sont concaténés et ensuite le md4 de cette
concaténation finTag constitue le Etag
.
À partir de la version
2021.01
# Autres URL
Il est également possible de consulter le fichier de configuration du Smart Element:
GET /api/v2/smart-elements/<docid>.xml
# Modification d'un Smart Element
# URL
PUT /api/v2/smart-elements/<docid>
Modification de la dernière révision du Smart Element ayant l'identifiant docid
.
L'extension .json
peut être ajoutée pour expliciter le format de sortie.
Exemple: PUT /api/v2/smart-elements/DEVBILL.json
Attention
L'identifiant du Smart Element peut être son nom logique ou son identifiant numérique. L'identifiant numérique peut
référencer n'importe quelle révision du Smart Element.
Dans tous les cas, la modification porte sur la dernière révision du Smart Element.
PUT /api/v2/smart-structures/<family>/smart-elements/<docid>
Modification de la dernière révision du Smart Element de la Smart Structure family
ayant l'identifiant docid
.
N.B.
La différence entre les collections Smart Structure
et Smart Element
est que pour la collection
smart-structures/<family>/smart-elements/
l'identifiant doit être dans la Smart Structure indiquée pour être retourné,
sinon, une erreur 404 (ressource non trouvée) est retournée.
# Contenu
# Format JSON
Le contenu de la requête doit contenir une donnée JSON avec la liste des Smart Fields modifiés.
{
"document": {
"attributes": {
"attrid": {
"value": "<value>"
}
}
}
}
Exemple:
{
"document": {
"attributes": {
"bill_title": {
"value": "Test Bill 0040"
}
}
}
}
Note
Toute donnée additionnelle sera ignorée.
# Format urlEncoded
Le contenu de la requête contient la liste des valeurs des Smart Fields à enregistrer. Chaque variable (PUT) est le nom
du Smart Field (casse insensible).
Le type de la requête est application/x-www-form-urlencoded
.
Note
Ce format peut être utilisé directement depuis un formulaire HTML.
Cette forme permet aussi d'enregistrer des fichiers dans le Smart Element.
# Structure de retour
Le retour est une donnée JSON.
# En cas de réussite
La partie data
contient les champs suivants:
document.uri
: URI d'accès à la ressource modifiée,document.properties
: liste des valeurs des propriétés,document.attributes
: liste des valeurs des Smart Fields.
Exemple:
{
"success": true,
"data": {
"document": {
"properties": {
"id": 98148,
"title": "Test Bill 0040 BIGLIERI Mathys",
"initid": 98148,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": null,
"revision": 0,
"status": "alive"
},
"attributes": {
"bill_title": {
"value": "Test Bill 0040",
"displayValue": "Test Bill 0040"
},
"bill_billdate": {
"value": null,
"displayValue": null
},
"bill_location": {
"value": "Toulouse",
"displayValue": "Toulouse"
}
},
"uri": "/api/v2/smart-elements/98148.json"
},
"duration": "0.0300"
},
"messages": []
}
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont:
Raison | Status HTTP | Code d'erreur |
---|---|---|
Privilège insuffisant pour modifier le Smart Element | 403 Forbidden | CRUD0201 |
Impossible de modifier la Smart Structure | 403 Forbidden | CRUD0213 |
Impossible de modifier le Smart Field | 500 | ROUTES0107 |
Tentative de modification échouée | 500 | ROUTES0109 |
# Suppression d'un Smart Element
# URL
DELETE /api/v2/smart-elements/<docid>
Suppression de la lignée de Smart Elements dont un des membres a l'identifiant docid
.
L'extension ".json" peut être ajoutée pour expliciter le format de sortie.
Exemple:
DELETE /api/v2/smart-elements/9760.json
La suppression donne l'ordre de mettre le Smart Element dans la poubelle. Dans ce cas, toute la lignée de Smart Elements
du Smart Element est mise à la poubelle.
L'identifiant du Smart Element peut être son nom logique, son identifiant numérique ou celui de n'importe laquelle de
ses révisions.
La suppression "physique" (réelle suppression de la lignée en base de données) n'est pas possible.
DELETE /api/v2/smart-structures/<family>/smart-elements/<docid>
Suppression de la lignée de Smart Elements de la Smart Structure family
dont un des membres a l'identifiant docid
.
N.B.
La différence entre les collections Smart Structure
et Smart Element
est que pour la collection
smart-structures/<family>/smart-elements
l'identifiant doit être dans la Smart Structure indiquée pour être retourné
sinon une erreur 404 (ressource non trouvée) est retournée.
# Contenu
Le contenu de la requête est vide.
# Structure de retour
Le retour est une donnée JSON.
# En cas de réussite
La partie data
contient les champs suivants:
document.uri
: URI d'accès à la ressource supprimée,document.properties
: liste des valeurs des propriétés du Smart Element supprimé,document.attributes
: liste des valeurs des Smart Fields du Smart Element supprimé.
Les Smart Fields en visibilitéI
ne sont pas retournés. Leur existence n'est dévoilée, ni dans les données, ni dans la structure.
Un Smart Element mis à la poubelle n'est plus accessible via la ressourceSmart Elements
mais reste accessible par la ressourcetrash
.
Exemple:
{
"success": true,
"data": {
"document": {
"properties": {
"id": 98147,
"title": "Bill 0039 BIDART Andréa",
"initid": 98147,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": null,
"revision": 0,
"status": "deleted"
},
"attributes": {
"bill_title": {
"value": "Bill 0039",
"displayValue": "Bill 0039"
}
}
}
}
}
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont :
Raison | Status HTTP | Code d'erreur |
---|---|---|
Smart Element non trouvé | 404 Document not found | ROUTES0100 |
Smart Element non supprimé | 404 Document not in the trash | ROUTES0112 |
La suppression d'un Smart Element hérite également des raisons d'échec spécifiques à la consultation d'un Smart Element