Create a profile for an associate and link it to a company (API)

This developer guide takes you through the steps to create profiles for company associates in the PassFort API 4.0.

Why do associates have profiles?

When a company applies to one of your products, you may wish to perform due diligence on associates (e.g. officers, shareholders, trustees, and authorised persons) before you approve the company's application.

You can use any of the following company tasks to perform due diligence on associates:

  • Identify officers (COMPANY_IDENTIFY_OFFICERS): Verify and approve key decision makers at board level, like directors and company secretaries.
  • Identify shareholders (COMPANY_IDENTIFY_BENEFICIAL_OWNERS): Verify and approve the company's shareholders and beneficial owners with significant voting rights and control.
  • Identify trustees (COMPANY_IDENTIFY_TRUSTEES): Verify and approve the charity's key decision makers at board level, like chairs and secretaries.
  • Identify authorised persons (COMPANY_IDENTIFY_AUTHORISED_PERSONS): Verify and approve the individuals who are authorised to purchase and, where relevant, use the product on behalf of the company.

When you configure the tasks above, you should specify which product associates will apply to. This determines which due diligence tasks associates need to pass before they can be approved for the company's task.

To onboard an associate, first create their profile, then link it to the company.

When you link the associate's profile, specify which tasks the associate is being verified for. The appropriate product application will be added to the associate's profile so due diligence can begin.

Associates that are companies can have their own due diligence tasks to verify their associates. Likewise, any of those associates that are companies can have their own tasks to verify their associates, and so on.
If you reject or cancel a profile for a company with associates, you should reject/cancel the profiles for the associates too. If you do not, the associates' profiles will have ongoing monitoring.
To learn more about the product application lifecycle, see Manage product applications.

The relationship between company tasks types and associate roles

Each company task type is used to verify associates with specific roles on their applications.

For example, the COMPANY_IDENTIFY_BENEFICIAL_OWNERS task type can be used to verify associates with a BENEFICIAL_OWNER role or a SHAREHOLDER role on their application.

If you have the Automatic addition to the verification list option enabled for the task, the associate's role will be added to their application automatically based on how you link the associate to the company.

If you have this option disabled, when you create the associate, you should send the application and specify the role.

The possible associate roles for each company task are as follows.

Company task

Possible associate roles

COMPANY_IDENTIFY_OFFICERS

  • COMPANY_SECRETARY
  • DIRECTOR
  • PARTNER
  • OTHER
  • RESIGNED OFFICER

COMPANY_IDENTIFY_BENEFICIAL_OWNERS

  • BENEFICIAL_OWNER
  • SHAREHOLDER

COMPANY_IDENTIFY_AUTHORISED_PERSONS

  • AUTHORIZED_PERSON
  • UNAUTHORIZED_PERSON

COMPANY_IDENTIFY_TRUSTEES

  • TRUSTEE

Before you begin

To avoid potential errors, you should ensure your policy is configured correctly.

To follow these steps you need to have Read-only access for the Smart policies permission.

Ensure the tasks are configured correctly

If an associate profile does not have the right product application for a task, you're likely to encounter the following errors:

  • When you view the Identify officers, Identify shareholders, or Identify trustees tasks in the portal, the verification status for associates will be No application.
  • When you view the Identify authorised persons task in the portal, associates will not be displayed at all; however, you will be able to see the associates by going to Profile data > Authorized persons.

We recommend enabling associates to be added to the task verification list automatically to ensure they always apply to the right product for the tasks.

To see if this configuration option is enabled, go to the policy Policy Builder > Tasks and follow these steps for the Identify officers, Identify shareholders, Identify trustees, and Identify authorised persons tasks:

  1. Go to the Tasks section and click the task name.
  2. Confirm the Product for which associated profiles will apply option is set to the desired product.
  3. Confirm the Automatic addition to the verification list option is set to Add all profiles or Add up to a specific number of profiles. If so, the option is enabled.

To update your configuration, contact us.

If you're using checks for these tasks, the automatic addition to the verification list option also determines which associates returned in the check results are added to the verification list automatically. If you do not want to use the configuration option, follow these steps.

Ensure the product is configured correctly

If you want to onboard who are associates who are individuals, your product should have a smart policy for individuals or a task set for individuals.

If not, an error will be returned when you try to create the associate profile.

To see if your product has a smart policy or task set for individuals:

  1. Go to Policy Builder > Your products.
  2. Select your product.
  3. If you're using the new smart policies (the Profiles will use the flow chart smart policy for this product checkbox is selected), ensure there is a smart policy under Individual Policy > Smart Policy. If you're not, ensure there is a task set under Individual Policy > Task set.

To update your configuration, contact us.

If you want to let your users choose which associates to verify

By default, any associates you create will be added to the verification list so their onboarding can begin.

In the portal, the verification list is displayed on the right side of the task.

If you prefer, you can add the associates to the left side of the task and let your users choose which ones should be moved to the verification list for onboarding.

This configuration is not available for the Identify authorised persons task, which doesn't have a left side.

If you would like associates to be displayed on the left side of the task, we'll make the following changes to your configuration:

  1. Create a duplicate of the associate task, and add it to the product you're using to onboard companies.
  2. Create a new product that automatically approves all profiles that apply to it. This product does not do anything else.
  3. On the duplicate associate task:
    1. Set the Product for which associated profiles will apply option to the product that automatically approves all profiles.
    2. Set the Criteria for automatic addition to the verification list option to Add all profiles.
    3. Set the Policy for automatic task completion option to All profiles in the verification list must be approved.
  4. On the normal associate task, set the Criteria for automatic addition to the verification list option to Automatic addition is disabled.

When this configuration is enabled, users will see both versions of the task.

Whenever you create a profile for an associate, they'll be added to the verification list of the auto-approve task, then copied to the left side of the normal task automatically.

Users can then use the normal task to view associates on the left and move them to the verification list.

The auto-approve task will be displayed as Passed as soon as you add an associate. Users should avoid using this task.

Because automatic addition to the verification list is enabled on the auto-approve task, you do not need to send the applications array when you create the profile in step 1.

1. Create the associate profile and get its ID

To create a profile for the associate, make a request to the endpoint below.

Take note of the id in the response. You'll need the id for the next step.

Request:

POST https://api.passfort.com/4.0/profiles

Body parameters:

When you make the POST request, include the following parameters in the body.

Key

Value

Description

role

Required

String

INDIVIDUAL_ASSOCIATED or COMPANY_ASSOCIATED

The profile's type.

For associates who are individuals, the value should be INDIVIDUAL_ASSOCIATED.

For associates who are companies, the value should be COMPANY_ASSOCIATED.

collected_data

Required

any (EntityData)

See the sample request body below for a sample value.

An object that contains basic profile information (like the individual’s or company's name).

For the full list of parameters you can pass in collected_data, see Create a profile in the Developer Resources.

If you have the Automatic addition to the verification list option enabled, you should not send the applications array of objects in the request. The correct application will be added to the associate profile automatically when you link the associate profile to the company profile in step 3. If you have this option disabled, see these instructions.

In this example, we'll create an associate who's an individual named Nayab Ali Khan.

This sample assumes the Automatic addition to the verification list option is enabled, so it does not include the associate's application and role in the request.

Sample request body:

{
"role": "INDIVIDUAL_ASSOCIATED",
"collected_data": {
"entity_type": "INDIVIDUAL",
"personal_details": {
"name": {
"given_names": [
"Nayab"
],
"family_name": "Ali Khan"
}
}
}
}

Sample response:

{
"applications": [ ],
"category": "INACTIVE_APPLICANT",
"checks": [ ],
"collected_data": {
"entity_type": "INDIVIDUAL",
"personal_details": {
"name": {
"family_name": "Ali Khan",
"given_names": [
"Nayab"
]
}
}
},
"collection_steps": [ ],
"creation_date": "2020-02-27 15:00:18",
"display_name": "Nayab Ali Khan",
"document_images": [ ],
"events": [ ],
"has_associates": false,
"has_collection_steps": false,
"id": "a37764c1-134b-8c85-9527-7a9327ed9071",
"linked_to": [ ],
"role": "INDIVIDUAL_ASSOCIATED",
"root_id": "5d90cbd1-d872-28a6-86ed-cb4c7778c25a",
"status": "NORMAL",
"tags": [ ],
"task_progress": {
"completed_count": 0,
"total_count": 0
},
"task_types": [ ],
"tasks": [ ],
"unresolved_event_types": [ ]
}

2. Select the company profile

Choose which company profile you'll link the associate to.

Get the ID number of the company's profile (e.g. a2e7545b-cb67-7a0e-7108-a444461891a9). You'll need it to make the request to get its collected data in the next step.

If you haven't created the profile yet, follow the steps to create a company profile and add a product application. The id is returned in the response.

To link the associate to the company, update the company’s collected_data with the associate's information.

First get the company's existing collected data, then modify it and pass the modified data back to the company.

Get the company's existing collected data

Use the company's profile id (that you used in Step 1) to make a request to the endpoint below.

The response returns everything that currently exists in the profile's collected_data.

Request:

GET https://api.passfort.com/4.0/profiles/{profile_id}/collected_data

Sample response:

{
"entity_type": "COMPANY",
"metadata": {
"country_of_incorporation": "GBR",
"name": "AERIAL TRADERS",
"number": "09565115",
"structured_company_type": { }
}
}

Copy the entire response so you have it for the next step.

Also copy the ETag from the response header.

It's important to copy the entire response body because, in the next step, you must send everything you want to keep in collected_data. It's not possible to use the request to update specific fields.

Modify the company's collected data

Take the response you copied and add the associate's information to the object(s) that correspond to their role(s) at the company.

At a minimum, you must pass the following information in each object:

  • entity_type: Whether the associate is an INDIVIDUAL or a COMPANY.
  • id: The ID for the associate's profile, which you copied in step 1.

The possible objects and their required parameters are as follows.

There are additional optional fields you can add to each object to store granular information like the associate's appointed date or share amount. For a complete list of optional fields, see the documentation for Create a profile in the Developer Resources.
Officers object

Use the officers object when the associated_role is any of the following:

  • COMPANY_SECRETARY
  • DIRECTOR
  • PARTNER
  • OTHER
  • RESIGNED_OFFICER
  • TRUSTEE

These are the required parameters for the object.

Key

Value

Description

officers

Required

Object

For a sample, see the sample request body in Send the modified data.

An object that lists the individuals who are officers of the company or charity.

officers.directors

Optional

Array of objects

For a sample, see the sample request body in Send the modified data.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.directors.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.directors.linked_profile

Required

Object

For a sample, see the sample request body in Send the modified data.

An object that contains the ID of the associate profile.

officers.directors.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

officers.partners

Optional

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.partners.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.partners.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate profile.

officers.partners.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

officers.secretaries

Optional

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.secretaries.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.secretaries.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate profile.

officers.secretaries.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

officers.trustees

Optional

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.trustees.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.trustees.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate profile.

officers.trustees.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

officers.other

Optional

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.other.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.other.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate's profile.

officers.other.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

officers.resigned

Optional

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

This determines where the associate is displayed in the company structure.

You can place the associate in more than one of these.

officers.resigned.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the director is an individual or a company.

officers.resigned.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate profile.

officers.resigned.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

Authorised persons object

Use the authorized_persons object when the associated_role is AUTHORIZED_PERSON.

These are the required parameters for the object.

Key

Value

Description

authorized_persons

Required

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

An object that lists the individuals who are authorised to purchase and, where relevant, use the product on behalf of the company.

authorized_persons.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the associate is an individual or a company.

authorized_persons.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate's profile.

authorized_persons.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The ID of the associate's profile.

Unauthorised persons object

Use the unauthorized_persons when the associated_role is UNAUTHORIZED_PERSON.

These are the required parameters for the object.

Key

Value

Description

unauthorized_persons

Required

Array of objects

For a sample, see the description for Update collected data in the Developer Resources.

An object that lists the individuals who are not authorised to purchase and, where relevant, use the product on behalf of the company.

unauthorized_persons.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the associate is an individual or a company.

unauthorized_persons.linked_profile

Required

Object

For a sample, see the description for Update collected data in the Developer Resources.

An object that contains the ID of the associate's profile.

unauthorized_persons.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The ID of the associate's profile.

Ownership structure object

Use the ownership_structure object when the associated_role is BENEFICIAL_OWNER or SHAREHOLDER.

These are the required parameters for the object.

Key

Value

Description

ownership_structure

Required

Object

For a sample, see the sample request body in Send the modified data.

An object that lists the individuals and companies who are beneficial owners and/or shareholders.

ownership_structure.beneficial_owners

Optional

Array of objects

For a sample, see the sample request body in Send the modified data.

This object lists the individuals and companies who are beneficial owners, meaning they own or control more than 25% of the company's shares or voting rights, or otherwise exercise control over the company or its management.

ownership_structure.beneficial_owners.entity_type

Required

String

INDIVIDUAL or COMPANY

Whether the beneficial owner is an individual or a company.

ownership_structure.beneficial_owners.linked_profile

Required

Object

For a sample, see the sample request body in Send the modified data.

An object that contains the ID of the associate's profile.

ownership_structure.beneficial_owners.linked_profile.id

Required

String

Sample value:

a37764c1-134b-8c85-9527-7a9327ed9071

The unique identifier for the associate's profile.

ownership_structure can also detail quantity and/or percentage of each share class an associate owns. To learn more, see the description for Update collected data in the Developer Resources.

Send the modified data

Use the request below to post the collected_data you modified back to the company's profile.

In the request header, send a parameter called If-Match with the value of the ETag you copied when you got the company's existing collected data.

In the example below, we'll link the profile for the associate named Nayab Ali Khan, which we created in step 2.

Nayab is both a director and a beneficial owner of the company, so we'll add their details to the officers object and the ownership_structure object.

Request:

POST https://api.passfort.com/4.0/profiles/{profile_id}/collected_data

Body parameters:

For the body parameters for the POST request, see Modify the company's collected data.

Sample request body:

{
"entity_type": "COMPANY",
"metadata": {
"country_of_incorporation": "GBR",
"name": "AERIAL TRADERS",
"number": "09565115",
"structured_company_type": { }
},
"officers": {
"directors": [
{
"entity_type": "INDIVIDUAL",
"linked_profile": {
"id": "a37764c1-134b-8c85-9527-7a9327ed9071"
}
}
]
},
"ownership_structure": {
"beneficial_owners": [
{
"entity_type": "INDIVIDUAL",
"linked_profile": {
"id": "a37764c1-134b-8c85-9527-7a9327ed9071"
}
}
]
}
}

Sample response:

{
"entity_type": "COMPANY",
"metadata": {
"country_of_incorporation": "GBR",
"name": "AERIAL TRADERS",
"number": "09565115",
"structured_company_type": { }
},
"officers": {
"directors": [
{
"entity_type": "INDIVIDUAL",
"linked_profile": {
"applications": [
{
"approval_blockers": [ … ],
"assignments": [ ],
"associated_role": "DIRECTOR",
"flag": "REQUIRES_MANUAL_TASK_COMPLETION",
"flag_history": [ … ],
"hidden": false,
"history": [ … ],
"id": "b125a317-002d-4109-7551-242d9d7519ad",
"product": {
"alias": "forexo_pro_associates",
"automatically_approve": false,
"id": "4ed3796b-9a43-4dd4-e969-cae676e6705a",
"name": "Forexo Pro Associates"
},
"required_tasks": [
{
"id": "bdb87a86-bd8d-6d83-b976-e114959a38d9",
"name": "Identify officers",
"task_type": "COMPANY_IDENTIFY_OFFICERS"
},
{
"id": "913c68e8-c246-463d-b59b-78c4444647b9",
"name": "Identify shareholders",
"task_type": "COMPANY_IDENTIFY_BENEFICIAL_OWNERS"
}
],
"status": "APPLIED"
},
{
"approval_blockers": [ … ],
"assignments": [ ],
"associated_role": "BENEFICIAL_OWNER",
"flag": "REQUIRES_MANUAL_TASK_COMPLETION",
"flag_history": [ … ],
"hidden": false,
"history": [ … ],
"id": "b35074de-3dd2-651d-1d65-c33e5e3d0238",
"product": {
"alias": "forexo_pro_associates",
"automatically_approve": false,
"id": "4ed3796b-9a43-4dd4-e969-cae676e6705a",
"name": "Forexo Pro Associates"
},
"required_tasks": [
{
"id": "bdb87a86-bd8d-6d83-b976-e114959a38d9",
"name": "Identify officers",
"task_type": "COMPANY_IDENTIFY_OFFICERS"
},
{
"id": "913c68e8-c246-463d-b59b-78c4444647b9",
"name": "Identify shareholders",
"task_type": "COMPANY_IDENTIFY_BENEFICIAL_OWNERS"
}
],
"status": "APPLIED"
}
],
"category": "APPLICANT",
"collected_data": { … },
"display_name": "Nayab Ali Khan",
"has_associates": false,
"has_collection_steps": false,
"id": "a37764c1-134b-8c85-9527-7a9327ed9071",
"role": "INDIVIDUAL_ASSOCIATED",
"status": "NORMAL",
"tags": [ ],
"task_progress": { ... },
"tasks": [ ... ],
"unresolved_event_types": [ ]
},
"merged_resolver_ids": [ ],
"resolver_id": "a52cdc09-c428-3ada-3e20-7a21062e698d",
"task_variant_ids": [ … ]
}
]
},
"ownership_structure": {
"beneficial_owners": [
{
"entity_type": "INDIVIDUAL",
"linked_profile": {
"applications": [ … ],
"category": "APPLICANT",
"collected_data": { … },
"display_name": "Nayab Ali Khan",
"has_associates": false,
"has_collection_steps": false,
"id": "a37764c1-134b-8c85-9527-7a9327ed9071",
"role": "INDIVIDUAL_ASSOCIATED",
"status": "NORMAL",
"tags": [ ],
"task_progress": { … },
"tasks": [ ... ],
"unresolved_event_types": [ ]
},
"merged_resolver_ids": [ ],
"resolver_id": "a52cdc09-c428-3ada-3e20-7a21062e698d",
"task_variant_ids": [ … ]
}
]
}
}

We can see in the response that when the associate profile is created, there are some important parts added to the profile automatically:

  • applications: An array of objects containing the associate's applications to the product(s) specified in the associate tasks.
  • tasks: An object containing a list of the due diligence tasks that the associate needs to pass before their application(s) can be approved. Each task only needs to be passed/failed once, even when it's shared across multiple applications. In the example above, the individual will need to have their identity and address verified before their application as a director and their application as a beneficial owner can be approved.

When you first create an associate profile, applications and tasks will likely not be returned immediately. This can happen for a number of reasons. For example, the application's risk level may still be calculating or the smart policy may require more profile data to continue.

If the associate profile has a product application, the applications.flag field contains the current state of the application.

If you don't want associates to be added to the verification list automatically

If you don't want to use the option to add associates to the verification list automatically, you need to send the applications array of objects in the request to create the associate profile in step 1.

The parameters for the applications array of objects are as follows:

Key

Value

Description

applications.product.id

Optional

This key is Required if applications.product.alias is not provided. We recommend sending applications.product.id using the instructions below.

String

Sample value:

ec1565b6-82c7-0577-8b3a-94462b67c97a

The unique identifier of the product that associates will apply to.

This should match the product set in the task configuration.

We suggest following the steps below to get the product ID so you won't need to update your code if the task configuration changes.

applications.product.alias

Optional

This key is Required if applications.product.id is not provided. We recommend sending applications.product.id using the instructions below.

String

Sample value:

forexo_pro_associates

The alias for the product that associates apply to.

This should match the product set in the task configuration.

applications.associated_role

Required

String

One of:

  • COMPANY_SECRETARY
  • DIRECTOR
  • PARTNER
  • OTHER
  • RESIGNED_OFFICER
  • TRUSTEE

AND/OR one of:

  • AUTHORIZED_PERSON
  • UNAUTHORIZED_PERSON

AND/OR one of:

  • BENEFICIAL_OWNER
  • SHAREHOLDER

The associate's role(s) at the company.

To learn more, see The relationship between company task types and associate roles.

applications.product.status

Optional

String

One of:

  • APPLIED
  • APPROVED
  • IN_REVIEW
  • REJECTED
  • CANCELLED

The current status of the application.

If you do not send this field, the correct status for the product application lifecycle will be used. Initially, the status of all new applications is APPLIED.

Sample of the applications array of objects when the associate is a director and a beneficial owner:

"applications": [
{
"product": {
"id": "ec1565b6-82c7-0577-8b3a-94462b67c97a"
},
"associated_role": "BENEFICIAL_OWNER",
"associated_role": "DIRECTOR"
}
]

Get the product ID for the task

First, get the task variant ID from the company profile

Make a request to the endpoint below, using the company profile ID.

Request endpoint:

GET https://api.passfort.com/4.0/profiles/{profile_id}

Sample response:

{
"applications": [
{
"approval_blockers": [ ... ],
"assignments": [ ],
"flag": "REQUIRES_MANUAL_TASK_COMPLETION",
"flag_history": [ … ],
"hidden": false,
"history": [ … ],
"id": "a2e7545b-cb67-7a0e-7108-a444461891a9",
"product": {
"alias": "forexo_pro",
"automatically_approve": false,
"id": "379ec33c-5650-1c13-6288-e0369515b949",
"name": "Forexo Pro Account"
},
"required_tasks": [
{
"alias": "forexo_pro_identify_officers",
"id": "bdb87a86-bd8d-6d83-b976-e114959a38d9",
"name": "Identify officers",
"task_type": "COMPANY_IDENTIFY_OFFICERS"
},
{
"alias": "forexo_pro_identify_shareholders",
"id": "913c68e8-c246-463d-b59b-78c4444647b9",
"name": "Identify shareholders",
"task_type": "COMPANY_IDENTIFY_BENEFICIAL_OWNERS"
}
],
"status": "APPLIED"
}
],
"category": "APPLICANT",
"checks": [ ... ],
"collected_data": {
"entity_type": "COMPANY",
"customer_ref": "",
"metadata": {
"country_of_incorporation": "GBR",
"name": "AERIAL TRADERS",
"number": "09565115",
"structured_company_type": { }
},
"officers": { … },
"ownership_structure": { … }
},
"collection_steps": [ ],
"creation_date": "2020-02-27 14:48:07",
"display_name": "AERIAL TRADERS",
"document_images": [ ],
"events": [ ],
"has_associates": true,
"has_collection_steps": false,
"id": "a2e7545b-cb67-7a0e-7108-a444461891a9",
"linked_to": [ ],
"role": "COMPANY_CUSTOMER",
"root_id": "822789de-c438-ac0a-94a4-9c80d704c0ec",
"status": "NORMAL",
"tags": [ ],
"task_progress": { … },
"task_types": [ … ],
"tasks": [ … ],
"unresolved_event_types": [ ]
}

To find the task variant ID in the response:

  1. Find the object in the applications array that has the product alias you're using. In the example above, the applications array has one object with forexo_pro as the product alias (applications.product.alias).
  2. When you've found the right object, look in its required_tasks to find the one with the task_type that matches the task you're using (applications.required_tasks.task_type), then take the corresponding variant ID (applications.required_tasks.id). In the example above, the task with the COMPANY_IDENTIFY_OFFICERS task type has bdb87a86-bd8d-6d83-b976-e114959a38d9 as the task variant ID.
Next, get the product ID from the task variant

Make a request to the endpoint below, using the task variant ID.

Request endpoint:

GET https://api.passfort.com/4.0/config/tasks/{task_variant_id}

Sample response:

{
"acceptable_checks": [ ],
"automatic_checks": [ ],
"id": "bdb87a86-bd8d-6d83-b976-e114959a38d9",
"is_default": true,
"is_deleted": false,
"name": "Identify officers",
"smart_policies": [ … ],
"task_sets": [ … ],
"task_type": "COMPANY_IDENTIFY_OFFICERS",
"task_type_config": [
{
"direct_only": false,
"label": "Criteria for automatic addition to the verification list",
"name": "addition_criteria",
"options": [ … ],
"subtext": "No more than 100 direct associates will be automatically added, even if they would meet the criteria. There is no limit to the number of associates which may be manually added.",
"type": "AssociatedProfilesAdditionCriteria",
"value": "DISABLED"
},
{
"direct_only": false,
"label": "Product ID",
"name": "product_id",
"subtext": "ID of the product the associate profiles will apply for",
"type": "string",
"value": "ec1565b6-82c7-0577-8b3a-94462b67c97a"
},
{
"direct_only": false,
"label": "Number of officers to be added",
"name": "number_to_add",
"subtext": "This determines the minimum number of officers to be automatically added to the verification list",
"type": "number",
"value": 2
},
{
"direct_only": false,
"label": "Policy for automatic task completion",
"name": "completion_policy",
"options": [ … ],
"subtext": "This decides which policy is used to determine automatic task completion",
"type": "AssociatedProfilesTaskCompletionPolicy",
"value": "DISABLED"
},
{
"direct_only": false,
"label": "Number of approved officers needed to complete the task",
"name": "number_to_complete",
"subtext": "This determines the minimum number of approved officers needed to automatically complete the task",
"type": "number"
},
{
"direct_only": false,
"label": "Task expiry period (days)",
"name": "expiry_period_days",
"subtext": "This determines the expected time period to pass before the task is expired",
"type": "number"
}
]
}

To get the product ID from the response:

  1. Find the object in the task_type_config array that has product_id as the name.
  2. Get the value for this object. In the example above, the value for this object is ec1565b6-82c7-0577-8b3a-94462b67c97a.


How did we do?


Powered by HelpDocs (opens in a new tab)