Working with Applications¶
An application is a container for documents. The container represents an application that contains one or more documents, additional metadata for the application itself, and details of how it was obtained, alongside application-level custom fields.
Request
POST {{server}}/VPE/dataAccess/retrieveDocumentContainer/
Content-Type: application/json
{
"DeviceId": "device-id",
"SessionId": "...",
"ContainerId": "..."
}
To obtain a list of all documents contained, use the Container.Documents
property of the Container model.
Response
{
"Success": true,
"Message": "Operation executed successfully.",
"AccessDenied": false,
"SessionExpired": false,
"Container": {
ApplicantPhotoImage: null,
ApplicationFlexibleFieldList: "...",
BranchId: "...",
BranchName: "...",
CreatedAt: "...",
DocumentStorageType: 7,
Documents: [],
Id: "...",
OrganisationId: "...",
OrganisationName: "...",
ReferralHistory: [],
ReferredAt: null,
ScannedByUser: "...",
UpdatedAt: "...",
UserId: "...",
VpeName: "..."
}
}
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// list of documents of the application...
console.log('Documents:');
for (var i = 0; i < application.Documents.length; i++) {
console.log(
'document:',
application.Documents[i].getDocumentTypeDisplay(),
application.Documents[i].getFullname()
)
}
});
This example authenticates against the TrustID Cloud, downloads the data for the specified application (based on the supplied ContainerId), and presents a list of documents that are part of the application.
To obtain a list of all contained documents, use the Container.Documents
property of the Class Container.
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// applicant name
console.log('applicant:', application.getApplicantName());
// first document with representative applicant information
var doc = application.getFirstKnownDocument();
console.log('applicant:', doc.getFullname());
});
The application itself does not necessarily maintain information about the applicant. This information is only available on a document level. However, it is often desirable to get some representative information about the application itself (based on one of the contained documents).
Accessing Documents (Javascript only)¶
An application contains a list of documents, accessed through the property Container.Documents
.
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// get document via identifier
var doc = application.getDocumentById(application.Documents[1].DocumentId);
console.log('second document:', doc);
});
Any particular document can be accessed by using its unique document identifier as shown here.
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// get document via identifier
if (application.hasMultipleDocuments()) {
var doc = application.getDocumentById(application.Documents[1].DocumentId);
var prev = application.getPrevDocument(doc);
var next = application.getNextDocument(doc);
console.log('previous document:', prev);
console.log('next document:', next);
}
});
This only ever returns a document that is actually contained within the application. Similarly, the next or previous document relative to any given document can be obtained as shown above.
Application-level Custom Fields¶
An application may store additional application-level custom fields. A custom field must be configured by the TrustID Cloud in order to become available. Further visibility of custom fields may be limited according to user privileges and the branch a user is associated with.
View all the application-level custom fields for an application as shown below:
Request
POST {{server}}/VPE/dataAccess/retrieveDocumentContainer/
Content-Type: application/json
{
"DeviceId": "device-id",
"SessionId": "...",
"ContainerId": "..."
}
Response
{
"Success": true,
"Message": "Operation executed successfully.",
"AccessDenied": false,
"CallbackId": null,
"Locked": false,
"SessionExpired": false,
"VpeUnreachable": false,
"Container": {
"ApplicationFlexibleFieldList": [
{
"m_Item1": {},
"m_Item2": {
"FieldValueDate": null,
"FieldValueDecimal": null,
"FieldValueInt": null,
"FieldValueString": "AndyCW",
"FlexibleFieldDataTypeIdDup": 1,
"FlexibleFieldDisplayNameDup": "Guest Email Address",
"FlexibleFieldId": "ad855392-7cd9-4b79-91be-6bb828969fbd",
"FlexibleFieldNameDup": "__SYS_GuestName",
"FlexibleFieldVersionId": "ad855392-7cd9-4b79-91be-6bb828969fbd",
"HelpTextDup": "Name of person sent a guest link.",
"MandatoryDup": false
}]
}
}
}
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// get document via identifier
if (application.hasFlexibleFields()) {
var fields = application.getFlexibleFields();
for (var i = 0; i < fields.length; i++) {
console.log(fields[i].getDisplayName(), fields[i].getDisplayValue());
}
}
});
For details, see the Container.getFlexibleFields()
method.
Document Container Validation List¶
The TrustID Cloud provides a list of validation for various aspects of a document container. A container validation usually represents a fact or an outcome of a validation process on the document data itself.
Container Validation List are designed to provide a comprehensive summary for different validation process that the TrustID Cloud carries out based on the information presented by the continer.
A number of different sets of validation are available; for example, Kyc Aml Check, Pep And Sanction Check.
The following example demonstrates how container validation can be enumerated and presented:
Request
POST {{server}}/VPE/dataAccess/retrieveDocumentContainer/
Content-Type: application/json
{
"DeviceId": "device-id",
"SessionId": "...",
"ContainerId": "..."
}
Response
{
"AccessDenied": false,
"Message": "Operation executed successfully.",
"SessionExpired": false,
"Success": true,
"Container":
{
"Documents": [{
"CreatedAt": "/Date(...)/",
"CustomFieldDictionary": [],
"CustomFieldKeys": [],
"DocumentFields": [],
"DocumentId": "...",
"DocumentContainerValidationList": [{
"ActionsText": null,
"DescriptionText": null,
"DetailedResult": "No Match",
"DisplayName": "Kyc Aml Check",
"DocumentContainerId": "...",
"Id": ...,
"InformationText": null,
"Name": "KycAmlCheck",
"OutcomeCommentText": null,
"RefFieldNames": null,
"ValidationOutcome": 4
},
{
"ActionsText": null,
"DescriptionText": null,
"DetailedResult": "Clear",
"DisplayName": "Pep And Sanction Check",
"DocumentContainerId": "...",
"Id": ...,
"InformationText": null,
"Name": "PepAndSanctionCheck",
"OutcomeCommentText": null,
"RefFieldNames": null,
"ValidationOutcome": 4
}]
}]
}
}
Notable properties are:
DocumentContainerValidation.Name
- the name or description of the fact or outcome that each validation represents, for example, whether the application has Pep and Sanction check clear.DocumentContainerValidation.DisplayName
- the human readable description of the fact or outcome thateach validation represents.
DocumentContainerValidation.DetailedResult
- represents result of the validation.DocumentContainerValidation.ValidationOutcome
- it defines the outcome options for a Document Container Validation. See also DocumentContainerValidationOutcome for possible results.
var api = new TVS.Api();
api.login('username', 'password').then(function() {
// retrieve document container for the given containerId(guid)...
return api.retrieveDocumentContainer(containerId);
}).then(function(application) {
// Document Container Validation List
for (var i = 0; i < application.DocumentContainerValidationList.length; i++) {
var validation = doc.DocumentContainerValidationList[i];
console.log(validation.Name, ': ', validation.DetailedResult);
}
});
Notable properties are:
DocumentContainerValidation.Name
- the name or description of the fact or outcome that each validation represents, for example, whether the application has Pep and Sanction check clear.DocumentContainerValidation.DisplayName
- the human readable description of the fact or outcome thateach validation represents.
DocumentContainerValidation.DetailedResult
- represents result of the validation.DocumentContainerValidation.ValidationOutcome
- it defines the outcome options for a Document Container Validation. See also DocumentContainerValidationOutcome for possible results.
See also
See the DocumentContainerValidation()
class reference for
more information about validation properties.