Retrieve user data
To view all submitted user information related to a session use the resources container.
Document resources
The resources container includes all the document resources.
idvClient
.getSession(sessionId)
.then((session) => {
// Returns all resources in the session
const resources = session.getResources();
// Returns a collection of ID Documents
const idDocuments = resources.getIdDocuments();
idDocuments.map((idDocument) => {
// Gets the UUID of the document resource
const id = idDocument.getId();
// Returns the ID Document Type
const documentType = idDocument.getDocumentType();
// Returns the ID Document country
const issuingCountry = idDocument.getIssuingCountry();
// Returns pages of an ID Document
const pages = idDocument.getPages();
// Get pages media ids
const pageMediaIds = pages.map((page) => {
if (page.getMedia() && page.getMedia().getId()) {
return page.getMedia().getId();
}
return null;
});
//return document id photo media id
const documentPhoto = idDocument.getDocumentIdPhoto().getMedia().getId();
// Returns document fields object
const documentFields = idDocument.getDocumentFields();
// Get document fields media id
let documentFieldsMediaId = null;
if (documentFields) {
documentFieldsMediaId = documentFields.getMedia().getId();
}
});
// Returns a collection of Supplementary Documents
const supplementaryDocuments = resources.getSupplementaryDocuments();
supplementaryDocuments.map((supplementaryDocument) => {
// Gets the UUID of the document resource
const supplementaryID = supplementaryDocument.getId();
// Returns the supplementary Document Type
const suppDocumentType = supplementaryDocument.getDocumentType();
// Returns the supplementary Document country
const suppIssuingCountry = supplementaryDocument.getIssuingCountry();
// If a file was uploaded
const file = supplementaryDocument.getDocumentFile();
const fileMedia = file.getMedia().getId();
// If an image was uploaded - there will only be 1 image in this array
const suppPages = supplementaryDocument.getPages();
const suppImageId = suppPages[0].getMedia().getId();
// Returns document fields object
const suppDocumentFields = supplementaryDocument.getDocumentFields();
// Get document fields media id
let suppDocumentFieldsMediaId = null;
if (suppDocumentFields) {
suppDocumentFieldsMediaId = suppDocumentFields.getMedia().getId();
}
});
})
.catch((error) => {
console.log(error);
// handle error
});
Liveness resources
The resources container also includes all the liveness and face capture resources.
// Returns a collection of liveness capture resources
const livenessCapture = resources.getLivenessCapture();
Passive liveness
// Returns Passive (Static) liveness resources
const staticLivenessResources = resources.getStaticLivenessResources();
staticLivenessResources.forEach((liveness) => {
// Get the liveness id
const livenessId = liveness.getId();
// Get the liveness image media
const livenessMedia = liveness.getImage();
// Get the liveness media id
const livenessMediaId = livenessMedia.getId();
});
Active liveness
// Returns Active (Zoom) liveness resources
const zoomLivenessResources = resources.getZoomLivenessResources();
zoomLivenessResources.forEach((liveness) => {
// Get the liveness id
const livenessId = liveness.getId();
// Get the liveness facemap
const facemap = liveness.getFaceMap();
// Get the liveness frames
const frames = liveness.getFrames();
frames.forEach((frame) => {
// Get the frame media
const frameMedia = frame.getMedia();
// Get the frame media id
const frameMediaId = frameMedia.getId();
});
});
Retrieve user information
This is the full JSON version of the user's profile using document fields. An explanation of the address format can be found in this section: Attributes explained.
The document_fields media id should be used when an OCR or manual data entry result is successful. The media ID will be updated to the latest result, if you get OCR data back it will relate to the server side extraction. If the data entry goes for a manual check and data is extracted successfully the media ID will also be updated accordingly and point to generated media from a text data check.
The absence of the document fields object would indicate that data did not get extracted from the ID document.
idvClient.getMediaContent(sessionId, documentFieldsMediaId).then(media => {
const buffer = media.getContent();
const jsonData = JSON.parse(buffer);
// handle jsonData here
}).catch(error => {
// handle error
})
Example Extractions
{
"full_name": "ANGELA ZOE UK SPECIMEN",
"date_of_birth": "1988-12-04",
"nationality": "GBR",
"given_names": "ANGELA ZOE",
"family_name": "UK SPECIMEN",
"place_of_birth": "CROYDON",
"gender": "FEMALE",
"document_type": "PASSPORT",
"issuing_country": "GBR",
"document_number": "533028754",
"expiration_date": "2025-09-28",
"date_of_issue": "2015-09-28",
"issuing_authority": "HMPO",
"mrz": {
"type": 2,
"line1": "P<GBRUK<SPECIMEN<<ANGELA<ZOE<<<<<<<<<<<<<<<<",
"line2": "5330287549GBR8812049F2509286<<<<<<<<<<<<<<02"
},
"document_template": {
"front_page_name": "United Kingdom - ePassport (2015)"
}
}
Retrieve supplementary documents
Supplementary documents will be similarly available as part of the JSON if they have been successfully parsed by either OCR or manual data entry. When retrieving supplementary documents, any document images will appear as 'pages' objects in the JSON whilst uploaded pdfs will be 'file' objects.
idvClient.getMediaContent(sessionId, documentFieldsMediaId).then(media => {
const buffer = media.getContent();
const jsonData = JSON.parse(buffer);
// handle jsonData here
}).catch(error => {
// handle error
})
If you have enabled non latin characters Yoti will do its best to provide the latin characters where possible.
Example Extraction
All extractions for supplementary documents will carry the same JSON structure
{
"full_name": "ANNA GREEN",
"structured_postal_address": {
"address_format": 1,
"building_number": "50",
"street": "Mast House Terrace",
"address_line1": "50 Mast House Terrace",
"town_city": "London",
"state": "Greater London",
"postal_code": "E14 3RN",
"country_iso": "GBR",
"country": "United Kingdom",
"formatted_address": "50 Mast House Terrace\nE143RN London\nE14 3RN"
},
"date_of_issue": "2020-05-26",
"organisation": "Plusnet"
}
Address Formats
Addresses will be returned in 1 of 4 different formats.
{
"address_format": 1,
"building_number": "15a",
"address_line1": "15a North Street",
"town_city": "CARSHALTON",
"postal_code": "SM5 2HW",
"country_iso": "GBR"
"country": "UK",
"formatted_address": "15a North Street\nCARSHALTON\nSM5 2HW\nUK"
}
Field name | Type | Description |
---|---|---|
address_format | number | AddressFormat is used to identify which fields may be present in the JSON object. See table below that defines what format is used for each country. |
udprn | string | Udprn is the Unique Delivery Point Reference Number that identifies a property throughout its lifecycle. |
care_of | string | CareOf identifies the owner of the premises. |
sub_building | string | SubBuilding is used when the building is divided into smaller units (e.g. a block of flats) to identify the sub unit. |
building_number | string | BuildingNumber is the number of the building. |
building | string | Building is the name/number of the building. |
street | string | Street is the name/number of the street the building is on. |
landmark | string | Landmark is a description used to describe the location of the building. |
address_line1 | string | AddressLine1 is the first line of the address. |
address_line2 | string | AddressLine2 is the second line of the address. |
address_line3 | string | AddressLine3 is the third line of the address. |
address_line4 | string | AddressLine4 is the fourth line of the address. |
address_line5 | string | AddressLine5 is the fifth line of the address. |
address_line6 | string | AddressLine6 is the sixth line of the address. |
locality | string | Locality is the area the building is in. |
town_city | string | TownCity is the town/city/village/hamlet/community/etc. that the building is in. |
subdistrict | string | Subdistrict is the sub-district the building is in. |
district | string | District is the district the building is in. |
state | string | State is the state/county the building is in. |
postal_code | string | PostalCode is a code used by the country's postal service to aid in sorting and delivering mail (e.g. postcode, zipcode, pincode). |
post_office | string | PostOffice is the post office that serves the area the building is in. |
country_iso | string | CountryIso is the country the building is in. In ISO-3166-1 alpha-3 format. |
country | string | Country is the country the building is in. Localised. |
formatted_address | string | FormattedAddress is the full address in a single human readable string in a format that is suitable for printing onto an envelope. This field is not required when providing address information. |
The below defines the fields of the JSON structure used for all addresses. A subset of fields will be present in each case and address_format can be used to ascertain which ones for any given address. The country iso should not be used for this purpose.
Four address formats are available and detailed below:
Countries that use this format | GBR, JEY, IMN | IND | USA, AUS | All other countries |
address_format | 1 | 2 | 3 | 4 |
udprn | Optional | |||
care_of | Optional | |||
sub_building | Optional* | |||
building_number | Optional* | |||
building | Optional* | Optional | ||
street | Optional | |||
landmark | Optional | |||
address_line1 | Mandatory | Mandatory | Mandatory | |
address_line2 | Optional | Optional | Optional | |
address_line3 | Optional | Optional | ||
address_line4 | Optional | |||
address_line5 | Optional | |||
address_line6 | Optional | |||
locality | Optional | |||
town_city | Mandatory | Optional | Mandatory | |
subdistrict | Optional | |||
district | Optional | |||
state | Optional | Optional | Mandatory | |
postal_code | Mandatory | Mandatory | Mandatory | Optional |
post_office | Optional | |||
country_iso | Mandatory | Mandatory | Mandatory | Mandatory |
country | Mandatory | Mandatory | Mandatory | Mandatory |
formatted_address** | Mandatory | Mandatory | Mandatory | Mandatory |
** At least one must be present
*** Will always be returned in the data extraction, but is not mandatory when configuring an applicant profile