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éthodeEndpointDescription
POST/templatesCréer un template
GET/templatesLister les templates
GET/templates/:idRécupérer un template
GET/templates/:id/schemaRécupérer le schéma
PATCH/templates/:idModifier un template
DELETE/templates/:idSupprimer 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ètreTypeRequisDescription
fileFileOuiFichier PDF (max 10MB Free, 25MB Pro, 50MB Business)
nameStringNonNom du template (défaut: nom du fichier)
descriptionStringNonDescription 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ètreTypeDéfautDescription
pageInteger1Numéro de page
limitInteger20Nombre 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

TypeDescriptionValeur attendue
textChamp texte simpleString
checkboxCase à cocherBoolean (true/false)
radioBoutons radioString (valeur de l'option)
dropdownListe déroulanteString (valeur de l'option)
dateChamp dateString (ISO 8601 ou format local)
numberChamp numériqueNumber
signatureZone de signatureString (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)"
  }
}