Checks results

AI Tools

Session retrieval requires a session ID, this is generated from the create a session endpoint. Below is a basic example of what retrieving a session looks like:

// Returns a session result
idvClient.getSession(sessionId).then(session => {
const sessionId = session.getSessionId();
const clientSessionTokenTtl = session.getClientSessionTokenTtl();
const clientSessionToken = session.getClientSessionToken();
const userTrackingId = session.getUserTrackingId();
// Returns the session state
const state = session.getState();
// Returns session resources
const resources = session.getResources();

// Returns all checks on the session
const checks = session.getChecks();

// Return specific check types
const authenticityChecks = session.getAuthenticityChecks();
const faceMatchChecks = session.getFaceMatchChecks();
const textDataChecks = session.getTextDataChecks();
const livenessChecks = session.getLivenessChecks();
// Returns a session result
GetSessionResult sessionResult = docScanClient.getSession(sessionId);

Long clientSessionTokenttl = sessionResult.getClientSessionTokenTtl();
String clientSessionToken = sessionResult.getClientSessionToken();
String userTrackingId = sessionResult.getUserTrackingId();

// Returns the session state
String state = sessionResult.getState();

// Returns session resources
ResourceContainer resources = sessionResult.getResources();

// Returns all checks on the session
List<? extends CheckResponse> checks = sessionResult.getChecks();

// Return specific check types
List<AuthenticityCheckResponse> authenticityChecks = sessionResult.getAuthenticityChecks();
List<FaceMatchCheckResponse> faceMatchChecks = sessionResult.getFaceMatchChecks();
List<TextDataCheckResponse> textDataChecks = sessionResult.getTextDataChecks();
<?php
// Returns a session result
$sessionResult = $docScanClient->getSession($sessionId);

$sessionId = $sessionResult->getSessionId();
$userTrackingId = $sessionResult->getUserTrackingId();
$clientSessionToken = $sessionResult->getClientSessionToken();
$clientSessionTokenTtl = $sessionResult->getClientSessionTokenTtl();

// Returns the session state
$state = $sessionResult->getState();

// Returns session resources
$resources = $sessionResult->getResources();

// Returns all checks on the session
$checks = $sessionResult->getChecks();

// Return specific check types
$authenticityChecks = $sessionResult->getAuthenticityChecks();
$faceMatchChecks = $sessionResult->getFaceMatchChecks();
$textDataChecks = $sessionResult->getTextDataChecks();
# Returns a session result
session_result = doc_scan_client.get_session(session_id)

client_session_token_ttl = session_result.client_session_token_ttl
client_session_token = session_result.client_session_token
user_tracking_id = session_result.user_tracking_id

# Returns the session state
state = session_result.state

# Returns session resources
resources = session_result.resources

# Returns all checks on the session
checks = session_result.checks

# Return specific check types
authenticity_checks = session_result.authenticity_checks
face_match_checks = session_result.face_match_checks
text_data_checks = session_result.text_data_checks
liveness_checks = session_result.liveness_checks

# Returns biometric consent timestamp
// Returns a session result
GetSessionResult sessionResult = docScanClient.GetSession(sessionId);

int clientSessionTokenTtl = sessionResult.ClientSessionTokenTtl;
string clientSessionToken = sessionResult.ClientSessionToken;
string user_tracking_id = sessionResult.UserTrackingId;

// Returns the session state
string state = sessionResult.State;

// Returns session resources
ResourceContainer resources = sessionResult.Resources;

// Returns all checks on the session
List<CheckResponse> checks = sessionResult.Checks;

// Return specific check types
List<AuthenticityCheckResponse> authenticityChecks = sessionResult.GetAuthenticityChecks();
List<FaceMatchCheckResponse> faceMatchChecks = sessionResult.GetFaceMatchChecks();
List<TextDataCheckResponse> textDataChecks = sessionResult.GetTextDataChecks();
var sessionResults *retrieve.GetSessionResult
sessionResults, err = client.GetSession(sessionId)
if err != nil {
panic(err)
}

clientSessionTokenTtl := sessionResults.ClientSessionTokenTTL

clientSessionToken := sessionResults.ClientSessionToken

userTrackingId := sessionResults.UserTrackingID

state := sessionResults.State

resources := sessionResults.Resources

checks := sessionResults.Checks

authenticityChecks := sessionResults.AuthenticityChecks
faceMatchChecks := sessionResults.FaceMatchChecks
textDataChecks := sessionResults.TextDataChecks
livenessChecks := sessionResults.LivenessChecks
watchlistScreeningChecks := sessionResults.WatchlistScreeningChecks
watchlistAdvancedCaChecks := sessionResults.WatchlistAdvancedCaChecks
{…}

The following are present in every session result:

Parameter

Value

Description

Session ID

uuid

Unique identifier for a identity verification session.

Client session token

uuid

Unique identifier, Used to authenticate the session.

Client session token ttl

integer

Returns the time left in seconds until the the session expires.

User tracking ID

uuid

The user ID you set in your backend.

State

ONGOING COMPLETED EXPIRED

The current state of the session. It provides the overall state of the session. You can search through session results prior to the session being completed, but some checks may not have been processed yet.

Resources

Object

A container of all ID documents and liveness captures for this session. A new resource is created on each attempt at a document or liveness submission.

Checks

Object

A container of all checks performed for this session.


Results of checks

Basic examples of how to get the results of each check can be found below.

A recommendation reason will only be provided if the value isn't 'APPROVE'. The recommended approach for processing a session is to ensure that each check value is APPROVE.

We will use the check container to iterate through all of the checks that have been completed as part of the session. The checks object will only contain information once the user has completed all events in the session.

Document Authenticity

The document authenticity check can be fully automated or have a manual check. This can alter the sub checks that have been performed.

idvClient.getSession(sessionId).then(session => {
// Returns a collection of authenticity checks
const authenticityChecks = session.getAuthenticityChecks();
authenticityChecks.map(check => {
// Returns the id of the check
const id = check.getId();

// Returns the state of the check
const state = check.getState();

// Returns an array of resources used in the check
const resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
const report = check.getReport();
// Returns the recommendation value
const recommendation = report.getRecommendation().getValue();

// Returns the report breakdown including sub-checks
GetSessionResult sessionResult = docScanClient.getSession(sessionId);

// Returns a collection of authenticity checks
List<? extends CheckResponse> authenticityChecks = sessionResult.getAuthenticityChecks();

for (CheckResponse check: authenticityChecks) {
// Returns the id of the check
String id = check.getId();
// Returns the state of the check
String state = check.getState();
// Returns a list of resources used in the check
List<String> resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
ReportResponse report = check.getReport();

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
String recommendationValue = report.getRecommendation().getValue();
<?php
$sessionResult = $docScanClient->getSession($sessionId);

// Returns a collection of authenticity checks
$authenticityChecks = $sessionResult->getAuthenticityChecks();

foreach($authenticityChecks as $check) {
// Returns the id of the check
$id = $check->getId();

// Returns the state of the check
$state = $check->getState();

// Returns an array of resources used in the check
$resourcesUsed = $check->getResourcesUsed();

// Returns the report for the check
$report = $check->getReport();

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
$recommendationValue = $report->getRecommendation()->getValue();

// Returns the report breakdown including sub-checks
session_result = doc_scan_client.get_session(session_id)

# Returns a collection of checks
checks = session_result.authenticity_checks

for check in checks:
# Returns the id of the check
check_id = check.id

# Returns the state of the check
check_state = check.state

# Returns an array of resources used in this check
resources_used = check.resources_used

# Returns tje report for the check
report = check.report

# Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
recommendation_value = report.recommendation.value

# Returns the report breakdown including sub-checks
breakdown = report.breakdown
for breakdown in breakdown:
GetSessionResult sessionResult = docScanClient.GetSession(sessionId);

// Returns a collection of checks
List<CheckResponse> authenticityChecks = sessionResult.GetAuthenticityChecks();

foreach (CheckResponse check in authenticityChecks)
{
// Returns the id of the check
string id = check.Id;

// Returns the state of the check
string state = check.State;

// Returns an array of resources used in this check
List<String> resourcesUsed = check.ResourcesUsed;

// Returns the report for the check
ReportResponse report = check.Report;

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
string recommendationValue = report.Recommendation.Value;

// Returns the report breakdown including sub-checks
// COMING SOON
{…},

Liveness

The liveness response is available immediately. The user may have multiple attempts of liveness and It's possible for some of these attempts to be rejected.

// change to async
idvClient.getSession(sessionId).then(session => {
// Returns a collection of liveness checks
const livenessChecks = session.getLivenessChecks();
livenessChecks.map(check => {
// Returns the id of the check
const id = check.getId();

// Returns the state of the check
const state = check.getState();

// Returns an array of resources used in the check
const resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
const report = check.getReport();
// Returns the recommendation value
const recommendation = report.getRecommendation().getValue();

// Returns the report breakdown including sub-checks
GetSessionResult sessionResult = docScanClient.getSession(sessionId);

// Returns a collection of liveness checks
List<? extends CheckResponse> livenessChecks = sessionResult.getLivenessChecks();

for (CheckResponse check: livenessChecks) {
// Returns the id of the check
String id = check.getId();
// Returns the state of the check
String state = check.getState();
// Returns a list of resources used in the check
List<String> resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
ReportResponse report = check.getReport();

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
String recommendationValue = report.getRecommendation().getValue();
<?php
$sessionResult = $docScanClient->getSession($sessionId);

// Returns a collection of liveness checks
$livenessChecks = $sessionResult->getLivenessChecks();

foreach($livenessChecks as $check) {
// Returns the id of the check
$id = $check->getId();

// Returns the state of the check
$state = $check->getState();

// Returns an array of resources used in the check
$resourcesUsed = $check->getResourcesUsed();

// Returns the report for the check
$report = $check->getReport();

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
$recommendationValue = $report->getRecommendation()->getValue();

// Returns the report breakdown including sub-checks
session_result = doc_scan_client.get_session(session_id)

# Returns a collection of checks
checks = session_result.liveness_checks

for check in checks:
# Returns the id of the check
check_id = check.id

# Returns the state of the check
check_state = check.state

# Returns an array of resources used in this check
resources_used = check.resources_used

# Returns tje report for the check
report = check.report

# Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
recommendation_value = report.recommendation.value

# Returns the report breakdown including sub-checks
breakdown = report.breakdown
for breakdown in breakdown:
// change to async
idvClient.getSession(sessionId).then(session => {
// Returns a collection of liveness checks
const livenessChecks = session.getLivenessChecks();
livenessChecks.map(check => {
// Returns the id of the check
const id = check.getId();

// Returns the state of the check
const state = check.getState();

// Returns an array of resources used in the check
const resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
const report = check.getReport();
// Returns the recommendation value
const recommendation = report.getRecommendation().getValue();

// Returns the report breakdown including sub-checks
// COMING SOON
{
"type": "LIVENESS",
"id": "44863d82-1004-411b-af7a-1c873b0f46ed",
"state": "DONE",
"resources_used": [
"135ba24b-8900-4307-984a-88e6fbe244a1"
],
"generated_media": [],
"report": {
"recommendation": {
"value": "APPROVE"
},
"breakdown": [
{
"sub_check": "liveness_auth",
"result": "PASS",
"details": [],
"process": "AUTOMATED"
}
]
},
"created": "2026-08-06T08:37:59Z",
"last_updated": "2026-08-06T08:38:01Z"

Face Match

The face match check can be fully automated or have a manual check. This can alter the sub checks that have been performed.

idvClient.getSession(sessionId).then(session => {
// Returns a collection of liveness checks
const faceMatchChecks = session.getFaceMatchChecks();
faceMatchChecks.map(check => {
// Returns the id of the check
const id = check.getId();

// Returns the state of the check
const state = check.getState();

// Returns an array of resources used in the check
const resourcesUsed = check.getResourcesUsed();

// Returns the report for the check
const report = check.getReport();
// Returns the recommendation value
const recommendation = report.getRecommendation().getValue();
})
}).catch(error => {
// handle error
// Click to edit code
// Click to edit code
// Click to edit code
GetSessionResult sessionResult = docScanClient.GetSession(sessionId);

// Returns a collection of checks
List<CheckResponse> faceMatchChecks = sessionResult.GettFaceMatchChecks();

foreach (CheckResponse check in faceMatchChecks)
{
// Returns the id of the check
string id = check.Id;

// Returns the state of the check
string state = check.State;

// Returns an array of resources used in this check
List<String> resourcesUsed = check.ResourcesUsed;

// Returns the report for the check
ReportResponse report = check.Report;

// Returns the recommendation value, either APPROVE, NOT_AVAILABLE or REJECT
string recommendationValue = report.Recommendation.Value;
}
// COMING SOON
{
"type": "ID_DOCUMENT_FACE_MATCH",
"id": "42fe90c9-ad05-42d1-b441-ad4e22726af9",
"state": "DONE",
"resources_used": [
"4425510e-2e01-48f1-8049-ce2efd5a7912",
"135ba24b-8900-4307-984a-88e6fbe244a1"
],
"generated_media": [],
"report": {
"recommendation": {
"value": "APPROVE"
},
"breakdown": [
{
"sub_check": "ai_face_match",
"result": "PASS",
"details": [
{
"name": "confidence_score",
"value": "0.80"

AML

There are two different types of AML checks that can be configured, In addition to the normal check report, AML watchlist checks will also return a WatchlistSummary object.

Watchlist Check:

const watchlistScreeningChecks = session.getWatchlistScreeningChecks();
const report = watchlistScreeningChecks[0].getReport();

// Watchlist Screening summary
const watchlistSummary = report.getWatchlistSummary();
const associatedCountryCodes = watchlistSummary.getAssociatedCountryCodes();
const rawResults = watchlistSummary.getRawResults();
const totalHits = watchlistSummary.getTotalHits();

// Search config used
const searchConfig = watchlistSummary.getSearchConfig();
const categories = searchConfig.getCategories();
List<WatchlistScreeningCheckResponse> watchlistScreeningChecks = getSessionResult.getWatchlistScreeningChecks();
WatchlistScreeningCheckResponse watchlistScreeningCheckResponse = watchlistScreeningChecks.get(0);
WatchlistScreeningReportResponse report = watchlistScreeningCheckResponse.getReport();

// Watchlist Screening summary
WatchlistScreeningSummaryResponse watchlistSummary = report.getWatchlistSummary();
List<String> associatedCountryCodes = watchlistSummary.getAssociatedCountryCodes();
RawResultsResponse rawResults = watchlistSummary.getRawResults();
int totalHits = watchlistSummary.getTotalHits();

// Search config used
WatchlistScreeningSearchConfigResponse searchConfig = watchlistSummary.getSearchConfig();
List<String> categories = searchConfig.getCategories();
$watchlistScreeningChecks = $session->getWatchlistScreeningChecks();
$report = $watchlistScreeningChecks[0]->getReport();

// Watchlist Screening summary
$watchlistSummary = $report->getWatchlistSummary();
$associatedCountryCodes = $watchlistSummary->getAssociatedCountryCodes();
$rawResults = $watchlistSummary->getRawResults();
$totalHits = $watchlistSummary->getTotalHits();

// Search config used
$searchConfig = $watchlistSummary->getSearchConfig();
$categories = $searchConfig->getCategories();
# COMING SOON
GetSessionResult getSessionResult = docScanClient.GetSession(sessionId);

List<WatchlistScreeningCheckResponse> watchlistScreeningChecks = getSessionResult.GetWatchlistScreeningChecks();
ReportResponse reportResponse = watchlistScreeningChecks[0].Report;

ReportResponseWithSummary reportResponseWithSummary = (ReportResponseWithSummary)reportResponse;
string recommendationValue = reportResponseWithSummary.Recommendation.Value;
string recommendationReason = reportResponseWithSummary.Recommendation.Reason;
List<BreakdownResponse> breakdowns = reportResponseWithSummary.Breakdown;
// COMING SOON
{
"type": "WATCHLIST_SCREENING",
"id": "9f89499a-d788-4306-9eb7-d9f8d7c8569b",
"state": "DONE",
"resources_used": [
"4425510e-2e01-48f1-8049-ce2efd5a7912"
],
"generated_media": [
{
"id": "56936993-0d13-4c8c-bf49-3102be6925a8",
"type": "JSON"
}
],
"report": {
"recommendation": {
"value": "APPROVE"
},
"breakdown": [
{
"sub_check": "adverse_media",
"result": "PASS",
"details": [],
"process": "AUTOMATED"

Advanced Watchlist Check:

const watchlistAdvancedCaChecks = session.getWatchlistAdvancedCaChecks();
const report = watchlistScreeningChecks[0].getReport();
// Watchlist summary
const watchlistSummary = report.getWatchlistSummary();
const associatedCountryCodes = watchlistSummary.getAssociatedCountryCodes();
const rawResults = watchlistSummary.getRawResults();
const totalHits = watchlistSummary.getTotalHits();
// Search config
const searchConfig = watchlistSummary.getSearchConfig();
const removeDeceased = searchConfig.isRemoveDeceased();
const shareUrl = searchConfig.isShareUrl();
const sources = searchConfig.getSources();
const matchingStrategy = searchConfig.getMatchingStrategy();
List<WatchlistAdvancedCaCheckResponse> watchlistAdvancedCaChecks = getSessionResult.getWatchlistAdvancedCaChecks();
WatchlistAdvancedCaCheckResponse watchlistAdvancedCaCheckResponse = watchlistAdvancedCaChecks.get(0);
WatchlistAdvancedCaReportResponse report = watchlistAdvancedCaCheckResponse.getReport();
// Watchlist summary
WatchlistAdvancedCaSummaryResponse watchlistSummary = report.getWatchlistSummary();
List<String> associatedCountryCodes = watchlistSummary.getAssociatedCountryCodes();
RawResultsResponse rawResults = watchlistSummary.getRawResults();
int totalHits = watchlistSummary.getTotalHits();
// Search config
WatchlistAdvancedCaSearchConfigResponse searchConfig = watchlistSummary.getSearchConfig();
boolean removeDeceased = searchConfig.isRemoveDeceased();
boolean shareUrl = searchConfig.isShareUrl();
$watchlistAdvancedCaChecks = $session->getWatchlistAdvancedCaChecks();
$report = $watchlistScreeningChecks[0]->getReport();

// Watchlist Screening summary
$watchlistSummary = $report->getWatchlistSummary();
$associatedCountryCodes = $watchlistSummary->getAssociatedCountryCodes();
$rawResults = $watchlistSummary->getRawResults();
$totalHits = $watchlistSummary->getTotalHits();

// Search config used
$searchConfig = $watchlistSummary->getSearchConfig();
$removeDeceased = $searchConfig->isRemoveDeceased();
$shareUrl = $searchConfig->isShareUrl();
$sources = $searchConfig->getSources();
$matchingStrategy = $searchConfig->getMatchingStrategy();
# COMING SOON
GetSessionResult getSessionResult = docScanClient.GetSession(sessionId);

List<WatchlistAdvancedCaCheckResponse> advancedWatchlistScreeningChecks = getSessionResult.GetWatchlistAdvancedCaChecks();
ReportResponse reportResponse = advancedWatchlistScreeningChecks[0].Report;

ReportResponseWithSummary reportResponseWithSummary = (ReportResponseWithSummary)reportResponse;
string recommendationValue = reportResponseWithSummary.Recommendation.Value;
string recommendationReason = reportResponseWithSummary.Recommendation.Reason;
List<BreakdownResponse> breakdowns = reportResponseWithSummary.Breakdown;
// COMING SOON
{
"checks": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "WATCHLIST_ADVANCED_CA",
"state": "CREATED",
"resources_used": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"generated_media": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "JSON"
}
],
"generated_profile": {
"media": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "JSON",
"created": "2021-06-11T11:39:24Z",
"last_updated": "2021-06-11T11:39:24Z"
}
},
"report": {
"recommendation": {
"value": "APPROVE"

AML raw

You have the ability to extract the raw results from the comply advantage API, as well as a link to a comply advantage page displaying the hits (if any) by using the raw_results media ID.

idvClient.getMediaContent(sessionId, rawResultsId).then(media => {
const content = media.getContent();
const buffer = content.toBuffer();
const jsonData = JSON.parse(buffer);
}).catch(error => {
console.log(error)
// handle error
})
Media media = docScanClient.getMediaContent(sessionId, rawResultsId);
<?php
$media = $docScanClient->getMediaContent($sessionId, $rawResultsId);
$data = json_decode($media->getContent());
// COMING SOON
WatchlistSummary watchlistSummary = reportResponseWithSummary.WatchlistSummary;
string rawResultsId = watchlistSummary.RawResults.Media.Id;

MediaValue media = docScanClient.GetMediaContent(sessionId, rawResultsId);
[
{
"provider": "Comply Advantage",
"search_types": [
"sanction",
"warning",
"fitness-probity",
"pep",
"adverse-media"
],
"search_id": "616943686",
"search_ref": "1629902969-04sjnJ47",
"url": "",
"raw_output": "base64_encoded_string"
}
]

Field

Description

provider

The third party provider used for our AML check.

search_types

The watchlist types that are searched against in the session.

search_id

Unique id related to the AML search conducted.

search_ref

Unique reference id related to the AML search conducted.

url

A public URL that will display the results of the search that can be reviewed.

raw_output

The JSON payload returned from our AML provider, It is base64 encode so will need to be decoded to access the JSON.


Reports of checks

Below are examples to get the report recommendation and breakdown for each session check.

// Get the report recommendation
reportRecommendation = report.getRecommendation();
// Get the report recommendation value
reportRecommendationValue = reportRecommendation.getValue();

// Get the report recommendation reason
reportRecommendationReason = reportRecommendation.getReason();

//Get the report recommendation recovery suggestion
reportRecommendationRecoverySuggestion = reportRecommendation.getRecoverySuggestion();

reportBreakdown = report.getBreakdown();
// Get result of each sub check from breakdown

reportBreakdown.forEach((breakdown) => {
// Get the report breakdown sub check
subcheck = breakdown.getSubCheck();

// Get the report breakdown result
result = breakdown.getResult();

// Get the report breakdown details
// Get the report recommendation
RecommendationResponse reportRecommendation = report.getRecommendation();

// Get the report recommendation value
String reportRecommendationValue = reportRecommendation.getValue();

// Get the report recommendation reason
String reportRecommendationReason = reportRecommendation.getReason();

// Get the report recommendation recovery suggestion
String reportRecommendationRecoverySuggestion = reportRecommendation.getRecoverySuggestion();

List<? extends BreakdownResponse> reportBreakdown = report.getBreakdown();

// Get result of each sub check from breakdown
for (BreakdownResponse breakdown : reportBreakdown) {
// Get the report breakdown sub check
String subcheck = breakdown.getSubCheck();
// Get the report breakdown result
<?php
// Get the report recommendation
$reportRecommendation = $report->getRecommendation();
// Get the report recommendation value
$reportRecommendationValue = $reportRecommendation->getValue();

// Get the report recommendation reason
$reportRecommendationReason = $reportRecommendation->getReason();

//Get the report recommendation recovery suggestion
$reportRecommendationRecoverySuggestion = $reportRecommendation->getRecoverySuggestion();

$reportBreakdown = $report->getBreakdown();
// Get result of each sub check from breakdown
foreach ($reportBreakdown as $breakdown) {

// Get the report breakdown sub check
$subcheck = $breakdown->getSubCheck();
// Get the report breakdown result
$result = $breakdown->getResult();
# Returns report recommendation
report_recommendation = report.recommendation

# Returns report recommendation value
report_recommendation_value = report_recommendation.value

# Returns report recommendation reason
report_recommendation_reason = report_recommendation.reason

# Returns report recommendation recovery suggestion
report_recommendation_recovery_suggestion = report_recommendation.recovery_suggestion

# Returns report breakdown
report_breakdown = report.breakdown

# Return result of each sub check from breakdown
for breakdown in report_breakdown:
# Returns report breakdown sub check
subcheck = breakdown.sub_check

# Returns report breakdown result
result = breakdown.result
// Returns the report recommendation
RecommendationResponse reportRecommendation = report.Recommendation;

// Returns the report recommendation value
String reportRecommendationValue = reportRecommendation.Value;

// Returns the report recommendation reason
String reportRecommendationReason = reportRecommendation.Reason;

// Returns the report recommendation recovery suggestion
String reportRecommendationRecoverySuggestion = reportRecommendation.RecoverySuggestion;

List <BreakdownResponse> reportBreakdown = report.Breakdown;

// Returns result of each sub check from breakdown
foreach (BreakdownResponse breakdown in reportBreakdown)
{
// Returns the report breakdown sub check
String subcheck = breakdown.SubCheck;

// Returns the report breakdown result

Object

Response

Description

Report recommendation

N/A

A recommendation value, and recovery suggestion.

Report recommendation value

e.g. REJECT

Returns only the recommendation value.

Report recommendation reason

e.g. PHOTO_TOO_BLURRY

Returns only the reason of the value. If approved the value will be null.

Report recommendation recovery suggestion

N/A

Returns only the recovery suggestion. If approved the value will be null.

Report breakdown

N/A

A breakdown report on the session that has been completed including, sub-checks, results and details.

Report breakdown sub check

e.g. data_in_correct_position

The completed sub-check.

Report breakdown result

e.g PASS

The result of the sub-check completed.

Report breakdown details

N/A

Extra information on the check if relevant.

Report breakdown process

EXPERT_REVIEW, AUTOMATED

Indicates whether the sub-check was completed through automation or by a human reviewer.