Person Match + Person Watchlist Screening

You're building an onboarding and using Workflow Studio as part of your process. How can you run through these workflows to submit the data and run transactions using Workflow API and then retrieve the verification results for the Person Match and Person Watchlist services?

This Scenario assumes that you've used Workflow Studio to build a workflow like the one above that includes both the Person Match and Person Watchlist Screening services.

Paste the Client Id and Client Secret in the Environment variables “envClientId” and “envClientSecret”. Paste the flow Id of your workflow in the corresponding collection variable.

Step 1. - Initialise flow (Start verification process):

This will generate a user profile identified by a unique x-hf-session token (returned in the header of the response). This identifier is required for next steps so paste the value in the corresponding collection variable and hit save. In the body, all the fields on the next form step are returned along with a unique id for each field.

{
    "canGoBack": false,
    "elements": [
        {
            "id": "652ffc65c792412ab8ea0e20",
            "name": "Country of residence",
            "role": "address_country",
            "type": "country_select",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e21",
            "name": "First name",
            "role": "first_name",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e22",
            "name": "Last name",
            "role": "last_name",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e2a",
            "name": "Date of birth",
            "placeholder": "Select date",
            "role": "dob",
            "type": "date_picker",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e23",
            "name": "Full Address",
            "role": "address_1",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e29",
            "name": "City",
            "role": "address_city",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e24",
            "name": "State",
            "role": "address_state",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        },
        {
            "id": "652ffc65c792412ab8ea0e28",
            "name": "ZIP code",
            "role": "address_zip",
            "type": "text",
            "validations": [
                {
                    "type": "required"
                }
            ]
        }
    ],
    "id": "652ffc192e470e32d625c9f8",
    "type": "form"
}

Step 2. - Submit the data:

In the case of Person Verification, you need to send a person’s details required for Person Match. In the body, include the ids of each field returned in Step 1 and the values for each field.

{
    "id": "652ffc80c792412ab8ea0ecf",
    "type": "end"
}

Step 3. - Get Authorisation Token for Retrieve Profile:

You will need an authorisation token in order to retrieve a user profile. Utilise Get Authorisation Token to retrieve a bearer token for Step 4. Paste the value in the accessToken collection variable.

{
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkQ0NENDOTU1RkQ1N0RGNjVBMDNDMTAyNkExRDkxODE0IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2lkZW50aXR5LnRydWxpb28uY29tLyIsIm5iZiI6MTY5Nzc1MjUzOSwiaWF0IjoxNjk3NzUyNTM5LCJleHAiOjE2OTc3NTQzMzksImF1ZCI6InVybjp0cnVsaW9vLWNvbTp3b3JrZmxvdy1zdHVkaW8uYXBpLnByb2QiLCJzY29wZSI6WyJ3b3JrZmxvdy5zdHVkaW8uYXBpIl0sImNsaWVudF9pZCI6IjIwNjdhMzhhYzg4ZDZkNDQ4NlhhZjljWTRjMDYzYmJmNjZiNCIsInN1YiI6IjM0MGViY2RmLWJlOTctNDlhNS1hYjE4LTM5ZDJhM2YyZjUwNiIsImF1dGhfdGltZSI6MTY5Nzc1MjUzOSwiaWRwIjoiaHR0cHM6Ly9pZGVudGl0eS50cnVsaW9vLmNvbS8iLCJhcGlfY3JlZGVudGlhbF9pZGVudGlmaWVyIjoiNjUyM2M4MDgtOGIzNi00M2Y2LTk1YjEtYmJmOWU5MTg0ZTk3IiwicHJvZHVjdF9wYWNrYWdlcyI6WyJhbGwiXSwicm9sZXMiOlsiUnVuVHJhbnNhY3Rpb24iLCJFbnRpdHlNYW5hZ2VyIl0sInRyYW5zYWN0aW9uX3R5cGVzIjoiYWxsIiwiYWNjb3VudF9pZGVudGlmaWVyIjoiZTZjYzhjZDAtZGJhNi00NmFhLThmZDgtZWEwMDI3MzdjZDc1IiwidmVyc2lvbiI6ImFwaS5jcmVkZW50aWFsLnYyIiwic291cmNlIjoid29ya2Zsb3ctc3R1ZGlvIiwianRpIjoiRDcyQUY2REZBRDIzNDlDOUZDREYyODc5RDcwQTk4NTMifQ.WII-bZ8TKSpGWNu1YLt2-sLfAm983rVGixFW2L1mVwo92W6PDrgIt0vX3ltlgiaCelih3v7zC0Fm9VJNK5BWDNbvi089YiBld-gkMOjRFdWO0MLTmJz_fzd5abYf4yWYapyfGpGsAR4dz1vwXl_M2oxSwohQNq_EJju41pqdvgCnRrHwnl53HFDX_tZ8k7981qB1EDrrJmCAmN9G3ZiVuPpXiLtnVka2TfpjUi67BQoUcFBoeMpd63YJwj3FdrOurruUfPR-LUY-Wul6JztSngVmXjbWjSXc-MQkPDzb5I_JPPzFgh8Ak298-quWYkQulWMYssupJqPhV116zc1GSQ",
    "expires_in": 1800,
    "token_type": "Bearer",
    "scope": "workflow.studio.api"
}

Step 4. - Retrieve Profile: [Workflow API (Export API)]

This will retrieve details of the user profile including data submitted for all fields and high level service response for the verification. You will get the Transaction Record IDs for each of the services run (Person Match and Person Watchlist Screening). This is different from the Transaction Id which will not be used (Transaction Id - identifies a transaction when it is submitted and Transaction Record ID - identifies a transaction when it’s been completed). Paste the Transaction Record ID in the corresponding collection variable.

{
    "id": "6531a5123e00003600042741",
    "created": 1697752338,
    "lastModified": 1697752504,
    "profileType": "NORMAL",
    "flowData": {
        "652ffc152e470e32d625c9e7": {
            "id": "652ffc152e470e32d625c9e7",
            "completed": true,
            "fieldData": {
                "652ffc65c792412ab8ea0e24": {
                    "id": "652ffc65c792412ab8ea0e24",
                    "name": "State",
                    "value": [
                        "State"
                    ]
                },
                "652ffc65c792412ab8ea0e21": {
                    "id": "652ffc65c792412ab8ea0e21",
                    "name": "First name",
                    "value": [
                        "FirstName"
                    ]
                },
                "652ffc65c792412ab8ea0e22": {
                    "id": "652ffc65c792412ab8ea0e22",
                    "name": "Last name",
                    "value": [
                        "LastName"
                    ]
                },
                "652ffc65c792412ab8ea0e23": {
                    "id": "652ffc65c792412ab8ea0e23",
                    "name": "Full Address",
                    "value": [
                        "FullAddress"
                    ]
                },
                "652ffc65c792412ab8ea0e29": {
                    "id": "652ffc65c792412ab8ea0e29",
                    "name": "City",
                    "value": [
                        "City"
                    ]
                },
                "652ffc65c792412ab8ea0e28": {
                    "id": "652ffc65c792412ab8ea0e28",
                    "name": "ZIP code",
                    "value": [
                        "Zipcode"
                    ]
                },
                "652ffc65c792412ab8ea0e2a": {
                    "id": "652ffc65c792412ab8ea0e2a",
                    "name": "Date of birth",
                    "value": [
                        "1990-01-01"
                    ]
                },
                "652ffc65c792412ab8ea0e20": {
                    "id": "652ffc65c792412ab8ea0e20",
                    "name": "Country of residence",
                    "value": [
                        "US"
                    ]
                }
            },
            "fileData": {},
            "serviceData": [
                null,
                {
                    "timestamp": 0,
                    "serviceStatus": "COMPLETED",
                    "match": false,
                    "transactionInfo": {
                        "accountName": "Workflow Workshops Customer Success-PM-Handson PersonMatch-2",
                        "accountIdentifier": "f3c8f356-a16d-423f-adc1-f3a901e5ff1b",
                        "countryCode": "US",
                        "date": "2023-10-19T21:55:05.895957",
                        "transactionId": "736c6d96-380b-46a5-97aa-dfb42414c6ab",
                        "transactionRecordId": "20bf6e49-5f18-94f4-4cb5-a61e466f70af",
                        "userName": "Workflow Workshops Customer Success-Service-Worker-1676997664"
                    },
                    "secondaryMatch": null
                },
                {
                    "timestamp": 0,
                    "serviceStatus": "COMPLETED",
                    "match": true,
                    "transactionInfo": {
                        "accountName": "Workflow Workshops Customer Success-PWS-Person WL-3",
                        "accountIdentifier": "4d60b224-427d-484f-b67f-9fda75da3667",
                        "countryCode": "US",
                        "date": "2023-10-19T21:55:08.131355",
                        "transactionId": "010475d2-1989-464c-a2df-f620fb340c39",
                        "transactionRecordId": "2003df94-6017-2040-8ba6-8803f1ca1da6",
                        "userName": "Workflow Workshops Customer Success-Service-Worker-1676997664"
                    },
                    "watchlistResults": {
                        "Advanced Watchlist": {
                            "watchlistStatus": "No Hit",
                            "watchlistHitDetails": {
                                "wlHitsNumber": 0,
                                "amHitsNumber": 0,
                                "pepHitsNumber": 0
                            }
                        }
                    },
                    "secondaryMatch": null
                }
            ]
        }
    },
    "status": "PENDING_REVIEW"
}

Step 5 - Get Transaction Record:

Under the Authorization tab, click on Generate New Access Token, click Proceed and then click on Use Token. This generates a unique token using the Client Id and Client Secret to authorize this API call. Get transaction details will provide additional details on the service response including datasource granular per field match/nomatch/missing results. Since you have both Person Match and Person Watchlist Screening in the workflow, you will need to run this call with the Transaction Record ID of both services one by one.

Responses

📘

The examples below are for a test entity; the data presented is not based on real information.

Example Verification Response

{
    "InputFields": [
        {
            "FieldName": "State",
            "Value": "State"
        },
        {
            "FieldName": "PostalCode",
            "Value": "Zipcode"
        },
        {
            "FieldName": "City",
            "Value": "City"
        },
        {
            "FieldName": "YearOfBirth",
            "Value": "1990"
        },
        {
            "FieldName": "LastName",
            "Value": "LastName"
        },
        {
            "FieldName": "FirstName",
            "Value": "FirstName"
        },
        {
            "FieldName": "Address1",
            "Value": "FullAddress"
        },
        {
            "FieldName": "MonthOfBirth",
            "Value": "1"
        },
        {
            "FieldName": "DayOfBirth",
            "Value": "1"
        }
    ],
    "TransactionID": "736c6d96-380b-46a5-97aa-dfb42414c6ab",
    "UploadedDt": "2023-10-19T21:55:05.419535",
    "CompletedDt": "2023-10-19T21:55:05.895957",
    "CountryCode": "US",
    "ProductName": "Identity Verification",
    "Record": {
        "TransactionRecordID": "20bf6e49-5f18-94f4-4cb5-a61e466f70af",
        "RecordStatus": "nomatch",
        "DatasourceResults": [
            {
                "DatasourceName": "Address Validation",
                "DatasourceFields": [],
                "AppendedFields": [
                    {
                        "FieldName": "City",
                        "Data": "City"
                    },
                    {
                        "FieldName": "State",
                        "Data": "STATE"
                    },
                    {
                        "FieldName": "PostalCode",
                        "Data": "00000"
                    },
                    {
                        "FieldName": "Country",
                        "Data": "US"
                    },
                    {
                        "FieldName": "Address1",
                        "Data": " Fulladdress"
                    },
                    {
                        "FieldName": "StreetName",
                        "Data": "Fulladdress"
                    }
                ],
                "Errors": [
                    {
                        "Code": "3008",
                        "Message": "Can not validate Address"
                    }
                ],
                "FieldGroups": []
            },
            {
                "DatasourceName": "Credit Agency 2",
                "DatasourceFields": [],
                "AppendedFields": [],
                "Errors": [
                    {
                        "Code": "3008",
                        "Message": "Can not validate Address"
                    },
                    {
                        "Code": "1001",
                        "Message": "Missing required field: State"
                    }
                ],
                "FieldGroups": []
            },
            {
                "DatasourceName": "Resident Files",
                "DatasourceFields": [],
                "AppendedFields": [],
                "Errors": [
                    {
                        "Code": "3008",
                        "Message": "Can not validate Address"
                    },
                    {
                        "Code": "1001",
                        "Message": "Missing required field: State"
                    }
                ],
                "FieldGroups": []
            },
            {
                "DatasourceName": "Telephone File",
                "DatasourceFields": [],
                "AppendedFields": [],
                "Errors": [
                    {
                        "Code": "3008",
                        "Message": "Can not validate Address"
                    },
                    {
                        "Code": "1001",
                        "Message": "Missing required field: State"
                    }
                ],
                "FieldGroups": []
            }
        ],
        "Errors": [
            {
                "Code": "3008",
                "Message": "Can not validate Address"
            }
        ],
        "Rule": {
            "RuleName": "Category 3 KYC v3",
            "Note": "Match(FamilyAndGivenInitial, DOB) or Match(FamilyAndGivenInitial, FullAddress) or Match(FamilyAndGivenInitial, ID) MiddleName Ignored"
        }
    },
    "Errors": []
}

Trulioo Watchlist Response

{
    "InputFields": [
        {
            "FieldName": "Country",
            "Value": "US"
        },
        {
            "FieldName": "YearOfBirth",
            "Value": "1990"
        },
        {
            "FieldName": "FirstName",
            "Value": "FirstName"
        },
        {
            "FieldName": "LastName",
            "Value": "LastName"
        },
        {
            "FieldName": "MonthOfBirth",
            "Value": "1"
        },
        {
            "FieldName": "DayOfBirth",
            "Value": "1"
        }
    ],
    "TransactionID": "010475d2-1989-464c-a2df-f620fb340c39",
    "UploadedDt": "2023-10-19T21:55:05.981346",
    "CompletedDt": "2023-10-19T21:55:08.131355",
    "CountryCode": "US",
    "ProductName": "Identity Verification",
    "Record": {
        "TransactionRecordID": "2003df94-6017-2040-8ba6-8803f1ca1da6",
        "RecordStatus": "match",
        "DatasourceResults": [
            {
                "DatasourceName": "Advanced Watchlist",
                "DatasourceFields": [],
                "AppendedFields": [
                    {
                        "FieldName": "WatchlistState",
                        "Data": "No Hit"
                    },
                    {
                        "FieldName": "WatchlistFullName",
                        "Data": "FirstName LastName"
                    }
                ],
                "Errors": [],
                "FieldGroups": []
            }
        ],
        "Errors": [],
        "Rule": {
            "RuleName": "RuleScript - WatchlistRules_v1",
            "Note": "1 Records Match (\n    (WatchlistState = \"Clear\") OR (WatchlistState = \"No Hit\")\n    )"
        }
    },
    "Errors": []
}