Aller au contenu principal

Validations d'identité

Combinaisons et stratégies par signataire

Lors de la création d'un processus de signature, il est essentiel de comprendre les différentes combinaisons possibles de validations d'identité, ainsi que les stratégies qui permettent de les appliquer globalement ou individuellement par signataire.

Pour structurer ces validations, certaines règles doivent être respectées afin que le processus fonctionne correctement.

1. Types de validations disponibles​

Les validations d'identité que vous pouvez combiner dans un processus sont les suivantes :

ValidationTypeObligatoireDescription
cameraBooleanFacultatifDemande une photo du visage du signataire.
otpCodeBooleanFacultatifDemande un code de vérification.
options.cameraStringConditionnelSi vous souhaitez comparer la photo du visage avec la pièce d'identité du signataire, vous devez envoyer 'identification' dans ce champ ; si vous souhaitez uniquement la photo du participant, envoyez 'photo'.
options.otpCodeStringConditionnelCe champ accepte les valeurs 'phone' et 'email' pour indiquer par quel moyen le signataire recevra le code si otpCode est défini à true dans les données de base.
options.whatsappBooleanConditionnelEnvoyez ce champ à true uniquement si vous souhaitez que le parcours de signature de ce signataire se déroule via WhatsApp ; par défaut, il vaut false.
options.bothBooleanConditionnelEnvoyez ce champ à true uniquement si vous souhaitez que le parcours de signature de ce signataire se déroule via WhatsApp et e-mail ; par défaut, il vaut false.
options.identificationCardBackBooleanConditionnelEnvoyez ce champ à true uniquement si vous souhaitez que la validation d'identité demande en plus le verso du document, disponible uniquement pour WhatsApp.
both n'existe pas en tant que champ autonome

both n'est pas un paramètre de premier niveau : il n'existe ni à la racine de la requête ni sous la forme signProfile[x].both. Il n'existe qu'imbriqué sous la forme options.both (ou signProfile[x].options.both pour les validations individuelles).

2. Validations globales et individuelles​

Vous pouvez appliquer les validations de deux manières :

  • Globales : à la racine de la requête. Elles s'appliquent automatiquement à tous les signataires.
  • Individuelles : dans l'objet signProfile[x], pour valider chaque signataire de manière personnalisée.
info

Les validations individuelles prévalent sur les validations globales lorsque les deux sont déclarées.

Les packages ne prennent en charge que les validations globales

La création de packages (POST /document/many) ne prend pas en charge les validations individuelles par signataire : les validations sont lues uniquement à la racine de la requête et s'appliquent à tous les participants du package. Ce que cette section décrit au sujet des validations individuelles ne s'applique pas à ce endpoint.

La priorité individuelle est totale, et non une fusion

Si un signProfile[x] définit l'un quelconque de ces champs : camera, otpCode ou options, ce signataire cesse totalement d'hériter des validations globales — même pour les champs qu'il n'a pas inclus. Tout champ absent de ce signProfile[x] prend la valeur false (pour camera/otpCode) ou un objet vide (pour options), quelles que soient les validations globales.

Exemple : si vous envoyez "camera": true à la racine mais qu'un signataire individuel définit uniquement "options": { "otpCode": "email" } (sans inclure "camera": true dans ce même signProfile[x]), ce signataire aura camera: false, même si la validation globale est définie à true.

Si vous souhaitez qu'un signataire conserve une validation globale tout en personnalisant uniquement une autre validation, vous devez répéter explicitement chaque champ concerné (camera, otpCode) dans ce même signProfile[x].

3. Règles essentielles​

  1. options.camera = 'identification' active la comparaison biométrique, mais elle ne fonctionnera que si le signataire a défini identification, country et identificationType.
  2. options.both = true indique que le signataire doit recevoir les notifications par e-mail et par WhatsApp simultanément ; pour que cela soit effectif : options.whatsapp = true.
  3. options.camera et options.otpCode ne sont valides que si, au même niveau (racine ou à l'intérieur du même signProfile[x]), camera: true ou otpCode: true existe respectivement. Par exemple, signProfile[x].options.camera nécessite signProfile[x].camera: true pour ce même signataire ; il ne suffit pas que camera soit true globalement. Si vous déclarez options.camera ou options.otpCode sans son équivalent booléen au même niveau, le processus ne sera pas valide.
  4. Les validations individuelles remplacent complètement les validations globales pour ce signataire : si un signProfile[x] déclare camera, otpCode ou options, tout champ non inclus dans ce même signProfile[x] prend la valeur false (ou {} pour options), sans hériter de la valeur globale. Voir l'avertissement de la section 2.

4. Exemples :​

Validations globales :​

{
...,
"camera": true,
"otpCode": true,
"options": {
"camera": "identification",
"otpCode": "email",
}
"signProfile": [
{
"name": "Firmante 1",
"email": "example@auco.ai",
"phone": "+573000000000",
"identification": "123456789",
"identificationType": "CC",
"country": "CO"
},
{
"name": "Firmante 2",
"email": "example2@auco.ai",
"phone": "+573000000000",
"identification": "123456789",
"identificationType": "CC",
"country": "CO"
}
],
...
}

Validations individuelles :​

{
...,
"signProfile": [
{
"name": "Firmante 1",
"email": "example@auco.ai",
"phone": "+573000000000",
"camera": true,
"otpCode": true,
"identification": "123456789",
"identificationType": "CC",
"country": "CO"
"options": {
"camera": "identification",
"whatsapp": true,
"otpCode": "email"
}
}
],
...
}