Templates API
Les templates sont des formulaires PDF que vous téléchargez sur DocFlow. Cette API vous permet de gérer vos templates et d'extraire leur schéma.
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
POST | /templates | Créer un template |
GET | /templates | Lister les templates |
GET | /templates/:id | Récupérer un template |
GET | /templates/:id/schema | Récupérer le schéma |
PATCH | /templates/:id | Modifier un template |
DELETE | /templates/:id | Supprimer un template |
Créer un template
POST /templates
Téléchargez un fichier PDF pour créer un nouveau template. DocFlow analyse automatiquement les champs du formulaire et extrait leur schéma.
Request
Content-Type: multipart/form-data
| Paramètre | Type | Requis | Description |
|---|---|---|---|
file | File | Oui | Fichier PDF (max 10MB Free, 25MB Pro, 50MB Business) |
name | String | Non | Nom du template (défaut: nom du fichier) |
description | String | Non | Description du template |
Exemple
curl -X POST https://api.docflow.io/v1/templates \
-H "Authorization: Bearer df_votre_cle_api" \
-F "file=@contrat.pdf" \
-F "name=Contrat de travail" \
-F "description=Modèle de contrat CDI"Response (201 Created)
{
"data": {
"id": "tpl_abc123",
"name": "Contrat de travail",
"description": "Modèle de contrat CDI",
"fileName": "contrat.pdf",
"fileSize": 245000,
"fieldCount": 12,
"isFrozen": false,
"version": 1,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
}Lister les templates
GET /templates
Query Parameters
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
page | Integer | 1 | Numéro de page |
limit | Integer | 20 | Nombre de résultats par page (max 100) |
Response
{
"data": [
{
"id": "tpl_abc123",
"name": "Contrat de travail",
"fileName": "contrat.pdf",
"fileSize": 245000,
"fieldCount": 12,
"isFrozen": false,
"version": 1,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 1
}
}Récupérer le schéma
GET /templates/:id/schema
Récupère le schéma détaillé des champs du template. Utilisez ce schéma pour construire vos requêtes de rendu.
Response
{
"data": {
"templateId": "tpl_abc123",
"templateName": "Contrat de travail",
"version": 1,
"schema": {
"fields": [
{
"name": "employee_name",
"type": "text",
"required": false,
"maxLength": 200,
"pdfMeta": {
"originalName": "Text1",
"page": 1
}
},
{
"name": "start_date",
"type": "date",
"required": false,
"pdfMeta": {
"originalName": "Date1",
"page": 1
}
},
{
"name": "contract_type",
"type": "dropdown",
"required": false,
"options": ["CDI", "CDD", "Intérim"],
"pdfMeta": {
"originalName": "Dropdown1",
"page": 1
}
},
{
"name": "accept_terms",
"type": "checkbox",
"required": false,
"pdfMeta": {
"originalName": "CheckBox1",
"page": 2
}
}
],
"pageCount": 2
}
}
}Types de champs
| Type | Description | Valeur attendue |
|---|---|---|
text | Champ texte simple | String |
checkbox | Case à cocher | Boolean (true/false) |
radio | Boutons radio | String (valeur de l'option) |
dropdown | Liste déroulante | String (valeur de l'option) |
date | Champ date | String (ISO 8601 ou format local) |
number | Champ numérique | Number |
signature | Zone de signature | String (texte ou image base64) |
Modifier un template
PATCH /templates/:id
Request Body
{
"name": "Contrat de travail v2",
"description": "Version mise à jour"
}Response
{
"data": {
"id": "tpl_abc123",
"name": "Contrat de travail v2",
"description": "Version mise à jour",
...
}
}Supprimer un template
DELETE /templates/:id
Supprime un template. Cette action est irréversible. Les rendus existants restent accessibles jusqu'à leur expiration.
Response (204 No Content)
Aucun contenu retourné en cas de succès.
Erreurs courantes
TEMPLATE_LIMIT_REACHED
Vous avez atteint la limite de templates de votre plan.
{
"error": {
"code": "TEMPLATE_LIMIT_REACHED",
"message": "Template limit reached for your plan (3/3)"
}
}FILE_TOO_LARGE
Le fichier dépasse la taille maximale autorisée.
{
"error": {
"code": "FILE_TOO_LARGE",
"message": "File size exceeds limit (10MB for Free plan)"
}
}INVALID_PDF
Le fichier n'est pas un PDF valide ou n'est pas un formulaire AcroForm.
{
"error": {
"code": "INVALID_PDF",
"message": "The file is not a valid PDF form (AcroForm)"
}
}