API REST

API Variables

API v115 août 2026·6 min de lecture

Référence complète de l'API Variables de Doclift : types de champ, allowed_values, et création en ligne sur un modèle.

L'objet variable

  • id : identifiant unique
  • title : nom de la variable, unique au sein de son modèle
  • description : requis, explique le contenu attendu
  • field_type : text, checkbox, radio, select, ou collection
  • seed_value : valeur d'exemple pour prévisualiser le modèle. Jamais renvoyée par ces endpoints ; seule la vue détaillée de création/mise à jour/publication/dépublication du modèle la renvoie, voir API Modèles
  • allowed_values : tableau, pertinent uniquement pour radio/select

collection est un type de champ construit pour les modèles workflow, où une API dédiée accepte un tableau fields décrivant chaque ligne. Les paramètres permis par cet endpoint sont uniquement title, description, seed_value, field_type, et allowed_values. fields n'en fait pas partie, donc une variable collection créée ici n'a aucun moyen de satisfaire la validation de description de ligne qu'elle requiert, et ne peut pas être créée via cet endpoint.

Chaque action ci-dessous résout d'abord le modèle parent via le même scope que les endpoints d'écriture des modèles : custom, non archivé, dans votre organisation. Un identifiant de modèle fillable_form ou workflow, un modèle archivé, ou un modèle d'une autre organisation répondent tous 404 {"error": "Template not found"}. Voir Les écritures ne touchent que les modèles custom.


Les titres ne sont pas normalisés sur une variable toute neuve

La normalisation ne s'applique qu'une fois la variable déjà existante

Le title d'une variable n'est mis en minuscules et débarrassé de ses espaces que lors de la mise à jour d'une variable déjà persistée (PATCH .../variables/:id). Une variable toute neuve garde la casse et les espaces exacts que vous lui envoyez, qu'elle soit créée via POST .../variables, via variables_attributes sur POST /api/v1/templates, ou via variables_attributes sur PATCH /api/v1/templates/:id (y ajouter une nouvelle variable se comporte comme une création, pas une mise à jour, même si la requête elle-même est un PATCH). Ne vous fiez pas à une insensibilité à la casse des noms de variable : la casse et les espaces d'un titre sont conservés tels quels à la création, et ne sont normalisés qu'à partir de la première mise à jour de cette variable elle-même.

title doit correspondre à un motif de nommage (lettres, chiffres, underscores ; ni espaces ni accents) et doit être unique au sein de son modèle, à la création comme à la mise à jour.


Lister les variables

GET/api/v1/templates/:template_id/variables
cURL
curl https://app.doclift.io/api/v1/templates/100013/variables \
  --header "X-Api-Key: <your-api-key>"
200 OK · application/json
[
  {
    "id": 200003,
    "title": "client_name",
    "description": "Name of the client",
    "field_type": "text",
    "allowed_values": []
  },
  {
    "id": 200004,
    "title": "status",
    "description": "Client status",
    "field_type": "select",
    "allowed_values": ["active", "inactive", "pending"]
  }
]

Renvoie toutes les variables du modèle (pas de pagination). seed_value est volontairement absent de cette forme.

StatutCorpsQuand
200 tableausuccès
404 {"error": "Template not found"}pas custom, archivé, ou d'une autre organisation
403 {"error": "..."}clé d'API absente, inconnue, ou désactivée

Créer une variable

POST/api/v1/templates/:template_id/variables
cURL
curl https://app.doclift.io/api/v1/templates/100013/variables \
  --request POST \
  --header "X-Api-Key: <your-api-key>" \
  --header "Content-Type: application/json" \
  --data '{
    "variable": {
      "title": "payment_method",
      "description": "Selected payment method",
      "field_type": "select",
      "seed_value": "bank_transfer",
      "allowed_values": ["bank_transfer", "credit_card", "check"]
    }
  }'
201 Created · application/json
{
  "id": 200005,
  "title": "payment_method",
  "description": "Selected payment method",
  "field_type": "select",
  "allowed_values": ["bank_transfer", "credit_card", "check"]
}

seed_value est accepté dans le corps de la requête mais jamais présent dans la réponse de cet endpoint (voir l'encadré ci-dessus pour l'endroit où il est lisible).

ChampTypeRequisNotes
titlestringouiunique par modèle, motif de nommage imposé
descriptionstringoui
field_typestringnonune des cinq valeurs, défaut text
seed_valuestringnondoit faire partie de allowed_values si les deux sont définis
allowed_valuesarraynon
StatutCorpsQuand
201 variablesuccès
422 {"errors": ["..."]}titre/description manquant, titre en double, field_type inconnu, motif de titre invalide, ou seed_value hors allowed_values
404 {"error": "Template not found"}pas custom, archivé, ou d'une autre organisation
403 {"error": "..."}clé d'API absente, inconnue, ou désactivée

Mettre à jour une variable

PATCH/api/v1/templates/:template_id/variables/:id
cURL
curl https://app.doclift.io/api/v1/templates/100013/variables/200005 \
  --request PATCH \
  --header "X-Api-Key: <your-api-key>" \
  --header "Content-Type: application/json" \
  --data '{
    "variable": {
      "description": "Updated description",
      "allowed_values": ["bank_transfer", "credit_card"]
    }
  }'
200 OK · application/json
{
  "id": 200005,
  "title": "payment_method",
  "description": "Updated description",
  "field_type": "select",
  "allowed_values": ["bank_transfer", "credit_card"]
}

Mêmes champs que la création. allowed_values remplace le tableau stocké, il ne fusionne pas avec lui. Renommer title ici est mis en minuscules et débarrassé de ses espaces (contrairement à la création). Faire évoluer field_type (ex. text vers select) tout en définissant allowed_values dans le même appel fonctionne.

Restreindre allowed_values sous le seed_value stocké est refusé

Si la variable a déjà un seed_value, une mise à jour qui restreint allowed_values au point de ne plus le contenir répond 422 et laisse allowed_values inchangé.

StatutCorpsQuand
200 variablesuccès
422 {"errors": ["..."]}mêmes validations que la création, plus le cas de restriction ci-dessus
404 {"error": "Template not found"}pas custom, archivé, ou d'une autre organisation
404 {"error": "Variable not found"}l'identifiant n'appartient pas à ce modèle
403 {"error": "..."}clé d'API absente, inconnue, ou désactivée

Supprimer une variable

DELETE/api/v1/templates/:template_id/variables/:id
cURL
curl https://app.doclift.io/api/v1/templates/100013/variables/200005 \
  --request DELETE \
  --header "X-Api-Key: <your-api-key>"

204 No Content. C'est une suppression définitive (aucune validation ne s'exécute), il n'y a donc pas de chemin 422 ici.

StatutCorpsQuand
204 aucunsuccès
404 {"error": "Template not found"}pas custom, archivé, ou d'une autre organisation
404 {"error": "Variable not found"}l'identifiant n'appartient pas à ce modèle
403 {"error": "..."}clé d'API absente, inconnue, ou désactivée

Créer une variable en ligne

Plutôt qu'un appel séparé, variables_attributes sur POST /api/v1/templates ou PATCH /api/v1/templates/:id accepte les mêmes champs (title, description, seed_value, field_type, allowed_values) plus id et _destroy pour la mise à jour. Voir API Modèles pour la forme de la requête. La réponse de ces endpoints de modèle est l'unique endroit où id et seed_value d'une variable apparaissent ensemble.

Le même comportement non normalisé s'applique à une variable toute neuve ajoutée via variables_attributes, que ce soit sur POST /api/v1/templates ou sur PATCH /api/v1/templates/:id. Seule une variable qui existait déjà avant l'appel voit son titre mis en minuscules et débarrassé de ses espaces.