NAV

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
{
  "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 :

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

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 :


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 :

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