Person screening
1. Register Person
Start with Register person to add a person you wish to screen the watchlists for and get potential matches. The field personReferenceId
should be set to a unique ID from your system, for
example the Database ID for the person you are registering.
Pliance uses the field identity.country
for resolving the watchlist used when screening.
- Node.js
- Python
- Java
- .Net
let request: RegisterPersonCommand {
identity: {
country = "us",
},
personReferenceId: "person-123",
firstName: "John F.",
lastName: "Kennedy"
};
let response = await client.registerPerson(request);
request = {
"identity": {
"country": "us"
},
"personReferenceId": "person-123",
"firstName": "John F.",
"lastName": "Kennedy"
}
response = client.register_person(request)
PersonIdentity identity = new PersonIdentity();
identity.country = "us";
RegisterPersonCommand request = new RegisterPersonCommand();
request.identity = identity;
request.personReferenceId = "person-123";
request.firstName = "John F.";
request.lastName = "Kennedy";
RegisterPersonResponse response = client.registerPerson(request);
var request = new RegisterPersonCommand
{
Identity = new PersonIdentity
{
Country = "us",
},
PersonReferenceId = "person-123",
FirstName = "John F.",
LastName = "Kennedy",
};
var response = await client.RegisterPerson(request);
See Search Options for more information about possible options to modifying the search algorithm.
To comply to the GDPR regulations PersonalReferenceId
should not contain data that is defined as Personal Data.
Response
{
"data": {
"personReferenceId": "person-123",
"identity": {
"identity": null,
"country": "us"
},
"firstName": "John F.",
"lastName": "Kennedy",
"birthdate": "????-??-??",
"addresses": [],
"hits": [
[
{
"aliasId": "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81",
"referenceId": "person-123",
"matchedFirstName": [
{
"text": "John",
"isMatch": true
},
{
"text": " ",
"isMatch": false
},
{
"text": "F",
"isMatch": true
},
{
"text": ".",
"isMatch": false
}
],
"matchedLastName": [
{
"text": "Kennedy",
"isMatch": true
}
],
"isSanction": false,
"isPep": true,
"isRca": false,
"isSip": false,
"firstName": "John F.",
"lastName": "Kennedy",
"matchId": "7116f1a85030f2ed16d5d53224d772b9",
"classification": "Unknown",
"score": 1.0
}
]
],
"gender": "Unknown",
"archived": false,
"isPep": true,
"isRca": false,
"isSanction": false,
"birth": null,
"highRiskCountry": false,
"lastChanged": {
"timestampUtc": "2022-01-04T21:03:53.908646Z",
"checkpoint": "560ce33bf9637738575d7814d98ba71d39358f1816be97a296f89502706a6960"
},
"isSip": false
},
"status": "Success",
"success": true,
"message": null,
"checkpoint": "560ce33bf9637738575d7814d98ba71d39358f1816be97a296f89502706a6960"
}
We got a PEP Match
With the example we submitted, we can see the person has been matched with a PEP. The Watchlist endpoint can then be queried for further information about the matches. To decide whether the match was a true match or a false positive.
- Node.js
- Python
- Java
- .Net
let request: WatchlistQuery_v2 = {
matchId: "7116f1a85030f2ed16d5d53224d772b9",
personReferenceId: "person-123"
};
let response = await client.watchlistPersonV2(request);
request = {
"matchId": "7116f1a85030f2ed16d5d53224d772b9",
"personReferenceId": "person-123"
}
response = client.watchlist_person_v2(request)
WatchlistQuery_v2 request = new WatchlistQuery_v2();
request.matchId = "7116f1a85030f2ed16d5d53224d772b9";
request.personReferenceId = "person-123";
WatchlistQueryResultV2 response = client.watchlistPersonV2(request);
var request = new WatchlistQuery_v2
{
MatchId = "7116f1a85030f2ed16d5d53224d772b9",
PersonReferenceId = "person-123",
};
var response = await client.WatchlistPersonV2(request);
Response
{
"data": {
"listId": "list-id",
"nationalIdentificationNumber": null,
"names": [
{
"firstName": "John Fitzgerald",
"lastName": "Kennedy",
"selectedFirstName": [
{
"text": "John",
"isMatch": true
},
{
"text": " ",
"isMatch": false
},
{
"text": "Fitzgerald",
"isMatch": false
}
],
"selectedLastName": [
{
"text": "Kennedy",
"isMatch": true
}
],
"type": "Primary Name"
},
{
"firstName": "Jack",
"lastName": "Kennedy",
"selectedFirstName": [
{
"text": "Jack",
"isMatch": false
}
],
"selectedLastName": [
{
"text": "Kennedy",
"isMatch": true
}
],
"type": "Also Known As"
}
],
"birthdates": [
{
"circa": false,
"year": 1917,
"month": 5,
"day": 29,
"fromYear": 0,
"toYear": 0,
"type": "Date"
}
],
"addresses": [],
"countries": [
"us"
],
"isPep": true,
"isRca": false,
"isSanction": false,
"nationalities": [
"us"
],
"images": [
"https://images.pliance.io/?url=http%3a%2f%2fimg.timeinc.net%2ftime%2fpoy2000%2fimages%2fjfk.jpg",
"https://images.pliance.io/?url=http%3a%2f%2fbioguide.congress.gov%2fbioguide%2fphoto%2fK%2fK000107.jpg",
"https://images.pliance.io/?url=https%3a%2f%2fmedia1.britannica.com%2feb-media%2f99%2f1899-004-5293D7E2.jpg",
"https://images.pliance.io/?url=https%3a%2f%2fwww.whitehouse.gov%2fsites%2fwhitehouse.gov%2ffiles%2fimages%2ffirst-family%2f35_john_f_kennedy.jpg",
"https://images.pliance.io/?url=http%3a%2f%2fnstarzone.com%2fkennedy2.jpg"
],
"roles": [
{
"description": "President of the United States",
"isActive": false,
"sinceYear": "1961",
"sinceMonth": "Jan",
"sinceDay": "20",
"toYear": "1963",
"toMonth": "Nov",
"toDay": "22"
}
],
"relations": [
{
"firstName": "Jacqueline Lee",
"lastName": "Kennedy Onassis",
"relationPersonId": "DowJones-602367",
"isPep": false,
"isRca": true,
"isSanction": false,
"relationType": "1",
"isSip": false
}
],
"gender": "Male",
"lists": [],
"active": false,
"deceased": true,
"isSip": false,
"watchlistSource": {
"filename": "202205102330.xml",
"updatedAt": "2022-05-11T02:02:24.5246594Z",
"source": ""
},
"sources": [
"Montreal Gazette, 2-May-2006, on Factiva.com (https://global.factiva.com/redir/default.aspx?P=sa&AN=MTLG000020060502e2520001q&cat=a&ep=ASE)"
],
"notes": []
},
"status": "Success",
"success": true,
"message": null,
"checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}
We can then Classify this match.
- Node.js
- Python
- Java
- .Net
let request: ClassifyPersonHitCommand = {
personReferenceId: "person-123",
matchId: "7116f1a85030f2ed16d5d53224d772b9",
aliasId: "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81",
classification: ClassificationType.FalsePositive
};
let response = await client.classifyPersonHit(request);
request = {
"personReferenceId": "person-123",
"matchId": "7116f1a85030f2ed16d5d53224d772b9",
"aliasId": "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81",
"classification": "FalsePositive"
}
response = client.classify_person_hit(request)
ClassifyPersonHitCommand request = new ClassifyPersonHitCommand();
request.personReferenceId = "person-123";
request.matchId = "7116f1a85030f2ed16d5d53224d772b9";
request.aliasId = "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81";
request.classification = ClassificationType.FalsePositive;
ClassifyPersonHitResponse response = client.classifyPersonHit(request);
var request = new ClassifyPersonHitCommand
{
PersonReferenceId = "person-123",
MatchId = "7116f1a85030f2ed16d5d53224d772b9",
AliasId = "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81",
Classification = ClassificationType.FalsePositive,
};
var response = await client.ClassifyPersonHit(request);
2. Monitoring status changes
Pliance will monitor the person for any PEP and Sanction status changes. To keep your system updated on these changes you have the following options.
Using view person
- Node.js
- Python
- Java
- .Net
let request: ViewPersonQuery = {
personReferenceId: "person-123"
};
let response = await client.viewPerson(request);
request = {
"personReferenceId": "person-123"
}
response = client.view_person(request)
ViewPersonQuery request = new ViewPersonQuery();
request.personReferenceId = "person-123";
ViewPersonQueryResult response = client.viewPerson(request);
var request = new ViewPersonQuery
{
PersonReferenceId = "person-123",
};
var response = await client.ViewPerson(request);
Response
{
"data": {
"personReferenceId": "person-123",
"identity": {
"identity": null,
"country": "us"
},
"firstName": "John F.",
"lastName": "Kennedy",
"birthdate": "????-??-??",
"addresses": [],
"hits": [
[
{
"aliasId": "5e9642c5f7b00dcebc42098008fde48e28d7e30962d8b128f9a3bd7dab080b81",
"referenceId": "person-123",
"matchedFirstName": [
{
"text": "John",
"isMatch": true
},
{
"text": " ",
"isMatch": false
},
{
"text": "F",
"isMatch": true
},
{
"text": ".",
"isMatch": false
}
],
"matchedLastName": [
{
"text": "Kennedy",
"isMatch": true
}
],
"isSanction": false,
"isPep": true,
"isRca": false,
"isSip": false,
"firstName": "John F.",
"lastName": "Kennedy",
"matchId": "7116f1a85030f2ed16d5d53224d772b9",
"classification": "FalsePositive",
"score": 1.0
}
]
],
"gender": "Unknown",
"archived": false,
"isPep": false,
"isRca": false,
"isSanction": false,
"birth": null,
"highRiskCountry": false,
"lastChanged": {
"timestampUtc": "2022-01-04T21:03:54.099258Z",
"checkpoint": "bde1583db33032005e9048780368c7b4af27e3dce02551d0b868f6ecb0c89b1a"
},
"isSip": false
},
"status": "Success",
"success": true,
"message": null,
"checkpoint": "bde1583db33032005e9048780368c7b4af27e3dce02551d0b868f6ecb0c89b1a"
}
Using Search
You can also search for all persons with unclassified matches, to get all the matches that haven't yet been classified.
- Node.js
- Python
- Java
- .Net
let request: PersonSearchQuery = {
filter: {
isUnclassified: true
}
};
let response = await client.searchPerson(request);
request = {
"filter": {
"isUnclassified": True
}
}
response = client.search_person(request)
PersonSearchQuery request = new PersonSearchQuery();
request.filter = new PersonFilter();
request.filter.isUnclassified = true;
PersonSearchQueryResult response = client.searchPerson(request);
var request = new PersonSearchQuery
{
Filter = new PersonFilter
{
IsUnclassified = true,
}
};
var response = await client.SearchPerson(request);
Response
{
"data": {
"result": [
{
"personReferenceId": "person-123",
"firstName": [
{
"text": "John",
"isMatch": false
},
{
"text": " ",
"isMatch": false
},
{
"text": "F",
"isMatch": false
},
{
"text": ".",
"isMatch": false
}
],
"lastName": [
{
"text": "Kennedy",
"isMatch": true
}
],
"isPep": false,
"isRca": false,
"isSanction": false,
"identity": {
"identity": null,
"country": "us"
},
"archived": false,
"isSip": false
}
]
},
"status": "Success",
"success": true,
"message": null,
"checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}
Using Webhooks
You also have the possibility to be notified about PEP and Sanction changes on your active persons by registering a webhook. Please refer to Webhooks for further details.
3. Manage watchlist matches
Pliance algorithms are designed to provide accurate screening results and we do our best to minimize false positives. In the event you need to correct an erroneous match, use the classify person command.
- Node.js
- Python
- Java
- .Net
let request: ClassifyPersonHitCommand = {
personReferenceId: "person-123",
matchId: "c240d937a0e1635f222e3589b8760377",
aliasId: "85dd36a12f919dbe2f74aba4f30c05f353fe238eb5df3235e4baca91c177a695",
classification: ClassificationType.FalsePositive
};
let response = await client.classifyPersonHit(request);
request = {
"personReferenceId": "person-123",
"matchId": "c240d937a0e1635f222e3589b8760377",
"aliasId": "85dd36a12f919dbe2f74aba4f30c05f353fe238eb5df3235e4baca91c177a695",
"classification": "FalsePositive"
}
response = client.classify_person_hit(request)
ClassifyPersonHitCommand request = new ClassifyPersonHitCommand();
request.personReferenceId = "person-123";
request.matchId = "c240d937a0e1635f222e3589b8760377";
request.aliasId = "85dd36a12f919dbe2f74aba4f30c05f353fe238eb5df3235e4baca91c177a695";
request.classification = ClassificationType.FalsePositive;
ClassifyPersonHitResponse response = client.classifyPersonHit(request);
var request = new ClassifyPersonHitCommand
{
PersonReferenceId = "person-123",
MatchId = "c240d937a0e1635f222e3589b8760377",
AliasId = "85dd36a12f919dbe2f74aba4f30c05f353fe238eb5df3235e4baca91c177a695",
Classification = ClassificationType.FalsePositive,
};
var response = await client.ClassifyPersonHit(request);
Response
{
"status": "Success",
"success": true,
"message": null,
"checkpoint": "fd362e0faabd9e19de260ae542fc782210c05067118b61d99a327f4d77adbe1b"
}
4. Archive a Person
When you no longer wish to monitor the person, use the Archive person command. An archived person is no longer daily screened and will be exempt from billing (if it has been archived for the entire month).
- Node.js
- Python
- Java
- .Net
let request: ArchivePersonCommand = {
personReferenceId: "person-123"
};
let response = await client.archivePerson(request);
request = {
"personReferenceId": "person-123"
}
response = client.archive_person(request)
ArchivePersonCommand request = new ArchivePersonCommand();
request.personReferenceId = "person-123";
ArchivePersonResponse response = client.archivePerson(request);
var request = new ArchivePersonCommand
{
PersonReferenceId = "person-123",
};
var response = await client.ArchivePerson(request);
5. Unarchive a Person
An archived person can be actively screened again by submitting an unarchive command.
- Node.js
- Python
- Java
- .Net
let request: UnarchivePersonCommand = {
personReferenceId: "person-123"
};
let response = await client.unarchivePerson(request);
request = {
"personReferenceId": "person-123"
}
response = client.unarchive_person(request)
UnarchivePersonCommand request = new UnarchivePersonCommand();
request.personReferenceId = "person-123";
UnarchivePersonResponse response = client.unarchivePerson(request);
var request = new UnarchivePersonCommand
{
PersonReferenceId = "person-123",
};
var response = await client.UnarchivePerson(request);
Response
{
"status": "Success",
"success": true,
"message": null,
"checkpoint": "fd362e0faabd9e19de260ae542fc782210c05067118b61d99a327f4d77adbe1b"
}
6. Delete a person
Lastly use Delete person to delete the person when there is no longer any business relationship with the person.
This operation is irreversible. This will remove all data for a person. Can be used for upheld GDPR regulations.
- Node.js
- Python
- Java
- .Net
let request: DeletePersonCommand = {
personReferenceId: "person-123"
};
let response = await client.deletePerson(request);
request = {
"personReferenceId": "person-123"
}
response = client.delete_person(request)
DeletePersonCommand request = new DeletePersonCommand();
request.personReferenceId = "person-123";
DeletePersonResponse response = client.deletePerson(request);
var request = new DeletePersonCommand
{
PersonReferenceId = "person-123",
};
var response = await client.DeletePerson(request);