Spécifications de l'API
Sécurité
Version de l'API
GET /apps HTTP/1.1
X-Accept-Version: v1.3
L'API est versionnée. Cette documentation ne concerne que la dernière version.
* Champs obligatoires.
Restreindre les champs renvoyés
GET /daxium-test/any_route?fields=id,created_at HTTP/1.1
Content-Type: application/json
{
"id": 123,
"created_at": 1461761418
}
Pour l'ensemble de nos API qui renvoient des objets, il est possible de limiter les champs renvoyés avec un paramètre d'URL fields
.
Autorisation
Le système d'autorisation est de type OAuth2.
GET /apps HTTP/1.1
Authorization: Bearer QjBBQjM5MEMtQUREOS00NzM0LUJBQUYtRDQ2NjlBRkE3Q0RBX2Zha2U
Chaque requête doit être authentifié avec un jeton d'accès (à par les requêtes d'autorisation).
Il doit être obligatoirement indiqué dans l'en-tête Authorization
.
La première fois, les jetons sont récupérable avec le nom d'utilisateur et le mot de passe.
Les fois suivantes, les jetons peuvent être rafraîchis avec un jeton de rafraîchissement.
Type de jeton | Description | Durée de validité |
---|---|---|
access_token |
Pour authentifier chaque requête | 1 heure |
refresh_token |
Pour rafraîchir access_token |
30 jours |
Récuperer les jetons
La récupération des jetons se font via un POST
avec les identifiants de connexion de l'utilisateur, et les identifiants de votre application.
POST /oauth/v2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=id_application&
client_secret=secret&
grant_type=password
username=utilsateur%40example.org&
password=mot_de_passe
Requête
POST /oauth/v2/token
Les paramètres doivent être encodés en Form URL Encoded
dans le corps de la requête.
Paramètre | Type | Description |
---|---|---|
client_id * | string | Identifiant d'application OAuth2 |
client_secret * | string | Clé secrète OAuth2 |
grant_type * | string | Doit être password |
username * | Adresse email de l'utilisateur | |
password * | Mot de passe de l'utilisateur |
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "QjBBQjM5MEMtQUREOS00NzM0LUJBQUYtRDQ2NjlBRkE3Q0RBX2Zha2U",
"refresh_token": "NDhFNjU5MkEtMTg0RC00REM4LTg2NjUtMEFEQjgyMjFDMUJGX2Zha2U",
"expires_in": 3600,
"token_type": "bearer",
"scope": "user"
}
Réponse
Si les identifiants de connexion sont corrects, l'API répondre avec un code 200 OK
et les jetons.
La réponse est encodé en JSON.
Paramètre | Description |
---|---|
access_token | Jeton d'accès à utiliser dans Authorization |
refresh_token | Jeton à conserver pour le rafraîchissement |
expires_in | Temps en secondes de la validité du jeton d'accès |
token_type | Toujours "bearer", non utilisé |
scope | Non utilisé |
Rafraîchir les jetons
Le rafraîchissement des jetons est très similaire à la première requête, seul le grant_type
change ainsi que les paramètres d'identification.
POST /oauth/v2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=id_application&
client_secret=secret&
grant_type=refresh_token
refresh_token=NDhFNjU5MkEtMTg0RC00REM4LTg2NjUtMEFEQjgyMjFDMUJGX2Zha2U
Requête
POST /oauth/v2/token
Paramètre | Description |
---|---|
client_id * | Identifiant d'application OAuth2 |
client_secret * | Clé secrète OAuth2 |
grant_type * | Doit être refresh_token |
refresh_token * | Jeton de rafraîchissement |
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "MzBGMTFEN0MtQ0MzNy00OUZFLUFEN0ItMjBDRTZCNUZGQzNGX2Zha2U",
"refresh_token": "ODg0QkQ3MjMtQzkzMi00N0Y2LUFFMjAtNkE1MEFFOEM4MkQ1X2Zha2U",
"expires_in": 3600,
"token_type": "bearer",
"scope": "user"
}
Réponse
Si le jeton est valide, l'API répondra de la même manière que pour les demandes de première connexion.
Les 2 jetons (access_token
et refresh_token
) sont changés et leurs durées de validité sont prolongées.
La réponse est encodé en JSON.
Paramètre | Description |
---|---|
access_token | Jeton d'accès à utiliser dans Authorization |
refresh_token | Jeton à conserver pour le rafraîchissement |
expires_in | Temps en secondes de la validité du jeton d'accès |
token_type | Toujours "bearer", non utilisé |
scope | Non utilisé |
Vertical métier
Chaque utilisateur a accès à une ou plusieurs instances.
Les APIs sur les structures, fiches, listes et tâches nécessitent d'être préfixées du nom court du vertical choisi (short
).
Lister les instances
La liste des instances accessible par l'utilisateur sont accessible via l'API /apps
.
GET /apps HTTP/1.1
Requête
GET /apps
Aucun paramètre.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "Test",
"short": "daxium-test",
"description": "Test",
"settings": {...},
"android_map": true
},
{
"name": "Test 2",
"short": "daxium-test-2",
"description": "Test 2",
"settings": {...},
"android_map": false
}
]
Réponse
La réponse est toujours un tableau JSON avec la liste des instances disponibles.
Propriété | Type | Description |
---|---|---|
name | string | Nom visible pour l'utilisateur de l'instance |
short | string | Nom court de l'instance à utiliser comme prefixe. |
description | string | Description de l'instance renseigner par l'administrateur |
settings | JSON | objet JSON contenant différents paramètres |
android_map | boolean | indique si les cartes sont activées sur l'application Android ou non |
Récuperer une instance précise
Requête
Il est possible de récuperer une instance précise en utilisant l'API /{app_short}
.
GET /daxium-test HTTP/1.1
Réponse
La réponse est un objet JSON.
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "Test",
"short": "daxium-test",
"description": "Test",
"settings": {
"icon": "",
"tzdata": "Europe/Paris",
"admin_maxStructures": "0"
},
"android_map": true
}
Propriété | Type | Description |
---|---|---|
name | string | Nom visible pour l'utilisateur de l'instance |
short | string | Nom court de l'instance à utiliser comme prefixe. |
description | string | Description de l'instance renseignée par l'administrateur |
settings | JSON | objet JSON contenant différents paramètres |
android_map | boolean | indique si les cartes sont activées sur l'application Android ou non |
Fichiers
Envoyer un fichier
Permet d'envoyer un fichier. Ce fichier pourra servir pour le lier à une fiche, pour faire un import de fiche ou un import de liste...
Requête
POST /daxium-test/files/upload HTTP/1.1
Content-Type: image/png
Content-Length: 8343
....
POST /{app_short}/files/upload
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"uuid": "3001aeaa-600c-4ab8-ad8a-2e14e4d54431",
"mime-type": "image\/png",
"size": 8343
}
Propriété | Type | Description |
---|---|---|
uuid | UUID | Identifiant du fichier |
mime-type | Texte | Type MIME du fichier |
size | Nombre | Taille en octets du fichier |
Récupérer un fichier d'erreurs
GET /daxium-test/files/download_errors/3001aeaa-600c-4ab8-ad8a-2e14e4d54431 HTTP/1.1
GET /{app_short}/files/download_errors/{worker_unique_id}
Paramètre | Type | Description |
---|---|---|
worker_unique_id | UUID | Identifiant unique du worker |
HTTP/1.1 200 OK
Content-Length: 8343
...
Formulaires
Propriétés
{
"id": 490,
"version": 17,
"name": "Structure Test",
"updated_at": 1461153416,
"created_at": 1461153415,
"settings": {
"firstLevel": true,
"functionnalStatus": "list6"
},
"conditions": [],
"fields": [...],
"layout": {
"pages":[],
"fields":[]
},
"workflows":[],
"triggers":[],
}
}
Les formulaires sont identifiés par leur identifiant id
et leur numéro de version version
.
Propriété | Type | Description |
---|---|---|
id | Nombre | Identifiant du formulaire |
version | Nombre | Numéro de version |
name | Texte | Nom affiché |
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
settings | Objet | Objet contenant différents paramètres |
conditions | [Condition] | Liste des conditions |
fields | [Champ] | Liste des champs |
layout | objet | Liste des pages et positions des champs |
workflows | array | Tableau contenant le workflow du formulaire (si présent) |
triggers | array | Personalisation des transitions du workflow |
Champs
{
"fields": [
{
"enable": true,
"label": "Titre 8",
"name": "label8",
"position": 1,
"type": "label"
},
{
"barcodescan": false,
"enable": true,
"externalscan": false,
"format": "0.00",
"label": "Nombre",
"name": "number1",
"position": 2,
"prefill": true,
"readonly": false,
"required": false,
"searchable": false,
"type": "number"
},
{
"enable": true,
"label": "Checkbox",
"name": "boolean2",
"position": 3,
"prefill": false,
"readonly": false,
"required": false,
"searchable": false,
"type": "boolean"
}
]
}
Les formulaires sont composées de plusieurs champs de différents types.
Propriétés communes
Propriété | Type | Description |
---|---|---|
name | Texte | Nom système du champ |
label | Nombre | Nom affiché |
position | Texte | Position du champ |
type | Texte | Type de champ |
enable | Booléen | Champ activé ou non |
required | Booléen | Champ requis ou non |
prefill | Booléen | Indique si le champ peut être pré-rempli sur le mobile |
readonly | Booléen | Indique si le champ est modifiable sur le mobile |
Worflows
{
"workflows": [{
"created_at": 1584367529,
"updated_at": 1631095714,
"name": "Validation",
"states": [
{
"id": "21f7af30-457c-11e9-b210-d663bd873d93",
"name": "En cours de création",
"color": "#FF9800",
"end": false
},
{
"id": "21f7b502-457c-11e9-b210-d663bd873d93",
"name": "Fait",
"color": "#0A75E2",
"end": true
}
],
"transitions": [
{
"id": "8ccce2c6-457c-11e9-b210-d663bd873d93",
"from": "21f7af30-457c-11e9-b210-d663bd873d93",
"to": "21f7b502-457c-11e9-b210-d663bd873d93",
"label": "Réalisé"
}
],
"id": "8cccf176-457c-11e9-b210-d663bd873d93",
"start_state": "21f7af30-457c-11e9-b210-d663bd873d93"
}],
"triggers":[{
"id": "1b3f0cf1-9276-4448-9d07-99e9012c53b3",
"type": "change_state",
"transition_id": "8ccce2c6-457c-11e9-b210-d663bd873d93",
"color": "#FF9800",
"label": "Enregistrer"
}]
}
Les formulaires avec workflow ont des boutons d'enregistrement personnalisés (triggers) qui permettent aux fiches de passer d'un état (state) à un autre. Les trnasitions sont le passage d'un état à un autre. Les fiches dans un état final ne peuvent plus être modifiées.
Récupérer tous les formulaires
Retourne tous les formulaires disponibles avec une pagination
GET /daxium-test/structures?per_page=10&page=0 HTTP/1.1
GET /{app_short}/structures?per_page={per_page}&page={page}&updated_since={updated_since}
Paramètre | Description |
---|---|
per_page | Le nombre de formulaires par page (par défaut 10) |
page | La page à retourner |
updated_since | Filtre permettant de ne retourner que les formulaires mis à jour depuis la date indiquée (Timestamp UNIX). |
HTTP/1.1 200 OK
Content-Type: application/json
{
"structures": [...],
"total_count": 14,
"total_pages": 2,
"next_page": 1,
"server_time": 1461761418,
"workflows": [...],
"required": {
"linked_list_ids": [...],
"structure_ids": [...]
}
}
Réponse
Paramètre | Type | Description |
---|---|---|
structures | [Structure] | Liste des formulaires |
total_count | Nombre | Nombre total de formulaires |
total_pages | Nombre | Nombre total de pages |
next_page | Nombre | Numéro de la page suivante si plusieurs pages |
server_time | Date | Date du serveur courante (Timestamp UNIX) |
required | Objet | Objet listant les formulaires et les listes liés aux résultats |
Récupérer un formulaire
Retourne un seul formulaire à la version indiquée si le paramètre est renseigné ou la dernière version.
GET /daxium-test/structures/100?version=1 HTTP/1.1
GET /{app_short}/structures/{id}?version={version}
Paramètre | Type | Description |
---|---|---|
id | Nombre | Identifiant du formulaire |
version | Nombre | Version du formulaire |
HTTP/1.1 200 OK
Content-Type: application/json
{
"structure": [...],
"server_time": 1461761418
}
Réponse
Paramètre | Description |
---|---|
structure | Formulaire |
server_time | Date du serveur courante (Timestamp UNIX) |
Récupérer un fichier liée à un formualire
Retourne le fichier liée au formulaire, actuellement seuls les images des champs de type Logo sont récuperable avec cette API.
GET /daxium-test/structures/100/file/CD1A7F4F-9517-4D2E-A829-84EC4A2B9D20 HTTP/1.1
GET /{app_short}/structures/{id}/file/{file_id}
Paramètre | Description |
---|---|
id | Identifiant du formulaire |
file_id | Identifiant du fichier (UUID) |
HTTP/1.1 200 OK
Content-Type: image/jpeg
...
Fiches
Format des valeurs de fiches
Les fiches sont composés de une ou plusieurs valeurs de fiche (item), sous forme de objet clé/valeur, avec pour clé, le nom système du champ.
Type simple
{
"exampleTypeTexte": "topsyturn gittern fayles unmicrobic",
"exampleTypeNombre": 90.0751,
"exampleTypeBooleen": true,
"exampleTypeDate": 1426325213,
"exampleTypeDuration": 42000,
"exampleTypePhone": "+33123456789"
}
Type de champ | Valeur |
---|---|
text, email | Texte |
number | Nombre |
boolean | Booléen |
date | Nombre de secondes écoulés depuis le 01/01/1970 (Timestamp Unix) |
duration | Nombre de millisecondes |
phone | Numéro de téléphone suivant la norme RFC 3966 |
Type location
{
"lat":44.339722,
"lng":1.210278,
"address": "Nantes, France"
}
Propriété | Type | Description |
---|---|---|
lat | Nombre | Latitude du point (WGS84) |
lng | Nombre | Longitude du point (WGS84) |
address | Texte | Adresse géocodé |
Type image
, signature
, file
[
{
"id":"c42bafd1-e57a-42b6-83e4-452f5a56e426",
"name":"capture d'écran.png",
"mimeType": "image/png",
"extension": "png",
"size": 12451,
"comment": "Lorem ipsum dolor sit amet, consectetur adipisicing elit"
}
]
Ces types de valeurs sont mises dans un tableau.
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant unique du fichier |
name | Texte | Nom du fichier |
mimeType | Texte | Type MIME |
extension | Texte | Extension du fichier |
size | Nombre | Taille du fichier en octets |
comment | Texte | Commentaire de l'utilisateur (uniquement type image) |
Type list
[86709,94262,29124,65239,52046,84950,77323,41779]
Le type list
est un tableau d'identifiant de liste
Type relation
{
"submissions": [
{
"id":"bdc04cb2-85a2-44f2-978f-0184879341c8",
"count" : 5
},
{
"id":"1f7b984f-26c1-47ef-b225-74684b3f18ef",
"count" : 3
}
]
}
Les relations sont mises sous forme de tableau d'objet, avec pour clé l'identifiant de la fiche. Pour les relations quantifiables, il faut également préciser la quantité avec la clé count.
Type user
[
{"id": 546},
{"id": 546}
]
Le type user
est un tableau d'objets dont le seul élément important est l'identifiant de l'utilisateur.
Récupérer les fiches d'un formulaire
Requête
Retourne toutes les fiches liées au formulaire.
GET /daxium-test/submissions?structure_id=1 HTTP/1.1
GET /{app_short}/submissions?structure_id={id}&per_page={per_page}&page={page}&items_expanded=true
Paramètre | Type | Description |
---|---|---|
id | Texte | Identifiant du formulaire (requis) |
per_page | Nombre | Nombre de fiches par page |
page | Nombre | Numéro de la page demandée |
updated_since | Nombre | Filtre les résultats à partir de la date de mise à jour fournie (timestamp) |
items_expanded | Booléen | Permet d'avoir les libellés de listes (et non uniquement les identifiants) |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"submissions": [
{
"created_at": 1466437149,
"updated_at": 1466437180,
"structure_id": 1,
"structure_version": 1,
"channels": [
"SUBMISSION-41/0820b488-3cee-4774-bb8f-3cca754ae8c3"
],
"data_created_at": 1495543307,
"data_updated_at": 1495543307,
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"items": {
"date8": 1466437174,
"number0": 68,
"string4": "Hello",
"boolean9": true
},
"submission_number": 1234,
"number_in_structure": 15,
"settings": [],
"assigned_user": {
"system_groups": [],
"groups": [],
"id": 80,
"email": "john@doe.com",
"first_name": "John",
"last_name": "Doe"
},
"subscribers": [],
"current_state": "c4bf97ba-4599-11e9-b210-d663bd873d93",
"last_updated_user_id": 44,
"latitude": -33.8634,
"longitude": 151.211
},
...
],
"total_count": 4,
"total_pages": 1,
"server_time": 1466694919
}
Propriétés
Propriété | Type | Description |
---|---|---|
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
structure_id | integer | Identifiant du formulaire |
structure_version | Nombre | Version du formulaire |
channels | array | Liste des conditions remplies par la fiche |
user_id | integer | Propriétaire de la fiche |
data_created_at | date | date de création des données sur le serveur |
data_updated_at | date | date de dernière mise à jour des données sur le serveur |
id | UUID | Identifiant de la fiche |
items | Dictionnaire | Dictionnaire avec pour clé le nom système du champ |
submission_number | integer | numéro séquentiel |
number_in_structure | integer | numéro séquentiel |
latitude | Nombre | Latitude de la fiche |
longitude | Nombre | Longitude |
last_updated_user_id | integer | Identifiant de l'utilisateur ayant modifié la fiche en dernier |
subscribers | array | Liste des utilisateurs abonnés à la fiche |
current_state | UUID | Identifiant de l'état du workflow dans lequel se trouve la fiche |
assigned_user | JSON | Objet décrivant l'utilisateur assigné à la fiche |
Récupérer jusqu'à 100 fiches par leurs identifiants
Requête
Retourne les fiches correspondantes aux identifiants envoyés.
POST /daxium-test/submissions/byids HTTP/1.1
Content-Type: application/json
{
"submission_ids": [
{
"id": "abe01c09-2cbe-412d-98b9-bfb73c4b9765",
"updated_since": 1551795386
},
{
"id": "f815082e-380b-4875-857f-2eee6bcdc90e"
},
{
"id": "771a82da-acfc-4447-8f2d-8c40626b332c",
"updated_since": 1551795386
}
]
}
POST /{app_short}/submissions/byids?items_expanded=false
Paramètre | Type | Description |
---|---|---|
id | Texte | Identifiant de fiche (requis) |
updated_since | Nombre | Filtre les résultats à partir de la date de mise à jour fournie (timestamp UTC, optionnel) |
items_expanded | Booléen | Permet d'avoir les libellés de listes (et non uniquement les identifiants) |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"submissions": [
{
"created_at": 1580219902,
"updated_at": 1580219902,
"structure_id": 293,
"structure_version": 1,
"channels": [],
"user_id": 219,
"data_created_at": 1576492505,
"data_updated_at": 1576512945,
"id": "abe01c09-2cbe-412d-98b9-bfb73c4b9765",
"items": {
"string0": "rgreg",
"relation1": {
"submissions": [
{
"id": "3551cfdd-9353-4a15-94a9-0db7d9fe3d5f"
},
{
"id": "53589900-70a1-4b51-907a-36301072810b"
}
]
}
},
"settings": [],
"submission_number": 66679,
"number_in_structure": 4,
"subscribers": []
},
{
"created_at": 1579509524,
"updated_at": 1579509524,
"structure_id": 293,
"structure_version": 1,
"channels": [],
"user_id": 219,
"data_created_at": 1576492505,
"data_updated_at": 1576512945,
"id": "f815082e-380b-4875-857f-2eee6bcdc90e",
"items": {},
"settings": [],
"submission_number": 66675,
"number_in_structure": 3,
"subscribers": []
}
]
}
Propriétés
Propriété | Type | Description |
---|---|---|
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
structure_id | integer | Identifiant du formulaire |
structure_version | Nombre | Version du formulaire |
channels | array | Liste des conditions remplies par la fiche |
user_id | integer | Propriétaire de la fiche |
data_created_at | date | date de création des données sur le serveur |
data_updated_at | date | date de dernière mise à jour des données sur le serveur |
id | UUID | Identifiant de la fiche |
items | Dictionnaire | Dictionnaire avec pour clé le nom système du champ |
submission_number | integer | numéro séquentiel |
number_in_structure | integer | numéro séquentiel |
latitude | Nombre | Latitude de la fiche |
longitude | Nombre | Longitude |
last_updated_user_id | integer | Identifiant de l'utilisateur ayant modifié la fiche en dernier |
subscribers | array | Liste des utilisateurs abonnés à la fiche |
current_state | UUID | Identifiant de l'état du workflow dans lequel se trouve la fiche |
assigned_user | JSON | Objet décrivant l'utilisateur assigné à la fiche |
Code erreur
Si le nombre d'identifiants envoyés est supérieur à la limite autorisée (100), une réponse HTTP 400 est reçue, avec le message "Trop d'Id de fiches reçus. Le maximum autorisé est 100".
Rechercher les fiches d'un formulaire
Retourne toutes les fiches liées au formulaire correspondant au critère de recherche.
POST /daxium-test/submissions/search?structure_id=1 HTTP/1.1
{
"field1": {
"value": "XXX",
"operator": "YYY"
},
"field2": {
"value": "XXX",
"operator": "YYY"
}
}
POST /{app_short}/submissions/search?structure_id={id}&per_page={per_page}&page={page}
Paramètre | Type | Description |
---|---|---|
field * | Texte | Nom systeme valide du champs |
value * | Texte | Valeur recherchée |
operator * | Texte | Operateur à utiliser |
Opérateur | Type de valeur | Description | Champs compatibles |
---|---|---|---|
equal | Texte/Nombre | Recherche une valeur exacte | Texte, nombre, booléen, date, email, téléphone |
notequal | Texte/Nombre | Recherche une valeur différente de | Texte, nombre, booléen, date, email, téléphone |
isNull | -- | Recherche une valeur nulle | Tous |
isNotNull | -- | Recherche une valeur non nulle | Tous |
less | Nombre | Recherche strictement inférieur à | Nombre |
greater | Nombre | Recherche strictement supérieur à | Nombre |
lesseq | Nombre | Recherche inférieur ou égale à | Nombre |
greatereq | Nombre | Recherche supérieur ou égale à | Nombre |
contains | Texte | Recherche contenant | Texte, email, téléphone |
notContains | Texte | Recherche ne contenant pas | Texte, email, téléphone |
startWith | Texte | Recherche commencant par | Texte, email, téléphone |
endWith | Texte | Recherche ne finissant par | Texte, email, téléphone |
in | Tableau | Recherche si un des éléments est présent dans le champ | Liste, utilisateur, texte |
range | tableau deux valeurs | Recherche entre deux bornes | Nombre, date |
HTTP/1.1 200 OK
Content-Type: application/json
{
"created_at": 1466437149,
"updated_at": 1466437180,
"structure_id": 1,
"structure_version": 1,
"channels": [
"SUBMISSION-41/0820b488-3cee-4774-bb8f-3cca754ae8c3"
],
"user_id": 23,
"data_created_at": 1495543307,
"data_updated_at": 1495543307,
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"items": {
"date8": 1466437174,
"number0": 68,
"string4": "Hello",
"boolean9": true
},
"settings": [],
"submission_number": 68693,
"number_in_structure": 2,
"subscribers": [],
"last_updated_user_id": 23
"latitude": -33.8634,
"longitude": 151.211
},
...
],
"total_count": 4,
"total_pages": 1,
"server_time": 1466694919
}
Rechercher les fiches d'un formulaire et par dernier utilisateur les ayant modifiées
Retourne toutes les fiches liées au formulaire correspondant au critère de recherche et par dernier utilisateur les ayant modifiées
POST /daxium-test/submissions/search?structure_id=1&last_updated_user_id=23 HTTP/1.1
{
"field1": {
"value": "XXX",
"operator": "YYY"
},
"field2": {
"value": "XXX",
"operator": "YYY"
}
}
POST /{app_short}/submissions/search?structure_id={id}&last_updated_user_id={last_updated_user_id}&per_page={per_page}&page={page}
last_updated_user_id est un critère de recherche optionnel qui est envoyé directement dans l'URL de recherche (voir exemple ci-dessous). Ce paramètre accepte une valeur entière qui correspond à un identifiant d'utilisateur. L'utilisation de ce critère de recherche permet de filtrer les soumissions dont la dernière mise à jour a été effectuée par l'utilisateur ayant l'identifiant spécifié.
Paramètre | Type | Description |
---|---|---|
field * | Texte | Nom systeme valide du champs |
value * | Texte | Valeur recherchée |
operator * | Texte | Operateur à utiliser |
Opérateur | Type de valeur | Description |
---|---|---|
equal | Text/Nombre | Recherche une valeur exacte |
isNull | -- | Recherche une valeur null |
isNotNull | -- | Recherche une valeur non null |
notequal | Text/Nombre | Recherche une valeur differente de |
less | Nombre | Recherche strictement inférieur à |
greater | Nombre | Recherche strictement supérieur à |
lesseq | Nombre | Recherche inférieur ou égale à |
greatereq | Nombre | Recherche supérieur ou égale à |
contains | Texte | Recherche contenant |
notContains | Texte | Recherche ne contenant pas |
startWith | Texte | Recherche commencant par |
endWith | Texte | Recherche ne finissant par |
in | Tableau | Recherche contenu dans un tableau |
HTTP/1.1 200 OK
Content-Type: application/json
{
"submissions": [
{
"created_at": 1466437149,
"updated_at": 1466437180,
"structure_id": 1,
"structure_version": 1,
"channels": [
"SUBMISSION-41/0820b488-3cee-4774-bb8f-3cca754ae8c3"
],
"user_id": 23,
"data_created_at": 1495543307,
"data_updated_at": 1495543307,
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"items": {
"date8": 1466437174,
"number0": 68,
"string4": "Hello",
"boolean9": true
},
"settings": [],
"submission_number": 68693,
"number_in_structure": 2,
"subscribers": [],
"last_updated_user_id": 23
"latitude": -33.8634,
"longitude": 151.211
},
...
],
"total_count": 4,
"total_pages": 1,
"server_time": 1466694919
}
Récupérer les données de références
Retourne toutes les données de références, toute structure confondue, pour l'utilisateur connecté.
GET /daxium-test/submissions?reference=true HTTP/1.1
GET /{app_short}/submissions?reference=true&per_page={per_page}&page={page}
Paramètre | Type | Description |
---|---|---|
per_page | Nombre | Nombre de fiches par page |
page | Nombre | Numéro de la page demandée |
HTTP/1.1 200 OK
Content-Type: application/json
{
"submissions": [
{
"created_at": 1466437149,
"updated_at": 1466437149,
"structure_id": 1,
"structure_version": 1,
"channels": [
"SUBMISSION-41/0820b488-3cee-4774-bb8f-3cca754ae8c3"
],
"data_created_at": 1466437149,
"data_updated_at": 1466437149,
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"items": {
"date8": 1466437174,
"number0": 68,
"string4": "Hello",
"boolean9": true
},
"settings": [],
"latitude": -33.8634,
"longitude": 151.211
},
...
],
"total_count": 4,
"total_pages": 1,
"server_time": 1466694919
}
Récupérer une fiche
Récupère la fiche.
GET /daxium-test/submissions/dd795b8d-f235-4d87-b08f-5cd3566e6795 HTTP/1.1
GET /{app_short}/submissions/{id}
Paramètre | Type | Description |
---|---|---|
id | UUID | Identifiant de la fiche |
HTTP/1.1 200 No Content
Content-Type: application/json
{
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"structure_id": 1,
"structure_version": 3,
"items": {
...
},
...
}
Créer une fiche
Créer une nouvelle fiche.
POST /{app_short}/submissions
POST /daxium-test/submissions HTTP/1.1
Content-Type: application/json
{
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"structure_id": 1,
"structure_version": 3,
"created_at": 1581430046,
"updated_at": 1581430046,
"items": {
...
},
...
}
Propriétés dans l'url
Propriété | Type | Description | Exemple |
---|---|---|---|
partial | Booléen | Indique si la fiche doit être enregistrée partiellement et donc ne pas prendre en compte les permissions (champs editables ou requis). Si non indiqué, Les permissions doivent être respectées. | url?partial=true |
Paramètre | Type | Description |
---|---|---|
id | UUID | Identifiant de la fiche (si non fourni, généré par le serveur) |
structure_id * | integer | Identifiant du formulaire |
structure_version * | integer | Version du formulaire |
created_at | Timestamp | Timestamp de la date de création de la fiche. Si non précisé, on utilise la date du jour. |
updated_at | Timestamp | Cernière modification de la fiche. Si non précisé, on utilise la date du jour. |
items * | Dictionnaire | Dictionnaire avec pour clé le nom système du champ |
substitute_user_id | integer | Optionnel. Spécifie l'id de l'utilisateur qui doit être considéré comme créateur de la fiche. Peut être différent de l'utilisateur connecté |
Créer plusieurs fiches
Requête
L'API /{app_short}/submissions/multiple
permet de créer plusieurs fiches en une fois.
Il faut envoyer un tableau d'objets fiche dans la requête.
POST /daxium-test/submissions/multiple HTTP/1.1
Content-Type: application/json
[
{
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"structure_id": 1,
"structure_version": 3,
"created_at": 1581430046,
"updated_at": 1581430046,
"items": {
...
}
},
{
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"structure_id": 2,
"structure_version": 1,
"created_at": 1581430046,
"updated_at": 1581430046,
"items": {
...
}
},
...
]
Réponse
La création multiple des fiches se fait de manière asynchrone.
Dans ce cadre, l'API de création retourne une URL qu'il est possible d'appeler pour avoir les détails de la création des fiches (voir doc API "Multiple fiches callback" ci-dessous).
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackUrl": "/{vm_short}/submissions/multiple/callback/062218c5-b471-4c23-908b-f514ee7c56f5"
}
Code erreur
Si le nombre des fiches créées dépasse la limite autorisée (100), l'erreur "Trop des fiches reçues" est retournée avec un code HTTP 400.
Si aucune fiche n'est envoyée, la réponse sera un code HTTP 400 avec une erreur indiquant qu'aucune fiche à créer n'a été reçue.
Mettre à jour une fiche
Mettre à jour une fiche par son identifiant. Le format d'envoi est identique à celui de création de fiche.
PUT /daxium-test/submissions/dd795b8d-f235-4d87-b08f-5cd3566e6795 HTTP/1.1
Content-Type: application/json
{
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"structure_id": 1,
"structure_version": 3,
"created_at": 1581430046,
"updated_at": 1581430046,
"trigger_id": "88b6801f-0db6-4376-a6f2-aef18dda5e77",
"items": {
...
}
}
PUT /{app_short}/submissions/{id}
Paramètre | Type | Description |
---|---|---|
id | UUID | Identifiant de la fiche |
structure_id * | integer | Identifiant du formulaire |
structure_version * | integer | Version du formulaire |
created_at | Timestamp | Timestamp de la date de création de la fiche. Si non précisé, on utilise la date du jour. |
updated_at | Timestamp | Cernière modification de la fiche. Si non précisé, on utilise la date du jour. |
items * | Dictionnaire | Dictionnaire avec pour clé le nom système du champ |
trigger_id | UUID | Dans le cas de fiche avec workflow, indiquer la transition à utiliser. Les transitions se retouvent ici |
substitute_user_id | integer | Optionnel. Spécifie l'id de l'utilisateur qui doit être considéré comme nouveau propriétaire de la fiche. Peut être différent de l'utilisateur connecté |
Propriétés dans l'url
Propriété | Type | Description | Exemple |
---|---|---|---|
partial | Booléen | Indique si la fiche doit être enregistrée partiellement et donc ne pas prendre en compte les permissions (champs editables ou requis). Si non indiqué, Les permissions doivent être respectées. | url?partial=true |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"created_at": 1461835418,
"updated_at": 1461835418,
"structure_id": 1,
"structure_version": 3,
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"items": {...},
"current_state": "37562ff0-05d9-11ea-8d71-362b9e155667",
...
}
Mettre à jour plusieurs fiches
Requête
L'API /{app_short}/submissions/multiple
permet de mettre à jour plusieurs fiches en une fois.
Il faut envoyer un tableau d'objets fiche dans la requête.
PUT /daxium-test/submissions/multiple HTTP/1.1
Content-Type: application/json
[
{
"id": "dd795b8d-f235-4d87-b08f-5cd3566e6795",
"structure_id": 1,
"structure_version": 3,
"created_at": 1581430046,
"updated_at": 1581430046,
"items": {
...
}
},
{
"id": "09ad07b5-546a-4b7a-8970-a507525c71eb",
"structure_id": 2,
"structure_version": 1,
"items": {
...
}
},
...
]
Réponse
La mise à jour multiple de fiches se fait de manière asynchrone.
Dans ce cadre, l'API de mise à jour multiple retourne une URL qu'il est possible d'appeler pour avoir les détails de la mise à jour des fiches (voir doc API "Callback fiches multiples" ci-dessous).
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackUrl": "/{vm_short}/submissions/multiple/callback/062218c5-b471-4c23-908b-f514ee7c56f5"
}
Code erreur
Si le nombre d'fiches à mettre à jour dépasse la limite autorisée (100), l'erreur "Trop de fiches reçues" est retournée avec un code HTTP 400.
Si aucune fiche n'est envoyée, la réponse sera un code HTTP 400 avec une erreur indiquant qu'aucune fiche à mettre à jour n'a été reçue.
Supprimer une fiche
Supprime la fiche.
DELETE /daxium-test/submissions/dd795b8d-f235-4d87-b08f-5cd3566e6795 HTTP/1.1
DELETE /{app_short}/submissions/{id}
Paramètre | Type | Description |
---|---|---|
id | UUID | Identifiant de la fiche |
HTTP/1.1 204 No Content
Envoyer un fichier
Permet d'envoyer un fichier afin de pouvoir le lier à une fiche. Une fois le fichier utilisé dans une fiche, il n'est pas possible de le lier à nouveau à une autre fiche.
POST /daxium-test/submissions/upload HTTP/1.1
Content-Type: image/png
Content-Length: 8343
....
POST /{app_short}/submissions/upload
HTTP/1.1 200 OK
Content-Type: application/json
{
"uuid": "3001aeaa-600c-4ab8-ad8a-2e14e4d54431",
"mime-type": "image\/png",
"size": 8343
}
Reponse
Propriété | Type | Description |
---|---|---|
uuid | UUID | Identifiant du fichier |
mime-type | Texte | Type MIME du fichier |
size | Nombre | Taille en octets du fichier |
Envoyer un fichier avec son id et la fiche
Permet d'envoyer un fichier en précisant son id et celui de la fiche
POST /daxium-test/submissions/upload/{submissionId}/{fileId} HTTP/1.1
Content-Type: image/png
Content-Length: 8343
....
POST /{app_short}/submissions/upload/{submissionId}/{fileId}
Paramètre | Type | Description |
---|---|---|
submissionId | UUID | Identifiant de la fiche |
fileId | UUID | Identifiant du fichier |
HTTP/1.1 200 OK
Content-Type: application/json
{
"uuid": "3001aeaa-600c-4ab8-ad8a-2e14e4d54431",
"mime-type": "image\/png",
"size": 8343
}
Reponse
Propriété | Type | Description |
---|---|---|
uuid | UUID | Identifiant du fichier |
mime-type | Texte | Type MIME du fichier |
size | Nombre | Taille en octets du fichier |
Récuperer un fichier
Retourne le fichier lié à la fiche.
GET /daxium-test/submissions/dd795b8d-f235-4d87-b08f-5cd3566e6795/file/3001aeaa-600c-4ab8-ad8a-2e14e4d54431 HTTP/1.1
GET /{app_short}/submissions/{id}/file/{file_id}
Paramètre | Type | Description |
---|---|---|
id | UUID | Identifiant de la fiche |
file_id | UUID | Identifiant du fichier |
HTTP/1.1 200 OK
Content-Length: 8343
...
Callback fiches multiples
Requête
L'API /{app_short}/submissions/multiple/callback/{callback_id}
permet de récupérer le statut d'une création ou mise à jour multiple de fiches.
L'URL de cette API, et donc l'ID "callback_id" sont fournis par les services de création et mise à jour de fiches multiples (voir ci-avant).
GET /daxium-test/submissions/multiple/callback/bd49010b-fea7-4cd4-9ff2-c99679827ab9 HTTP/1.1
Réponse
La réponse contient tous les détails qui concernent la création ou la mise à jour des fiches. Voir exemple ci-contre.
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackDetails": {
"status": "Finished with errors",
"nbRecordsTodo": 2,
"nbRecordsDone": 2,
"nbSuccess": 1,
"nbErrors": 1,
"success": [
"dd795b8d-f235-4d87-b08f-5cd3566e6795"
],
"errors": [
{
"09ad07b5-546a-4b7a-8970-a507525c71eb": [
"Unknown structure id"
]
}
]
}
}
Propriété | type | Description | Valeurs potentielles |
---|---|---|---|
status | string | Statut de la demande asynchrone | Voir les statuts possibles ci-après |
nbRecordsTodo | int | Nombre des fiches à traiter | 1, 25, 72, .. |
nbRecordsDone | int | Nombre des fiches déjà traitées sur le nombre total | 1, 25, 72, .. |
nbSuccess | int | Nombre des fiches traitées sans erreur | 1, 25, 72, .. |
nbErrors | int | Nombre des fiches n'ayant pas pu être traitées à cause d'erreurs | 1, 25, 72, .. |
success | object | JSON représentant la liste des fiches traitées sans erreur au format "<submission identifier>" |
voir exemple ci-contre |
errors | object | JSON représentant la liste des fiches rencontrées au format {"<submission identifier>" => ["<error_1>", "<error_2>", ...]} |
voir exemple ci-contre |
Statuts possibles
Status | Description |
---|---|
Planned | La demande de création ou mise à jour a bien été reçue et est planifiée, mais pas encore lancée |
Running | La demande de création ou mise à jour est en cours |
Finished | La demande de création ou mise à jour s'est terminée sans erreur |
Finished with errors | La demande de création ou mise à jour s'est terminé mais des erreurs ont été relevées |
Failed | Le process a rencontré une erreur technique et n'a pas pu se dérouler normalement |
In timeout | Le process a rencontré une erreur technique et n'a pas pu se dérouler normalement |
Applications personnalisées
Propriétés
{
"app": {
"created_at": 1495463112,
"updated_at": 1495463128,
"id": 3,
"name": "My custom app",
"banner": {...},
"splash": {...},
"menus": [...],
"screens": [...],
"settings": [...],
"groups": [...],
"widget_spacing": 1,
"button_type": "standard",
"label_overlay": true,
"grant_all": true
},
"total_count": 1,
"total_pages": 1,
"server_time": 1497950623,
"required": {
"files_uuid": [
"73fc5a59-d9b7-492b-a666-21205031aa74",
"b3efec90-c7cf-4989-b118-e70d7c21ed5e"
]
}
}
Les applications personnalisées sont identifiées par un attribut id
. Il est possible de retrouver plusieurs applications personnalisées par Vertical Métier.
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp UNIX) |
id | integer | Identifiant |
name | string | Nom |
banner | JSON | Bannière |
splash | JSON | Splash screen |
menus | array | Liste des items composants le menu |
screens | array | Liste des écrans de l'application |
settings | array | Liste des paramètres |
groups | array | Liste des groupes ayant accès à l'application |
widget_spacing | integer | espace relatif entre les boutons. 0 correspond au mode flat, 1 à la configuration standard |
button_type | string | type de bouton: standard (icône font-awesome), mix (icône image), full (image de fond) |
label_overlay | boolean | affichage du bandeau sous les libellés des boutons |
grant_all | boolean | accessible à tous les utilisateurs ou non |
Splash
{
"splash": {
"created_at": 1495463112,
"updated_at": 1497950593,
"active": true,
"image": "73fc5a59-d9b7-492b-a666-21205031aa74",
"color": "#5084C4",
"aspect": "fit"
}
}
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp UNIX) |
active | boolen | Indique si le splash screen doit être affiché ou non au lancement de l'application |
image | string | Identifiant de l'image |
color | string | couleur de fond (hexadecimal) |
aspect | string | fit s'adapte à l'espace disposible, fill rempli l'espace disponible |
Menu
{
"menus": [
{
"created_at": 1495463112,
"updated_at": 1495463120,
"index": 0,
"target": "daxium-air://app/home",
"label": {
"en": "Home",
"es": "Inicio",
"fr": "Accueil"
},
"icon": {
"type": "font-awesome",
"value": "fa-home"
}
},
{
"created_at": 1495463112,
"updated_at": 1495463120,
"index": 1,
"target": "daxium-air://app/new_submission",
"label": {
"en": "New submission",
"es": "Nuevo registro",
"fr": "Nouvelle fiche"
},
"icon": {
"type": "font-awesome",
"value": "fa-pencil"
}
},
...
]
}
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp unix) |
index | integer | Position dans l'ordre d'apparition des différentes entrées du menu |
target | string | Identifiant de l'action à effectuer lors de l'intéraction avec cette entrée du menu |
label | JSON | Texte affiché dans le menu. Objet JSON contenant chaque locale (identifiée par la clef) |
icon | JSON | Objet icône, composé d'un type et d'une valeur. Seul Font Awesome est supporté pour l'instant. |
Screens
Une application personnalisée est composée de différents écrans paramètrables selon les propriétés suivantes
{
"screens": [
{
"created_at": 1495463112,
"updated_at": 1495463120,
"name": "daxium_home",
"pages": [...]
}
]
}
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp UNIX) |
name | string | Nom identifiant l'écran |
pages | array | Liste des pages qui composent un écran |
Pages
Un écran peut être composée d'une ou plusieurs pages.
{
"pages": [
{
"created_at": 1495463112,
"updated_at": 1495463120,
"system_name": "home_page",
"title": {
"fr": "Page d'accueil",
"en": "Home page",
"es": "Inicio"
},
"side_menu": true,
"widgets": [...],
"layout": {...}
}
]
}
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp UNIX) |
system_name | string | Nom système de la page |
title | string | Titre de la page. Objet JSON contenant chaque locale (identifiée par la clef) |
side_menu | boolean | Indique si le menu gauche doit être affiché sur la page |
widgets | array | Liste des widgets composants la page |
layout | array | Type de layout choisi pour cette page |
Layout
{
"layout": [
{
"x": 0,
"y": 0,
"width": 2,
"height": 1
},
{
"x": 1,
"y": 0,
"width": 1,
"height": 1
},
{
"x": 1,
"y": 1,
"width": 1,
"height": 1
},
{
"x": 2,
"y": 0,
"width": 2,
"height": 1
}
]
}
Propriété | Type | Description |
---|---|---|
x | string | Coordonnées X du widget dans le layout |
y | string | Coordonnées Y du widget dans le layout |
width | string | Longueur relative du widget |
height | string | Hauteur relative du widget |
Widgets
Un widget est matérialisé sous la forme d'un bouton sur une page.
{
"widgets": [
{
"created_at": 1495463112,
"updated_at": 1495463120,
"type": "button",
"index": 0,
"label": {
"en": "New submission",
"es": "Nuevo registro",
"fr": "Nouvelle fiche"
},
"color": "#2ecc71",
"target": "daxium-air://app/new_submission",
"icon": {
"type": "font-awesome",
"value": "fa-pencil"
}
},
{
"created_at": 1495463112,
"updated_at": 1495463120,
"type": "button",
"index": 1,
"label": {
"en": "My submissions",
"es": "Mis registros",
"fr": "Mes fiches"
},
"color": "#f39c12",
"target": "daxium-air://app/my_submission",
"icon": {
"type": "font-awesome",
"value": "fa-tags"
}
},
...
]
}
Propriété | Type | Description |
---|---|---|
created_at | date | Date de création (timestamp UNIX) |
updated_at | date | Date de modification (timestamp UNIX) |
type | string | Type de bouton |
index | integer | Position dans l'ordre d'apparition des différentes widgets affichés sur la page |
label | JSON | Texte affiché sur le widget. Objet JSON contenant chaque locale (identifiée par la clef) |
color | string | Couleur de fond du widget (hexadecimal) |
target | string | Identifiant de l'action à effectuer lors de l'intéraction avec le widget |
icon | JSON | Icône affiché sur le widget. Objet icône, composé d'un type et d'une valeur |
Standard
{
"icon": {
"type": "font-awesome",
"value": "fa-tags"
}
}
Icône personnalisé
{
"icon": {
"type": "image",
"value": "49cb243f-d0f2-4aec-901e-89a8281e7a0"
}
}
Image de fond
{
"icon": [],
"background": "f0af27de-fbfb-41f8-948d-57612ca05e91"
}
Récuperer l'ensemble des applications personnalisées
Retourne toutes les applications personnalisées sous un format court pour le Vertical Metier donné. Si aucune application personnalisée n'est configurée, retourne l'application par défaut sous format complet.
Requête
GET /daxium-test/customapps HTTP/1.1
GET /{app_short}/customapps
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"apps": [
{
"created_at": 1497952660,
"updated_at": 1497952711,
"id": 13,
"name": "Image buttons"
},
{
"created_at": 1497952574,
"updated_at": 1497952653,
"id": 12,
"name": "Custom icons"
}
],
"total_count": 2,
"total_pages": 1,
"server_time": 1497953611
}
Propriété | Type | Description |
---|---|---|
apps | array | Liste des applications personnalisées contenant dates de création/modification, id et nom |
total_count | integer | Nombre de résultat récupérés |
total_pages | integer | Nombre de pages de résultats total |
server_time | date | Date du serveur courante (Timestamp UNIX) |
Récuperer une application personnalisée
Retourne une application personnalisée par son identifiant
Requête
GET /daxium-test/customapps/10 HTTP/1.1
GET /{app_short}/customapps/{app_id}
Paramètre | Type | Description |
---|---|---|
app_id | integer | Identifiant de l'application personnalisée |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"app": {
"created_at": 1495463112,
"updated_at": 1495463128,
"id": 3,
"name": "My custom app",
"banner": {...},
"splash": {...},
"menus": [...],
"screens": [...],
"settings": [...],
"groups": [...],
"widget_spacing": 1,
"button_type": "standard",
"label_overlay": true,
"grant_all": true
},
"total_count": 1,
"total_pages": 1,
"server_time": 1497950623,
"required": {
"files_uuid": [
"73fc5a59-d9b7-492b-a666-21205031aa74",
"b3efec90-c7cf-4989-b118-e70d7c21ed5e"
]
}
}
Propriété | Type | Description |
---|---|---|
app | JSON | Identifiant de l'application personnalisée |
total_count | integer | Nombre de résultat récupérés |
total_pages | integer | Nombre de pages de résultats total |
server_time | date | Date du serveur courante (Timestamp UNIX) |
required | JSON | listes des identifiants de fichier contenus dans l'application |
Récuperer un fichier d'une application personnalisée
Retourne un fichier d'une application personnalisée
Requête
GET /daxium-test/customapps/10/file/f0af27de-fbfb-41f8-948d-57612ca05e91 HTTP/1.1
GET /{app_short}/customapps/{app_id}/file/{file_uuid}
Paramètre | Type | Description |
---|---|---|
file_uuid | UUID | identifiant du fichier à récuperer |
Réponse
HTTP/1.1 200 OK
Listes
Les listes sont structurées sous forme d'arbre, chaque élément de liste peut contenir un ou plusieurs élément de listes.
Item de liste :
{
"id": 19620,
"root_id": 19618,
"parent_id": 19618,
"created_at": 1449840918,
"updated_at": 1450789764,
"name": "Chat",
"has_image": true,
"level": 1,
"position": 2,
"external_id": "cat",
"functionnal_status_color": "#8e44ad",
"url": "https:\/\/fr.wikipedia.org\/wiki\/Chat"
}
Propriété | Type | Description |
---|---|---|
id | Nombre | Identifiant de la liste |
root_id | Nombre | Identifiant du noeud racine de la liste |
parent_id | Nombre | Identifiant du parent de la liste |
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
deleted_at | Date | Date de suppression |
name | Texte | Nom affiché |
has_image | Booléen | Indique si la liste à une image |
level | Nombre | Niveau de profondeur, 0 étant le noeud racine |
position | Nombre | Position de la liste à son niveau de profondeur |
external_id | Texte | Identifiant externe |
url | Texte | URL |
functionnal_status_color | Texte | Couleur de la liste (en hexadecimal) |
Récuperation de l'ensemble des listes
Retourne l'ensemble des identifiants des listes existantes dans le vertical (uniquement les root_id, sans le contenu).
Requête
GET /daxium-test/lists HTTP/1.1
GET /{app_short}/lists?per_page={per_page}&page={page}
Paramètre | Type | Description |
---|---|---|
per_page | Nombre | Le nombre de listes par page (par défaut 10, maximum 1000) |
page | Nombre | La page à retourner (première page : 0) |
updated_since | Date | Filtre permettant de ne retourner que les listes mises à jour depuis la date indiquée. (dont listes supprimées) |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"lists": [
{
"root_id": 5,
"name": "testList",
"created_at": 1528374700,
"list_last_updated": 1601471925
},
...
],
"total_count": 14,
"total_pages": 2,
"next_page": 1,
"server_time": 1461761418
}
Paramètre | Type | Description |
---|---|---|
lists | [Objets] | Tableau des listes |
total_count | Nombre | Nombre total de listes |
total_pages | Nombre | Nombre total de pages à afficher |
next_page | Nombre | Numéro de la page suivante si plusieurs pages |
server_time | Date | Date courante du serveur |
list_last_updated | Date | Date de la dernière édition d'un élément de la liste |
Récuperation d'une liste
Retourne la liste et tout ses enfants avec une pagination
Requête
GET /daxium-test/lists/19618?per_page=100&page=0 HTTP/1.1
GET /{app_short}/lists/{list_id}?per_page={per_page}&page={page}&updated_since={updated_since}
Paramètre | Type | Description |
---|---|---|
per_page | Nombre | Le nombre de liste par page (par défaut 10, maximum 1000) |
page | Nombre | La page à retourner |
updated_since | Date | Filtre permettant de ne retourner que les listes mises à jour depuis la date indiquée. (dont listes supprimées) |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"lists": [...],
"total_count": 14,
"total_pages": 2,
"next_page": 1,
"server_time": 1461761418
}
Paramètre | Type | Description |
---|---|---|
lists | [Liste] | Liste des élements de listes triée |
total_count | Nombre | Nombre total de listes |
next_page | Nombre | Numéro de la page suivante si plusieurs pages |
server_time | Date | Date du serveur courante |
Création d'une liste
Créée une liste avec enfants de façon hiérarchique avec la propriété items
.
Requête
POST /daxium-test/lists HTTP/1.1
Content-Type: application/json
{
"name": "Région - France",
"external_id": "fr",
"items":[
{
"name": "Pays de la loire",
"external_id": "fr.pdl",
"items":
[
{
"name": "Loire-Atlantique",
"external_id": "fr.pdl.44"
},
{
"name": "Vendée",
"external_id": "fr.pdl.85"
}
]
}
]
}
POST /{app_short}/lists
Paramètre | Type | Description |
---|---|---|
name * | Texte | Nom de la liste (Requis) |
external_id | Texte | Identifiant Externe |
items | [Liste] | Liste des enfants |
Réponse
HTTP/1.1 201 Created
Content-Type: application/json
{
"created_at": 1579510167,
"updated_at": 1579510167,
"has_image": false,
"id": 66310,
"name": "Région - France",
"position": 0,
"level": 0
}
Paramètre | Type | Description |
---|---|---|
id | Nombre | L'identifiant du noeud racine créée |
Modification des élements d'une liste
Modifie le nom d'un ou plusieurs élément d'une liste par son identifiant id
.
Requête
PATCH /daxium-test/lists/35384 HTTP/1.1
Content-Type: application/json
[
{
"id": 35385,
"name": "Grand Ouest"
}
]
PATCH /{app_short}/lists/{root_id}
Paramètre | Type | Description |
---|---|---|
root_id | Nombre | Identifiant du noeud racine |
Une listes des modifications doit être envoyé sous la forme de liste d'objet JSON, avec l'identifiant de l'élément à modifier.
Réponse
Paramètre | Type | Description |
---|---|---|
lists | [liste] | Tableau des éléments de liste modifiés |
HTTP/1.1 200 OK
Content-Type: application/json
{
"lists": [
{
"created_at": 1579512259,
"updated_at": 1579512402,
"parent_id": 35384,
"root_id": 35384,
"has_image": false,
"id": 35385,
"name": "Grand Ouest",
"position": 1,
"level": 1,
"external_id": "fr.pdl"
}
],
"total_count": 1,
"total_pages": 1,
"server_time": 1579512402
}
Supprimer une liste complète
Supprime la liste complètement avec tout les éléments, doit être un noeud racine.
Requête
DELETE /daxium-test/lists/19618 HTTP/1.1
DELETE /{app_short}/lists/{root_id}
Paramètre | Type | Description |
---|---|---|
root_id | Nombre | Identifiant du noeud racine |
Réponse
HTTP/1.1 204 No Content
Supprimer un élement d'une liste
Supprime la liste, avec tout les éléments enfants.
Requête
DELETE /daxium-test/lists/19618/19624 HTTP/1.1
DELETE /{app_short}/lists/{root_id}/{list_id}
Paramètre | Type | Description |
---|---|---|
root_id | Nombre | Identifiant du noeud racine |
list_id | Nombre | Identifiant de la liste |
Réponse
HTTP/1.1 204 No Content
Récupérer l'image liée à une liste
Retourne l'image liée à la liste, uniquement si l'attribut has_image
est à true
Requête
GET /daxium-test/lists/19618/19620/image HTTP/1.1
GET /{app_short}/lists/{root_id}/{list_id}/image
Paramètre | Type | Description |
---|---|---|
root_id | Nombre | Identifiant du noeud racine |
list_id | Nombre | Identifiant de la liste |
Réponse
HTTP/1.1 200 OK
Content-Type: image/jpeg
...
Récuperation des ids de listes et accessSet qui ont été modifiés
Retourne la liste d'ids de toutes les listes et accessSet qui ont été modifiés et nécessitent une mise à jour sur un système externe.
Requête
POST /daxium-test/lists/updated HTTP/1.1
Content-Type: application/json
{
"list_states": [
{
"list_id": 123456,
"list_updated_since": 1579887264,
"access_set_updated_since": 1579887264
},
...
]
}
POST /{app_short}/lists/updated
Paramètre | Type | Description |
---|---|---|
list_id | Nombre | l'id de la liste |
list_updated_since | Nombre | Filtre permettant de detecter si la liste a été mise a jour depuis la date indiquée |
access_set_updated_since | Date | Filtre permettant de detecter si l'autorisation d'accès à été mis à jour depuis la date indiquée. |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"lists_to_update": [
XXX,
YYY
],
"lists_with_access_set": [
XXX,
YYY
], "access_set_to_update": [
XXX,
YYY
]
}
Paramètre | Type | Description |
---|---|---|
lists_to_update | [ids] | Liste d'id de liste ayant une modification |
lists_with_access_set | [ids] | Liste d'id de liste soumis a une autorisation d'accès |
access_set_to_update | [ids] | Liste d'id des autorisations d'accès ayant une modification |
Recupère les ids d'éléments selectionnables
Retourne la liste de tout les ids selectionnables pour une liste donnée (la liste des noeuds de liste autorisé par l'autorisation d'accès)
Requête
GET /daxium-test/lists/19618/selectables HTTP/1.1
GET /{app_short}/lists/{list_id}/selectables
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"selectable_ids": [
XXX,
YYY
],
"server_time": 1469461670
}
Paramètre | Type | Description |
---|---|---|
selectable_ids | [ids] | liste d'id selectionnable pour l'utilisateur |
server_time | Date | Date du serveur courante |
Mettre à jour une liste
Met à jour un élément de liste
Requête
PUT /daxium-test/lists/19618/19619 HTTP/1.1
Content-Type: application/json
{
"name": "xxxxx",
"latitude": "xxxx",
"longitude": "xxxx",
"external_id": "xxx",
"functionnal_status_color": "xxx",
"url": "xxx"
}
PUT /{app_short}/lists/{root_id}/{list_id}
Paramètre | Type | Description |
---|---|---|
name | Texte | Nom de la liste |
latitude | Nombre | Latitude |
longitude | Nombre | Longitude |
external_id | Texte | id interne |
functionnal_status_color | Texte | couleur de l'élément de liste |
url | Texte | Url de l'élément de liste |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
[]
Ajouter en masse d'enfants
Ajout en masse d'enfant
Requête
PATCH /daxium-test/lists/19618/19619 HTTP/1.1
Content-Type: application/json
[
{
"name": "xxxxx",
"latitude": "xxxx",
"longitude": "xxxx",
"external_id": "xxx",
"functionnal_status_color": "xxx",
"url": "xxx"
}
]
PATCH /{app_short}/lists/{root_id}/{parent_id}
Paramètre | Type | Description |
---|---|---|
liste | [liste] | Tableau de liste |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
[]
Récupérer les enfants
Récupération de tous les enfants direct d'un noeud
Requête
GET /daxium-test/lists/19618/child/19619 HTTP/1.1
GET /{app_short}/lists/{root_id}/child/{parent_id}
Réponse
Paramètre | Type | Description |
---|---|---|
liste | [liste] | Tableau de liste |
total_count | Nombre | Nombre total d'élément |
total_pages | Nombre | Nombre total de page |
server_time | Nombre | Temps du serveur |
HTTP/1.1 200 OK
Content-Type: application/json
{
"lists": [
...
],
"total_count": XX,
"total_pages": YY,
"server_time": 1479742896
}
Recherche
Recherche d'une liste par rapport à l'external_id
Requête
POST /daxium-test/lists/13339835/search HTTP/1.1
{
"external_id": "0012"
}
Paramètre | Type | Description |
---|---|---|
external_id | string | ID externe recherché |
POST /{app_short}/lists/{root_id}/search
Réponse
Paramètre | Type | Description |
---|---|---|
liste | [liste] | Tableau de liste |
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 13339835,
"name": "Créé",
"external_id": "0012",
"functionnalStatusColor": "blue",
"level": 1,
"position": 1,
"parent_id": 13339834,
"root_id": 13339834,
"vm_id": 204,
"url": ""
}
]
Changer la position d'un noeud
Changer la position d'un noeud par rapport à un autre
PUT /daxium-test/lists/13897339/13899509/after/13899530 HTTP/1.1
PUT /{app_short}/lists/{root_id}/{node_to_move_id}/{direction}/{node_position_id}
Directions possibles :
child
: positionne le noeud à déplacer en premier enfant du noeud de référence ;before
: positionne le noeud à déplacer juste avant le noeud de référence (sous le même noeud parent) ;after
: postiionne le noeud à déplacer juste après le noeud de référence (sous le même noeud parent).
Paramètre | Type | Description |
---|---|---|
root_id | id | Root_id de la liste à modifier |
node_to_move_id | id | ID du noeud à déplacer |
direction | texte | Où placer le noeud par rapport à un autre |
node_position_id | id | ID du noeud de référence pour le placement |
Réponse
HTTP/1.1 200 OK No Content
Import de liste en csv
Import d'une liste via un fichier CSV
Requête
POST /daxium-test/lists/import HTTP/1.1
Content-Type: application/json
{
"list_id": 12345,
"separator": ";",
"mode": "DIFF",
"encoding": "UTF-8",
"file_id": "dd795b8d-f235-4d87-b08f-5cd3566e6795"
}
Paramètre | Type | Description |
---|---|---|
list_id * | Nombre | Identifiant de la liste |
file_id * | UUID | Identifiant du fichier |
separator | Texte | N'importe quel caractère pour indiquer la séparation entre 2 colonnes. ";" par défaut |
mode | Texte | Indique le mode d'import. Valeurs acceptées : "APPEND", "DIFF". |
encoding | Texte | Indique l'encodage du fichier. Valeurs acceptées : "UTF-8", "WINDOWS-1252", "WINDOWS-1256". "UTF-8" par défaut. |
file_id est issu de l'appel de l'API "Envoyer un fichier"
Réponse
L'import de liste se fait de manière asynchrone.
Dans ce cadre, l'API retourne une URL qu'il est possible d'appeler pour avoir les détails de l'import de liste (voir doc API "Callback liste" ci-dessous).
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackUrl": "/{vm_short}/lists/callback/062218c5-b471-4c23-908b-f514ee7c56f5"
}
Code erreur
Message | Code |
---|---|
file_id est manquant | 400 |
file_id doit être un uuid | 400 |
Mauvais encodage | 400 |
Fichier introuvable | 400 |
Une erreur technique s’est produite lors de l’exécution du job d’import de liste | 400 |
Callback liste
Requête
L'API /{app_short}/lists/callback/{callback_id}
permet de récupérer le statut de certaines API de liste :
lists/import
L'URL de cette API, et donc l'ID "callback_id" sont fournis par les API ci-dessus.
GET /daxium-test/lists/callback/bd49010b-fea7-4cd4-9ff2-c99679827ab9 HTTP/1.1
Response
La réponse contient tous les détails qui concernent les API ci-dessus. Voir exemple ci-contre. Dans le cas de l'API d'import seul le statut est renvoyé actuellement.
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackDetails": {
"status": "Finished with errors",
"nbRecordsTodo": 1,
"nbRecordsDone": 1,
"nbSuccess": 0,
"nbErrors": 0,
"success": [],
"errors": [
"error xxx",
"error yyy"
]
}
}
Propriété | type | Description | Potential values |
---|---|---|---|
status | string | Statut de la demande asynchrone | Voir les statuts possibles ci-après |
nbRecordsTodo | int | Nombre d'éléments de liste à traiter. Pour le moment reste à 1 | 0, 1 |
nbRecordsDone | int | Nombre d'éléments de liste déjà traités sur le nombre total. Pour le moment 0 tant que le job tourne, puis 1 lorsque fini | 0, 1 |
nbSuccess | int | Nombre d'élements de liste traités avec succès. Pour le moment reste à 0 | 0 |
nbErrors | int | Nombre d'éléments de liste n'ayant pas pu être traités à cause d'erreurs. Pour le moment reste à 0 | 0 |
success | object | Tableau vide | |
errors | object | JSON représentant la liste des fiches rencontrées au format {"<list id>" => ["<error_1>", "<error_2>", ...]} |
voir exemple ci-contre |
Possible status
Status | Description |
---|---|
Planned | Le job a été envoyé au système de queue des jobs et est en attente d'un worker disponible pour être lancé |
Running | Job en cours |
Finished | Job terminé sans erreur |
Finished with errors | Job terminé avec erreurs (voir clef errors pour les détails) |
Failed | Job planté techniquement suite à une erreur serveur |
Autorisation d'accès sur les listes
Les autorisations d'accès permettent de restreindre à certains éléments de liste
Récuperer toutes les autorisations d'accès disponible
Retourne la liste de toutes les autorisations définies
Requête
GET /daxium-test/list/accessset HTTP/1.1
GET /{app_short}/list/accessset
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"listaccesssets": [
{
"id": "672da115-72f2-4448-8e97-dfc080467e96",
"name": "bride",
"users": [
"143"
],
"groups": [],
"root_id": 189457,
"lists": [
189542,
189557,
189555
]
}
],
"total_count": 1,
"total_pages": 1,
"server_time": 1469542453
}
Paramètre | Type | Description |
---|---|---|
listaccesssets | [las] | Liste des élements d'autorisation d'accès |
total_count | Nombre | Nombre total de listes |
next_page | Nombre | Numéro de la page suivante si plusieurs pages |
server_time | Date | Date du serveur courante |
Récuperer toutes les autorisations d'accès pour une liste et un utilisateur
Retourne la liste de toutes les autorisations definies pour une liste et un utilisateur donnée
Requête
GET /daxium-test/list/42/accessset/user/42 HTTP/1.1
GET /{app_short}/list/{list_id}/accessset/user/{user_id}
Paramètre | Type | Description |
---|---|---|
list_id | Nombre | id de la liste |
user_id | Nombre | id de l'utilisateur |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
"672da115-72f2-4448-8e97-dfc080467e96"
]
Paramètre | Type | Description |
---|---|---|
listaccesssets | [las] | Liste des ids d'autorisation d'accès |
Récuperer les informations d'une autorisation d'accès
Retourne toutes les informations sur une autorisation d'accès
Requête
GET /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96 HTTP/1.1
GET /{app_short}/list/{list_id}/accessset/{list_access_set_id}
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | id de la liste |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "672da115-72f2-4448-8e97-dfc080467e96",
"name": "bride",
"users": [
{
"id": 143,
"email": "v.ramona@daxium.com",
"active": true,
"first_name": "Vincent",
"last_name": "Ramona",
"last_login_at": "2015-12-11T16:11:53+0100",
"settings": {
"locale": "fr"
}
}
],
"groups": [],
"root_id": {
"has_image": false,
"id": 189457,
"name": "Fournitures",
"position": 210,
"level": 0
},
"lists": [
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:09+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189541,
"root_id": 189457,
"has_image": false,
"id": 189542,
"name": "de réduction",
"position": 1,
"level": 2,
"list_access_set": [
{
"created_at": "2016-07-26T14:01:36+0200",
"updated_at": "2016-07-26T14:01:36+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
},
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:10+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189541,
"root_id": 189457,
"has_image": false,
"id": 189557,
"name": "vissée",
"position": 3,
"level": 2,
"list_access_set": [
{
"created_at": "2016-07-26T14:01:36+0200",
"updated_at": "2016-07-26T14:01:36+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
},
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:09+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189553,
"root_id": 189457,
"has_image": false,
"id": 189555,
"name": "Test2",
"position": 2,
"level": 5,
"list_access_set": [
{
"created_at": "2016-07-26T14:02:38+0200",
"updated_at": "2016-07-26T14:21:17+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
}
]
}
Paramètre | Type | Description |
---|---|---|
listaccessset | [las] | L'autorisation d'accès |
Récuperer un type d'information d'une autorisation d'accès
Retourne la liste correspondant a l'entité demandée pour l'autorisation d'accès
Requête
| GET /{app_short}/list/{list_id}/accessset/{list_access_set_id}/[users | groups | lists]
|
| | | |
| Paramètre | Type | Description |
| --------------------- | ------- | ----------- |
| users/groups/lists | Texte | Entité demandée |
GET /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/users HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 143,
"email": "v.ramona@daxium.com",
"active": true,
"first_name": "Vincent",
"last_name": "Ramona",
"last_login_at": "2015-12-11T16:11:53+0100",
"settings": {
"locale": "fr"
}
}
]
GET /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/groups HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[]
GET /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/lists HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:09+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189541,
"root_id": 189457,
"has_image": false,
"id": 189542,
"name": "de réduction",
"position": 1,
"level": 2,
"list_access_set": [
{
"created_at": "2016-07-26T14:01:36+0200",
"updated_at": "2016-07-26T14:01:36+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
},
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:10+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189541,
"root_id": 189457,
"has_image": false,
"id": 189557,
"name": "vissée",
"position": 3,
"level": 2,
"list_access_set": [
{
"created_at": "2016-07-26T14:01:36+0200",
"updated_at": "2016-07-26T14:01:36+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
},
{
"created_at": "2016-07-21T10:34:00+0200",
"updated_at": "2016-07-21T10:34:09+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
},
"parent_id": 189553,
"root_id": 189457,
"has_image": false,
"id": 189555,
"name": "Test2",
"position": 2,
"level": 5,
"list_access_set": [
{
"created_at": "2016-07-26T14:02:38+0200",
"updated_at": "2016-07-26T14:21:17+0200",
"vertical_metier_id": 27,
"vertical_metier": {
"created_at": "2016-02-18T17:27:18+0100",
"updated_at": "2016-02-18T17:27:22+0100",
"id": 27,
"name": "frob",
"short": "pictbase-frob",
"description": "frob",
"active": true,
"settings": []
}
}
]
}
]
Réponse
Paramètre | Type | Description |
---|---|---|
users/groups/lists | [array] | Liste des utilisateurs/groupes/listes de d'autorisation d'accès |
Supprimer une autorisation d'accès
Supprime une autorisation d'accès
Requête
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96 HTTP/1.1
DELETE /{app_short}/list/{list_id}/accessset/{list_access_set_id}
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | id de la liste |
Réponse
HTTP/1.1 204 No Content
Supprimer une entité de l'autorisation d'accès
Supprime une entité de l'autorisation d'accès
Requête
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/users/42 HTTP/1.1
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/groups/42 HTTP/1.1
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/lists/42 HTTP/1.1
DELETE /{app_short}/list/{list_id}/accessset/{list_access_set_id}/{entity}/{entity_id}
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | id de la liste |
entity | [users/groups/lists] | type d'entité |
entity_id | Uuid | id de l'entité |
Réponse
HTTP/1.1 204 No Content
Creer une autorisation d'accès
Création d'une autorisation d'accès
Requête
POST /daxium-test/list/42/accessset HTTP/1.1
Content-Type: application/json
{
'name': 'bli',
'groups': [],
'users': [],
'lists': []
}
POST /{app_short}/list/{root_id}/accessset
Paramètre | Type | Description |
---|---|---|
root_id | Entier | id de la liste racine |
Paramètre | Type | Description |
---------- | ---------- | ----------- |
name * | Texte | Nom de l'autorisation d'accès |
groups | [ids] | Tableau d'ids correspondant aux groupes |
users | [ids] | Tableau d'ids correspondant aux utilisateurs |
lists | [ids] | Tableau d'ids correspondant aux listes |
Réponse
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | L'uuid de l'autorisation d'accès |
HTTP/1.1 200 OK
{
"id": "672da115-72f2-4448-8e97-dfc080467e96"
}
Modifier une autorisation d'accès
Modification d'une autorisation d'accès (verbe PUT pour ajouter et DELETE pour supprimer des éléments)
Requête
PUT /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/users/42 HTTP/1.1
PUT /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/groups/42 HTTP/1.1
PUT /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/lists/42 HTTP/1.1
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/users/42 HTTP/1.1
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/groups/42 HTTP/1.1
DELETE /daxium-test/list/42/accessset/672da115-72f2-4448-8e97-dfc080467e96/lists/42 HTTP/1.1
PUT /{app_short}/list/{list_id}/accessset/{list_access_set_id}/{entity}/{entity_id}
DELETE /{app_short}/list/{list_id}/accessset/{list_access_set_id}/{entity}/{entity_id}
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | id de l'autorisation |
entity | [users/groups/lists] | type d'élément |
entity_id | Entier | id de l'élément |
Réponse
HTTP/1.1 200 OK
Generation des dépendances interne
Génère toutes les dépendances internes des autorisations d'accès. A lancer une fois toutes les modifications terminée. Lancé automatiquement toutes les 5 minutes
Requête
POST /daxium-test/list/42/accessset/generate/672da115-72f2-4448-8e97-dfc080467e96 HTTP/1.1
POST /{app_short}/list/{list_id}/accessset/{list_access_set_id}/generate
Paramètre | Type | Description |
---|---|---|
list_access_set_id | Uuid | id de l'autorisation |
Response
HTTP/1.1 200 OK
Tâches
Récupérer des tâches
Requête
Permet de récuperer les tâches par utilisateur et dates.
GET /{app_short}/tasks
GET /daxium-test/tasks HTTP/1.1
Content-Type: application/json
Paramètre | Type | Filtre |
---|---|---|
id | string | Identifiant |
greater_start_date | date | Date de début supérieure ou égale à (UNIX timestamp) |
lower_start_date | date | Date de début inférieure ou égale à (UNIX timestamp) |
greater_due_date | date | Date d'échéance supérieure ou égale à (UNIX timestamp) |
lower_due_date | date | Date d'échéance inférieure ou égale à (UNIX timestamp) |
user_id | integer | Pour l'utilisateur donnée |
me | Tâches de l'utilisateur connecté | |
page | integer | Numéro de la page |
per_page | integer | Nombre de tâches par page |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"tasks": [
{
"id": "6e7ae869-af80-4d31-aa2b-483ebd0f9078",
"created_at": 1472828179,
"updated_at": 1472828179,
"start_date": 1473890400,
"due_date": 1473899400,
"submission": {
"structure_id": 353,
"structure_version": 4,
"id": "1f8e89f4-ba40-461e-a8b0-f4a88d29dfb3",
"items": {
...
},
"previous_items": [],
"settings": []
},
"user_id": 418,
"duration": 3600,
"delay_before": 300,
"delay_after": 300
},
...
],
"total_count": 4,
"total_pages": 1,
"server_time": 1466694919
}
Propriétés
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant de la tâche |
start_date | Date | Date de début de la tâche |
due_date | Date | Date d'échéance de la tâche |
duration | Nombre | Durée de la tâche |
delay_before | Nombre | Délai d'affichage indicatif avant le début de la tâche |
delay_after | Nombre | Délai d'affichage indicatif après l'heure d'échéance de la tâche |
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
submission | Submission | Fiche de la tâche |
user_id | Nombre ou Null | ID de l'utilisateur assigné OU Null |
Créer une tâche simple
Requête
Création d'une tâche simple
POST /{app_short}/tasks
POST /{app_short}/tasks HTTP/1.1
Content-Type: application/json
{
"start_date": 1561449635,
"due_date": 1561453635,
"user_id": 5675,
"duration": 3600,
"delay_before": 300,
"delay_after": 300,
"submission_model_id": "xxxx-xxxx-xxxx-xxxx"
}
OU
{
"start_date": 1561449635,
"due_date": 1561453635,
"user_id": 5675,
"duration": 3600,
"delay_before": 300,
"delay_after": 300,
"submissions": [
"xxxx-xxxx-xxxx-xxxx", "xxxx-xxxx-xxxx-xxxx"
]
}
Propriétés
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant de la tâche |
start_date | Date | Date de début de la tâche (UNIX timestamp) |
due_date | Date | Date d'échéance de la tâche (UNIX timestamp) |
duration | Nombre | Durée de la tâche en secondes |
delay_before | Nombre | Délai d'affichage indicatif en secondes avant le début de la tâche |
delay_after | Nombre | Délai d'affichage indicatif en secondes après l'heure d'échéance de la tâche |
submission_model_id | UUID | ID d'une fiche modèle |
submissions | array | Tableau d'ID de fiches |
user_id | Nombre ou Null | ID de l'utilisateur |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "14d8028a-b5ee-4a0e-8379-9fa7b174285c",
"start_date": 1561449635,
"due_date": 1561453635,
"duration": 3600,
"delay_before": 0,
"delay_after": 0,
"created_at": 1561451262,
"updated_at": 1561451262,
"user_id": 5675,
"time_status": "late",
"fill_status": "filled",
"submission": {
"created_at": 1561451250,
"updated_at": 1561451262,
"structure_id": 32583,
"structure_version": 1,
"task_id": "14d8028a-b5ee-4a0e-8379-9fa7b174285c",
"channels": [],
"user_id": 5675,
"data_created_at": 1561451250,
"data_updated_at": 1561451250,
"id": "93dc11fc-b9e8-4d63-b860-79ebed0f4777",
"items": {
"date0": 1561543200,
"date1": 1561546800
},
"previous_items": [],
"settings": [],
"submission_number": 9716177,
"subscribers": []
}
}
Propriétés
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant de la tâche |
start_date | Date | Date de début de la tâche |
due_date | Date | Date d'échéance de la tâche |
duration | Nombre | Durée de la tâche |
delay_before | Nombre | Délai d'affichage indicatif avant le début de la tâche |
delay_after | Nombre | Délai d'affichage indicatif après l'heure d'échéance de la tâche |
created_at | Date | Date de création |
updated_at | Date | Date de mise à jour |
user_id | Nombre ou Null | ID de l'utilisateur assigné OU Null |
time_status | String | État courant de la tâche |
fill_status | String | État courant du remplissage de la tâche |
submission | Submission | Fiche de la tâche |
Créer une tâche récurrente
Les propriétés sont identiques à celle d'une tâche simple, cependant, la propriété due_date
n'est pas à renseigner.
POST /{app_short}/tasks HTTP/1.1
Content-Type: application/json
{
"start_date": 1473890400,
...,
"delay_after": 300,
"recurrency": {
"type": "daily",
"days": {
"mon": {
"start": "00:00",
"end": 1800
},
"tue": {
"start": "02:00",
"end": 1800
},
"wed": {
"start": "04:00",
"end": 1800
},
"thu": {
"start": "06:00",
"end": 1800
},
"fri": {
"start": "08:00",
"end": 1800
},
"sat": {
"start": "10:00",
"end": 1800
},
"sun": {
"start": "12:00",
"end": 1800
}
},
"end": {
"type": "occurrence",
"value": 5
},
"interval": 1
}
}
Propriétés
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant de la tâche |
start_date | Date | Date de début de la tâche |
duration | Nombre | Durée de la tâche |
delay_before | Nombre | Délai d'affichage indicatif avant le début de la tâche |
delay_after | Nombre | Délai d'affichage indicatif après l'heure d'échéance de la tâche |
submission_model_id | UUID | ID d'une fiche modèle |
submissions | array | Tableau d'ID de fiches |
user_id | Nombre ou Null | ID de l'utilisateur |
recurrency | Recurrency | Voir ci-dessous |
Récurrence journalière
Propriété | Type | Description |
---|---|---|
type | Texte | mettre comme valeur "daily |
interval | Nombre | Interval entre chaque tâche, minimum 1 |
days | Objet | Jours de la semaine (3 premières lettres des jours en anglais) avec les propriétés start pour l'heure de début et la propriété end pour la durée de la tâche en secondes |
end | Objet | Objet avec une propriété type qui peut avoir comme valeur occurrence ou date, et une propriété value qui a comme valeur une date dans le cas d'un type date, un nombre dans le cas d'un type occurrence |
POST /{app_short}/tasks HTTP/1.1
Content-Type: application/json
{
"start_date": 1473890400,
...,
"delay_after": 300,
"recurrency": {
"type": "weekly",
"days": {
"wed": {
"start": "04:00",
"end": 1800
},
"thu": {
"start": "06:00",
"end": 1800
}
},
"end": {
"type": "date",
"value": 1475890400
},
"interval": 1
}
}
Récurrence hebdomadaire
Les propriétés sont identiques à la récurrence journalière, cependant tous les jours de la propriété days
ne sont pas obligatoires.
Modifier une tâche
Requête
Modifie une tâche
PUT /{app_short}/tasks/{task_id}
PUT /{app_short}/tasks/{task_id} HTTP/1.1
Content-Type: application/json
{
"start_date": 1561450000,
"due_date": 1561453600,
"user_id": 5675,
"duration": 3600,
"delay_before": 0,
"delay_after": 0
}
Propriétés
Propriété | Type | Description |
---|---|---|
start_date | Date | Date de début de la tâche (UNIX timestamp) |
due_date | Date | Date d'échéance de la tâche (UNIX timestamp) |
duration | Nombre | Durée de la tâche en secondes |
delay_before | Nombre | Délai d'affichage indicatif en secondes avant le début de la tâche |
delay_after | Nombre | Délai d'affichage indicatif en secondes après l'heure d'échéance de la tâche |
user_id | Nombre ou Null | ID de l'utilisateur |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "14d8028a-b5ee-4a0e-8379-9fa7b174285c",
"user_id": 5675,
"duration": 3600,
"delay_before": 0,
"delay_after": 0,
"created_at": 1561451262,
"updated_at": 1561452662,
"start_date": 1561450000,
"due_date": 1561453600,
"time_status": "late",
"fill_status": "filled",
"submission": {
"created_at": 1561451250,
"updated_at": 1561451262,
"structure_id": 32583,
"structure_version": 1,
"task_id": "14d8028a-b5ee-4a0e-8379-9fa7b174285c",
"channels": [],
"user_id": 5675,
"data_created_at": 1561451250,
"data_updated_at": 1561451250,
"id": "93dc11fc-b9e8-4d63-b860-79ebed0f4777",
"items": {
"date0": 1561543200,
"date1": 1561546800
},
"previous_items": [],
"settings": [],
"submission_number": 9716177,
"subscribers": []
}
}
Supprimer une tâche
Supprime la tâche.
Requête
DELETE /{app_short}/tasks/{task_id} HTTP/1.1
DELETE /{app_short}/tasks/{task_id}
Paramètre | Type | Description |
---|---|---|
task_id | UUID | Identifiant de la tâche |
Réponse
HTTP/1.1 204 No Content
Publipostages
Liste des templates par formulaire
Requête
Retourne la liste des templates de publipostage disponible pour un formulaire
GET /daxium-test/report_templates?structure=1213 HTTP/1.1
GET /{app_short}/report_templates?structure={structure_id}
Propriété | Type | Description |
---|---|---|
structure_id | integer | identifiant de la structure [0-9]+ |
HTTP/1.1 200 OK
Content-Type: application/json
{
"templates": [
{
"id": 68,
"name": "Gestion PHMR.xlsx",
"listingMode": false,
"templateEngine": "xlsxaspose"
},
{
"id": 62,
"name": "Gestion PHMR2.docx",
"listingMode": false,
"templateEngine": "docxopenxml"
},
{
"id": 60,
"name": "test 53 en.docx",
"listingMode": false,
"templateEngine": "docxopenxml"
},
{
"id": 59,
"name": "Gestion PHMR.docx",
"listingMode": true,
"templateEngine": "docxopenxml"
}
],
"total_count": 4,
"total_pages": 1,
"server_time": 1487251538
}
Réponse
La réponse est un tableau JSON “templates” contenant les informations de chaque template
Propriété | Type | Description |
---|---|---|
id | integer | identifiant |
name | string | nom affiché |
listingMode | boolean | statut du mode listing |
templateEngine | string | moteur de génération de template |
Liste des templates par fiche
Requête
Retourne la liste des templates de publipostage disponibles pour une fiche
GET /daxium-test/report_templates?submission=9641083e-4235-427d-90a8-4d46207d46c7 HTTP/1.1
GET /{app_short}/report_templates?submission{submission_id}
Propriété | Type | Description |
---|---|---|
submission_id | GUID | identifiant de la fiche [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
HTTP/1.1 200 OK
Content-Type: application/json
{
"templates": [
{
"id": 68,
"name": "Gestion PHMR.xlsx",
"listingMode": false,
"templateEngine": "xlsxaspose"
},
{
"id": 62,
"name": "Gestion PHMR2.docx",
"listingMode": false,
"templateEngine": "docxopenxml"
},
{
"id": 60,
"name": "test 53 en.docx",
"listingMode": false,
"templateEngine": "docxopenxml"
},
{
"id": 59,
"name": "Gestion PHMR.docx",
"listingMode": true,
"templateEngine": "docxopenxml"
}
],
"total_count": 4,
"total_pages": 1,
"server_time": 1487251538
}
Réponse
La réponse est un tableau JSON “templates” contenant les informations de chaque template
Propriété | Type | Description |
---|---|---|
id | integer | identifiant |
name | string | nom affiché |
listingMode | boolean | statut du mode listing |
templateEngine | string | moteur de génération de template |
Information d'un rapport de publipostage
Requête
Récuperer un rapport de publipostage par son identifiant
GET /daxium-test/reports/1846 HTTP/1.1
GET /{app_short}/reports/{{report_id}}
Propriété | Type | Description |
---|---|---|
report_id | integer | identifiant [0-9]+ |
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1846,
"status": "finished",
"original_document": {
"file_uuid": "17e66387-276d-49c5-a5dc-d609f7e1543d",
"file_name": "133357-Gestion PHMR.docx"
},
"pdf_document": {
"file_uuid": "",
"file_name": ""
},
"errorMessage": ""
}
Réponse
La réponse est un objet JSON contenant les informations du rapport de publipostage
Propriété | Type | Description |
---|---|---|
id | integer | identifiant |
status | string | statut |
file_uuid | UUID | identifiant du fichier généré |
file_name | string | nom du fichier généré |
errorMessage | string | message d'erreur si disponible |
Publipostages d'une fiche
Requête
Retourne la liste de tous les publipostages d'une fiche
GET /daxium-test/reports?submission=9641083e-4235-427d-90a8-4d46207d46c7 HTTP/1.1
GET /{app_short}/reports?submission={submission_id}&per_page={per_page}&page={page}&updated_since={updated_since}
Propriété | Type | Description |
---|---|---|
submission * | UUID | identifiant de la fiche [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
per_page | integer | nombre de résultat par page. optionnel, valeur par défaut 10, valeur maximum 100 |
page | integer | numéro de la page à récuperer. optionnel |
updated_since | date | Date filter to get pp updated after date provided. Optional. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"reports": [
{
"id": 375,
"status": "error",
"original_document": {
"file_uuid": "",
"file_name": ""
},
"pdf_document": {
"file_uuid": "",
"file_name": ""
},
"errorMessage": "(-300) The remote server returned an error: (404) Not Found."
},
{
"id": 1890,
"status": "finished",
"original_document": {
"file_uuid": "17e66387-276d-49c5-a5dc-d609f7e1543d",
"file_name": "133357-Gestion PHMR.docx"
},
"pdf_document": {
"file_uuid": "",
"file_name": ""
}
}
],
"total_count": 2,
"total_pages": 1,
"server_time": 1487251538
}
Réponse
La réponse est un objet JSON “reports” contenant un tableau d'objet des rapports de publipostage
Propriété | Type | Description |
---|---|---|
reports | array | tableau d'objets |
total_count | integer | nombre de résultat total |
next_page | integer | numéro de la prochaine page |
server_time | date | date du serveur |
Fichier généré d'un rapport publipostage
Requête
Retourne le fichier généré d'un rapport de publipostage par son identifiant
GET /daxium-test/reports/1861/results/78669621-5cc9-40cd-a961-988da6102384 HTTP/1.1
GET /{app_short}/reports/{report_id}/results/{file_uuid}
Propriété | Type | Description |
---|---|---|
report_id | integer | identifiant [0-9]+ |
file_uuid | UUID | identifiant du fichier de publipostage généré [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="Gestion PHMR.xlsx";, attachment; filename="Gestion PHMR.xlsx";
Réponse
Retourne le fichier généré par le publipostage
Lancer un publipostage
Requête
Lancer la génération d'un rapport de publipostage pour une fiche
POST /{app_short}/reports
POST /daxium-test/reports HTTP/1.1
Content-Type: application/json
{
"template_id": 62,
"submission_id": "9641083e-4235-427d-90a8-4d46207d46c7",
"api_callback": "http://your.endpoint.com/report_callback/{publipostage_id}"
}
Propriété | Type | Description |
---|---|---|
template_id * | integer | identifiant du template, obligatoire. |
submission_id * | string | identifiant de la fiche, obligatoire. |
api_callback * | string | URL à appeler lorsque le publipostage est généré, obligatoire. |
header_name | string | nom d'en-tête à définir pour le callback, optionnel. |
header_value | string | valeur d'en-tête à définir pour le callback, optionnel. |
join_format | string | Format dans lequel le rapport doit être généré. Les valeurs disponibles sont : |
original : format original du template de rapport (.doc, .xlsx, ...) |
||
pdf : rapport au format PDF |
||
original,pdf : deux rapports générés : format original du template et PDF |
l'URL de callback est appelé en PUT après la génération du rapport. {publipostage_id} dans l'URL est remplacé par l'ID de publipostage correspondant. Les en-tête header_name et header_value sont valorisés seulement s'ils sont définis.
HTTP/1.1 200 OK
Content-Type: application/json
{
"report_id": 1887
}
Réponse
La réponse est un objet JSON contenant l'identifiant du publipostage créé.
Propriété | Type | Description |
---|---|---|
report_id | integer | identifiant |
Context
Ajouter une fiche au contexte
Requête
L'API POST /daxium-test/contexts/{submission_id}
permet d'ajouter une fiche au contexte d'un utilisateur
POST /{app_short}/contexts/3163a2b2-fb3b-4802-9920-4c271abe519b HTTP/1.1
or
POST /{app_short}/contexts/3163a2b2-fb3b-4802-9920-4c271abe519b HTTP/1.1
Content-Type: application/json
{
"user_id": 62
}
Propriété | Type | Description |
---|---|---|
submission_id | GUID | identifiant de la fiche [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
Si la proriété user_id est envoyée dans la requête POST, la fiche sera ajoutée au contexte de cet utilisateur. Sinon la fiche sera ajoutée au contexte utilisateur actuel.
HTTP/1.1 204 OK
Réponse
Page vide avec le code de réponse 204.
Retirer une fiche du contexte
Requête
Pour retirer une fiche d'un contexte utilisateur, il faut utiliser l'API DELETE /{app_short}/contexts/{submission_id}
DELETE /daxium-test/contexts/9641083e-4235-427d-90a8-4d46207d46c7 HTTP/1.1
Propriété | Type | Description |
---|---|---|
submission_id | GUID | identifiant de la fiche [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
HTTP/1.1 204 OK
Réponse
Page vide avec le code de réponse 204.
Retirer une fiche de tous les contextes utilisateurs
Requête
L'API DELETE /{app_short}/contexts/{submission_id}/allusers
permet de retirer une fiche de tous les contextes utilisateurs
DELETE /daxium-test/contexts/9641083e-4235-427d-90a8-4d46207d46c7/allusers HTTP/1.1
Propriété | Type | Description |
---|---|---|
submission_id | GUID | identifiant de la fiche [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12} |
HTTP/1.1 204 OK
Réponse
Page vide avec le code de réponse 204.
Souscriptions
Un utilisateur pour se connecter doit avoir une licence web et/ou mobile. Ces licences sont rattachées à une souscription.
Récuperer les souscriptions d'un compte
Requête
La liste des souscriptions associées à un compte est disponible via l'API /subscriptions
.
GET /subscriptions HTTP/1.1
Réponse
La réponse est toujours un tableau JSON avec la liste des instances disponibles.
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscriptions": [
{
"start": 1483225200,
"end": 1672527599,
"users_max": {
"web": 9999,
"mobile": 9999
},
"id": "d4ea01d1-b18a-434d-90e4-1b939d7dba65",
"name": "infinite",
"sequence": 1,
"active": true
},
{
"start": 1514761200,
"end": 1546297199,
"users_max": {
"web": 5,
"mobile": 10
},
"id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"name": "Renouvellement Daxium 2018",
"sequence": 2,
"active": true
}
],
"total_count": 2,
"total_pages": 1,
"server_time": 1496328911
}
Propriété | Type | Description |
---|---|---|
start | int | Date de début |
end | int | Date de fin |
users_max | object | nombre d'utilisateurs web et mobile maximums autorisés |
id | UUID | identifiant |
name | string | nom affiché |
sequence | int | numéro séquentiel |
active | bool | statut |
Groupes
Récupérer les groupes applicatifs d'un vertical métier
Requête
La liste des groupes associés à un vertical métier est disponible par :
GET /{app_short}/groups
.
GET /daxium-test/groups HTTP/1.1
Réponse
La réponse est un objet JSON contenant un tableau des groupes disponibles.
HTTP/1.1 200 OK
Content-Type: application/json
{
"groups": [
{
"is_system": false,
"id": 6,
"name": "Group A",
"description": "Group A",
"user_ids":[219, 230],
"structure_ids":[408]
},
{
"is_system": false,
"id": 7,
"name": "Group B",
"description": "Group B",
"user_ids":[219],
"structure_ids":[406, 789]
}
],
"total_count": 2,
"total_pages": 1,
"server_time": 1496329957
}
Propriété | Type | Description |
---|---|---|
is_system | bool | défini si le groupe est un groupe système |
id | int | identifiant |
name | string | nom visible du groupe |
description | string | description renseignée par l'administrateur |
Créer un groupe
Créer un nouveau groupe.
POST /{app_short}/group
POST /daxium-test/group HTTP/1.1
Content-Type: application/json
{
"name": "My group",
"description": "Group description",
"user_ids":[219, 230],
"structure_ids":[408]
}
Paramètre | Type | Description |
---|---|---|
name * | String | Nom du groupe |
description * | String | Description du groupe |
user_ids | array(int) | Tableau d'identifiants correspondant aux utilisateurs inclus dans le groupe |
structure_ids | array(int) | Tableau d'identifiants correspondant aux structures incluses dans le groupe |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"is_system": false,
"id": 100,
"name": "My group",
"description": "Group description",
"user_ids": [
219, 230
],
"structure_ids": [
408
]
}
Mettre à jour un groupe
Requête
Mettre à jour un groupe existant.
PUT /{app_short}/group/{group_id}
PUT /daxium-test/group/100 HTTP/1.1
{
"name": "My modified group",
"description": "Group description",
"user_ids":[123],
"structure_ids": [123]
}
Paramètre | Type | Description |
---|---|---|
name * | String | Nom du groupe |
description * | String | Description du groupe |
user_ids | array(int) | Tableau d'identifiants correspondant aux utilisateurs inclus dans le groupe |
structure_ids | array(int) | Tableau d'identifiants correspondant aux structures incluses dans le groupe |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"is_system": false,
"id": 100,
"name": "My modified group",
"description": "Group description",
"user_ids": [
123
],
"structure_ids": [
123
]
}
Utilisateurs
Propriétés des utilisateurs
Propriété | Type | Description |
---|---|---|
username * | string | adresse email de l'utilisateur |
active | bool | statut actif/inactif |
firstName | string | prénom de l'utilisateur |
lastName | string | nom de l'utilisateur |
locale | string | langue de l'utilisateur (fr ou en) |
subscription_id | string | UUID de la souscription à rattacher à l'utilisateur. La liste peut être récuperée via l'API /subscriptions |
system_groups * | array | tableau d'int. 1 pour administrateur, 2 pour mobile, 3 pour web. |
groups | array | tableau d'int. La liste peut être récupérée via l'API /{app_short]/groups} |
id | int | [Uniquement dans les réponses] identifiant unique de l'utilisateur (généré par le système) |
settings | JSON object | [Uniquement dans les réponses] objet JSON contenant un certain nombre de paramètre supplémentaire tels que la langue de l'utilisateur (locale) par exemple |
plainPassword | JSON object | [Uniquement dans les requêtes] les clefs first et second sont obligatoires, leurs valeurs doivent être identique. Règles de sécurité à respecter: 1 majuscule minimum, 1 minuscule minimum, 1 chiffre minimum, 8 caractères minimum |
force_login_password | int | [Uniquement pour les compagnies ayant une connexion SSO] 0 pour désactiver, 1 pour activer. Si activé, ce paramètre force l'usage d'une authentification par login/mot de passe Daxium, même si l'utilisateur a une connexion SSO configurée |
ssoProvider | int | [Uniquement pour les compagnies ayant une connexion SSO] Identificant unique du provider SSO a associer à l'utilisateur. Si spécifié, "plainPassword" devient inutile. L'identifiant unique est communiqué par les équipes de Daxium. |
Exemple de requête
Voir ci-contre.
# EXEMPLE DE REQUETE DE CREATION / MISE A JOUR (POST/PUT/PATCH)
HTTP/1.1 200 OK
Content-Type: application/json
...
{
"subscription_id": "ce3759fc-fad9-4a70-2822-4eaf1bba925f",
"system_groups": [
1,
2
],
"groups": [
253,
254
],
"email": "user@daxium.com",
"active": true,
"first_name": "Super",
"last_name": "User",
"settings": {
"locale": "en"
},
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
},
"force_login_password": 0,
"ssoProvider": null
}
...
Exemple de réponse
Voir ci-contre.
# EXEMPLE DE REPONSE (GET) POUR UN UTILISATEUR
HTTP/1.1 200 OK
Content-Type: application/json
...
{
"id": 1763,
"subscription_id": "ce3759fc-fad9-4a70-2822-4eaf1bba925f",
"system_groups": [
1,
2
],
"groups": [
253,
254
],
"email": "user@daxium.com",
"active": true,
"first_name": "Super",
"last_name": "User",
"settings": {
"locale": "en"
}
}
...
Lister tous les utilisateurs
Requête
La liste de tous les utilisateurs est disponible via l'API /users
.
GET /users HTTP/1.1
Réponse
La réponse est un tableau JSON avec la liste des utilisateurs.
HTTP/1.1 200 OK
Content-Type: application/json
{
"users": [
{
"subscription_id": "",
"system_groups": [
1
],
"groups": [],
"id": 1,
"email": "superuser@daxium.com",
"active": true,
"first_name": "Super",
"last_name": "User",
"settings": {
"locale": "fr"
}
},
{
"subscription_id": "d4ea01d1-b18a-434d-90e4-1b939d7dba65",
"system_groups": [
2
],
"groups": [
8
],
"id": 3,
"email": "mobile.user@daxium.local",
"active": true,
"first_name": "Mobile",
"last_name": "User",
"settings": {
"locale": "fr"
}
},
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
3
],
"groups": [],
"id": 4,
"email": "web.user@daxium.local",
"active": true,
"first_name": "Web",
"last_name": "User",
"settings": {
"locale": "fr"
}
}
],
"total_count": 3,
"total_pages": 1,
"server_time": 1496331477
}
Récuperer l'utilisateur courant
Requête
L'utilisateur courant est disponible via l'API /users/me
.
GET /users/me HTTP/1.1
Réponse
La réponse est un objet JSON contenant l'utilisateur courant et le compte client de l'utilisateur courant.
HTTP/1.1 200 OK
Content-Type: application/json
{
"user": {
"created_at": 1495442958,
"updated_at": 1496332388,
"id": 2,
"email": "user.mobile@daxium.local",
"email_canonical": "user.mobile@daxium.local",
"active": true,
"first_name": "User",
"last_name": "Mobile",
"last_login_mobile_at": "2017-06-01T17:53:08+0200",
"settings": {
"locale": "fr"
}
},
"company": {
"created_at": 1495201223,
"updated_at": 1495201223,
"id": 1,
"title": "Daxium"
}
}
Objet user
Voir "Propriété des utilisateurs" ci-dessus.
Objet company
Propriété | Type | Description |
---|---|---|
created_at | int | timestamp de date de création |
updated_at | int | timestamp de date de dernière modification |
id | int | identifiant |
title | string | nom affiché |
Envoyer une clef de push
Requête
L'API /users/pushkey
permet d'envoyer une clef de push.
POST /users/pushkey HTTP/1.1
Content-Type: application/json
{
"id": "uniqueDeviceId",
"key": "a key",
"os": "android",
"os_version": "7.0",
"app_version": "1.7.1",
"name": "My phone"
}
Propriété | Type | Description |
---|---|---|
id | string | identifiant unique du device |
key | string | clef |
os | string | os du device (Android ou iOS) |
os_version | string | version de l'os |
app_version | string | version de l'application Daxium-Air |
name | string | nom du device |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{}
Lister les utilisateurs d'un vertical métier
Requête
La liste des utilisateurs d'un vertical métier est disponible via l'API /{app_short}/users
.
GET /daxium-test/users HTTP/1.1
Réponse
La réponse est un tableau JSON avec la liste des utilisateurs.
HTTP/1.1 200 OK
Content-Type: application/json
{
"users": [
{
"subscription_id": "d4ea01d1-b18a-434d-90e4-1b939d7dba65",
"system_groups": [
2
],
"groups": [
8
],
"id": 3,
"email": "mobile.user@daxium.local",
"active": true,
"first_name": "Mobile",
"last_name": "User",
"settings": {
"locale": "fr"
}
},
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
3
],
"groups": [],
"id": 4,
"email": "web.user@daxium.local",
"active": true,
"first_name": "Web",
"last_name": "User",
"settings": {
"locale": "fr"
}
}
],
"total_count": 2,
"total_pages": 1,
"server_time": 1496331477
}
Récuperer un utilisateur avec son identifiant
Requête
L'API /{app_short}/users/{user_id}
permet de récuperer un utilisateur par son identifiant.
GET /daxium-test/users/5 HTTP/1.1
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
2
],
"groups": [],
"id": 5,
"email": "mynewuser@daxium.com",
"active": true,
"first_name": "Daxium",
"last_name": "New user",
"settings": {
"locale": "fr"
}
}
Récuperer un utilisateur avec son "username" (email)
Requête
L'API /{app_short}/users?username=xxx@xxx.xx
permet de récuperer un utilisateur par son "username" (email).
GET /daxium-test/users?username=user@daxium.com HTTP/1.1
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
2
],
"groups": [],
"id": 5,
"email": "user@daxium.com",
"active": true,
"first_name": "Daxium",
"last_name": "New user",
"settings": {
"locale": "fr"
}
}
Créer un utilisateur
Requête
L'API /{app_short}/users
permet de créer un utilisateur.
# CREER UN UTILISATEUR QUI S'AUTHENTIFIERA AVEC IDENTIFIANT ET MOT DE PASSE DAXIUM
POST /daxium-test/users HTTP/1.1
Content-Type: application/json
{
"username": "mynewuser@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
},
"force_login_password": 1,
"ssoProvider": null
}
# CREER UN UTILISATEUR QUI S'AUTHENTIFIERA EN PASSANT PAR UN PROVIDER SSO
POST /daxium-test/users HTTP/1.1
Content-Type: application/json
{
"username": "mynewuser@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"force_login_password": 0,
"ssoProvider": 123
}
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
2
],
"groups": [],
"id": 5,
"email": "mynewuser@daxium.com",
"active": true,
"first_name": "Daxium",
"last_name": "New user",
"settings": {
"locale": "fr"
}
}
Code erreur
Si des informations sont mal renseignées, le serveur retournera une erreur HTTP 400 (bad request).
Dans le cas où le "username" (email) est déjà existant, le serveur retournera une erreur HTTP 409 (conflict).
Si le "ssoProvider" fourni n'est pas valide, le serveur retournera une erreur HTTP 400 (erreur de validation).
Si les informations "force_login_password" et "ssoProvider" sont envoyées alors que la compagnie n'a pas de provider SSO, la requête sera en erreur (HTTP 400).
Créer plusieurs utilisateurs
Requête
L'API /{app_short}/users/multiple
permet de créer plusieurs utilisateurs en une fois.
Il faut envoyer un tableau d'objets utilisateur dans la requête.
POST /daxium-test/users/multiple HTTP/1.1
Content-Type: application/json
[
{
"username": "user1@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
},
"force_login_password": 0,
"ssoProvider": null
},
{
"username": "user2@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
},
"force_login_password": 0,
"ssoProvider": null
},
...
]
Réponse
La création multiple d'utilisateurs se fait de manière asynchrone.
Dans ce cadre, l'API de création retourne une URL qu'il est possible d'appeler pour avoir les détails de la création des utilisateurs (voir doc API "Multiple users calllback" ci-dessous).
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackUrl": "/{vm_short}/users/multiple/callback/062218c5-b471-4c23-908b-f514ee7c56f5"
}
Code erreur
Si le nombre d'utilisateurs créé dépasse la limite autorisée (100), l'erreur "Trop d'utilisateurs reçus" est retournée avec un code HTTP 400.
Si aucun utilisateur n'est envoyé, la réponse sera un code HTTP 400 avec une erreur indiquant qu'aucun utilisateur à créer n'a été reçu.
Mettre à jour un utilisateur
Requête
L'API /{app_short}/users/{user_id}
permet de mettre à jour un utilisateur.
PATCH /daxium-test/users/5 HTTP/1.1
{
"username": "mynewuser@daxium.com",
"active": true,
"firstName": "Daxium 2",
"lastName": "New user 2",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
}
}
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [
2
],
"groups": [],
"id": 5,
"email": "mynewuser@daxium.com",
"active": true,
"first_name": "Daxium 2",
"last_name": "New user 2",
"settings": {
"locale": "fr"
}
}
Mettre à jour plusieurs utilisateurs
Requête
L'API /{app_short}/users/multiple
permet de mettre à jour plusieurs utilisateurs en une fois.
Il faut envoyer un tableau d'objets utilisateur dans la requête.
PUT /daxium-test/users/multiple HTTP/1.1
Content-Type: application/json
[
{
"username": "user1@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
}
},
{
"username": "user2@daxium.com",
"active": true,
"firstName": "Daxium",
"lastName": "New user",
"locale": "fr",
"subscription_id": "b1e3588f-70d7-409e-abf7-3634f9dab3a7",
"system_groups": [2],
"groups": [],
"plainPassword": {
"first": "MySecurePassword123",
"second": "MySecurePassword123"
}
},
...
]
Réponse
La mise à jour multiple d'utilisateurs se fait de manière asynchrone.
Dans ce cadre, l'API de mise à jour multiple retourne une URL qu'il est possible d'appeler pour avoir les détails de la mise à jour des utilisateurs (voir doc API "Callback utilisateurs multiples" ci-dessous).
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackUrl": "/{vm_short}/users/multiple/callback/062218c5-b471-4c23-908b-f514ee7c56f5"
}
Code erreur
Si le nombre d'utilisateurs à mettre à jour dépasse la limite autorisée (100), l'erreur "Trop d'utilisateurs reçus" est retournée avec un code HTTP 400.
Si aucun utilisateur n'est envoyé, la réponse sera un code HTTP 400 avec une erreur indiquant qu'aucun utilisateur à mettre à jour n'a été reçu.
Callback utilisateurs multiples
Requête
L'API /{app_short}/users/multiple/callback/{callback_id}
permet de récupérer le statut d'une création ou mise à jour multiple d'utilisateurs.
L'URL de cette API, et donc l'ID "callback_id" sont fournis par les services de création et mise à jour d'utilisateurs multiples (voir ci-avant).
GET /daxium-test/users/multiple/callback/bd49010b-fea7-4cd4-9ff2-c99679827ab9 HTTP/1.1
Réponse
La réponse contient tous les détails qui concerne la création ou la mise à jour des utilisateurs. Voir exemple ci-contre.
HTTP/1.1 200 OK
Content-Type: application/json
{
"callbackDetails": {
"status": "Finished with errors",
"nbRecordsTodo": 2,
"nbRecordsDone": 2,
"nbSuccess": 1,
"nbErrors": 1,
"success": [
{
"user_ok@daxium.com": {
"id": 248
}
}
],
"errors": [
{
"user_ko@daxium.com": {
"username": [
"Email is already used"
]
}
}
]
}
}
Propriété | type | Description | Valeurs potentielles |
---|---|---|---|
status | string | Statut de la demande asynchrone | Voir les statuts possibles ci-après |
nbRecordsTodo | int | Nombre d'utilisateurs à traiter | 1, 25, 72, .. |
nbRecordsDone | int | Nombre d'utilisateurs déjà traités sur le nombre total | 1, 25, 72, .. |
nbSuccess | int | Nombre d'utilisateurs traités sans erreur | 1, 25, 72, .. |
nbErrors | int | Nombre d'utilisateurs n'ayant pas pu être traités à cause d'erreurs | 1, 25, 72, .. |
success | object | JSON représentant la liste des utilisateurs traités sans erreur au format {"<username>" => {"id" => "<user_id>"}} |
voir exemple ci-contre |
errors | object | JSON représentant la liste des erreurs rencontrées au format {"<username>" => {"<field_name>" => ["<error_1>", "<error_2>", ...]}} |
voir exemple ci-contre |
Statuts possibles
Status | Description |
---|---|
Planned | La demande de création ou mise à jour d'uilisateur a bien été reçue et est planifiée, mais pas encore lancée |
Running | La demande de création ou mise à jour d'uilisateur est en cours |
Finished | La demande de création ou mise à jour d'uilisateur s'est terminée sans erreur |
Finished with errors | La demande de création ou mise à jour d'uilisateur s'est terminé mais des erreurs ont été relevées |
Failed | Le process a rencontré une erreur technique et n'a pas pu se dérouler normalement |
In timeout | Le process a rencontré une erreur technique et n'a pas pu se dérouler normalement |
Erreurs les plus courantes
- Tentative de création d'un utilisateur dont l'adresse email existe déjà
- Tentative de mise à jour d'un utilisateur dont l'adresse email n'existe pas
- mot de passe invalide :
- "first" / "second" non identiques
- règles de mot de passe non respectées
- identifiants de groupe ou groupe système invalide
- identifiants de souscription invalide
Webhooks
Les webhooks permettent d'envoyer automatiquement des fiches à des endpoints HTTP au format JSON à certains moments du cycle de vie de ces fiches. Les webhooks sont configurés dans les automatismes. La documentation ci-après décrit le format JSON qui sera envoyé par les webhooks aux URLs spécifiées dans les automatismes de type "webhook".
Envoi d'une fiche via les webhooks
Requête
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "32dd0789-38bf-40a1-9b9e-0e5f40ec8018",
"type": "simple",
"submissionNumber": 65723,
"vmShort": "LEJALLEC",
"title": null,
"isTaskModel": false,
"latitude": null,
"longitude": null,
"items": [
{
"name": "label0",
"type": "label",
"label": "Titre 0"
},
{
"name": "logo1",
"type": "logo",
"image": "378180d3-0466-4404-bbef-e22b74e0b7e0",
"label": "Logo 1",
"banner": false,
"hiddenOnWeb": false
},
{
"name": "file2",
"type": "file",
"label": "Fichier 2",
"value": [
{
"id": "631b2b6b-9588-45d8-a77f-3f5228c83436",
"name": "Tests Action Builder.pdf",
"size": 74617,
"mimeType": "application\\/pdf",
"extension": "pdf"
}
]
},
{
"max": 2,
"name": "image3",
"type": "image",
"label": "Image 3",
"format": "medium",
"value": [
{
"id": "fa5affcd-152d-4e3b-8f9c-f034999b45ed",
"name": "waiting-meme.png",
"size": 73401,
"mimeType": "image\\/png",
"extension": "png"
},
{
"id": "a6d45e93-1cb2-41e1-91ad-fd2f158ccc06",
"name": "tinyrick.png",
"size": 151443,
"mimeType": "image\\/png",
"extension": "png"
}
]
},
{
"add": true,
"edit": true,
"grid": false,
"name": "relation4",
"type": "relation",
"label": "Relation 4",
"select": true,
"multiple": true,
"countable": false,
"structure": [
{
"structureId": 299
}
],
"positioningSupport": false,
"send_child_on_create": false,
"value": {
"submissions": [
{
"id": "6ebb2a58-0214-4586-8a9d-70ccc0d7f712",
"structure_id": 299
},
{
"id": "3a0f0421-a320-455c-b031-ced7a833daab",
"structure_id": 299
}
]
}
},
{
"name": "list5",
"type": "list",
"label": "Liste 5",
"display": "default",
"prefill": false,
"multiple": true,
"linkedlist": 15167973,
"searchable": false,
"barcodescan": false,
"externalscan": false,
"displayMobile": "default",
"value": {
"ids": [
15168005,
15168027
],
"lists": [
{
"id": 15168005,
"rootId": 15167973,
"name": "Arcueil",
"url": null,
"color": null,
"imageId": null,
"externalId": null
},
{
"id": 15168027,
"rootId": 15167973,
"name": "Gennevilliers",
"url": null,
"color": null,
"imageId": null,
"externalId": null
}
]
}
}
],
"createdAt": 1571836536,
"updatedAt": 1571925824,
"dataCreatedAt": 1571836536,
"dataUpdatedAt": 1571925824,
"structure": {
"id": 302,
"version": 2,
"name": "PARENT Form with file and image",
"hasTriggers": true,
"isLastVersion": true
},
"user": {
"id": 193,
"active": true,
"email": "c.lejalle@daxium.com",
"username": "CEDRIC LE JALLE",
"first_name": "CEDRIC",
"last_name": "LE JALLE",
"name": "CEDRIC LE JALLE",
"text": "CEDRIC LE JALLE",
"groups": [
63,
64
],
"state": {
"checked": false
}
},
"defaultImage": "fa5affcd-152d-4e3b-8f9c-f034999b45ed",
"settings": {
"tags": [],
"task": {
"enable": false
},
"color": "#5084C4",
"assignedAt": null,
"firstLevel": true
},
"currentState": {
"id": "4425a7c4-584d-47ca-a48b-08714d43845b",
"name": {
"en": "START en",
"fr": "START fr"
},
"color": "#00FF00",
"end": false
}
}
Daxium-Air est à l'origine de la requête HTTP. Il n'y a donc pas de endpoint disponible pour les webhooks.
La requête est envoyée avec :
- Les headers spécifiés dans l'automatisme
- Le contenu complet d'une fiche au format JSON
Si dans les automatismes des headers ont été spécifiés, ces derniers seront envoyés avec la requête dans les headers HTTP.
Exemple de header spécifié dans les automatismes :
- Key : apitoken
- Value : api-token-secret-value`
Dans ce cas, les headers envoyés avec la requête HTTP seront envoyés de cette manière :
apitoken: "api-token-secret-value"
Réponse
La réponse est reçue de l'API partenaire. Si cette dernière a un code HTTP égal à 2xx, dans ce cas Daxium-Air considère que l'envoi de la fiche via webhook est effectué avec succès. Dans tout autre cas de code HTTP (4xx, 5xx, ...), Daxium-Air considère que l'envoi n'a pas fonctionné. Dans ce cas l'erreur retournée par le serveur est sauvée et peut être consultée dans l'application Daxium-Air, voire y être relancée. La requête HTTP tombe en timeout après 30 secondes, donc après ce délai le webhook tombera en erreur.
La réponse importe peu dans les cas de succès dans la mesure où seul le code HTTP sera pris en compte dans ce cas.
Informations complémentaires
Le contenu JSON de la fiche inclut non seulement les informations de la fiche mais également certaines dépendances.
En revanche les éléments de type relation
ne sont pas envoyés totalement.
Listes (inclues)
Par exemple, les éléments de listes sont inclus avec leurs données complètes et non seulement leurs IDs comme c'est le cas dans les autres APIs de récupération de fiches. Voir élément "list5" dans le JSON ci-contre.
Etat courant (inclus)
De même, l'état courant de la fiche, si un workflow est configuré sur la structure, est envoyé de manière complète, incluant son nom par exemple. Voir l'exemple "currentState" dans le JSON ci-contre.
Fichiers et images (non inclus)
Les fichiers et images seront envoyés avec leurs identifiants et quelques informations complémentaires (comme leur mime-type par exemple). Voir les éléments "file2" et "image3" dans le JSON ci-contre. Il sera nécessaire au partenaire d'appeler les APIs de récupération de fichiers et images pour en avoir les contenus.
Relations (non inclus)
Les éléments de relation ne sont envoyés qu'avec leur identifiant et l'identifiant de la structure. Les fiches référencées sont simplement identifiées par leur UUID et l'identifiant de la structure qui les porte. Voir l'exemple "relation4" dans le JSON ci-contre.
Ainsi il sera nécessaire d'appeler les APIs de récupération de fiche pour en avoir les contenus.
Vues
Récupérer une vue
Requête
L'API /{app_short}/submissions_views/{view_id}
permet de récupérer une vue.
GET /daxium-test/submissions_views/53a20873-3935-4547-829f-bc4269ec297a HTTP/1.1
Paramètre | Type | Description |
---|---|---|
view_id | UUID | Identifiant de la vue (requis) |
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "53a20873-3935-4547-829f-bc4269ec297a",
"name": "View with Normal string",
"icon": {
"type": "font-awesome",
"value": "fa-pencil"
},
"view_mode": "table",
"view_options": {
"ordered_fields": [
"user16",
"string3",
"date6",
"number4"
]
},
"assigned_to_user": true,
"filters": [
{
"item_filters": [
{
"name": "stringO",
"type": "string",
"operator": "EQUALS",
"values": ["Normal"]
},
{
"name": "user1",
"type": "user",
"operator": "EQUALS",
"values": [
786876
]
},{
"name": "user1",
"type": "user",
"operator": "IN_GROUPS",
"values": [
78776
]
},
{
"name": "user2",
"type": "user",
"operator": "EQUALS"
"values": [
"@current_user"
]
}
],
"structure_id": 278,
"metadata_filters": [
{
"name":"workflow_state",
"operator":"EQUALS",
"values" : [
"2CA5B9BF-4ED7-41B1-82AE-FD38F122FA02",
"6EB6CACD-3D8C-42CB-A036-5053BC59F971"
]
}
]
}
]
}
Propriété | Type | Description |
---|---|---|
id | UUID | Identifiant unique |
name | string | Le nom localisé par l'utilisateur de la vue |
icon | JSON | Type et valeur de l'icône représentée par un objet JSON |
view_mode | string | Le mode d'affichage de la vue |
view_options | JSON | Objet JSON contenant les options de la vue |
ordered_fields | array | La liste des champs à afficher dans l'ordre donné, applicable uniquement si view_mode = table |
assigned_to_user | bool | Un booléen nullable indiquant si la vue limite les fiches à celles qui sont assignées à l'utilisateur courant ou non |
filters | JSON | Un tableau de règles de filtrage pour la vue à appliquer |
structure_id | int | L'identifiant de structure des fiches à afficher |
item_filters | array | Un tableau de règles de filtrage pour les items |
name (item_filters) | string | Le nom système du champ |
type (item_filters) | string | Le type Daxium-Air du champ |
operator (item_filters) | string | L'opérateur à appliquer |
values (item_filters) | array | Une liste de valeurs pour confronter la valeur du champ à travers l'opérateur |
metadata_filters | array | Un tableau de règles de filtrage pour les métadonnées |
name (metadata_filters) | string | Le nom système de la metadata |
operator (metadata_filters) | string | L'opérateur à appliquer |
values (metadata_filters) | array | Une liste de valeurs pour confronter la valeur du champ à travers l'opérateur |