# Smart Structure
Cette collection décrit les Smart Structures de Anakeen Platform.
# URL
L'URL d'accès est: /api/v2/smart-structures
# Méthodes
La collection smart-structures
implémente les éléments suivants:
- Collection: Il n'y a pas d'accès possible directement auprès de la collection
smart-structures
Action | URL | Action effectuée |
---|---|---|
GET | api/v2/smart-structures/ | N/A |
POST | api/v2/smart-structures/ | N/A |
PUT | api/v2/smart-structures/ | N/A |
DELETE | api/v2/smart-structures/ | N/A |
- Ressource
Action | URL | Action effectuée |
---|---|---|
GET | api/v2/smart-structures/<family> | Retourne les propriétés de la Smart Structure family |
POST | api/v2/smart-structures/<family> | N/A |
PUT | api/v2/smart-structures/<family> | N/A |
DELETE | api/v2/smart-structures/<family> | N/A |
- Sous-ressource Smart Element:
Action | URL | Action effectuée |
---|---|---|
GET | api/v2/smart-structures/<family>/smart-elements/ | Liste des Smart Elements de la Smart Structure family |
POST | api/v2/smart-structures/<family>/smart-elements/ | Crée un Smart Element de la Smart Structure family |
PUT | api/v2/smart-structures/<family>/smart-elements/ | N/A |
DELETE | api/v2/smart-structures/<family>/smart-elements/ | N/A |
GET | api/v2/smart-structures/<family>/smart-elements/<docid> | Retourne le Smart Elements docid |
POST | api/v2/smart-structures/<family>/smart-elements/<docid> | N/A |
PUT | api/v2/smart-structures/<family>/smart-elements/<docid> | Met à jour le Smart Element docid |
DELETE | api/v2/smart-structures/<family>/smart-elements/<docid> | Supprime le Smart Element docid |
# Propriété d'une Smart Structure
# URL
GET /api/v2/smart-structures/<family>
Récupération de la ressource décrivant la Smart Structure family
.
Exemple: GET /api/v2/smart-structures/DEVBILL
N.B.
Le nom de la Smart Structure est insensible à la casse.
# 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:
uri
: URI préférentielle d'accès à la ressource,document.properties
: liste des valeurs des propriétés.
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": []
}
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont:
Raison | Status HTTP | Code d'erreur |
---|---|---|
Accès à la Smart Structure refusé | 403 Forbidden | ROUTES0101 |
Smart Structure supprimé | 404 Document deleted | ROUTES0102 |
Smart Structure non trouvé | 404 Document not found | ROUTES0105 |
# Résultat partiel
La ressource peut être retournée avec plus ou moins d'informations.
GET /api/v2/smart-structures/1234.json?fields=document.properties
,GET /api/v2/smart-structures/1234.json?fields=document.properties.id,document.properties.title,document.attributes
,GET /api/v2/smart-structures/1234.json?fields=document.properties.id,document.properties.title,document.attributes.my_exemple
,GET /api/v2/smart-structures/1234.json?fields=document.properties.id,document.properties.title,document.attributes,family.structure
.
Par défaut: fields=document.properties
Fields | Signification | Remarques |
---|---|---|
document.properties | Récupère les propriétés données par défaut | "id", "title", "icon", "initid", "name", "revision" |
document.properties.<prop> | Récupère la propriété indiquée | |
family.structure | Récupère la structure de la Smart Structure |
# Consultation des Smart Elements de la Smart Structure
# URL
GET /api/v2/smart-structures/<family>/smart-elements/
Récupération de la liste des Smart Elements de la Smart Structure family
présents sur la plateforme.
Exemple: GET /api/v2/smart-structures/DEVBILL/smart-elements/
.
# 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 orderBy),uri
: URI d'accès de 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 entrées suivantes:
properties
: liste des propriétés du Smart Element,attributes
: liste des Smart Fields du Smart Element (facultatif),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-structures/DEVBILL/smart-elements/",
"documents": [
{
"properties": {
"id": 98109,
"title": "Bill 0001 ACKERER Kathleen",
"initid": 98109,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": null,
"revision": 0,
"status": "alive"
},
"uri": "/api/v2/smart-elements/98109.json"
},
{
"properties": {
"id": 98110,
"title": "Bill 0002 ACKERER Kathleen",
"initid": 98110,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": null,
"revision": 0,
"status": "alive"
},
"uri": "/api/v2/smart-elements/98110.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 |
---|---|---|
Sens de l'orderBy inconnu | 400 | CRUD0501 |
Smart Field ou propriété d'orderBy invalide | 400 | CRUD0502 |
# Résultat partiel
# Pagination et tri
La liste des Smart Elements peut être paginée et ordonnée.
Les mots 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 :
- il indique le nombre maximum de documents à retourner, sa valeur est un entier ou le mot clef all,
- valeur par défaut:
10
.
- offset :
- indique le nombre d'éléments à exclure avant de retourner la collection.
- valeur par défaut : 0
N.B.
Les paramètres appliqués sont résumés dans le retour de la collection requestParameter
.
Exemple :
GET /api/v2/smart-structures/<family>/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-structures/<family>/smart-elements/?fields=document.properties
,GET /api/v2/smart-structures/<family>/smart-elements/?fields=document.properties.id,document.properties.title
.
Par défaut : fields=document.properties
Fields | Signification | Remarques |
---|---|---|
document.properties | Récupère les propriétés données par défaut | "id", "title", "icon", "initid", "name", "revision" |
document.properties.all | Récupère toutes les propriétés | |
document.properties.<prop> | Récupère la propriété indiquée | |
document.attributes | Ajoute tous les Smart Fields | |
document.attributes.my_smartField | Ajoute le Smart Field my_smartField | Si le Smart Field n'existe pas dans un des Smart Elements, il est retourné vide |
# Cache
La collection n'a pas de cache.
# Création d'un Smart Element
# URL
POST /api/v2/smart-structures/<family>/smart-elements/
Création d'un Smart Element de la Smart Structure family
.
Exemple: POST /api/v2/smart-structures/DEVBILL/smart-elements/
N.B.
Le nom de la Smart Structure est insensible à la casse.
# Contenu
# Format JSON
Le contenu de la requête doit contenir une donnée JSON avec la liste des Smart Fields à valuer.
{
"document": {
"attributes" : {
"<attrName>" : {
"value" : <newValue>
}
}
}
}
Le type de la requête est application/json
.
Exemple:
{
"document": {
"attributes": {
"ba_title": { "value": "Hello world" },
"ba_desc": { "value": "Nice Day" }
}
}
}
Note
Toute donnée additionnelle sera ignorée.
Cette forme ne permet pas d'enregistrer directement des fichiers dans le Smart Element.
Pour enregistrer le fichier, il sera nécessaire de passer par la ressource file
qui retournera un identifiant valide
qui pourra être utilisé comme valeur de Smart Field de type fichier.
# Format urlEncoded
Le contenu de la requête contient la liste des valeurs de Smart Fields à enregistrer. Chaque variable (POST) est le nom du Smart Field (casse insensible).
Le type de la requête est application/x-www-form-urlencoded
.
N.B.
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 nouvelle ressource,document.properties
: liste des valeurs propriétés,document.attributes
: liste des valeurs des Smart Fields.
Exemple:
{
"success": true,
"data": {
"document": {
"properties": {
"id": 98406,
"title": "test de création de devbill",
"initid": 98406,
"icon": "/api/v2/images/assets/sizes/24x24c/devbill.png",
"name": null,
"revision": 0,
"state": {
"reference": "wfam_bill_e1",
"color": "#00CE01",
"activity": "",
"stateLabel": "Initial",
"displayValue": "Initial"
},
"status": "alive"
},
"attributes": {
"bill_title": {
"value": "test de création de devbill",
"displayValue": "test de création de devbill"
},
"bill_content": {
"value": null,
"displayValue": null
},
[...]
},
"uri": "/api/v2/smart-elements/98406.json"
}
},
"messages": []
}
# En cas d'échec
Les raisons d'échec spécifiques à cette requête sont:
Raison | Status HTTP | Code d'erreur |
---|---|---|
Smart Structure non trouvée | 404 | CRUD0200 |
Tentative de modification d'un Smart Field inconnu | 403 | ROUTES0106 |
Tentative de modification d'un Smart Field sans valeur | 403 | ROUTES0108 |
Impossible de modifier le Smart Element | 500 | ROUTES0107 |
Erreur lors de la création | 500 | ROUTES0109 |