@tradle/models
Version:
models for tradle apps
244 lines (219 loc) • 6.07 kB
Plain Text
Currently:
Verifications don’t have provenance for how they were done, what went into the decision, etc. We have been planning for this for some time now, and finally is the time to model. Below is a sketch for an updated model
The gist:
1 verification model, multiple verification method models (visual, api-based, etc.)
A verification looks like this:
{
_t: 'tradle.Verification',
_s: '..signature of verifying party..',
verified: {
// properties that uniquely identify the object being verified,
// typically a form or document.
// (in the current model, this property is called “document”)
},
method: {
// non-top level verifications only
// this is where you specify what went into
// verifying the form/document/claim, e.g.
// an api call, or a face-to-face visual inspection
},
sources: [
// verifications sourced elsewhere, e.g. from the gov’t,
// from another FI, from the post office, etc.
// these verifications follow the same structure
// and may have sources of their own
]
}
Examples:
passport
UBS used au10tix and visual methods (snapshot + selfie), and sourced verifications from HSBC:
HSBC used IDScan and visual verification (snapshot + selfie), and sourced verifications from Barclays:
Barclays used KYC3 and visual verification (face-to-face in branch)
{
_t: 'tradle.Verification',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
sources: [
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
method: {
_t: 'tradle.APIBasedVerificationMethod',
api: {
_t: 'tradle.API'
name: 'au10tix',
provider: '..au10tix org link..'
},
// the “reference” field may have different
// properties depending on the API used
reference: {
queryId: '...',
...
}
},
sources: []
},
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
method: {
_t: 'tradle.VisualVerificationMethod',
documentPresence: 'snapshot',
ownerPresence: 'selfie'
},
sources: []
},
// ingested verification from HSBC
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
sources: [
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: 'jkdlsjfkldsfjklds',
permalink: '...'
},
method: {
_t: 'tradle.APIBasedVerificationMethod',
api: {
_t: 'tradle.API'
name: 'idscan',
provider: '..idscan org link..'
},
reference: {
queryId: '...'
}
},
sources: []
},
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
method: {
_t: 'tradle.VisualVerificationMethod',
documentPresence: 'snapshot',
ownerPresence: 'selfie'
},
sources: []
},
// HSBC-ingested verification from Barclays
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: '...',
permalink: '...'
},
sources: [
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: 'jkdlsjfkldsfjklds',
permalink: '...'
},
method: {
_t: 'tradle.APIBasedVerificationMethod',
api: {
_t: 'tradle.API'
name: 'kyc3',
provider: '..kyc3 org link..'
},
reference: {
queryId: '...'
}
},
sources: []
},
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Passport',
link: 'jkdlsjfkldsfjklds',
permalink: '...'
},
method: {
_t: 'tradle.VisualVerificationMethod',
documentPresence: 'physical',
ownerPresence: 'physical'
},
sources: []
}
]
}
]
}
]
}
address verification
UBS verified the customer's claimed address (tradle.Address) by sourcing verifications from the gov't office (tradle.GuaranteeFromAuthority) and from Barclays:
Barclays used visual verification (face-to-face in branch) of the customer's utility bill:
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Address',
link: '...',
permalink: '...'
},
sources: [
// verification from gov't office
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.Address',
link: '...',
permalink: '...'
},
method: {
_t: 'tradle.GuaranteeFromAuthority'
}
},
// verification from Barclays
{
_t: 'tradle.Verification',
timestamp: '...',
document: {
type: 'tradle.UtilityBill',
link: '...',
permalink: '...'
},
method: {
_t: 'tradle.VisualVerificationMethod',
documentPresence: 'physical',
ownerPresence: 'physical'
},
sources: []
}
]
}