Aller au contenu principal

Création de modèle

Ce service vous permet de créer des modèles personnalisés qui pourront ensuite être utilisés pour remplir des documents à signer.

POST/templateclé privéeprk_

Authentification​

Incluez votre clé privée dans l'en-tête Authorization.

Authorization: prk_xxx...

Paramètres de création​

NomTypeDescription
nameString obligatoireNom de l'automatisation.
descriptionString facultatifTexte décrivant le modèle, jusqu'à 500 caractères.
configArray obligatoireTableau de questions pour l'utilisateur. Voir Configuration JSON.
signatureProfileArray obligatoireDéfinition des signataires et des approbateurs. Voir Profils de signature.
signArray obligatoireNoms des questions obligatoires.
preBuildBoolean facultatifSi true, inclut un pré-remplissage automatique.
La limite de description est de 500 caractères

description est informative : elle ne modifie pas le comportement du modèle et aide votre équipe à reconnaître à quoi sert chaque modèle. Si vous ne l'envoyez pas, le modèle n'a pas de description. Si le texte dépasse 500 caractères, l'API répond 400 et ne crée pas le modèle.

GET /template renvoie ce champ, aussi bien dans la liste que dans le détail par id.

Exemples de création​

curl -X POST https://api.auco.ai/v1.5/ext/template \
-H "Content-Type: application/json" \
-H "Authorization: prk_private_key_company" \
-d '{
"name": "Test de modification des variables du document",
"description": "Contrat de service avec un seul signataire, pour l'\''équipe commerciale",
"config": [
{
"name": "client_name",
"type": "name",
"description": "Saisissez le nom du client"
},
{
"description": "Sélectionnez le type de document du client",
"name": "client_document_type",
"type": "clausula",
"value": "id_card",
"options": [
{
"name": "Carte d'\''identité nationale",
"value": "id_card"
},
{
"name": "Carte d'\''identité d'\''étranger",
"value": "foreign_id"
}
]
},
{
"description": "Saisissez le numéro de carte d'\''identité nationale du client",
"name": "client_id_card",
"type": "number",
"prereq": [
{
"k": "client_document_type",
"v": "id_card"
}
]
},
{
"description": "Saisissez le numéro de carte d'\''étranger du client",
"name": "client_foreign_id",
"type": "number",
"prereq": [
{
"k": "client_document_type",
"v": "foreign_id"
}
]
},
{
"name": "client_email",
"type": "email",
"description": "Saisissez l'\''e-mail du client"
},
{
"name": "client_phone",
"type": "phone",
"description": "Saisissez le téléphone du client"
}
],
"sign": [
"client_name",
"client_id_card",
"client_foreign_id",
"client_email",
"client_phone"
],
"signatureProfile": [
{
"email": "client_email",
"phone": "client_phone",
"identification": "client_id_card|client_foreign_id",
"name": "client_name",
"type": "client"
}
]
}'

Exemple de réponse​

{
"id": "template_id",
"urls": {
"mask": "https://signed_url_mask",
"complete": "https://signed_url_complete"
}
}

Téléversement du HTML Complete et du HTML Mask :​

Dans la réponse du service de création, vous trouverez deux URL signées, une pour chaque HTML. Leur durée de vie est de 120 secondes : passé ce délai, elles ne sont plus valides. Préparez les fichiers HTML Complete et HTML Mask avant de créer le modèle et téléversez chacun d'eux, tel quel, dans une requête PUT vers son URL.

Téléversement avec Content-Type: binary/octet-stream

Les URL sont signées pour ce type de contenu : si vous en envoyez un autre —par exemple text/html—, le téléversement est rejeté. Envoyez le fichier sans le transformer : avec curl, utilisez --data-binary et non -d, qui supprime les sauts de ligne.

# Upload HTML Mask
curl -X PUT https://signed_url_mask \
-H "Content-Type: binary/octet-stream" \
--data-binary @mask.html

# Upload HTML Complete
curl -X PUT https://signed_url_complete \
-H "Content-Type: binary/octet-stream" \
--data-binary @complete.html
Les URL expirent au bout de 120 secondes

Si elles expirent avant que vous ne téléversiez les fichiers, appelez PUT /template avec l'id du modèle pour obtenir de nouvelles URL. N'appelez pas à nouveau POST /template : vous créeriez un autre modèle.


⚠️ Réponses d'erreur​

Les erreurs sont accompagnées du corps { "message": "..." }.

CodeDescription
400Corps invalide : PAYLOAD_NOT_VALID (le corps n'est pas du JSON), PROFILE_FIELD_NOT_FOUND: <field> (l'email ou le phone d'un signataire n'est ni une question de config ni un champ de preFill), PROFILE_FIELD_TYPE_INVALID: <field> must be type <type> (il pointe vers une question d'un autre type), ou le message du validateur
401Authentification invalide ou manquante

Le message du validateur nomme le champ en cause, par exemple "name" is required, "config[0].maxLength" is not allowed ou "signatureProfile[0].name" must be a string. Consultez les règles de chaque champ dans Configuration JSON.