Aller au contenu principal

Get Process

avertissement

Avant de récupérer le processus, consultez notre configuration webhook et nos stratégies de repli — cliquez ici.

Point de terminaison

Endpoint

EnvironnementURL
ProductionGET https://api.idcloud.unico.app/client/v1/process/{processId}
SandboxGET https://api.idcloud.uat.unico.app/client/v1/process/{processId}

Requête

En-têtes
En-têteValeur
AuthorizationBearer <access_token>
Paramètres de chemin
ParamètreTypeRequisDescription
processIdstring (UUID)ouiIdentifiant du processus retourné par Créer un processus.

Exemple

curl -X GET https://api.idcloud.unico.app/client/v1/process/$PROCESS_ID \
-H "Authorization: Bearer $TOKEN"

Réponses

200 OK
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"flow": "idchecktrust",
"callbackUri": "https://example.com/callback",
"userRedirectUrl": "https://example.com/redirect",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"createdAt": "2024-01-01T10:00:00Z",
"finishedAt": "2024-01-01T10:15:00Z",
"expiresAt": "2024-01-08T10:00:00Z",
"purpose": "VERIFICATION",
"clientReference": "client-ref-abc",
"useCase": "smart_revalidation",
"capacities": ["liveness", "face_match"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"notifications": [
{
"notificationChannel": "email"
}
]
},
"authenticationInfo": {
"authenticationId": "auth-123",
"livenessResult": "LIVENESS_RESULT_LIVE",
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
"identityFraudstersResult": "TRUST_RESULT_INCONCLUSIVE",
"bioTokenEngineResult": "BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED",
"smartRevalidationResult": "SMART_REVALIDATION_RESULT_UNSPECIFIED",
"idAgeResult": "ID_AGE_RESULT_UNSPECIFIED",
"scoreEngineResult": {
"scoreEnabled": "SCORE_ENABLED_TRUE",
"score": 85.5
}
},
"companyData": {
"branchId": "branch-123",
"countryCode": "BR"
},
"bioTokenData": {
"referenceProcessId": "ref-proc-123",
"authenticationId": "auth-ref-123"
},
"services": [
{
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
"documentIds": ["doc-abc-123"],
"consent_granted": true,
"documents": [
{
"doc_id": "doc-abc-123",
"typified": true,
"cpf_match": true,
"face_match": true,
"validate_doc": true,
"reused_doc": false,
"signed_url": "https://example.com/doc?token=xyz",
"doc": {
"version": 1,
"code": "CNH",
"data": {
"numero": "044589731564",
"cpfNumero": "12345678909",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "1990-05-12T00:00:00Z",
"dataExpiracao": "2027-12-07T00:00:00Z",
"categoria": "B"
}
}
}
]
}
]
}
}
Champs de premier niveau
ChampTypeDescription
process.idstring (UUID)Identifiant du processus.
process.flowstringIdentifiant du flux envoyé à la création.
process.callbackUristringURL de rappel configurée pour les événements du processus.
process.userRedirectUrlstringURL pour rediriger l'utilisateur après la fin du parcours.
process.stateenumÉtat actuel du processus. Voir les valeurs ci-dessous.
process.resultenumRésultat de la vérification. Présent uniquement lorsque state = PROCESS_STATE_FINISHED.
process.createdAtstring (datetime)Horodatage ISO 8601 de la création du processus.
process.finishedAtstring (datetime)Horodatage ISO 8601 de la fin du processus. Présent uniquement lorsque state = PROCESS_STATE_FINISHED.
process.expiresAtstring (datetime)Horodatage ISO 8601 de l'expiration du processus.
process.purposestringObjectif du processus tel que configuré dans le flux.
process.clientReferencestringRéférence côté client optionnelle pour l'indexation dans le portail.
process.useCasestringIdentifiant du cas d'utilisation associé au flux.
process.capacitiesarray of stringsListe des capacités activées dans ce processus.
process.tokenstringJWT signé pour l'intégration SDK.
process.personobjectIdentification fournie à la création.
process.person.notificationsarrayCanaux de notification configurés pour le parcours (ex. email).
process.authenticationInfoobjectRésultats par capacité. Voir ci-dessous.
process.companyDataobjectContexte de l'entreprise et de la succursale.
process.companyData.branchIdstringIdentifiant de la succursale.
process.companyData.countryCodestringCode pays ISO 3166-1 alpha-2.
process.bioTokenDataobjectInformations du processus de référence -- présent uniquement dans les flux de Validation 1:1 et de Revalidation intelligente.
process.servicesarrayEnveloppes signées, documents capturés et autres sorties de service. Voir ci-dessous.
Valeurs de process.state
ValeurSignification
PROCESS_STATE_CREATEDProcessus créé ; l'utilisateur n'a pas encore terminé le parcours.
AWAITING_FOR_DOCUMENTProcessus créé sans document d'identification ; en attente de sa soumission via Set Process Document. Présent uniquement lorsque le Custom Flow autorise un document optionnel.
PROCESS_STATE_FINISHEDParcours terminé. Vérifiez result et authenticationInfo.
PROCESS_STATE_FAILEDErreur de traitement.
Incohérence de nommage des états

AWAITING_FOR_DOCUMENT ne suit pas la convention de préfixe PROCESS_STATE_* utilisée par les autres états. Il s'agit d'une incohérence de nommage connue dans l'API actuelle.

Valeurs de process.result
ValeurSignification
PROCESS_RESULT_OKToutes les capacités ont retourné des résultats positifs.
PROCESS_RESULT_INVALID_IDENTITYAu moins une capacité a retourné un résultat définitivement négatif (ex. détection de vie échouée, identité non correspondante).
PROCESS_RESULT_ERRORErreur lors du traitement du résultat.
PROCESS_RESULT_EXPIREDLe processus a expiré avant la fin du parcours.
PROCESS_RESULT_UNSPECIFIEDLe processus n'est pas encore terminé.
Résultats des capacités dans authenticationInfo

Tous les champs sont toujours retournés indépendamment du flux. Les champs pour les capacités non utilisées dans le flux retournent *_UNSPECIFIED.

Valeurs d'enum abrégées

Les valeurs abrégées (ex. livenessResult = LIVE, authenticationResult = INCONCLUSIVE) correspondent directement aux valeurs d'enum complètes documentées ici (LIVENESS_RESULT_LIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, etc.) -- le préfixe est omis par souci de concision.

ChampCapacitéValeurs possibles
authenticationId--Identifiant unique pour cette tentative d'authentification.
livenessResultDétection de VieLIVENESS_RESULT_LIVE, LIVENESS_RESULT_NOT_LIVE, LIVENESS_RESULT_UNSPECIFIED
authenticationResultVérification d'identitéAUTHENTICATION_RESULT_POSITIVE, AUTHENTICATION_RESULT_NEGATIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, AUTHENTICATION_RESULT_UNSPECIFIED
identityFraudstersResultClassification du risque de fraudeTRUST_RESULT_YES, TRUST_RESULT_INCONCLUSIVE, TRUST_RESULT_UNSPECIFIED
bioTokenEngineResultValidation 1:1BIO_TOKEN_ENGINE_RESULT_POSITIVE, BIO_TOKEN_ENGINE_RESULT_NEGATIVE, BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED
smartRevalidationResultRevalidation intelligenteSMART_REVALIDATION_RESULT_POSITIVE, SMART_REVALIDATION_RESULT_NEGATIVE, SMART_REVALIDATION_RESULT_UNSPECIFIED
idAgeResultVérification de l'âgeID_AGE_RESULT_POSITIVE, ID_AGE_RESULT_NEGATIVE, ID_AGE_RESULT_INCONCLUSIVE, ID_AGE_RESULT_UNSPECIFIED
scoreEngineResult.scoreEnabledScore de RisqueSCORE_ENABLED_TRUE, SCORE_ENABLED_FALSE, SCORE_ENABLED_UNSPECIFIED
scoreEngineResult.scoreScore de RisqueNombre de -100 à +100. Présent lorsque authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE et que le Score de Risque est activé.
serproResult.scoreRetour de similarité Serpro0-100 (similarité) ; -1 (pas de visage enregistré pour ce CPF) ; -2 (erreur d'intégration).
Champs de process.services
Conventions de nommage mixtes dans services

Le tableau services utilise le camelCase pour les champs au niveau de l'enveloppe (envelopeId, documentIds) et le snake_case pour les champs au niveau du document (doc_id, consent_granted, face_match, etc.). Cela reflète la réponse réelle de l'API — les deux conventions sont intentionnelles et ne constituent pas une erreur de documentation.

ChampTypeDescription
envelopeIdstring (UUID)Identifiant de l'enveloppe signée.
documentIdsarray of stringsIDs des documents capturés dans ce service.
consent_grantedbooleanSi l'utilisateur a accordé le consentement au partage de données.
documentsarrayDocuments capturés avec données OCR et résultats de validation.
documents[].doc_idstringIdentifiant du document.
documents[].typifiedbooleanSi le type de document a été identifié avec succès.
documents[].cpf_matchbooleanSi le CPF sur le document correspond au CPF fourni.
documents[].face_matchbooleanSi le selfie correspond à la photo sur le document.
documents[].validate_docbooleanSi le document a passé la validation d'authenticité.
documents[].reused_docbooleanSi ce document a été réutilisé depuis un processus précédent.
documents[].signed_urlstringURL pré-signée pour télécharger le PDF du document (valide 5 minutes -- refaites l'appel pour renouveler).
documents[].doc.versionintegerVersion du schéma OCR.
documents[].doc.codestringCode du type de document (ex. CNH, RG).
documents[].doc.dataobjectChamps OCR extraits. Le contenu varie selon le type de document et les données disponibles. Les noms de champs dans doc.data (ex. nomeCivil, dataNascimento) sont retournés en portugais — ce sont les valeurs réelles produites par le moteur OCR.
400 Bad Request

Le paramètre de chemin processId est manquant ou malformé.

401 Unauthorized

Le Bearer token est manquant, expiré ou invalide.

404 Not Found

Le processId n'existe pas ou n'appartient pas au tenant authentifié.

429 Too Many Requests

Limite de débit atteinte. Lorsque votre système reçoit une erreur HTTP 429, vous devez implémenter des mécanismes pour prévenir les défaillances en cascade et éviter d'aggraver la restriction.

Bonnes pratiques :

  • Période de refroidissement (backoff) : Arrêtez ou limitez immédiatement les requêtes suivantes de votre système. Ne réessayez pas continuellement les requêtes échouées en boucle serrée.
  • Mise en file d'attente et limitation : Mettez en tampon ou en file d'attente les requêtes sortantes de votre côté pour contrôler le flux de trafic avant de les renvoyer.
  • Backoff exponentiel avec jitter : Lors des nouvelles tentatives, augmentez le temps d'attente de manière exponentielle entre les tentatives (ex. : 1 s, 2 s, 4 s, 8 s) et ajoutez un petit délai aléatoire (« jitter ») pour éviter un effet de troupeau où toutes les requêtes en file d'attente réessaient exactement à la même milliseconde.
avertissement

Frapper continuellement un endpoint limité en débit sans faire de backoff peut prolonger la période de restriction et impacter sévèrement le débit opérationnel de votre système. Limiter correctement les requêtes de votre côté assure une intégration plus fluide et plus résiliente.

Pour les limites par défaut, l'augmentation des requêtes et des détails supplémentaires, voir Limites de débit.

Codes d'erreur

CodeMessageDescription
3process id is invalidLorsque l'ID du processus est invalide.

Polling vs webhook

Vous pouvez interroger ce endpoint pour vérifier la progression, mais le modèle recommandé est de s'abonner à un webhook et d'appeler ce endpoint uniquement en secours. Voir Webhooks et événements.

Prochaines étapes