Report.json file (V6)
Samples of report.json can be downloaded :
- Signature and documents: report_v6.json.
- Identity verification Photo Facematch: report_v6_fm.json.
- Identity verification Video Facematch: report_v6_video.json.
Most values are described in the following chapters. Those that are not are subject to change or deletion.
All dates in this document are in [ISO8601] format (https://fr.wikipedia.org/wiki/ISO_8601).
The "date" field contains the date the report was generated.
{
"date": "2018-03-04T16:45:00Z",
...
}
Customer file information
The field "clientFile" contains the information of the client file. The following fields are defined:
- participants: table containing the information of the participants. Each of these entries contains :
- type: the type of participant as defined in the course configuration interface civility: the civility (MR, MRS, MISS or UNKNOWN) lastName: the last name firstName : the first name birthName: birth name (optional) birthPlace: place of birth (optional) birthDate: date of birth (optional) email: the email address, mobilePhone: the mobile phone number phone: the landline telephone number (optional) postalAddress: the postal address (optional) iban: the participant's IBAN uuid: the participant's ID
- profiles: list of profiles associated with the participant oneClickContract: the original file of the One Click Contract (optional)
- identityChecks : participant identity check uuid: the technical identifier of the file (for a machine) id: the unique identifier of the file (human readable)
- externalInfo: the list of business information startDate: the date the file was created finishDate: the date the file was closed. This field is only present when the file is accepted or rejected validationDate: the date on which the file was validated. This field is only present if a manual validation has been performed
- state : the state of the file
- rejectionCause: the cause of rejection. This field is only present if the file is in the REJECTED state
- rejectionMessage: a message explaining the rejection of the file. This field is only present if the file is in the REJECTED state
- acceptanceMessage: a message explaining the acceptance of the file. This field is only present if the file is in the ACCEPTED state
- legalEntity: information about the legal entity. This field is only present for files that support this mode of operation
- name: the name of the company companyId: the company identifier (SIRET or SIREN) data: the information of the legal entity from the third party service postalAddress: the postal address (if this was defined when the file was created) iban: the IBAN of the legal entity
- recordId: the identifier of the legal archive. Note: each client must keep this value as it is only kept for 3 months ( default) after the file is closed.
- archivingState: the archiving state of the file. The following values are possible:
- NO_ARCHIVING: archiving is not activated for this file
- ARCHIVED: the file has been archived
- NOT_YET_ARCHIVED: the file is not yet archived
- ARCHIVING_IS_SCHEDULED: the file is not yet archived, archiving is scheduled
- NOT_ARCHIVED: the file has not been archived because it has been rejected or the archiving deadline has passed
- externalId: the external identifier that can be defined when the file is created productUuid: technical identifier of the product productName: product name workflowUuid : technical identifier of the workflow workflowName : name of the workflow workflowLabel: workflow label
- group : the group of the file
uuid : group identifier
- label : group label
defaultGroup :
true
if this is the default group for the company
- label : group label
defaultGroup :
- appendices: the list of appended documents
- id: the document identifier (provided at submission)
- file: the file information in the archive
- name: the name of the file
- mimeType : the mime type of the file (ex: application/pdf)
{
...
"clientFile": {
"participants": [
{
"firstName": "John",
"lastName": "Doe",
"type": "SIGNER",
"email": "j.doe@example.net",
"uuid": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"profiles": [],
"identityChecks": [
{
"idDocument": {
...
},
"faceMatch": {
...
}
}
]
}
],
"rejectionCause": "CANCELED",
"finishDate": "2015-03-10T16:47:42Z",
"id": 10002,
"state": "REJECTED",
"validationDate": "2015-03-10T16:47:42Z",
"uuid": "89eb482c-0fab-4821-8c89-b4c9013262d8",
"startDate": "2015-03-10T16:47:39Z",
"rejectionMessage": "Cancelled",
"externalInfo": {
"my-identifier": "123456"
},
"recordId": "a8882b02-e373-11e4-b1d8-bb7ec15a797e"
"legalEntity": {
"companyId": "123456789",
"name": "My corp",
"postalAddress": {
"postalAddress1": "123 rue Victor Hugo",
"postalCode": "75000",
"postalCity": "Paris"
},
"data": {
"controls": {
"agents": [
{
"agentNameMatch": false,
"owner": "5ab1a3f9-669b-4cce-a834-b7c414ed7063"
}
],
"companyAlive": true,
"companyIdValid": true,
"companyOfficeIdValid": true,
"identifierFormatValid": true
},
"extraData": {
"companyDetails": {
"companyId": "000000000",
"legalAgents": [
{
"agentBirthDate": "1975-01-01",
"agentBirthName": "DOE",
"agentFirstName": "JOHN",
"agentFullname": "DOE JOHN",
"agentLastName": "DETOUR",
"agentRole": "President"
.
}
],
"legalForm": "Société par actions simplifiée (SAS)",
"legalName": "MY CORP",
"offices": [
{
"address": "10 AV JOHN DOE",
"apeCode": "5829C",
"city": "PARIS",
"main": true,
"postalCode": "75000",
"siret": "00000000000000"
}
],
"registrationDate": "2001-01-01"
}
}
},
...
}
The verification of a participant's identity
The clientFile.participants[].identityChecks[]
field contains the list of identity checks for a participant. This field is only
present if participant verification is enabled in the path.
- If "Identity Document" is selected, the
idDocument
field is present: identity-document - If "Identity Document & Facematch" is selected, the fields
idDocument
andfaceMatch
are present: identity-document and face-match - If "Digital Identity (La Poste)" is selected, the
lin
field is present: Digital Identity (Post Office)
Use of an identity document
the field clientFile.participants[].identityChecks[].idDocument
will be present. The structure is described here:
List of supporting documents
WARNING : The documents used during the identity check will not be displayed in the same way as a classic document in the report.json and in the integration api return
Display differences in the json
The documents are usually present in the table documents
.
In the case of identity check, the documents (e.g. front and back of an ID card) will be present in the field
clientFile.participants[].identityChecks[]
Example with a French NIC :
{
"firstName": "Corinne",
"lastName": "Berthier",
...
"identityChecks": [
{
"idDocument": {
"files": [
{
"name": "1_corinne_berthier_attachment_1_1.jpg",
"mimeType": "image/jpeg"
},
{
"name": "1_corinne_berthier_attachment_1_2.jpg",
"mimeType": "image/jpeg"
}
],
"taskId": "1_1",
"warnings": [
2026
],
"IPAddress": "178.20.70.2",
"source": "WEB#Chrome_10102#Mac_OS_X",
"date": "2022-06-17T07:35:21Z",
"owner": "participant_1",
"areControlsObsolete": false,
"anonymized": false,
"validation": "VALIDATION_FAILURE",
"participantUuid": "65436df9-1490-44f7-af78-76f67b86e6d1",
"type": "ID_CARD",
"id": "ID_CARD",
"category": "ID_DOCUMENT",
"label": "Carte d'identité",
"data": {
"pages": [
{
"skewAngle": 6.279926776885986,
"pageType": "FRONT_SIDE",
"regions": [],
"fileIndex": 0,
"zonedData": [],
"pageIndexInFile": 0
},
{
"skewAngle": -0.005252552218735218,
"pageType": "BACK_SIDE",
"regions": [],
"fileIndex": 1,
"zonedData": [],
"pageIndexInFile": 0
}
],
"mrz": {
"line2": "8806923102858CORINNE<<<<<<<6512068F6",
"line1": "IDFRABERTHIER<<<<<<<<<<<<<<<<<<<<<<<"
},
"informations": {
"document": {
"number": "880692310285",
"issuanceDate": "1988-06-22",
"issuanceCountry": "FR",
"expirationDate": "1998-06-21"
},
"holder": {
"firstName": "CORINNE",
"birthPlace": "PARIS 1ER (75)",
"rawAddress": "104 RUE DES FLEURS",
"gender": "F",
"firstNames": [
"CORINNE"
],
"birthDate": "1965-12-06",
"birthName": "BERTHIER"
}
}
},
"controls": {
"modelValid": true,
"ocrMrzDocumentNumberMatch": true,
"issuanceDateRead": true,
"ocrMrzBirthNameMatch": true,
"faithfulFont": true,
"ocrMrzIssuanceDateMatch": true,
"ocrMrzExpirationDateMatch": true,
"ocrMrzFirstNamesMatch": true,
"documentTypeMatch": true,
"frontSideFound": true,
"securityElementsValid": true,
"expirationDateRead": true,
"documentAppearanceValid": true,
"ocrMrzBirthDateMatch": true,
"mrzValid": true,
"backSideFound": true,
"issuanceAndExpirationDateMatch": true,
"participants": [
{
"owner": "65436df9-1490-44f7-af78-76f67b86e6d1",
"firstLastNamesInverted": false,
"namesInverted": false,
"lastNameMatch": true,
"firstNameMatch": true,
"civilityMatch": true
}
]
},
"attachmentId": "attachment_1",
"channel": "SIGNBOOK"
}
}
]
}
Use of an identity document and facial recognition (face match)
The clientFile.participants[].identityChecks[].faceMatch
field contains information about the "selfie" files contained
in the archive. Each element has a similar structure, some keys are described in the
documents :
{
...
"faceMatches:[
{
"date": "2018-05-03T15:35:19Z",
"controls": {
"idPhotoMatch": true
},
"files": [
{
"name": "1_john_doe_2_facematch_1.jpg",
"mimeType": "image/jpeg"
}
],
"expectedSequence": [
"front"
],
"source": "WEB#Chrome_5757#Linux",
"participantUuid": "40b892b9-c1bd-4ab1-9181-18fd8f4dd59e",
"IPAddress": "127.0.0.1",
"taskId": "1_FM_1",
"validation": "VALIDATED"
}
Note: a failed automatic check ("validation": "VALIDATION_FAILURE") can be contradicted later by manual review by an operator (cf. event FACE_MATCH_REVIEWED in the event list).
Use of an video identity verification
The clientFile.participants[].identityChecks[].videoIdentification
field contains information about the video identity :
- date : Video identity date
- taskId : represents the technical identifier of the task linked to this document
- participantUuid : identifier of the participant who is to submit the document (submission may have been delegated)
- owner : the type of participant as defined in the course configuration interface
- type : indicates the type of the document
- files : contains the name of the file in the archive (with the subkey "name") and its mime type (with the subkey "mimeType")
- errors : Error codes
- warnings : Warning codes
- documentControls : Identity document controls
- biometryControls : Face biometry controls
{
...
"videoIdentification": {
"date": "2022-10-19T14:31:44Z",
"taskId": "1_1",
"participantUuid": "db9d7061-bc64-4786-abd9-79619ea66eab",
"owner": "SIGNER",
"type": "ID_CARD",
"files": [
{
"name": "1_firstname_lastname_FRONT_SIDE_1.png",
"mimeType": "image/png"
}
],
"documentControls": {
...
},
"biometryControls": {
...
}
}
}
Use of the Digital Identity (La Poste)
The clientFile.participants[].identityChecks[].lin
field contains the identity information provided by La Poste:
- taskId: represents the technical identifier of the task linked to this document
- activationUuid : Id of the Digital Identity
- errors : Error codes
- date: Date and time of the identification
- verifiedAt: Date and time of verification of the Digital Identity service
- expired :
true
if the identification has expired and a WBS has been requested providerVerdict:[OK, KO]
Result of the Digital Identity service participant identification providerData: Identity retrieved from Digital Identity - subjectIdentifier : OIDC sub field: Identifier of the authenticated subject
email : E-mail of the authenticated subject
- givenName : First name of the authenticated subject. Multiple first names separated by spaces familyName: Authenticated subject's birth last name preferredUsername: Authenticated subject's username birthDate : Date of birth of the authenticated subject birthPlace : Place of birth of the authenticated subject. This is the INSEE code of the place of birth in France. In case of foreign country, the field is empty
- birthCountry: Country of birth of the authenticated subject. INSEE code: 99100 for France
- gender : Civility of the authenticated subject
- comparisonVerdict :
[OK, KO]
Result of the comparison between the Digital Identity and the file information - controls: Controls between the Digital Identity and the file information
- firstName:
[MATCHING, NOT_MATCHING, SKIPPED]
birthName:[MATCHING, NOT_MATCHING, SKIPPED]
- lastName:
[MATCHING, NOT_MATCHING, SKIPPED]
birthDate:[MATCHING, NOT_MATCHING, SKIPPED]
- firstName:
{
...
"lin": {
"taskId": "L_1",
"activationUuid": "9bcf484c-9412-4afc-a58c-50835af63bdb",
"date": "2021-06-14T09:53:27Z",
"verifiedAt": "2021-05-31T10:01:30Z",
"expired": false,
"providerVerdict": "OK",
"providerData": {
"subjectIdentifier": "subjectIdentifier",
"email": "j.doe@example.net",
"givenName": "John",
"familyName": "Doe",
"birthDate": "2021-05-28"
},
"comparisonVerdict": "OK",
"controls": {
"firstName": "MATCHING",
"birthName": "NOT_MATCHING",
"lastName": "SKIPPED"
}
}
}
Signed documents
The 'signedDocuments' field contains the list of documents that have been signed during the life cycle of the client file. If the signature has been disabled in the path, this field will not be present. The id field field corresponds to the document identifier as defined in Workflow. A file with the name signed_{id}.pdf will also be found in the the archive.
Each document has a "consentClauses" field which contains the consent clauses consent clauses defined in the signature tasks. Each clause has the same structure:
Name | Description |
---|---|
id | the unique identifier of the clause (which was defined when the workflow was created) |
text | text of the clause that was displayed to the user |
required | boolean indicating whether this clause was required in order to sign the contract |
checked | boolean indicating whether the user accepted the clause (required clauses are always set to true) |
signerUuid | Identifier of the participant to whom the clause is associated |
{
...
"signedDocuments": [
{
"id": "contract",
"consentClauses": [
{
"checked": true,
"id": "clause-01",
"text": "I accept the terms and conditions",
"required": true,
"signerUuid": "8f4321e6-d176-11e5-be31-448a5bd00f42"
},
{
...
}
]
}
],
...
}
List of supporting documents
The "documents" field is an array with each entry containing the information of the documents contained in the archive. Each element has the same structure:
- files: contains the name of the file in the archive (with the subkey "name") and its mime type (with the subkey "mimeType")
- source: contains a string identifying the application that sent the document to the server. It consists of three parts
separated by a #:
- the first indicates the type of the application
- the second indicates the name of the application
- the third part indicates the operating system
- attachmentId : indicates the unique identifier of the document. It is defined when the path is created. This value is optional
- id: document identifier. It is defined when the path is created. This value is optional
- category : document category
- type : indicates the type of the document
- taskId: represents the technical identifier of the task related to this document. Used for the re-opening of the file.
- date: represents the date and time of submission of the document participantUuid: identifier of the participant who is to submit the document (submission may have been delegated)
- validation :
VALIDATED: if the document has been validated (automatically or by video coding)
VALIDATION_FAILURE: if problems are detected on the document (automatic validation or videocoding)
- NOT_VALIDATED: if the validation has not been performed
- areControlsObsolete: true if the file has been updated after the document submission, null otherwise
- anonymized: true if the document has been anonymised. In this case, the controls are still present in the report.json, but the document will not be present in the archive
- label: indicates the document label. It is defined when the workflow is created. This value is optional
- channel : indicates the channel through which the document was submitted
{
...
"documents": [
{
"files": [
{
"name": "1_john_doe_test-01_1.jpg",
"mimeType": "image/jpeg"
}
],
"source": "WEB#Chrome_40.0#Win32",
"attachmentId": "test-01",
"type": "PAYSLIP",
"id": "payslip",
"label": "Fiche de paie",
"channel": "SIGNBOOK_API_V6",
"taskId": "4_6",
"participantUuid": "079e1502-1518-4812-8511-9f08f91ad24e",
"validation": "NOT_VALIDATED",
"areControlsObsolete": true,
"date": "2015-02-04T16:45:23Z"
}
],
...
}
Data may have been extracted if a decision support system was chosen when the workflow was created. This will add the following fields to the list previously described:
-
controls": contains a list of control booleans. They are generated by the Trust and Sign server with data received from the Prevent server. This field is only present if decision support has been used. If the event represents an "error", this field indicates the cause If the event represents an "error", this field indicates the cause more precisely, otherwise it indicates "warnings". The controls common to all documents are as follows:
- documentTypeMatch: Boolean indicating whether the document type detected is the expected one (this field is not present if the type could not be determined).
- ContainsAnnotations*: Boolean indicating whether the document contains annotations (only for PDF documents)
- ContainsTamperingSign*: Boolean indicating whether the document has been modified by a third party application (only for PDF documents)
- keywordsParticipantAlert: list of keywords in "error" returned to the participant
- keywordsOperatorAlert : list of keywords in "warning" displayed only to the operator
keywordsWhitelist: list of authorised keywords found in the documentkeywordsBlacklist: list of unauthorised keywords found in the document
-
data": contains the information extracted from the document. It is information returned by the Prevent or MiTrust server.
-
extraData": contains additional information to the document. For a tax notice, the data from a third party service is present. service is present.
Identity documents
The following values are defined:
- documentAppearanceValid: to indicate whether the document appearance is compliant
- mrzValid: to indicate whether the MRZ lines are valid ocrMrzDocumentNumberMatch: to indicate whether the document number from the MRZ matches the VIZ (Visual Inspection Zone)number
- ocrMrzBirthNameMatch : to indicate if the birth name from the MRZ matches the VIZ
- ocrMrzLastNameMatch : to indicate if the last name from the MRZ matches the VIZ
- ocrMrzFirstNamesMatch : to indicate if the first name from the MRZ matches that of the VIZ
- ocrMrzIssuanceDateMatch : to indicate if the issuance date from the MRZ matches that of the VIZ
- ocrMrzExpirationDateMatch : to indicate if the expiration date from the MRZ matches that of the VIZ ocrMrzBirthDateMatch: to indicate whether the date of birth from the MRZ matches that of the VIZ faithfulFont: to indicate whether the font looks valid (only for ID cards)
- securityElements: to indicate whether the following security elements are correct
- Initials in the upper right-hand corner of the photo of the French ID card
- Number of perforations on the French passport
- Basic consistency between passport number and expiry date
- documentCountryValid: to indicate that the country found in the document is authorised
- documentExpired: to indicate if the document is expired
- participants: the information for each participant:
firstNameMatch: to indicate whether the first name retrieved from the document is the one defined in the file
lastNameMatch: to indicate whether the last name extracted from the document is the one defined in the file
- birthNameMatch: to indicate if the birth name extracted from the document is the one defined in the file (differentiate it from the family name) birthDateMatch: the date of birth extracted from the document corresponds to that of the file (this field is not present if no date is defined in the file) birthPlaceMatch: the place of birth extracted from the document matches that of the file (this field is not present if no place is defined in the file) civilityMatch: the civility extracted from the document matches that of the file (this field is not present if no civility is defined in the file or in the MRZ) firstLastNamesInverted: the first and last names extracted from the document are inverted with respect to the values in the client file
- namesInverted : birth name and family name are inverted (this field is only present if the user has defined a birth name)
- owner: identifier of the owner of the document (see participant information)
- documentTypeMatch : the type of document detected is the one expected (this field is not present if the type of document could not be determined)
- doc2DFound : the 2DDoc was found in the document
- doc2DValid : The signature or certificate of the 2D-Doc is not valid or cannot be validated
- doc2DAndDocumentMatch : The 2D-Doc cannot be read or does not match the document and MRZ data notSpecimen : The document is not a specimen
When the document has been verified with LiveCheck, the following checks are defined:
- liveCheckWorkableElements: the quality of the provided elements does not allow for identity verification to proceed.
- liveCheckStatusAccepted: an operator has validated the identification.
- liveCheckRefuseReason: when
liveCheckWorkableElements
orliveCheckStatusAccepted
isfalse
, indicates a reason for refusal:- reason: enumerated, with possible values:
- FRAUD: fraud has been detected,
- DOCUMENT_INSUFFICIENT_QUALITY: the quality of the document is insufficient,
- DOCUMENT_INCORRECTLY_FRAMED: the document is truncated,
- DOCUMENT_SIDE_MISSING: either the front or back side is missing,
- DOCUMENT_EXPIRED: the document has expired,
- DOCUMENT_UNSUPPORTED: the document is not supported,
- DOCUMENT_COUNTRY_UNAUTHORIZED: the issuing country of the document is not authorized,
- DOCUMENT_UNSUPPORTED_RECEIPT_ACK: only the receipt is present,
- BIOMETRY_INSUFFICIENT_QUALITY: the quality of the identification sequence is insufficient,
- LIVE_CHECK_EXPIRED: the LiveCheck analysis result was not received within the allotted time,
- INVALID_REQUEST: the LiveCheck analysis request could not be performed,
- INTERNAL_ERROR: a technical error has occurred,
- OTHER: other.
- subReason: if defined, adds specificity to the reason.
- reason: enumerated, with possible values:
{
...
"documents": [
{
"date": "2017-05-16T15:37:59Z",
"controls": {
"documentTypeMatch": true,
"ocrMrzDocumentNumberMatch": true,
"ocrMrzBirthNameMatch": true,
"ocrMrzLastNameMatch": true,
"ocrMrzFirstNamesMatch": true,
"ocrMrzBirthDateMatch": true,
"faithfulFont": true,
"securityElements": true,
"documentCountryValid": true,
"documentAppearanceValid": true,
"mrzValid": true,
"documentExpired": true,
"doc2DFound": true,
"doc2DValid": true,
"doc2DAndDocumentMatch": true,
"participants": [
{
"owner": "3ffabae9-7578-4195-8b40-3e4f34499d50",
"firstLastNamesInverted": false,
"lastNameMatch": true,
"namesInverted": false,
"birthDateMatch": true,
"firstNameMatch": true,
"civilityMatch": true
}
]
},
...
}
Issuer Referential
Trust & Sign allows you to query the referential of the issuer of an ID document by using PreventGo API. For French documents, the issuer referential is DocVerif (ANTS). Other countries are currently not supported.
the following controls are defined:
Control | True | False |
---|---|---|
issuerReferentialConnectorSuccess | The connection between Trust & Sign and the Issuer Referential service has been established. | The connection could not be established between Trust & Sign and Issuer Referential service (in such a case, the 3 next checks will not appear). |
issuerReferentialKnownDocument | The document sent has been found in the Issuer Referential. | The document sent was not found in the Issuer Referential. |
issuerReferentialValid | The document has been validated by the Issuer Referential. | The document is stolen, lost, expired or cancelled. |
issuerReferentialHolderValid | The birthName and firstName extracted from the document are consistent with the issuer referential. | There is a mismatch. |
Extracted data
The following values can be retrieved:
- The lines of MRZ
- The information of the person mentioned (key "holder") in the document (name, first names, date of birth and gender)
- The information of the document ("document" key)
- date of issue
- expiry date
- etc ...
{
...
"documents": [
{
"data": {
"mrz": {
"line2": "012345679",
"line1": "0123456789"
},
"information": {
"document": {
"number": "0123456789",
"issuanceDate": "2011-01-09",
"issuanceCountry": "FR",
"expirationDate": "2016-01-09"
},
"holder": {
"lastName": "Doe",
"gender": "M",
"firstNames": [
"John"
],
"birthDate": "1976-01-09",
"birthPlace": "Paris"
}
}
}
],
...
}
Payroll slips
The following values define the controls of a document:
- dateFound: the date of the document was found in the document
- maxAgeExceeded: the document is too old (configured in the workflow interface) companyConnectorFailed: the call to the company verification connector has failed companyConnectorRequested : the call to the company verification connector has been requested companyIdValid : the company from the payslip is valid companyOfficeIdValid : the company establishment from the payslip is valid companyOfficeAlive: the company's establishment from the payslip is open nirFound: indicates whether the social security number has been found nirValid: indicates whether the national insurance number is valid
- participants: a table containing the information of the owners of the document:
nameFound: the name of the participant was found
postalAddressFound: the postal address of the participant was found
postalAddressMatch: the participant's postal address was matched
civilityMatch: indicates whether the civility from the social security number matches that of the participant
birthDateMatch: indicates whether the date of birth from the national insurance number matches that of the participant
- owner: identifier of the document owner (see participant information) documentTypeMatch: the type of document detected is the one expected (this field is not present if the type of document could not be determined)
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"dateFound": true,
"maxAgeExceeded": false,
"companyConnectorFailed": false,
"companyConnectorRequested": true,
"companyIdValid": true,
"companyOfficeIdValid": true,
"companyOfficeAlive": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"nameFound": true,
"postalAddressFound": true,
"postalAddressMatch": true
}
]
},
...
}
],
...
}
Data extracted
The following values can be retrieved:
- firstName` : the employee's first name
lastName
: the employee's last name- birthName` : the employee's birth name
address
: the company's postal addressssn
: the employee's national insurance number- legalEntityOfficeId` : the company's SIRET
- periodDate` : the date of the salary period (ISO8601 format)
- seniorityDate` : the date the employee joined the company (ISO8601 format)
- monthlyNetTaxableIncome` : the monthly taxable amount (in euros)
- annualNetTaxableIncome` : the annual taxable amount (in euros)
{
...
"documentDetails": {
"firstName": "John",
"lastName": "DOE",
"birthName": "DOE",
"address": "123 rue Victor Hugo",
"ssn": "1850234567890",
"legalEntityOfficeId": "1234567890",
"periodDate": "2020-07-01",
"seniorityDate": "2018-06-10",
"monthlyNetTaxableIncome": 1854.25,
"annualNetTaxableIncome": 25412.25
}
}
Additional data
If the call to the third party service has been made, an "extraData.companyDetails" field will return the company information displayed on the payslip:
{
...
"documents": [
{
"extraData": {
"companyDetails": {
"legalName": "MY COMPANY",
"legalAgents": [
{
"agentRole": "President",
"agentFullname": "DOE John",
"agentBirthDate": "1971-01-01"
}
],
"companyId": "453023681",
"offices": [
{
"address": "23 Avenue du marché",
"city": "MONTPELLIER",
"postalCode": "34000",
"apeCode": "5829C",
"main": true,
"siret": "123456789"
}
],
"registrationDate": "2001-01-01",
"legalForm": "société par actions simplifiée"
}
}
}
]
}
Tax notice
Warning, following the closure of the tax site, some of these controls have been depreciated. These can be replaced by information extracted from doc2D on the document.
The following values define the controls of a tax notice or tax receipt:
- dateFound: the date of the document was found in the document
- maxAgeExceeded: the document is too old (configured in the workflow interface)
- documentTypeMatch: the type of document detected is the expected one (this field is not present if the type of document could not be determined)
- fiscalNumberFound (new) : at least one fiscal number has been found on the document
- taxNoticeReferenceFound (new) : the tax notice reference was found on the document
- doc2DFound (new) : the doc2D exists and was found on the document, some tax notices do not have a doc2D
- doc2DValid (new) : the doc2D on the document is valid
- doc2DAndDocumentMatch (new) : all the controls between the document and the doc2D are OK (result of all the following checks: doc2DAndDocumentTypeMatch, doc2DAndFullName1Match, doc2DAndFullName2Match, doc2DAndReferenceIncomeMatch and doc2DAndIncomeYearMatch. Appears only if the doc2DFound control is OK.
- doc2DAndDocumentTypeMatch (new) : the type of document detected by the system corresponds to the type of document present in the doc2D. Appears only if the doc2DFound control is OK.
- doc2DAndFullName1Match (new) : the name of the first registrant corresponds between the document and the doc2D. Appears only if the doc2DFound control is OK.
- doc2DAndFullName2Match (new) : the name of the second registrant corresponds between the document and the doc2D. Appears only if the doc2DFound control is OK.
- doc2DAndIncomeYearMatch (new) : the year for which income tax is calculated found on the document matches the year detected in doc2D. Appears only if the doc2DFound control is OK.
- doc2DAndReferenceIncomeMatch (new) : the reference tax income matches between the document and the doc2D. Appears only if the doc2DFound control is OK.
taxNoticeConnectorRequested(deprecated) : the connector to external referential has been attempted: key is no more present since 2023-05 (external referential has been shutdown)taxNoticeConnectorFailed(deprecated) : the request to the external referential has failed (key is no more present since 2023-05)taxNoticeNotCheckable(deprecated) : the connector cannot check the notice. This happens if the notice is too oldtaxNoticeDatesConsistent(deprecated) : the dates found in the document match those returned by the external servicetaxNoticeRefIncomeConsistent(deprecated) : the amount found on the document matches the one returned by the external servicetaxNoticeReferencesValid(deprecated) : the reference and the tax number of the notice are valid- participants: list of checks for each participant to be found in the document. The comparison is made between the information
in the file and the document:
- nameFound: the name of the participant was found
- fullNameMatch (new) : the name in doc2D matches the name of the participant on the file
- postalAddressFound: the postal address of the participant was found
postalAddressMatch(deprecated) : the participant's postal address was matched- owner: identifier of the document owner (see participant information)
frTaxNotice(deprecated) : list of checks for each participant. A "strict" comparison is made between the external service and the client file:owner: identifier of the owner of the document (see participant information)birthDateMatch: the date of birth matchesbirthNameMatch: the birth name matches (only done if a birth name has been defined in the file)firstNameMatch: the first name matcheslastNameMatch: the last name matchesnamesInverted: birth name and family name are reversed (only done if a birth name has been defined in the file)firstLastNamesInverted: first and last names are reversed
New controls on the .json report based, in part, on information extracted from the doc2D present on the document.
{
...
"documents": [
{
"controls": {
"containsAnnotations": false,
"doc2DAndDocumentMatch": true,
"doc2DAndDocumentTypeMatch": true,
"doc2DValid": true,
"containsTamperingSign": false,
"fiscalNumberFound": true,
"doc2DAndFullName1Match": true,
"maxAgeExceeded": false,
"doc2DAndIncomeYearMatch": true,
"documentTypeMatch": true,
"doc2DAndReferenceIncomeMatch": true,
"taxNoticeReferenceFound": true,
"doc2DFound": true,
"keywordsOperatorInfo": [],
"dateFound": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"fullNameMatch": true,
"nameFound": true,
"postalAddressFound": false
}
]
},
...
}
],
...
}
Old controls on the report.json based, in part, on the information returned by the service on the tax site, which is no longer functional.
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"dateFound": true,
"maxAgeExceeded": false,
"taxNoticeNotCheckable": true,
"taxNoticeDatesConsistent": true,
"taxNoticeRefIncomeConsistent": true,
"taxNoticeReferencesValid": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"nameFound": true,
"postalAddressFound": true,
"postalAddressMatch": true
}
],
"frTaxNotice": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"birthDateMatch": true,
"birthNameMatch": true,
"firstNameMatch": true,
"lastNameMatch": true,
"namesInverted": true,
"firstLastNamesInverted": true
}
]
},
...
}
],
...
}
Extracted data
The following values can be retrieved:
- fiscalNumber1 : tax number of the first filer
- fiscalNumber2 : tax number of the second filer
- reference : reference of the notice found on the document
- address (new) : address of the filer found on the document
- issuanceDate (new) : the date of issue of the document
- refIncome (new) : the amount of income found on the document
- incomeYear (new) : the year for which income tax is calculated
- doc2D (new) : all the information extracted from the doc2D. This block only appears if a doc2D is present on the document.
- signatureDate : the date on which the doc2D was signed
- fullName1 : name of the first filer found in doc2D
- fullName2 : name of the second filer found in doc2D
- signedBy : the organisation that signed the doc2D
- referenceIncome : the amount of income found in doc2D
- partsCount : the number of parts found in doc2D
- fiscalNumber1 : the tax number of the first tax filer found in doc2D
- fiscalNumber2 : the tax number of the second tax filer found in doc2D
- assessmentDate : the date of assessment found in doc2D
- declarationDate : the date of issue of the tax notice in doc2D
- taxNoticeReference : the reference of the tax notice found in doc2D
- incomeYear : the year for which income tax is calculated found in doc2D
incomesDetails(deprecated) : details of household income. The names of the entries areDECLARANT_1
,DECLARANT_2
andENFANT
. These values are taken from from the second page of the tax notice (this extraction is only activated by Namirial on the product). Each entry represents a line extracted from the second page.
New data extracted on the report.json based, in part, on information extracted from the doc2D present on the document.
{
...
"documentDetails": {
"reference": "0000000000000",
"address": "ADDRESS1 POSTALCODE CITY",
"issuanceDate": "2016-04-24",
"fiscalNumber1": "0000000000000C",
"fiscalNumber2": "1000000000000C",
"refIncome": "15000",
"incomeYear": 2021,
"doc2D": {
"signatureDate": "2016-04-24",
"fullName1": "DOE JOHN JAMES",
"fullName2": "DOE JOHN JAMES",
"signedBy": "C=COUNTRYCODE, O=ORGANISM, OU=0000 00000000000000, CN=0000",
"referenceIncome": 15000,
"partsCount": 1,
"fiscalNumber1": "0000000000000C",
"fiscalNumber2": "1000000000000C",
"assessmentDate": "2022-07-31",
"taxNoticeReference": "0000000000000",
"incomeYear": 2021
}
}
}
Old data extracted from the report.json based, in part, on information returned by the service on the tax site, which is no longer functional.
{
...
"documentDetails": {
"fiscalNumber1": "123456789",
"fiscalNumber2": "987654321",
"reference": "5127543296321",
"incomesDetails": {
"CHILD": [],
"DECLARANT_1": [
{
"label": "DEDUCTION 10 OR ACTUAL COSTS",
"value": -4223
},
{
"label": "SALARIES",
"value": 25000
},
{
"label": "NET WAGES PENSIONS PENSIONS",
"value": 5000
},
{
"label": "TOTAL WAGES AND ASSIMILES 2",
"value": 30000
}
],
"DECLARANT_2": []
}
}
}
Additional data (deprecated)
The additional data is no longer available since the tax notice validation service was discontinued. extraData will no longer be
available for new files.
If the external tax notice validation service is called, the information from the notice will be retrieved in the "
extraData.frTaxNoticeDetails" key:
{
...
"extraData": {
"frTaxNoticeDetails": {
"taxableIncome": "20 000 u20ac",
"refIncome": "20 000 u20ac",
"nbParts": "3.00",
"postalAddress": {
"city": "MONTPELLIER",
"address1": "39 RUE DE LA GARE",
"postalCode": "34000"
},
"globalGrossIncome": "20 000 u20ac",
"declarant1": {
"lastName": "Doe",
"firstNames": "JOHN",
"birthDate": "1971-01-01",
"birthName": "DOE"
},
"issueDate": "2014-07-14",
"taxAmount": "Non-taxable",
"familyStatus": "Pacsé(e)s"
}
}
}
RIB
The following values define the controls of a GNI:
ibanChecksumValid: indicates that the checksum is valid bankCountryValid: the country specified in the IBAN is allowed
- ibanFound: the IBAN was found in the document
- participants: list of checks for each participant to be found in the document. The comparison is made between the information
in the file and the document:
nameFound: the name of the participant was found
ibanMatch: the IBAN found in the document matches that of the participant
- owner: identifier of the document owner (see participant information)
- documentTypeMatch : the type of document detected is the one expected (this field is not present if the type of document could not be determined)
keywordsWhitelist: list of allowed keywords found in the documentkeywordsBlacklist: list of non-authorised keywords found in the document
If the course has been configured to use legal entities, the following controls are added:
legalEntityIbanMatch: the IBAN found matches the legal entity legalEntityNameFound : the name of the legal entity was found in the document legalEntityPostalAddressFound : the postal address of the legal entity was found in the document legalEntityPostalAddressMatch : the postal address of the legal entity found in the document matches the one in the file
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"ibanChecksumValid": true,
"bankCountryValid": false,
"ibanFound": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"ibanMatch": true,
"nameFound": true
}
]
},
...
}
],
...
}
Invoices, schedules or property tax
The following values define the controls for invoices and schedules:
- dateFound: the date of the document was found in the document (only for invoices)
- maxAgeExceeded: the document is too old (configured in the workflow interface) (only for invoices)
- participants: a table containing the information of the owners of the document:
- nameFound: the name of the participant was found postalAddressFound: the postal address of the participant was found postalAddressMatch: the participant's postal address was matched
- owner: identifier of the document owner (see participant information)
- documentTypeMatch: the type of document found is the expected one (this field is not present if the type of document could not be determined)
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"dateFound": true,
"maxAgeExceeded": false,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"nameFound": true,
"postalAddressFound": true,
"postalAddressMatch": true
}
]
},
...
}
],
...
}
Retirement pension or CAF certificate
The following values define the controls for invoices and schedules:
- participants: a table containing the information of the owners of the document:
nameFound: the name of the participant was found
postalAddressFound: the postal address of the participant was found
- owner: identifier of the document owner (see participant information)
- documentTypeMatch : the type of document detected is the one expected (this field is not present if the type of document could not be determined)
keywordsWhitelist: list of allowed keywords found in the documentkeywordsBlacklist: list of non-authorised keywords found in the document
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"nameFound": true,
"postalAddressFound": true
}
]
},
...
}
],
...
}
Certificate of home insurance
The following values define the checks for home insurance certificates:
- participants: a table containing the information of the owners of the document:
nameFound: the name of the participant was found
postalAddressFound: the postal address of the participant was found
postalAddressMatch: the participant's postal address was matched
- owner: identifier of the document owner (see participant information)
- documentTypeMatch: the type of document detected is the expected one (this field is not present if the type of document could not be determined)
- maxAgeExceeded: the document is too old (configured in the workflow interface)
{
...
"documents": [
{
"controls": {
"documentTypeMatch": true,
"maxAgeExceeded": true,
"participants": [
{
"owner": "72b6fa2e-9e5f-11e5-b08c-448a5bd00f42",
"nameFound": true,
"postalAddressFound": true
}
]
},
...
}
],
...
}
Extracted data
The following values can be retrieved:
- firstName` : first name of the participant
lastName
: the last name of the participant- birthName` : the participant's birth name
address
: the postal address of the participantissuanceDate
: the date the document was issued
{
...
"documentDetails": {
"firstName": "JOHN",
"lastName": "DOE",
"birthName": "DOE",
"address": "123 rue Victor Hugo",
"issuanceDate": "2019-02-27"
}
}
Other types of documents
The following values define the controls for documents of type 'other':
keywordsWhitelist : list of allowed keywords found in the document
keywordsBlacklist : list of unauthorised keywords found in the document
{
...
"documents": [
{
"controls": {
},
...
}
],
...
}
List of events
The "events" field lists all events that have occurred on the file.
If the user has submitted the same document several times, there will be as many submission events. To have more precise information on a document (video coding ...) it is preferable to use the information described in the information described in the [documents] paragraph (#liste-des-pieces-justificatives).
This is a table with the following structure for each entry:
Name | Description |
---|---|
date | - the date the event took place |
state | state of the event; OK for a success or KO for an error |
executedBy | participant identifier that conceptually caused the event. This value is only present for events resulting from an end-user action. |
delegateeUuid | delegated participant ID that actually caused the event. This value is only present if the action has been delegated. |
source | This value is only present if the action was delegated to the client application. Each participant call has a source. Server events do not have this field. |
IPAddress | IP address of the participant. Server events do not have this field |
taskId | This field is optional and is used to determine the technical identifier of the task linked to this event. This field is optional. |
errors | This field is optional, and is used for the list of error codes. This field is only present if the state value is KO. |
warnings | list of warning codes |
type | the type of the event (see table below) |
sentTo | identifier of the email recipient. This field appears only for EMAIL_SENT and OTP_SENT events. |
documentType | the document type. This field appears only for the events AUTHENTICATION and DOCUMENT_SUBMISSION |
documentId | The identifier of the document. This field only appears for the AUTHENTICATION DOCUMENT_SUBMISSION, DOCUMENT_REVIEWED and VIDEOCODING events. |
DocumentCategory | Document Category. This field only appears for the AUTHENTICATION DOCUMENT_SUBMISSION, DOCUMENT_REVIEWED and VIDEOCODING events. |
label | The label of the event |
channel | The channel from which the event originated |
causes | The list of reopened tasks (only for REOPEN events). This object contains the list of reopened tasks, any messages added by the operator, and any additional tasks. |
{
...
"events": [
{
"date": "2015-02-04T16:45:20Z",
"state": "OK",
"type": "CREATION",
"groupUuid": "4ba3c1e0-6c76-4f08-82bc-0cda98b93fb6",
"groupName": "myGroup_jZWY8"
},
{
"date": "2015-02-04T16:45:21Z",
"executedBy": "704ff222-0620-418a-b9b3-2f352d39aebc ",
"documentType": "ID_CARD",
"label": "Identity Card",
"state": "OK",
"source": "WEB#Chrome_40.0#Win32",
"attachmentId": "",
"type": "AUTHENTICATION",
"IPAddress": "127.0.0.1",
"channel": "CENTER",
"taskId": "1_3"
},
...
}
}
Types of events
Type | Description |
---|---|
CREATION | when the file has been created |
AUTHENTICATION | when authentication has been performed |
DOCUMENT_SUBMISSION | when a document has been submitted (or even automatically validated) |
DOCUMENT_REPROCESSING | when a document has been re-submitted |
FACE_MATCH | when a facial recognition has been performed (or automatically validated) |
SIGNATURE | when signing the contract |
OTP_SENT | when the OTP code has been sent to the user |
EMAIL_SENT | when an email was sent to the user |
SMS_SENT | when one or more sms have been sent to the user |
REMINDER_SENT | when a reminder has been sent to the user |
CONTRACT_VIEWED | when the contract has been seen by the user |
REOPEN | when the file has been reopened |
PARTICIPANT_COMPLETION | when the participant has submitted his or her file |
FINALIZATION | when the file has been finalized |
ARCHIVING_SCHEDULED | when the file is going to be archived |
ARCHIVING | when the file has been archived |
ARCHIVING_CANCELLATION | when file archiving has been cancelled |
REJECTION | when the file has been rejected (final state) |
ACCEPTATION | when the file has been accepted (final state) |
ARCHIVE_DOWNLOADED | when a third party service has downloaded the file archive |
CONTRACT_DOWNLOADED | when the contract has been downloaded by the user |
CONTRACTS_DOWNLOAD_NOTIFIED | when the user certifies that he/she has downloaded all the contracts |
EXPORT | when the file archive is exported to the EDM. This happens when export rules are defined |
UNBLOCKING | when the file has been unblocked |
VIDEOCODING | when a document has been video coded |
DOCUMENT_REVIEWED | when an operator reviews a document. It contains the type of document and its status (accepted or rejected) |
FACE_MATCH_REVIEWED | when an operator performs facial recognition manually. It contains the acceptance status (accepted or rejected) |
LEGAL_ENTITY_REVIEWED | when an operator reviews a legal entity |
LEGAL_AGENT_REVIEWED | when an operator reviews an agent |
REVIEW_CANCELED | when an operator cancels the previous review |
ZIP_REPORT_DOWNLOAD | when an operator downloads the contents of a file |
EXTERNAL_ACTION | when the file has been processed by an external application |
IDENTIFICATION | when an identification with electronic registered letter (ERL) is used before signing |
DEFRAUDED_DOCUMENT_REGISTRATION | when a document is marked as fraudulent. The task identifier and the submission event are attached to this event |
GROUP_TRANSFER | change of group assignment of the file client |
One Click Contract File
The clientFile.participants.oneClickContract
field contains the reference file information for the
One Click Contract of the participant:
oneccUUID: the technical identifier of the One Click Contract oneccToken : token used for the creation of the One Click Contract
- participant : participant of the reference file
email : the email address
mobilePhone: the mobile phone number
lastName: the last name
firstName: first name
birthDate: date of birth (optional)
birthPlace: place of birth (optional)
birthName: the birth name (optional)
postalAddress: the postal address of the participant in the reference file (optional)
address1: line 1 of the address (optional)
address2: line 2 of the address (optional)
address3: line 3 of the address (optional)
city: city (optional)
postalCode: postal code (optional)
countryCode: country code (optional)
clientFile: reference file of the One Click Contract
uuid: the technical identifier of the reference file
creationDate: the creation date of the file
- finalizationDate : the date of finalization of the file productUuid: the technical identifier of the product productName : the name of the product workflowUuid: technical identifier of the workflow workflowname : name of the workflow workflowLabel: workflow label
- state : the state of the file
- externalInfo : the list of business information (optional)
- documents: list of supporting documents for the participant in the reference file (optional)
- label: indicates the label of the document. It is defined when the workflow is created. (optional)
- type: indicates the document type (optional)
- attachmentId : indicates the unique identifier of the document. It is defined when the path is created. (optional) * controls controls: contains a list of control booleans. They are generated by the Trust and Sign server with the data received from the server (optional)
- files: the file information in the archive
- name: the name of the file
- mimeType : the mime type of the file (ex: application/pdf) (optional)
"oneClickContract": {
"oneccUUID": "528ef5f5-39a7-4a80-b8d1-9a4c45832168",
"oneccToken": "20190902_p0z6EiBRZCRmfevf4zF4M4XRioAej2a",
"participant": {
"email": "j.doe@example.net",
"mobilePhone": "0678912345",
"lastName": "Doe",
"firstName": "John",
"birthDate": "1984-08-13",
"birthPlace": "Montpelier"
},
"clientFile": {
"uuid": "e7865978-a9d9-40a7-bb65-5dd23d4e3267",
"creationDate": "2015-03-10T16:47:39Z",
"finalizationDate": "2015-03-10T16:47:42Z",
"productLabel": "Product 1",
"workflowLabel": "Workflow 11",
"state": "ACCEPTED",
"externalInfo": {
}
},
"documents": [
{
"label": "ID card",
"type": "id_card",
"attachmentId": "1",
"controls": {
...
},
"files": [
{
"name": "1_john_doe_3_1.png",
"mimeType": "image/png"
}
]
},
{
"label": "EDF invoice",
"type": "payslip",
"attachmentId": "3",
"controls": {
...
},
"files": [
{
"name": "3_1_payslip_01.png",
"mimeType": "image/png"
}
]
}
]
}