NAV Navbar
C# cURL Java JavaScript Python

Introduction

This specification is documented in OpenAPI format, it describes the REST APIs of Pliance.

Code samples of requests and responses will be show here.

Select preferred language in the tabs above, or in the menu if using a mobile browser.

SDK

Pliance provides publicly available open source code, and packages for several popular languages to ease the the development.

.NET

Installation

dotnet add package Pliance.NET-SDK

Nuget

Source code

https://github.com/pliance/Pliance.Net.SDK

Java

Installation

Maven Central

Source code

https://github.com/pliance/Pliance.Java.SDK

Node.js

Installation

npm i @pliance/pliance.js.sdk

npm

Source code

https://github.com/pliance/Pliance.JS.SDK

Python

Installation

pip install pliance.py.sdk

PyPI

Source Code

https://github.com/pliance/Pliance.Py.SDK

Authentication

Pliance.io uses bearer authentication.

This form of authentication is using security tokens. The clients send the HTTP-header Authorization with each request to the API-service.

These tokens can be used in either a web browser or a system.

Security

Pliance uses secure communication over HTTPS for all data during transit.

Additional security can be archived by adding IP-filtering or client certificates.

Generating Security Token

We are using JSON Web Token. To generate a valid token, add the same fields as specified below and sign with your secret.

For assistance debugging your tokens, we recommend using https://jwt.io/.

{
    "typ": "JWT",
    "alg": "HS256"
}
{
    "iat": 1555495956,
    "nbf": 1555495956,
    "exp": 1555496256,
    "aud": "pliance.io",
    "iss": "CUSTOMER_ID",
    "given_name": "USERNAME",
    "sub": "USER_ID"
}
Property Meaning Description
iat Issued At When the token was generated
nbf Not Before Token can't be used before
exp Expiration Time Token can't be used after
aud Audience The recipient of the token, always pliance.io
iss Issuer The one who is issuing the token, your company name
given_name Username Name of the user or system consuming the service
sub UserId UserId of the user or system consuming the server

Ping

GET /api/Ping

Test the accessable of service without mutating the system.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET /api/ping
var factory = new PlianceClientFactory(
    secret: "2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b",
    issuer: "Test",
    url: "https://test-stage4.pliance.io/",
    certificate: new X509Certificate2("client-certificate.pfx")
);

var client = factory.Create("givenname", "sub");

await client.Ping();
FileInputStream certificate = new FileInputStream(new File("client-certificate.pfx"));
PlianceClientFactory factory = new PlianceClientFactory("2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b", 
    "Test", "https://test-stage4.pliance.io/", certificate);

IPlianceClient client = factory.create("givenname", "subject");

PingResponse response = client.ping();
const { ClientFactory } = require("@pliance/pliance.js.sdk");
const https = require('https');
const fs = require('fs');

let agent = new https.Agent({
    pfx: fs.readFileSync('client-certificate.pfx'),
    passphrase: ''
});

let clientFactory = new ClientFactory('2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b', 'Test', 'https://test-stage4.pliance.io/', agent);    
let client = clientFactory.create('givenname', 'sub');

let res = await client.ping();
from pliance_py_sdk import ClientFactory

clientFactory = ClientFactory('2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b', 'Test', 'https://test-stage4.pliance.io/', cert='client-certificate.pem')
client = clientFactory.create('givenname', 'sub')
res = client.ping()

Successful response

{
  "status": "Success",
  "success": true,
  "message": "Pong",
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Person

Register Person

PUT /api/PersonCommand

Create or update a person.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPUT "https://test-stage3.pliance.io/api/PersonCommand" -d '{ "PersonReferenceId": "customer/2", "Firstname": "Osama", "Lastname": "bin Laden" }'
var result = await client.RegisterPerson(new RegisterPersonCommand
{
    PersonReferenceId = "customer/2",
    FirstName = "Osama",
    LastName = "bin Laden"
});
RegisterPersonCommand command = new RegisterPersonCommand();

command.personReferenceId = "customer/2";
command.firstName = "Osama";
command.lastName = "bin Laden";

RegisterPersonResponse response = client.registerPerson(command);
let person = {
    firstName: 'Osama',
    lastName: 'bin Laden',
    personReferenceId: 'customer/2'
};

let res = await client.registerPerson(person);
person = {
    'firstName': 'Osama',
    'lastName': 'bin Laden',
    'personReferenceId': 'customer/2'
}

res = client.registerPerson(person)

Successful response

{
  "hits": [
    [
      {
        "matchId": "listperson/1",
        "matchedFirstName": [
          {
            "text": "Osama",
            "isMatch": true
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "bin",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "Mohammed",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "bin",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "Awad",
            "isMatch": false
          }
        ],
        "matchedLastName": [
          {
            "text": "bin",
            "isMatch": true
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "Laden",
            "isMatch": true
          }
        ],
        "isPep": false,
        "isRca": false,
        "isSanction": true,
        "firstName": "Osama bin Mohammed bin Awad",
        "lastName": "bin Laden",
        "classification": "Unknown",
        "aliasId": "4ec8702f61e1b5d5d8edfb9d6fc84edb0ced4bbb01490a93e1636e4c546ab24a"
      }
    ]
  ],
  "data": {
    "personReferenceId": "customer/2",
    "identity": null,
    "firstName": "Osama",
    "lastName": "bin Laden",
    "birthdate": "????-??-??",
    "addresses": null,
    "hits": [
      [
        {
          "matchId": "EuSanction-833",
          "matchedFirstName": [
            {
              "text": "Osama",
              "isMatch": true
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "bin",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Muhammad",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "bin",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Awad",
              "isMatch": false
            }
          ],
          "matchedLastName": [
            {
              "text": "bin",
              "isMatch": true
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Ladin",
              "isMatch": true
            }
          ],
          "birthdate": null,
          "isPep": false,
          "isRca": false,
          "isSanction": true,
          "firstName": "Osama bin Muhammad bin Awad",
          "lastName": "bin Ladin",
          "classification": "Unknown",
          "aliasId": "a1be37af314c0cc35c5f9f4124f5f6aa0c050fbe5846e020ae17c0fe02c8c55e"
        }
      ]
    ],
    "gender": "Unknown",
    "archived": false,
    "engagements": null,
    "isPep": false,
    "isRca": false,
    "isSanction": true,
    "birth": null,
    "highRiskCountry": false,
    "lastChanged": {
      "timestampUtc": "2019-12-06T13:10:00.445Z",
      "checkpoint": "63f3946136274e103e0439930acb234acb3e2f4a43b6092bde3a5b3a70162086"
    }
  },  
  "status": "Success",
  "success": true,
  "checkpoint": "281c38013e31ac86a96b20a3098647ebc42e02c17351009a663fdef0714ced36"
}

Parameters

Name In Type Required Description
PersonReferenceId body string Yes None
Identity body Person Identity No None
FirstName body string Yes None
LastName body string Yes None
Gender body Gender No None
Birthdate body Birthdate No None
Addresses body [Address] No None
Options body Register Person Options No None

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Hits [[Person Hit]] No None
Data View Person Response Data No None

The register person endpoint allows a person to be registered for PEP and Sanction screening, and automatic monitoring. This is the first step in the the process. It also returns all the hits.

View Person

GET /api/PersonQuery

View a specific person.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/PersonQuery/?PersonReferenceId=customer/1"
var result = await client.ViewPerson(new ViewPersonQuery
{
    PersonReferenceId = "customer/1"
});
ViewPersonQuery query = new ViewPersonQuery();
query.personReferenceId = "customer/1";

ViewPersonQueryResult response = client.viewPerson(query);
let res = await client.viewPerson('customer/1');
person = {
    'personReferenceId': 'customer/1'
}

res = client.viewPerson(person)

Successful response

{
  "data": {
    "personReferenceId": "customer/2",
    "identity": null,
    "firstName": "Osama",
    "lastName": "bin Laden",
    "birthdate": "????-??-??",
    "addresses": null,
    "hits": [
      [
        {
          "matchId": "EuSanction-833",
          "matchedFirstName": [
            {
              "text": "Osama",
              "isMatch": true
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "bin",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Muhammad",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "bin",
              "isMatch": false
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Awad",
              "isMatch": false
            }
          ],
          "matchedLastName": [
            {
              "text": "bin",
              "isMatch": true
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Ladin",
              "isMatch": true
            }
          ],
          "birthdate": null,
          "isPep": false,
          "isRca": false,
          "isSanction": true,
          "firstName": "Osama bin Muhammad bin Awad",
          "lastName": "bin Ladin",
          "classification": "Unknown",
          "aliasId": "a1be37af314c0cc35c5f9f4124f5f6aa0c050fbe5846e020ae17c0fe02c8c55e"
        }
      ]
    ],
    "gender": "Unknown",
    "archived": false,
    "engagements": null,
    "isPep": false,
    "isRca": false,
    "isSanction": true,
    "birth": null,
    "highRiskCountry": false,
    "lastChanged": {
      "timestampUtc": "2019-12-06T13:10:00.445Z",
      "checkpoint": "63f3946136274e103e0439930acb234acb3e2f4a43b6092bde3a5b3a70162086"
    }
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "63f3946136274e103e0439930acb234acb3e2f4a43b6092bde3a5b3a70162086"
}

Parameters

Name In Type Required Description
PersonReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data View Person Response Data No None

Search Person

GET /api/PersonQuery/Search

Search for persons matchings specified criterias.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/PersonQuery/Search?Query=Donald"
var result = await client.SearchPerson(new PersonSearchQuery
{
    Query = "Donald"
});
PersonSearchQuery query = new PersonSearchQuery();
query.query = "person-reference-id";

PersonSearchQueryResult response = client.searchPerson(query)
let query = {
    query: 'Donald',
    filter: {
        isSanction: null,
        isPep: null,
        isRca: null
    }
};

let res = await client.searchPerson(query);
query = {
    'query': 'Donald',
    'page': {
        'size': 10,
        'no': 1
    },
    'filter': {
        'isSanction': True
    }
}

res = client.searchPerson(query)

Successful response

{
  "data": {
    "result": [
      {
        "personReferenceId": "customer/1",
        "firstName": [
          {
            "text": "Donald",
            "isMatch": true
          }
        ],
        "lastName": [
          {
            "text": "Trump",
            "isMatch": false
          }
        ],
        "isPep": true,
        "isRca": false,
        "isSanction": false,
        "identity": {
          "identity": "ce2e5f62-0b2e-4337-b3e9-86b6d9aa72af",
          "country": "us"
        },
        "archived": false
      }
    ]
  },
  "status": "Success",
  "success": true,
  "checkpoint": "d5fa033e8605a8dffa8ee60fd9e6c3740a570e59853c08e1efe1a4925fef0013"
}

Parameters

Name In Type Required Description
Query path string No
Page path Page No
Filter path Filter No

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Search Person Response Data No None

Classify Match

POST /api/PersonCommand/Classify

Classify a match as either Unknown, Match or FalsePositive.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/PersonCommand/Classify" -d '{ "PersonReferenceId": "customer/1", "AliasId": "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4", "MatchId": "listperson/2", "Classification": "Positive" }'
var result = await client.ClassifyPersonHit(new ClassifyPersonHitCommand
{
    PersonReferenceId = "customer/1",
    MatchId = "listperson/2",
    AliasId = "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4",
    Classification = ClassificationType.Positive
});
ClassifyPersonHitCommand command = new ClassifyPersonHitCommand();
command.personReferenceId = "customer/1";
command.matchId = "listperson/2",
command.aliasId = "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4",
command.classification = ClassificationType.Positive

ClassifyHitResponse response = client.classifyPersonHit(command)
let command = {
    personReferenceId: 'customer/1',
    matchId: 'listperson/2',
    aliasId: '9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4',
    classification: ClassificationType.FalsePositive
};

let res = await client.classifyPersonHit(command);
person = {
    'personReferenceId': 'customer/1',
    'matchId': 'listperson/2',
    'aliasId': '9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4',
    'classification': 'FalsePositive'
}

res = client.classifyPersonHit(person)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "d485f2df3233c21da4db73d1b10b23aca5f2c5e5077d22e2e573ec048f5a678b"
}

Parameters

Name In Type Required Description
PersonReferenceId body string Yes
MatchId body string Yes
AliasId body string Yes
Classification body string Yes Unknown/Match/FalsePositive

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Archive a person

POST /api/PersonCommand/Archive

Archive a person.

Code Samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/PersonCommand/Archive" -d '{ "PersonReferenceId": "customer/1" }'
var result = await client.ArchivePerson(new ArchivePersonCommand
{
    PersonReferenceId = "customer/1"
});
ArchivePersonCommand command = new ArchivePersonCommand();
command.personReferenceId = "customer/1";

ArchivePersonResponse  response = client.archivePerson(command)
let command = {
    personReferenceId: 'customer/1'
};

let res = await client.archivePerson(command);
person = {
    'personReferenceId': 'customer/1',
}

res = client.archivePerson(person)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "c7076b02156ffa8a17be80bd28127d73f955508051f6423d71d37723fd87e80a"
}

Parameters

Name In Type Required Description
PersonReferenceId body string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Unarchive a person

POST /api/PersonCommand/Unarchive

Unarchive a person.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/PersonCommand/Unarchive" -d '{ "PersonReferenceId": "customer/1" }'
var result = await client.UnarchivePerson(new UnarchivePersonCommand
{
    PersonReferenceId = "customer/1"
});
UnarchivePersonCommand command = new UnarchivePersonCommand();
command.personReferenceId = "customer/1";

UnarchivePersonResponse response = client.unarchivePerson(command)
let command = {
    personReferenceId: 'customer/1'
};

let res = await client.unarchivePerson(command);
person = {
    'personReferenceId': 'customer/1',
}

res = client.unarchivePerson(person)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "ce83babdc590a2c2ded1c6096dd90cb0b1cac641831d8dda64c28aada095d0ef"
}

Parameters

Name In Type Required Description
PersonReferenceId body string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Delete Person

DELETE /api/PersonCommand

Delete a person.

Code samples

curl -H "Authorization: Bearer $JWT" -XDELETE "https://test-stage3.pliance.io/api/PersonCommand/?PersonReferenceId=customer/1"
var result = await client.DeletePerson(new DeletePersonCommand
{
    PersonReferenceId = "customer/1"
});
DeletePersonCommand command = new DeletePersonCommand();
command.personReferenceId = "customer/1";

DeletePersonResponse response = client.deletePerson(command)
let command = {
    personReferenceId: 'customer/1'
};

let res = await client.deletePerson(command);
person = {
    'personReferenceId': 'customer/1',
}

res = client.deletePerson(person)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "6c269818fcc8834b2fcf44e71b0757bdae0259f570078b95b2f7078e3ce9ecd6"
}

Parameters

Name In Type Required Description
PersonReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Company

Register Company

PUT /api/CompanyCommand

Create or update a company.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPUT "https://test-stage3.pliance.io/api/CompanyCommand" -d '{ "CompanyReferenceId": "company/1", "Name": "Plisec AB", "Identity": { "Identity": "559161-4275", "Country": "SE" } }'
let company = {
    name: 'Plisec AB',
    companyReferenceId: 'company/1',
    identity: {
        identity:  '559161-4275',
        country: 'SE' 
    }
};

let res = await client.registerCompany(company);
var result = await client.RegisterCompany(new RegisterCompanyCommand
{
    CompanyReferenceId = "company/1",
    Name = "Plisec AB",
    Identity = new CompanyIdentity
    {
        Identity = "559161-4275",
        Country = "SE"
    }
});
RegisterCompanyCommand  command = new RegisterCompanyCommand();

command.companyReferenceId = "company/1";
command.name = "Plisec AB";
command.identity = new CompanyIdentity();
command.identity.identity = "559161-4275";
command.identity.country = "SE";

RegisterCompanyResponse response = client.registerCompany(command);
company = {
    'name': 'Plisec AB',
    'companyReferenceId': 'company/1',
    'identity': {
        'identity': '559161-4275',
        'country': 'SE'
    }
}

res = client.registerCompany(company)

Successful response

{
  "data": {
    "companyReferenceId": "company/1",
    "identity": {
      "identity": "559161-4275",
      "country": "SE"
    },
    "name": "Plisec AB",
    "graph": {
      "nodes": [],
      "links": []
    },
    "beneficiaries": [],
    "archived": false
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "6c269818fcc8834b2fcf44e71b0757bdae0259f570078b95b2f7078e3ce9ecd6"
}

Parameters

Name In Type Required Description
CompanyReferenceId body string Yes
Name body string Yes
Identity Company Identity No None

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data View Company Response Data No None

View Company

GET /api/CompanyQuery

View a specific company.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/CompanyQuery/?CompanyReferenceId=company/1"
var result = await client.ViewCompany(new ViewCompanyQuery
{
    CompanyReferenceId = "company/1"
});
ViewCompanyQuery query = new ViewCompanyQuery();
query.companyReferenceId = "company/1";

ViewCompanyQueryResult response = client.viewCompany(query);
let res = await client.viewCompany('company/1');
company = {
    'companyReferenceId': 'company/1'
}

res = client.viewCompany(company)

Successful response

{
  "data": {
    "companyReferenceId": "company/1",
    "identity": {
      "identity": "559161-4275",
      "country": "SE"
    },
    "name": "Plisec AB",
    "graph": {
      "nodes": [],
      "links": []
    },
    "beneficiaries": [],
    "archived": false,
    "highRiskCountry": false,
    "lastChanged": {
      "timestampUtc": "2019-12-06T13:18:57.03Z",
      "checkpoint": "6d6ade0ce1e55344b774702e4ac19ba87704a4f2c9725ba4ca2d2f65d4f80363"
    }
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "6d6ade0ce1e55344b774702e4ac19ba87704a4f2c9725ba4ca2d2f65d4f80363"
}

Parameters

Name In Type Required Description
CompanyReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data View Company Response Data No None

Search Company

GET /api/CompanyQuery/Search

Search for companies matchings specified criterias.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/CompanyQuery/Search/?Query=Plisec"
var result = await client.SearchCompany(new CompanySearchQuery
{
    Query = "Plisec"
});
CompanySearchQuery query = new CompanySearchQuery();
query.query = "Plisec";

PersonSearchQueryResult response = client.searchCompany(query)
let query = {
    query: 'Plisec',
    filter: {
        isSanction: true,
        isPep: null,
        isRca: null
    }
};

let res = await client.searchCompany(query);
query = {
    'query': 'Pliesec',
    'page': {
        'size': 10,
        'no': 1
    },
    'filter': {
        'isSanction': True
    }
}

res = client.searchCompany(query)

Successful response

{
  "data": {
    "result": [
      {
        "companyReferenceId": "company/1",
        "name": [
          {
            "text": "Plisec",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "AB",
            "isMatch": false
          }
        ],
        "isPep": false,
        "isRca": false,
        "isSanction": false,
        "identity": {
          "identity": "559161-4275",
          "country": "SE"
        },
        "archived": false
      }
    ]
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Parameters

Name In Type Required Description
Query path string No
Page path Page No
Filter path Filter No

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Search Company Response Data No None

Classify Match

POST /api/CompanyCommand/Classify

Classify a match as either Unknown, Match or FalsePositive.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/CompanyCommand/Classify" -d '{ "CompanyReferenceId": "customer/1", "AliasId": "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4", "MatchId": "listcompany/2", "Classification": "Positive" }'
var result = await client.ClassifyCompanyHit(new ClassifyCompanyHitCommand
{
    CompanyReferenceId = "customer/1",
    MatchId = "listperson/2",
    AliasId = "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4",
    Classification = ClassificationType.Positive
});
ClassifyCompanyHitCommand command = new ClassifyCompanyHitCommand();
command.companyReferenceId = "customer/1";
command.matchId = "listcompany/2",
command.aliasId = "9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4",
command.classification = ClassificationType.Positive

ClassifyHitResponse response = client.classifyCompanyHit(command)
let command = {
    companyReferenceId: 'customer/1',
    matchId: 'listcompany/2',
    aliasId: '9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4',
    classification: ClassificationType.FalsePositive
};

let res = await client.classifyCompanyHit(command);
company = {
    'companyReferenceId': 'customer/1',
    'matchId': 'listcompany/2',
    'aliasId': '9097bb697f1c923a953bffe9cbee2cc553984dca5a7a35ff16eee4b8ca9b20f4',
    'classification': 'FalsePositive'
}

res = client.classifyCompanyHit(company)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "d485f2df3233c21da4db73d1b10b23aca5f2c5e5077d22e2e573ec048f5a678b"
}

Parameters

Name In Type Required Description
CompanyReferenceId body string Yes
MatchId body string Yes
AliasId body string Yes
Classification body string Yes Unknown/Match/FalsePositive

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Archive Company

POST /api/CompanyCommand/Archive

Archive a company.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/CompanyCommand/Archive" -d '{ "CompanyReferenceId": "company/1" }'
let command = {
    companyReferenceId: 'company/1'
};

let res = await client.archiveCompany(command);
var result = await client.ArchiveCompany(new ArchiveCompanyCommand
{
    CompanyReferenceId = "company/1"
});
ArchiveCompanyCommand command = new ArchiveCompanyCommand();
command.companyReferenceId = "company/1";

ArchiveCompanyResponse response = client.archiveCompany(command)
company = {
    'companyReferenceId': 'company/1'
}

res = client.archiveCompany(company)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "6c269818fcc8834b2fcf44e71b0757bdae0259f570078b95b2f7078e3ce9ecd6"
}

Parameters

Name In Type Required Description
CompanyReferenceId body string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Unarchive Company

POST /api/CompanyCommand/Unarchive

Unarchive a company.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPOST "https://test-stage3.pliance.io/api/CompanyCommand/Unarchive" -d '{ "CompanyReferenceId": "company/1" }'
let command = {
    companyReferenceId: 'company/1'
};

let res = await client.unarchiveCompany(command);
var result = await client.UnarchiveCompany(new UnarchiveCompanyCommand
{
    CompanyReferenceId = "company/1"
});
UnarchiveCompanyCommand  command = new UnarchiveCompanyCommand();
command.companyReferenceId = "company/1";

UnarchiveCompanyResponse response = client.unarchiveCompany(command)
company = {
    'companyReferenceId': 'company/1'
}

res = client.unarchiveCompany(company)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "6c269818fcc8834b2fcf44e71b0757bdae0259f570078b95b2f7078e3ce9ecd6"
}

Parameters

Name In Type Required Description
CompanyReferenceId body string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Delete Company

DELETE /api/CompanyCommand

Delete a company.

Code samples

curl -H "Authorization: Bearer $JWT" -XDELETE "https://test-stage3.pliance.io/api/CompanyCommand/?CompanyReferenceId=company/1"
let command = {
    companyReferenceId: 'company/1'
};

let res = await client.deleteCompany(command);
var result = await client.DeleteCompany(new DeleteCompanyCommand
{
    CompanyReferenceId = "company/1"
});
DeleteCompanyCommand command = new DeleteCompanyCommand();
command.personReferenceId = "company/1";

DeleteCompanyResponse response = client.deleteCompany(command)
company = {
    'companyReferenceId': 'company/1'
}

res = client.deleteCompany(company)

Successful response

{
  "status": "Success",
  "success": true,
  "checkpoint": "6c269818fcc8834b2fcf44e71b0757bdae0259f570078b95b2f7078e3ce9ecd6"
}

Parameters

Name In Type Required Description
CompanyReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Beneficiaries Graph

GET /api/CompanyQuery/Graph/Beneficiaries

View a D3 graph of the company structure.

Code samples

curl -H "Authorization: Bearer $JWT" "https://test-stage3.pliance.io/api/CompanyQuery/Graph/Beneficiaries/?CompanyReferenceId=company/1"

Successful response

{
  "data": {
    "nodes": [
      {
        "id": 0,
        "name": "Plisec AB",
        "type": "Plisec AB",
        "reference": "559161-4275",
        "isPep": false
      },
      {
        "id": 1,
        "name": "Isaks Erik Tomas Einarsson",
        "type": "Person",
        "reference": "19840626-****",
        "isPep": false
      },
      {
        "id": 2,
        "name": "We Go To Eleven AB",
        "type": "Company",
        "reference": "559118-2901",
        "isPep": false
      },
      {
        "id": 3,
        "name": "Adam Lars Sebastian Fürtenbach",
        "type": "Person",
        "reference": "19840525-****",
        "isPep": false
      },
      {
        "id": 4,
        "name": "Siam Rakib Choudhury",
        "type": "Person",
        "reference": "19840718-****",
        "isPep": false
      }
    ],
    "links": [
      {
        "source": 1,
        "target": 2,
        "type": "Huvudman"
      },
      {
        "source": 0,
        "target": 2,
        "type": "Moderbolag"
      },
      {
        "source": 3,
        "target": 2,
        "type": "Huvudman"
      },
      {
        "source": 4,
        "target": 0,
        "type": "Huvudman"
      }
    ]
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "72f997cf7a59a70989d1afbcd255eff9df64efe4a62bf2d93dfb19edb44b2ebd"
}

Parameters

Name In Type Required Description
CompanyReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data [Graph Beneficiaries] No None @todo

Watchlist

Retrieve Person

GET /api/WatchlistQuery

View detailed information about the PEP or sanction matches.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/WatchlistQuery/?Id=ab74a89sd32&FirstName=John&LastName=Doe"

Successful response

{
  "data": {
    "listId": "Bogard-13935",
    "nationalIdentificationNumber": "19870211-****",
    "names": [
      {
        "firstName": "Ebba",
        "lastName": "Busch Thor",
        "selectedFirstName": [
          {
            "text": "Ebba",
            "isMatch": false
          }
        ],
        "selectedLastName": [
          {
            "text": "Busch",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "Thor*",
            "isMatch": false
          }
        ],
        "type": "Primärt namn"
      },
      {
        "firstName": "Ebba-Elisabeth",
        "lastName": "Busch",
        "selectedFirstName": [
          {
            "text": "Ebba",
            "isMatch": true
          },
          {
            "text": "-",
            "isMatch": false
          },
          {
            "text": "Elisabeth",
            "isMatch": true
          }
        ],
        "selectedLastName": [
          {
            "text": "Busch",
            "isMatch": true
          }
        ],
        "type": "Folkbokföringsnamn"
      }
    ],
    "birthdates": [
      {
        "circa": false,
        "year": 1987,
        "month": 2,
        "day": 11
      }
    ],
    "addresses": [
    ],
    "countries": [
      "se"
    ],
    "isPep": true,
    "isRca": false,
    "isSanction": false,
    "nationalities": [],
    "images": [
      "https://data.riksdagen.se/filarkiv/bilder/ledamot/611fcc9d-0e12-4628-86c6-b8452fda4171_320.jpg"
    ],
    "roles": [
      {
        "description": "Ordförande i Kristemokraternas partistyrelse",
        "isActive": true,
        "sinceYear": "25",
        "sinceMonth": "4",
        "sinceDay": "25"
      },
      {
        "description": "Riksdagsledamot",
        "isActive": true,
        "sinceYear": "24",
        "sinceMonth": "9",
        "sinceDay": "24"
      }
    ],
    "relations": [
      {
        "firstName": "*****",
        "lastName": "*****-***********",
        "relationPersonId": "Bogard-13936",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Far"
      },
      {
        "firstName": "******",
        "lastName": "*****-***********",
        "relationPersonId": "Bogard-13937",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Mor"
      },
      {
        "firstName": "****** *******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-13938",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Son"
      },
      {
        "firstName": "******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-13939",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Partner"
      },
      {
        "firstName": "***** ******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-14369",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Dotter"
      }
    ],
    "gender": "Female",
    "lists": [
      "Bogard's Nordic PEP List"
    ]
  },
  "status": "Success",
  "success": true,
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Parameters

Name In Type Required Description
Id path string Yes
FirstName path string Yes
LastName path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Watchlist Response Data No None

Retrieve Person (v2)

GET /api/WatchlistQuery/v2

View detailed information about the PEP or sanction matches.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/WatchlistQuery/v2/?MatchId=ab74a89sd32&PersonReferenceId=person-reference-id"

Successful response

{
  "data": {
    "listId": "Bogard-13935",
    "nationalIdentificationNumber": "19870211-****",
    "names": [
      {
        "firstName": "Ebba",
        "lastName": "Busch Thor",
        "selectedFirstName": [
          {
            "text": "Ebba",
            "isMatch": false
          }
        ],
        "selectedLastName": [
          {
            "text": "Busch",
            "isMatch": false
          },
          {
            "text": " ",
            "isMatch": false
          },
          {
            "text": "Thor*",
            "isMatch": false
          }
        ],
        "type": "Primärt namn"
      },
      {
        "firstName": "Ebba-Elisabeth",
        "lastName": "Busch",
        "selectedFirstName": [
          {
            "text": "Ebba",
            "isMatch": true
          },
          {
            "text": "-",
            "isMatch": false
          },
          {
            "text": "Elisabeth",
            "isMatch": true
          }
        ],
        "selectedLastName": [
          {
            "text": "Busch",
            "isMatch": true
          }
        ],
        "type": "Folkbokföringsnamn"
      }
    ],
    "birthdates": [
      {
        "circa": false,
        "year": 1987,
        "month": 2,
        "day": 11
      }
    ],
    "addresses": [
    ],
    "countries": [
      "se"
    ],
    "isPep": true,
    "isRca": false,
    "isSanction": false,
    "nationalities": [],
    "images": [
      "https://data.riksdagen.se/filarkiv/bilder/ledamot/611fcc9d-0e12-4628-86c6-b8452fda4171_320.jpg"
    ],
    "roles": [
      {
        "description": "Ordförande i Kristemokraternas partistyrelse",
        "isActive": true,
        "sinceYear": "25",
        "sinceMonth": "4",
        "sinceDay": "25"
      },
      {
        "description": "Riksdagsledamot",
        "isActive": true,
        "sinceYear": "24",
        "sinceMonth": "9",
        "sinceDay": "24"
      }
    ],
    "relations": [
      {
        "firstName": "*****",
        "lastName": "*****-***********",
        "relationPersonId": "Bogard-13936",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Far"
      },
      {
        "firstName": "******",
        "lastName": "*****-***********",
        "relationPersonId": "Bogard-13937",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Mor"
      },
      {
        "firstName": "****** *******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-13938",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Son"
      },
      {
        "firstName": "******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-13939",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Partner"
      },
      {
        "firstName": "***** ******",
        "lastName": "***** ****",
        "relationPersonId": "Bogard-14369",
        "isPep": false,
        "isRca": true,
        "isSanction": false,
        "relationType": "Dotter"
      }
    ],
    "gender": "Female",
    "lists": [
      "Bogard's Nordic PEP List"
    ]
  },
  "status": "Success",
  "success": true,
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Parameters

Name In Type Required Description
MatchId path string Yes
PersonReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Watchlist Response Data No None

Retrieve Company

GET /api/WatchlistQuery/Company

View detailed information about the PEP or sanction matches.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/WatchlistQuery/Company/?MatchId=ab74a89sd32&CompanyReferenceId=company-reference-id"

Successful response

{
}

Parameters

Name In Type Required Description
MatchId path string Yes
CompanyReferenceId path string Yes

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Watchlist Company Response Data No None

Webhook

Overview

Daily monitoring automatically matches your customers to PEP(Political Exposed Person) and sanction lists. When matches are found you can use webhooks to receive notification when changes have occured.

Change Settings

PUT /api/WebhookCommand

Change webhook settings.

Code samples

curl -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -XPUT "https://test-stage3.pliance.io/api/WebhookCommand" -d '{ "url": "https://COMPANY/WEBHOOK", "enabled": "true", "secret": "COMPANY_SECRET" }'

Successful response

{
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "07bd8e2d6f956dd043fd3e89bb20f9f36ceedfa6f32678fcf9193c81429f5d89"
}

Parameters

Name In Type Required Description
Url body string No None
Secret body string No None
Enabled body boolean No None

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None

Query Settings

GET /api/WebhookQuery

View current webhook settings.

Code samples

curl -H "Authorization: Bearer $JWT" -XGET "https://test-stage3.pliance.io/api/WebhookQuery"

Successful response

{
  "data": {
    "url": "https://secure.pliance.io/webhook",
    "secret": "COMPANY_SECRET",
    "enabled": true
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Parameters

None

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Webhook Response No None

Feed

Overview

The feed endpoint lets you retreive all data from a certain checkpoint and a batch of the proceeding events. To fetch the next batch, use the latest value of data.items[].checkpoint. In the example below, you should use /api/FeedQuery/?From=05f1d630986abbb3fb11687e23defba5958b51fb01d5b68f2c3e07d37fb98270. Omiting the From parameter, selects data from the beginning.

Query Feed

GET /api/FeedQuery

View the feed from the given checkpoint.

Code samples

curl -H "Authorization: Bearer $JWT" "https://test-stage3.pliance.io/api/FeedQuery/?From=3acd81cf042e98dd60ae6547d39156ea300e19d802e5b8b5723365151cfd9b0f"
let res = await client.feed();
query = {}
res = client.registerPerson(query)
await _client.Feed(new FeedQuery());

Successful response

{
  "data": {
    "items": [
      {
        "checkpoint": "c0c8b882e5e0efae965f21b1a87ab640c2fa2b561ed90e9312213626cef8be11",
        "type": "PersonSanctionMatched",
        "body": {
          "aliasId": "b7f6645e75b1ebe84619a31efaea8c8802705e1fba382640d5a3c232f233a125",
          "matchId": "listperson/1",
          "personReferenceId": "customer/2",
          "matchedFirstName": [
            {
              "text": "Osama",
              "isMatch": true
            }
          ],
          "matchedLastName": [
            {
              "text": "bin",
              "isMatch": true
            },
            {
              "text": " ",
              "isMatch": false
            },
            {
              "text": "Laden",
              "isMatch": true
            }
          ],
          "isPep": false,
          "isRca": false,
          "isSanction": true,
          "firstName": "Osama",
          "lastName": "bin laden"
        },
        "metadata": {
          "subject": "-1",
          "ip": "localhost",
          "givenName": "SYSTEM",
          "timestampUtc": "2019-12-06T07:16:50.1684424Z"
        }
      }
    ]
  },
  "status": "Success",
  "success": true,
  "message": null,
  "checkpoint": "0000000000000000000000000000000000000000000000000000000000000000"
}

Parameters

Name In Type Required Description
From path string No None

Responses

Name Type Required Restrictions Description
Status string Yes None Success/Error
Success boolean Yes None
Message string No None Error message
Checkpoint string No None
Data Feed Response Data No None

Schemas

Person Identity

Name Type Required Restrictions Description
Identity string No None National identity number
Country string No None Issuing Country, ISO3166

Company Identity

Name Type Required Restrictions Description
Identity string No None National identity number
Country string No None Issuing Country, ISO3166

Address

Name Type Required Restrictions Description
Street1 string No None
Street2 string No None
City string No None
StreetNo string No None
PostalCode string No None
Country string No None

Birthdate

Name Type Required Restrictions Description
Year integer No None Birth year
Month integer No None Birth month
Day integer No None Birth day of month

Register Person Options

Name Type Required Restrictions Description
Order string No None Any/Strict/Exact
Fuzziness string No None Simple/Diacritics/Metaphone
OmitResult boolean No None

Text Match

Name Type Required Restrictions Description
Text string Yes None
IsMatch boolean Yes None

Person Hit

Name Type Required Restrictions Description
MatchId string Yes None
MatchedFirstName [Text Match] No None
MatchedLastName [Text Match] No None
IsPep boolean No None
IsRca boolean No None
IsSanction boolean No None
FirstName string Yes None
LastName string Yes None
Classification string Yes None Unknown/FalsePositive/Match
AliasId string Yes None

View Person Response Data

Name Type Required Restrictions Description
PersonReferenceId string Yes None
Identity Person Identity No None
FirstName string Yes None
LastName string Yes None
Birthdate string No None yyyy-mm-dd
Addresses [Address] No None
Hits [[Person Hit]] No None
Gender Gender No None Female/Male/Unknown
Archived boolean No None
Engagements [Engagement] No None
IsPep boolean No None
IsRca boolean No None
IsSanction boolean No None
Birth Birthdate No None
HighRiskCountry boolean No None
LastChanged Last Changed No None

Last Changed

Name Type Required Restrictions Description
TimestampUtc date Yes None
Checkpoint string Yes None

Engagements

Name Type Required Restrictions Description
RegistrationNumber string Yes None
Name string Yes None

Page

Name Type Required Restrictions Description
Size integer No None
No integer No None

Filter

Name Type Required Restrictions Description
IsPep integer No None
IsRca integer No None
IsSanction integer No None

Search Person Response Data

Name Type Required Restrictions Description
Result [Search Person Response Data Result] Yes None

Search Person Response Data Result

Name Type Required Restrictions Description
PersonReferenceId string No None
FirstName [Text Match] No None
LastName [Text Match] No None
IsPep boolean No None
IsRca boolean No None
IsSanction boolean No None
Identity Person Identity No None
Archived boolean No None

Role

Name Type Required Restrictions Description
Description string No None
IsActive boolean No None
SinceYear string No None
SinceMonth string No None
SinceDay string No None
ToYear string No None
ToMonth string No None
ToDay string No None

Watchlist Response Data

Name Type Required Restrictions Description
ListId string Yes None
NationalIdentificationNumber string Yes None
Countries [string] Yes None
IsPep boolean Yes None
IsRca boolean Yes None
IsSanction boolean Yes None
Gender Gender No None Female/Male/Unknown
Nationalities [string] Yes None
Images [string] Yes None
Lists [string] Yes None
Roles Role Yes None
Names [Names] No None @todo
Birthdates [Birthdate] No None @todo
Addresses [Address] No None @todo
Relations [Relation] No None @todo

Watchlist Company Response Data

Name Type Required Restrictions Description
CompanyReferenceId string No None
IsSanction boolean No None
Names [Watchlist Company Name] Yes None
SanctionLists [string] No None

Watchlist Company Name

Name Type Required Restrictions Description
Type string No None
Name string No None
SelectedName [TextMatch] Yes None

Webhook Response

Name Type Required Restrictions Description
Url string No None
Secret string No None
Enabled boolean No None

Feed Response Data

Name Type Required Restrictions Description
Items [Feed Response Data Item] Yes None

Feed Response Data Item

Name Type Required Restrictions Description
Checkpoint string No None
Type string No None
Body object No None
Metadata [Metadata] Yes None

Metadata

Name Type Required Restrictions Description
Subject string No None
IP string No None
GivenName string No None
TimestampUtc date No None

View Company Response Data

Name Type Required Restrictions Description
CompanyReferenceId string No None
Name string No None
Identity Company Identity No None
Archived boolean No None
HighRiskCountry boolean No None
LastChanged Last Changed No None
Beneficiaries [View Person Response Data] No None

Search Company Response Data

Name Type Required Restrictions Description
Result [Search Company Response Data Result] Yes None

Search Company Response Data Result

Name Type Required Restrictions Description
CompanyReferenceId string No None
Name [Text Match] No None
Identity Company Identity No None
IsPep boolean No None
IsRca boolean No None
IsSanction boolean No None
Archived boolean No None

Order

Any

All input words have to be present in the current match regardless of position.

Any

Strict

All input words have to be present in the current match, it must follow the same succession order.

Strict

Exact

Input has to match word by word to the current match.

Exact

Fuzziness

Simple

Simple incasesensitive matching.

Simple

Diacritics

Incasesensitive matching with diacritics removed.

Diacritics

Metaphone

Words that phoneticly sounds the same are treated as the same.

Metaphone