> For the complete documentation index, see [llms.txt](https://detected.gitbook.io/detected-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://detected.gitbook.io/detected-docs/profiles.md).

# Profiles

Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments.

## List profile custom fields

> Returns the custom fields defined for a profile, with the label and current value of each.\
> \
> This endpoint is paginated. Use the \`page\` parameter to request further pages. The \`meta\` and \`links\` objects in the response describe the current page and link to the others.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"uuid":{"name":"uuid","in":"path","description":"UUID of the item named in the path, for example the profile in `/profiles/{uuid}` or the representative in `/representatives/{uuid}`.","required":true,"schema":{"type":"string","nullable":false}},"page":{"name":"page","in":"query","description":"Page number of the results to return, starting from 1. The number of items per page is returned in `meta.per_page`.","schema":{"type":"integer","minimum":1}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"schemas":{"ProfileCustomFieldResource":{"title":"Profile Custom Field Resource","required":["label","type","is_required","value"],"properties":{"label":{"description":"The custom field label.","type":"string","nullable":false},"type":{"description":"Type of the custom field.","type":"string","enum":["text","select","multi_select","date"],"nullable":false},"is_required":{"description":"Whether the custom field is required.","type":"boolean","nullable":false},"value":{"description":"The value of the custom field for this profile.","nullable":true,"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"type":"object"},"LinksResource":{"title":"Links Resource","properties":{"first":{"description":"URL of the first page of results.","type":"string","nullable":false},"last":{"description":"URL of the last page of results.","type":"string","nullable":false},"prev":{"description":"URL of the previous page of results, or null if there is none.","type":"string","nullable":false},"next":{"description":"URL of the next page of results, or null if there is none.","type":"string","nullable":false}},"type":"object"},"MetaResource":{"title":"Meta Resource","properties":{"current_page":{"description":"Number of the current page.","type":"number","nullable":false},"from":{"description":"Position of the first item on this page, counted across all pages.","type":"number","nullable":false},"last_page":{"description":"Number of the last page.","type":"number","nullable":false},"links":{"description":"Pagination links, including links to the previous and next pages.","type":"array","items":{"properties":{"url":{"description":"URL of the page, or `null` if there is no such page.","type":"string","nullable":false},"label":{"description":"Text to display for the link, for example a page number or \"Previous\".","type":"string","nullable":false},"active":{"description":"Whether this link is for the current page.","type":"boolean","nullable":false}},"type":"object"},"nullable":false},"path":{"description":"Base URL of the endpoint, without query parameters.","type":"string","nullable":false},"per_page":{"description":"Number of items per page.","type":"number","nullable":false},"to":{"description":"Position of the last item on this page, counted across all pages.","type":"number","nullable":false},"total":{"description":"Total number of items across all pages.","type":"number","nullable":false}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}/custom-fields":{"get":{"tags":["Profiles"],"summary":"List profile custom fields","description":"Returns the custom fields defined for a profile, with the label and current value of each.\n\nThis endpoint is paginated. Use the `page` parameter to request further pages. The `meta` and `links` objects in the response describe the current page and link to the others.","operationId":"38e4ef67bc9385e180e6a60d95cb4ba3","parameters":[{"$ref":"#/components/parameters/uuid"},{"$ref":"#/components/parameters/page"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"description":"List of custom fields with their values for the profile","type":"array","items":{"$ref":"#/components/schemas/ProfileCustomFieldResource"}},"links":{"$ref":"#/components/schemas/LinksResource"},"meta":{"$ref":"#/components/schemas/MetaResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## List profiles

> Returns a list of profiles for your account. Use the query parameters to filter the results.\
> \
> This endpoint is paginated. Use the \`page\` parameter to request further pages. The \`meta\` and \`links\` objects in the response describe the current page and link to the others.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"order_by":{"name":"order_by","in":"query","description":"Direction to sort the results in: `asc` for ascending or `desc` for descending. Use it together with `sort_by`; it has no effect if `sort_by` is omitted. The default is `asc`.","schema":{"type":"string","enum":["desc","asc"]}},"page":{"name":"page","in":"query","description":"Page number of the results to return, starting from 1. The number of items per page is returned in `meta.per_page`.","schema":{"type":"integer","minimum":1}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"schemas":{"ProfileListResource":{"title":"Profile List Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"company_name":{"description":"Name of the company.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"brand":{"description":"Brand assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Brand UUID.","type":"string","nullable":false},"name":{"description":"Brand name.","type":"string","nullable":false},"slug":{"description":"Brand slug.","type":"string","nullable":false}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"},"LinksResource":{"title":"Links Resource","properties":{"first":{"description":"URL of the first page of results.","type":"string","nullable":false},"last":{"description":"URL of the last page of results.","type":"string","nullable":false},"prev":{"description":"URL of the previous page of results, or null if there is none.","type":"string","nullable":false},"next":{"description":"URL of the next page of results, or null if there is none.","type":"string","nullable":false}},"type":"object"},"MetaResource":{"title":"Meta Resource","properties":{"current_page":{"description":"Number of the current page.","type":"number","nullable":false},"from":{"description":"Position of the first item on this page, counted across all pages.","type":"number","nullable":false},"last_page":{"description":"Number of the last page.","type":"number","nullable":false},"links":{"description":"Pagination links, including links to the previous and next pages.","type":"array","items":{"properties":{"url":{"description":"URL of the page, or `null` if there is no such page.","type":"string","nullable":false},"label":{"description":"Text to display for the link, for example a page number or \"Previous\".","type":"string","nullable":false},"active":{"description":"Whether this link is for the current page.","type":"boolean","nullable":false}},"type":"object"},"nullable":false},"path":{"description":"Base URL of the endpoint, without query parameters.","type":"string","nullable":false},"per_page":{"description":"Number of items per page.","type":"number","nullable":false},"to":{"description":"Position of the last item on this page, counted across all pages.","type":"number","nullable":false},"total":{"description":"Total number of items across all pages.","type":"number","nullable":false}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles":{"get":{"tags":["Profiles"],"summary":"List profiles","description":"Returns a list of profiles for your account. Use the query parameters to filter the results.\n\nThis endpoint is paginated. Use the `page` parameter to request further pages. The `meta` and `links` objects in the response describe the current page and link to the others.","operationId":"5b1ecce433c6ba5699ce22c2218b9dba","parameters":[{"$ref":"#/components/parameters/order_by"},{"name":"sort_by","in":"query","description":"The field to sort the results by. Use it together with `order_by` to choose the direction; if `order_by` is omitted, results are sorted in ascending order (`asc`). If `sort_by` is omitted, results are returned in no guaranteed order.\n\nSupported fields:\n- `id`\n- `configuration_id`\n- `review_status`\n- `created_at`\n- `updated_at`\n","schema":{"type":"string"}},{"$ref":"#/components/parameters/page"},{"name":"id","in":"query","description":"Filter by profile UUID. If a match is found, only that profile is returned.","schema":{"type":"string","format":"uuid"}},{"name":"entity_type","in":"query","description":"Filter by entity type.","schema":{"type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"]}},{"name":"review_status","in":"query","description":"Filter by review status.","schema":{"type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"]}},{"name":"team_id","in":"query","description":"Filter by the ID of the team the profile is assigned to.","schema":{"type":"integer"}},{"name":"assignee_id","in":"query","description":"Filter by the ID of the case management user the profile is assigned to.","schema":{"type":"string"}},{"name":"risk_id","in":"query","description":"Filter by the ID of the risk category assigned to the profile.","schema":{"type":"string","format":"uuid"}},{"name":"customer_reference","in":"query","description":"Filter by customer reference.","schema":{"type":"string"}},{"name":"configuration_id","in":"query","description":"Filter by the ID of the configuration assigned to the profile.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"description":"List of profiles","type":"array","items":{"$ref":"#/components/schemas/ProfileListResource"}},"links":{"$ref":"#/components/schemas/LinksResource"},"meta":{"$ref":"#/components/schemas/MetaResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Create a profile

> Creates a profile. There are two ways to do it, both using this endpoint with different fields.\
> \
> \### Option 1: create from a search result\
> \
> Use this after you have searched for the company with \`POST /search\`. Send the \`lookup\_id\` from the search response and the \`response\_id\` of the result you want. The company details come from the search result, so do not send them yourself.\
> \
> \- Required: \`customer\_reference\`, \`lookup\_id\`, \`response\_id\`\
> \- Optional: \`type\`, \`domain\`, \`brand\_id\`\
> \
> \### Option 2: create manually\
> \
> Use this when the company cannot be found by search, or when you want to supply the details yourself. Send the company details.\
> \
> \- Required: \`customer\_reference\`, \`name\`, \`address\` (with \`country\_code\` and \`city\`)\
> \- Optional: \`type\`, \`company\_number\`, \`vat\_number\`, \`domain\`, \`brand\_id\`, and the rest of the address\
> \
> If you do not send \`type\`, \`company\_number\` is also required. If you send \`type\`, the exact company details that are required depend on the entity type.\
> \
> You cannot mix the two options: a request that contains \`lookup\_id\` or \`response\_id\` together with any of the company details (\`name\`, \`company\_number\`, \`vat\_number\` or \`address\`) is rejected with a \`422\` error.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"schemas":{"CreateProfileRequest":{"title":"Create Profile Request","description":"Send one of two kinds of request: create a profile from a search result, or create one manually.","oneOf":[{"$ref":"#/components/schemas/CreateProfileFromSearchRequest"},{"$ref":"#/components/schemas/CreateProfileManualRequest"}]},"CreateProfileFromSearchRequest":{"title":"Create Profile From Search Request","description":"Creates a profile from a search result. Send the `lookup_id` and `response_id` of the result you want. The company details come from the search result, so you cannot send them yourself.","required":["customer_reference","lookup_id","response_id"],"properties":{"type":{"description":"Entity type of the profile.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"lookup_id":{"description":"Lookup ID from a `POST /search` response. Send it with `response_id` to create the profile from a search result.","type":"integer","nullable":false},"response_id":{"description":"ID of the search result to create the profile from. Send it with `lookup_id`.","type":"integer","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"brand_id":{"description":"Brand UUID to assign to the profile.","type":"string","format":"uuid","nullable":true},"domain":{"description":"Company domain, without protocol or path, for example `detected.co`.","type":"string","nullable":false}},"type":"object","not":{"anyOf":[{"required":["name"]},{"required":["company_number"]},{"required":["vat_number"]},{"required":["address"]}]}},"CreateProfileManualRequest":{"title":"Create Profile Manual Request","description":"Creates a profile from company details that you provide. Use this when the company cannot be found by search.","required":["customer_reference","name","address"],"properties":{"type":{"description":"Entity type of the profile.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"brand_id":{"description":"Brand UUID to assign to the profile.","type":"string","format":"uuid","nullable":true},"company_number":{"description":"Company registration number.","type":"string","nullable":false},"name":{"description":"Company name.","type":"string","nullable":false},"vat_number":{"description":"VAT number.","type":"string","nullable":false},"domain":{"description":"Company domain, without protocol or path, for example `detected.co`.","type":"string","nullable":false},"address":{"description":"Address of the company.","required":["country_code","city"],"properties":{"line_1":{"description":"First line of the address.","type":"string","nullable":false},"line_2":{"description":"Second line of the address.","type":"string","nullable":false},"country_code":{"description":"Country of the address, ISO 3166-1 alpha-2 country code.","type":"string","nullable":false},"town":{"description":"Town.","type":"string","nullable":false},"city":{"description":"City.","type":"string","nullable":false},"post_code":{"description":"Postcode.","type":"string","nullable":false},"province":{"description":"Province.","type":"string","nullable":false},"state":{"description":"State or region.","type":"string","nullable":false}},"type":"object","nullable":false}},"type":"object","not":{"anyOf":[{"required":["lookup_id"]},{"required":["response_id"]}]}},"ProfileListResource":{"title":"Profile List Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"company_name":{"description":"Name of the company.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"brand":{"description":"Brand assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Brand UUID.","type":"string","nullable":false},"name":{"description":"Brand name.","type":"string","nullable":false},"slug":{"description":"Brand slug.","type":"string","nullable":false}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles":{"post":{"tags":["Profiles"],"summary":"Create a profile","description":"Creates a profile. There are two ways to do it, both using this endpoint with different fields.\n\n### Option 1: create from a search result\n\nUse this after you have searched for the company with `POST /search`. Send the `lookup_id` from the search response and the `response_id` of the result you want. The company details come from the search result, so do not send them yourself.\n\n- Required: `customer_reference`, `lookup_id`, `response_id`\n- Optional: `type`, `domain`, `brand_id`\n\n### Option 2: create manually\n\nUse this when the company cannot be found by search, or when you want to supply the details yourself. Send the company details.\n\n- Required: `customer_reference`, `name`, `address` (with `country_code` and `city`)\n- Optional: `type`, `company_number`, `vat_number`, `domain`, `brand_id`, and the rest of the address\n\nIf you do not send `type`, `company_number` is also required. If you send `type`, the exact company details that are required depend on the entity type.\n\nYou cannot mix the two options: a request that contains `lookup_id` or `response_id` together with any of the company details (`name`, `company_number`, `vat_number` or `address`) is rejected with a `422` error.","operationId":"create-profile-endpoint","requestBody":{"description":"Send either the search result fields (Option 1) or the company details (Option 2). See the description of this endpoint.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProfileRequest"}}}},"responses":{"201":{"description":"Created. The profile was created.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ProfileListResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Retrieve a profile

> Returns a single profile, including company details, screenings and more.\
> \
> \### Data source providers\
> \
> Company data comes from a range of data providers, and each supplies information in a different format. Some of it is normalised to a consistent format, but not all of it can be, so the response may include undocumented data.\
> \
> Every field under \`data.company\` either contains information, is \`null\`, or is an empty array (\`\[]\`). We cannot guarantee that data is present, because that depends on what the data providers supply.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"uuid":{"name":"uuid","in":"path","description":"UUID of the item named in the path, for example the profile in `/profiles/{uuid}` or the representative in `/representatives/{uuid}`.","required":true,"schema":{"type":"string","nullable":false}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"schemas":{"ProfileResource":{"title":"Profile Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"type":"object","allOf":[{"$ref":"#/components/schemas/ProfileListResource"},{"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"onboarding_statuses":{"description":"Portal onboarding statuses.","type":"array","items":{"properties":{"title":{"description":"Onboarding step name.","type":"string","nullable":false},"status":{"description":"Status of onboarding step.","type":"string","enum":["pending","completed","in-progress","in-complete"],"nullable":false}},"type":"object"},"nullable":true},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"company":{"description":"Company data from the data providers. See the notes on `GET /profiles/{uuid}`.","properties":{"profile":{"description":"Core details of the company.","properties":{"ProfileCompanyName":{"description":"Company name.","type":"string","nullable":true},"ProfileCompanyStatusActive":{"description":"Whether the company is active.","type":"boolean","nullable":true},"ProfileCompanyRegisteredCountry":{"description":"Country the company is registered in.","type":"string","nullable":true},"ProfileCompanyReference":{"description":"Company registration number.","type":"string","nullable":true},"ProfileCompanyStatusProvider":{"description":"Company status, as reported by the provider.","type":"string","nullable":true},"ProfileCompanyLegalForm":{"description":"Legal form of the company.","type":"string","nullable":true},"ProfileCompanyRegistrationDate":{"description":"Registration date.","type":"string","nullable":true},"ProfileCompanyDataSource":{"description":"Data provider the company data came from.","type":"string","enum":["bolddata","creditsafe","enigma","globaldatabase","manual","nuna","opencorporates","orbis","soletrader"],"nullable":true},"ProfileCompanyVatNumber":{"description":"VAT number.","type":"string","nullable":true},"ProfileCompanyHasVatNumber":{"description":"Whether the company has a VAT number.","type":"boolean","nullable":true},"ProfileCompanyNumOfEmployees":{"description":"Number of employees.","type":"number","nullable":true},"ProfileCompanyPhoneNumber":{"description":"Company phone number.","type":"string","nullable":true},"ProfileCompanyEmail":{"description":"Company email address.","type":"string","nullable":true},"ProfileCompanyIsExporter":{"description":"Whether the company is an exporter.","type":"boolean","nullable":true},"ProfileCompanyIsImporter":{"description":"Whether the company is an importer.","type":"boolean","nullable":true},"ProfileCompanyRegisteredAddress":{"description":"Registered address.","type":"string","nullable":true},"ProfileCompanyRegisteredAddress1":{"description":"Registered address, line 1.","type":"string","nullable":true},"ProfileCompanyRegisteredAddress2":{"description":"Registered address, line 2.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressCity":{"description":"Registered address city.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressProvince":{"description":"Registered address province.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressPostCode":{"description":"Registered address postcode.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressCountryCode":{"description":"Registered address country code.","type":"string","nullable":true},"ProfileCompanyCapital":{"description":"Capital.","type":"number","nullable":true},"ProfileCompanyCurrency":{"description":"Currency of the financial figures.","type":"string","nullable":true},"ProfileCompanyCurrentAssets":{"description":"Current assets.","type":"number","nullable":true},"ProfileCompanyEBITDA":{"description":"EBITDA.","type":"string","nullable":true},"ProfileCompanyGrossProfit":{"description":"Gross profit.","type":"number","nullable":true},"ProfileCompanyLastAccountsDate":{"description":"Last accounts date.","type":"string","nullable":true},"ProfileCompanyLongTermDebt":{"description":"Long term debt.","type":"number","nullable":true},"ProfileCompanyTotalAssets":{"description":"Total assets.","type":"number","nullable":true},"ProfileCompanyTurnover":{"description":"Turnover.","type":"number","nullable":true},"ProfileCompanyIndustryClassifications":{"description":"Industry classifications.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyIndustryCodes":{"description":"Industry codes.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyIndustryDescriptions":{"description":"Industry descriptions.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyCreditProbabilityOfDefault":{"description":"Credit probability of default.","type":"number","nullable":true},"ProfileCompanyCreditRatingDate":{"description":"Credit rating date.","type":"string","nullable":true},"ProfileCompanyCreditContractLimit":{"description":"Credit contract limit.","type":"number","nullable":true},"ProfileCompanyCreditRating":{"description":"Credit rating.","type":"string","nullable":true},"ProfileCompanyCreditRatingDescription":{"description":"Credit rating description.","type":"string","nullable":true},"ProfileCompanyCreditLimit":{"description":"Credit limit.","type":"number","nullable":true},"ProfileCompanyCreditProviderMax":{"description":"Credit provider maximum.","type":"number","nullable":true},"ProfileCompanyCreditProviderMin":{"description":"Credit provider minimum.","type":"number","nullable":true},"ProfileCompanyCreditProviderValue":{"description":"Credit provider value.","type":"number","nullable":true},"ProfileCompanyCreditProviderDescription":{"description":"Credit provider description.","type":"string","nullable":true},"ProfileCompanyCreditPreviousRating":{"description":"Previous credit rating.","type":"string","nullable":true},"ProfileCompanyCreditPreviousRatingDescription":{"description":"Previous credit rating description.","type":"string","nullable":true},"ProfileCompanyCreditPreviousLimit":{"description":"Previous credit limit.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderMax":{"description":"Previous credit provider maximum.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderMin":{"description":"Previous credit provider minimum.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderValue":{"description":"Previous credit provider value.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderDescription":{"description":"Previous credit provider description.","type":"string","nullable":true}},"type":"object","nullable":true},"director":{"description":"List of data source directors.","properties":{"data":{"description":"Data.","type":"array","items":{"properties":{"director_id":{"description":"Director ID.","type":"string","nullable":true},"job_title":{"description":"Job title.","type":"string","nullable":true},"gender":{"description":"Gender.","type":"string","nullable":true},"appointment_date":{"description":"Appointment date.","type":"string","nullable":true},"resignation_date":{"description":"Resignation date.","type":"string","nullable":true},"dob":{"description":"Date of birth.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true},"country":{"description":"Country.","type":"string","nullable":true},"nationality":{"description":"Nationality.","type":"string","nullable":true},"company_number":{"description":"Company number.","type":"string","nullable":true},"screenings":{"description":"Screenings.","type":"array","items":{"type":"object","additionalProperties":true},"nullable":true},"is_active":{"description":"Whether this entry is active.","type":"boolean","nullable":true},"suffix":{"description":"Suffix.","type":"string","nullable":true},"salutation":{"description":"Salutation.","type":"string","nullable":true},"shareholder":{"description":"Shareholder.","type":"string","nullable":true},"position_type":{"description":"Position type.","type":"string","nullable":true},"responsibility":{"description":"Responsibility.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"title":{"description":"Title.","type":"string","nullable":true},"full_name":{"description":"Full name.","type":"string","nullable":true},"first_name":{"description":"First name.","type":"string","nullable":true},"last_name":{"description":"Last name.","type":"string","nullable":true},"middle_name":{"description":"Middle name.","type":"string","nullable":true}},"type":"object"},"nullable":false},"summary":{"description":"Summary of directors.","properties":{"total_count":{"description":"Total count.","type":"number","nullable":true},"active_count":{"description":"Active count.","type":"number","nullable":true},"inactive_count":{"description":"Inactive count.","type":"number","nullable":true}},"type":"object"}},"type":"object"},"share_structure":{"description":"Details of the share structure including shareholders.","properties":{"data":{"description":"Data.","properties":{"share_holders":{"description":"List of shareholders.","type":"array","items":{"properties":{"id":{"description":"ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"currency":{"description":"Currency.","type":"string","nullable":true},"share_type":{"description":"Share type.","type":"string","nullable":true},"share_types":{"description":"Share types.","type":"array","items":{"properties":{"currency":{"description":"Currency.","type":"string","nullable":true},"share_type":{"description":"Share type.","type":"string","nullable":true},"value_of_shares":{"description":"Value of shares.","type":"number","nullable":true},"value_per_share":{"description":"Value per share.","type":"number","nullable":true},"number_of_shares":{"description":"Number of shares.","type":"number","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true}},"type":"object"},"nullable":true},"value_of_shares":{"description":"Value of shares.","type":"number","nullable":true},"number_of_shares":{"description":"Number of shares.","type":"number","nullable":true},"shareholder_type":{"description":"Shareholder type.","type":"string","nullable":true},"percentage_shares_held":{"description":"Percentage shares held.","type":"number","nullable":true},"address":{"description":"Address.","type":"number","nullable":true}},"type":"object"}}},"type":"object"},"issued_shares_total":{"description":"Issued shares total.","type":"number","nullable":true},"issued_shares_capital_value":{"description":"Issued shares capital value.","type":"number","nullable":true}},"type":"object"},"structure":{"description":"Structure of company.","properties":{"ultimate_parent":{"description":"Ultimate parent.","properties":{"provider_id":{"description":"Provider ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"country_code":{"description":"Country code.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"status":{"description":"Status.","type":"string","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true}},"type":"object"},"immediate_parent":{"description":"Immediate parent.","properties":{"provider_id":{"description":"Provider ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"country_code":{"description":"Country code.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"status":{"description":"Status.","type":"string","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true}},"type":"object"}},"type":"object"},"financials":{"description":"Financials of company.","properties":{"data":{"description":"Data.","type":"array","items":{"properties":{"ratios":{"description":"Ratios.","properties":{"gearing":{"description":"Gearing.","type":"number","nullable":true},"debtor_days":{"description":"Debtor days.","type":"number","nullable":true},"creditor_days":{"description":"Creditor days.","type":"number","nullable":true},"current_ratio":{"description":"Current ratio.","type":"number","nullable":true},"total_debt_ratio":{"description":"Total debt ratio.","type":"number","nullable":true},"current_debt_ratio":{"description":"Current debt ratio.","type":"number","nullable":true},"equity_in_percentage":{"description":"Equity in percentage.","type":"number","nullable":true},"stock_turnover_ratio":{"description":"Stock turnover ratio.","type":"number","nullable":true},"pre_tax_profit_margin":{"description":"Pre tax profit margin.","type":"number","nullable":true},"return_on_capital_employed":{"description":"Return on capital employed.","type":"number","nullable":true},"liquidity_ratio_or_acid_test":{"description":"Liquidity ratio or acid test.","type":"number","nullable":true},"sales_or_net_working_capital":{"description":"Sales or net working capital.","type":"number","nullable":true},"return_on_net_assets_employed":{"description":"Return on net assets employed.","type":"number","nullable":true},"return_on_total_assets_employed":{"description":"Return on total assets employed.","type":"number","nullable":true}},"type":"object"},"general":{"description":"General.","properties":{"type":{"description":"Type.","type":"string","nullable":true},"currency":{"description":"Currency.","type":"string","nullable":true},"year_end_date":{"description":"Year end date.","type":"string","nullable":true},"number_of_weeks":{"description":"Number of weeks.","type":"number","nullable":true},"consolidated_accounts":{"description":"Consolidated accounts.","type":"boolean","nullable":true}},"type":"object"},"balance_sheet":{"description":"Balance sheet figures.","properties":{"cash":{"description":"Cash.","type":"number","nullable":true},"total_assets":{"description":"Total assets.","type":"number","nullable":true},"other_reserves":{"description":"Other reserves.","type":"number","nullable":true},"trade_payables":{"description":"Trade payables.","type":"number","nullable":true},"bank_liabilities":{"description":"Bank liabilities.","type":"number","nullable":true},"revenue_reserves":{"description":"Revenue reserves.","type":"number","nullable":true},"total_inventories":{"description":"Total inventories.","type":"number","nullable":true},"total_liabilities":{"description":"Total liabilities.","type":"number","nullable":true},"total_receivables":{"description":"Total receivables.","type":"number","nullable":true},"trade_receivables":{"description":"Trade receivables.","type":"number","nullable":true},"total_fixed_assets":{"description":"Total fixed assets.","type":"number","nullable":true},"other_current_assets":{"description":"Other current assets.","type":"number","nullable":true},"total_current_assets":{"description":"Total current assets.","type":"number","nullable":true},"total_tangible_assets":{"description":"Total tangible assets.","type":"number","nullable":true},"other_loans_or_finance":{"description":"Other loans or finance.","type":"number","nullable":true},"called_up_share_capital":{"description":"Called up share capital.","type":"number","nullable":true},"total_intangible_assets":{"description":"Total intangible assets.","type":"number","nullable":true},"total_other_fixed_assets":{"description":"Total other fixed assets.","type":"number","nullable":true},"miscellaneous_liabilities":{"description":"Miscellaneous liabilities.","type":"number","nullable":true},"miscellaneous_receivables":{"description":"Miscellaneous receivables.","type":"number","nullable":true},"total_current_liabilities":{"description":"Total current liabilities.","type":"number","nullable":true},"total_shareholders_equity":{"description":"Total shareholders equity.","type":"number","nullable":true},"total_long_term_liabilities":{"description":"Total long term liabilities.","type":"number","nullable":true},"bank_liabilities_due_after1year":{"description":"Bank liabilities due after 1 year.","type":"number","nullable":true},"other_loans_or_finance_due_after1year":{"description":"Other loans or finance due after 1 year.","type":"number","nullable":true},"miscellaneous_liabilities_due_after1year":{"description":"Miscellaneous liabilities due after 1 year.","type":"number","nullable":true}},"type":"object"},"profit_and_loss":{"description":"Profit and loss.","properties":{"tax":{"description":"Tax.","type":"number","nullable":true},"revenue":{"description":"Revenue.","type":"number","nullable":true},"dividends":{"description":"Dividends.","type":"number","nullable":true},"amortisation":{"description":"Amortisation.","type":"number","nullable":true},"depreciation":{"description":"Depreciation.","type":"number","nullable":true},"pension_costs":{"description":"Pension costs.","type":"number","nullable":true},"operating_costs":{"description":"Operating costs.","type":"number","nullable":true},"retained_profit":{"description":"Retained profit.","type":"number","nullable":true},"operating_profit":{"description":"Operating profit.","type":"number","nullable":true},"profit_after_tax":{"description":"Profit after tax.","type":"number","nullable":true},"profit_before_tax":{"description":"Profit before tax.","type":"number","nullable":true},"financial_expenses":{"description":"Financial expenses.","type":"number","nullable":true},"minority_interests":{"description":"Minority interests.","type":"number","nullable":true},"wages_and_salaries":{"description":"Wages and salaries.","type":"number","nullable":true},"other_appropriations":{"description":"Other appropriations.","type":"number","nullable":true}},"type":"object"},"other_financials":{"description":"Other financials.","properties":{"net_worth":{"description":"Net worth.","type":"number","nullable":true},"working_capital":{"description":"Working capital.","type":"number","nullable":true},"contingent_liabilities":{"description":"Contingent liabilities.","type":"string","nullable":true}},"type":"object"}},"type":"object"}}},"type":"object"},"psc":{"description":"People with significant control.","type":"array","items":{"properties":{"nature_of_control":{"description":"Nature of control.","type":"array","items":{"type":"string"},"nullable":true},"is_active":{"description":"Whether this entry is active.","type":"boolean","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"kind":{"description":"Kind.","type":"string","nullable":true},"entityType":{"description":"Type of entity.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true},"notified_on":{"description":"Notified on.","type":"string","nullable":true},"ceased_on":{"description":"Ceased on.","type":"string","nullable":true},"dob_day":{"description":"Day of birth.","type":"number","nullable":true},"dob_month":{"description":"Month of birth.","type":"number","nullable":true},"dob_year":{"description":"Year of birth.","type":"number","nullable":true}},"type":"object"}},"domain":{"description":"Company domain information.","type":"array","items":{"properties":{"domain":{"description":"Domain.","type":"string","nullable":false},"online_presence":{"description":"Online presence.","type":"array","items":{"properties":{"founding_year":{"description":"Year the company was founded.","type":"string","nullable":true},"phone_number":{"description":"A contact phone number for the company.","type":"string","nullable":true},"industry":{"description":"The industry of the company.","type":"string","nullable":true},"tags":{"description":"Tags describing the company.","type":"array","items":{"type":"string"},"nullable":true},"address":{"description":"The company address.","type":"string","nullable":true}},"type":"object"},"nullable":true}},"type":"object"}},"screenings":{"description":"Screenings.","type":"array","items":{"type":"object","additionalProperties":true},"nullable":true}},"type":"object","nullable":true},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"}]},"ProfileListResource":{"title":"Profile List Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"company_name":{"description":"Name of the company.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"brand":{"description":"Brand assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Brand UUID.","type":"string","nullable":false},"name":{"description":"Brand name.","type":"string","nullable":false},"slug":{"description":"Brand slug.","type":"string","nullable":false}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}":{"get":{"tags":["Profiles"],"summary":"Retrieve a profile","description":"Returns a single profile, including company details, screenings and more.\n\n### Data source providers\n\nCompany data comes from a range of data providers, and each supplies information in a different format. Some of it is normalised to a consistent format, but not all of it can be, so the response may include undocumented data.\n\nEvery field under `data.company` either contains information, is `null`, or is an empty array (`[]`). We cannot guarantee that data is present, because that depends on what the data providers supply.","operationId":"8f62ce17008beef766982c01243b184f","parameters":[{"$ref":"#/components/parameters/uuid"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ProfileResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Delete a profile

> Deletes a profile. All active monitoring for the profile is stopped first. If monitoring cannot be fully stopped, the profile is not deleted and a \`502\` response is returned. You can safely retry the request.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"uuid":{"name":"uuid","in":"path","description":"UUID of the item named in the path, for example the profile in `/profiles/{uuid}` or the representative in `/representatives/{uuid}`.","required":true,"schema":{"type":"string","nullable":false}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}":{"delete":{"tags":["Profiles"],"summary":"Delete a profile","description":"Deletes a profile. All active monitoring for the profile is stopped first. If monitoring cannot be fully stopped, the profile is not deleted and a `502` response is returned. You can safely retry the request.","operationId":"delete-profile-endpoint","parameters":[{"$ref":"#/components/parameters/uuid"}],"responses":{"204":{"description":"No Content. Monitoring was stopped and the profile was deleted.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}}},"401":{"$ref":"#/components/responses/401"},"404":{"description":"Not Found. The profile does not exist, or is not available to your account."},"429":{"$ref":"#/components/responses/429"},"502":{"description":"Bad Gateway. Monitoring could not be fully stopped, so the profile was not deleted. It is safe to retry.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}}}}}}}
```

## Update a profile

> Updates a profile. You can update \`customer\_reference\`, \`risk\_id\`, \`configuration\_id\`, \`team\_id\`, \`assignee\_id\`, \`brand\_id\` and \`review\_status\`.\
> \
> Setting \`review\_status\` to \`Archived\` or \`Declined\` stops all ongoing monitoring for the profile and its representatives, including company alert monitoring and screening monitoring. Monitoring cannot be restarted. The status change only succeeds once the provider has confirmed that monitoring has stopped.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"uuid":{"name":"uuid","in":"path","description":"UUID of the item named in the path, for example the profile in `/profiles/{uuid}` or the representative in `/representatives/{uuid}`.","required":true,"schema":{"type":"string","nullable":false}}},"schemas":{"ProfileUpdateRequest":{"title":"Profile Update Request","description":"The fields to change on a profile. Send only the fields you want to change.","properties":{"assignee_id":{"description":"ID of the case management user to assign to the profile, or `null` to unassign the current user.","type":"string","nullable":true},"risk_id":{"description":"ID of the risk category to assign to the profile, or `null` to unassign the current category.","type":"string","nullable":true},"team_id":{"description":"ID of the team to assign to the profile, or `null` to unassign the current team.","type":"integer","nullable":true},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"configuration_id":{"description":"ID of the configuration to assign to the profile, or `null` to unassign the current configuration.","type":"integer","nullable":true},"brand_id":{"description":"Assign a brand to a profile by brand UUID, or unassign by setting the value `null`.","type":"string","format":"uuid","nullable":true},"review_status":{"description":"Review status of the profile. Setting it to `Archived` or `Declined` stops all monitoring, and monitoring cannot be restarted.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false}},"type":"object"},"ProfileResource":{"title":"Profile Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"type":"object","allOf":[{"$ref":"#/components/schemas/ProfileListResource"},{"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"onboarding_statuses":{"description":"Portal onboarding statuses.","type":"array","items":{"properties":{"title":{"description":"Onboarding step name.","type":"string","nullable":false},"status":{"description":"Status of onboarding step.","type":"string","enum":["pending","completed","in-progress","in-complete"],"nullable":false}},"type":"object"},"nullable":true},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"company":{"description":"Company data from the data providers. See the notes on `GET /profiles/{uuid}`.","properties":{"profile":{"description":"Core details of the company.","properties":{"ProfileCompanyName":{"description":"Company name.","type":"string","nullable":true},"ProfileCompanyStatusActive":{"description":"Whether the company is active.","type":"boolean","nullable":true},"ProfileCompanyRegisteredCountry":{"description":"Country the company is registered in.","type":"string","nullable":true},"ProfileCompanyReference":{"description":"Company registration number.","type":"string","nullable":true},"ProfileCompanyStatusProvider":{"description":"Company status, as reported by the provider.","type":"string","nullable":true},"ProfileCompanyLegalForm":{"description":"Legal form of the company.","type":"string","nullable":true},"ProfileCompanyRegistrationDate":{"description":"Registration date.","type":"string","nullable":true},"ProfileCompanyDataSource":{"description":"Data provider the company data came from.","type":"string","enum":["bolddata","creditsafe","enigma","globaldatabase","manual","nuna","opencorporates","orbis","soletrader"],"nullable":true},"ProfileCompanyVatNumber":{"description":"VAT number.","type":"string","nullable":true},"ProfileCompanyHasVatNumber":{"description":"Whether the company has a VAT number.","type":"boolean","nullable":true},"ProfileCompanyNumOfEmployees":{"description":"Number of employees.","type":"number","nullable":true},"ProfileCompanyPhoneNumber":{"description":"Company phone number.","type":"string","nullable":true},"ProfileCompanyEmail":{"description":"Company email address.","type":"string","nullable":true},"ProfileCompanyIsExporter":{"description":"Whether the company is an exporter.","type":"boolean","nullable":true},"ProfileCompanyIsImporter":{"description":"Whether the company is an importer.","type":"boolean","nullable":true},"ProfileCompanyRegisteredAddress":{"description":"Registered address.","type":"string","nullable":true},"ProfileCompanyRegisteredAddress1":{"description":"Registered address, line 1.","type":"string","nullable":true},"ProfileCompanyRegisteredAddress2":{"description":"Registered address, line 2.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressCity":{"description":"Registered address city.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressProvince":{"description":"Registered address province.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressPostCode":{"description":"Registered address postcode.","type":"string","nullable":true},"ProfileCompanyRegisteredAddressCountryCode":{"description":"Registered address country code.","type":"string","nullable":true},"ProfileCompanyCapital":{"description":"Capital.","type":"number","nullable":true},"ProfileCompanyCurrency":{"description":"Currency of the financial figures.","type":"string","nullable":true},"ProfileCompanyCurrentAssets":{"description":"Current assets.","type":"number","nullable":true},"ProfileCompanyEBITDA":{"description":"EBITDA.","type":"string","nullable":true},"ProfileCompanyGrossProfit":{"description":"Gross profit.","type":"number","nullable":true},"ProfileCompanyLastAccountsDate":{"description":"Last accounts date.","type":"string","nullable":true},"ProfileCompanyLongTermDebt":{"description":"Long term debt.","type":"number","nullable":true},"ProfileCompanyTotalAssets":{"description":"Total assets.","type":"number","nullable":true},"ProfileCompanyTurnover":{"description":"Turnover.","type":"number","nullable":true},"ProfileCompanyIndustryClassifications":{"description":"Industry classifications.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyIndustryCodes":{"description":"Industry codes.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyIndustryDescriptions":{"description":"Industry descriptions.","type":"array","items":{"type":"string"},"nullable":true},"ProfileCompanyCreditProbabilityOfDefault":{"description":"Credit probability of default.","type":"number","nullable":true},"ProfileCompanyCreditRatingDate":{"description":"Credit rating date.","type":"string","nullable":true},"ProfileCompanyCreditContractLimit":{"description":"Credit contract limit.","type":"number","nullable":true},"ProfileCompanyCreditRating":{"description":"Credit rating.","type":"string","nullable":true},"ProfileCompanyCreditRatingDescription":{"description":"Credit rating description.","type":"string","nullable":true},"ProfileCompanyCreditLimit":{"description":"Credit limit.","type":"number","nullable":true},"ProfileCompanyCreditProviderMax":{"description":"Credit provider maximum.","type":"number","nullable":true},"ProfileCompanyCreditProviderMin":{"description":"Credit provider minimum.","type":"number","nullable":true},"ProfileCompanyCreditProviderValue":{"description":"Credit provider value.","type":"number","nullable":true},"ProfileCompanyCreditProviderDescription":{"description":"Credit provider description.","type":"string","nullable":true},"ProfileCompanyCreditPreviousRating":{"description":"Previous credit rating.","type":"string","nullable":true},"ProfileCompanyCreditPreviousRatingDescription":{"description":"Previous credit rating description.","type":"string","nullable":true},"ProfileCompanyCreditPreviousLimit":{"description":"Previous credit limit.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderMax":{"description":"Previous credit provider maximum.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderMin":{"description":"Previous credit provider minimum.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderValue":{"description":"Previous credit provider value.","type":"number","nullable":true},"ProfileCompanyCreditPreviousProviderDescription":{"description":"Previous credit provider description.","type":"string","nullable":true}},"type":"object","nullable":true},"director":{"description":"List of data source directors.","properties":{"data":{"description":"Data.","type":"array","items":{"properties":{"director_id":{"description":"Director ID.","type":"string","nullable":true},"job_title":{"description":"Job title.","type":"string","nullable":true},"gender":{"description":"Gender.","type":"string","nullable":true},"appointment_date":{"description":"Appointment date.","type":"string","nullable":true},"resignation_date":{"description":"Resignation date.","type":"string","nullable":true},"dob":{"description":"Date of birth.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true},"country":{"description":"Country.","type":"string","nullable":true},"nationality":{"description":"Nationality.","type":"string","nullable":true},"company_number":{"description":"Company number.","type":"string","nullable":true},"screenings":{"description":"Screenings.","type":"array","items":{"type":"object","additionalProperties":true},"nullable":true},"is_active":{"description":"Whether this entry is active.","type":"boolean","nullable":true},"suffix":{"description":"Suffix.","type":"string","nullable":true},"salutation":{"description":"Salutation.","type":"string","nullable":true},"shareholder":{"description":"Shareholder.","type":"string","nullable":true},"position_type":{"description":"Position type.","type":"string","nullable":true},"responsibility":{"description":"Responsibility.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"title":{"description":"Title.","type":"string","nullable":true},"full_name":{"description":"Full name.","type":"string","nullable":true},"first_name":{"description":"First name.","type":"string","nullable":true},"last_name":{"description":"Last name.","type":"string","nullable":true},"middle_name":{"description":"Middle name.","type":"string","nullable":true}},"type":"object"},"nullable":false},"summary":{"description":"Summary of directors.","properties":{"total_count":{"description":"Total count.","type":"number","nullable":true},"active_count":{"description":"Active count.","type":"number","nullable":true},"inactive_count":{"description":"Inactive count.","type":"number","nullable":true}},"type":"object"}},"type":"object"},"share_structure":{"description":"Details of the share structure including shareholders.","properties":{"data":{"description":"Data.","properties":{"share_holders":{"description":"List of shareholders.","type":"array","items":{"properties":{"id":{"description":"ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"currency":{"description":"Currency.","type":"string","nullable":true},"share_type":{"description":"Share type.","type":"string","nullable":true},"share_types":{"description":"Share types.","type":"array","items":{"properties":{"currency":{"description":"Currency.","type":"string","nullable":true},"share_type":{"description":"Share type.","type":"string","nullable":true},"value_of_shares":{"description":"Value of shares.","type":"number","nullable":true},"value_per_share":{"description":"Value per share.","type":"number","nullable":true},"number_of_shares":{"description":"Number of shares.","type":"number","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true}},"type":"object"},"nullable":true},"value_of_shares":{"description":"Value of shares.","type":"number","nullable":true},"number_of_shares":{"description":"Number of shares.","type":"number","nullable":true},"shareholder_type":{"description":"Shareholder type.","type":"string","nullable":true},"percentage_shares_held":{"description":"Percentage shares held.","type":"number","nullable":true},"address":{"description":"Address.","type":"number","nullable":true}},"type":"object"}}},"type":"object"},"issued_shares_total":{"description":"Issued shares total.","type":"number","nullable":true},"issued_shares_capital_value":{"description":"Issued shares capital value.","type":"number","nullable":true}},"type":"object"},"structure":{"description":"Structure of company.","properties":{"ultimate_parent":{"description":"Ultimate parent.","properties":{"provider_id":{"description":"Provider ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"country_code":{"description":"Country code.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"status":{"description":"Status.","type":"string","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true}},"type":"object"},"immediate_parent":{"description":"Immediate parent.","properties":{"provider_id":{"description":"Provider ID.","type":"string","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"country_code":{"description":"Country code.","type":"string","nullable":true},"type":{"description":"Type.","type":"string","nullable":true},"status":{"description":"Status.","type":"string","nullable":true},"company_reference":{"description":"Company reference.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true}},"type":"object"}},"type":"object"},"financials":{"description":"Financials of company.","properties":{"data":{"description":"Data.","type":"array","items":{"properties":{"ratios":{"description":"Ratios.","properties":{"gearing":{"description":"Gearing.","type":"number","nullable":true},"debtor_days":{"description":"Debtor days.","type":"number","nullable":true},"creditor_days":{"description":"Creditor days.","type":"number","nullable":true},"current_ratio":{"description":"Current ratio.","type":"number","nullable":true},"total_debt_ratio":{"description":"Total debt ratio.","type":"number","nullable":true},"current_debt_ratio":{"description":"Current debt ratio.","type":"number","nullable":true},"equity_in_percentage":{"description":"Equity in percentage.","type":"number","nullable":true},"stock_turnover_ratio":{"description":"Stock turnover ratio.","type":"number","nullable":true},"pre_tax_profit_margin":{"description":"Pre tax profit margin.","type":"number","nullable":true},"return_on_capital_employed":{"description":"Return on capital employed.","type":"number","nullable":true},"liquidity_ratio_or_acid_test":{"description":"Liquidity ratio or acid test.","type":"number","nullable":true},"sales_or_net_working_capital":{"description":"Sales or net working capital.","type":"number","nullable":true},"return_on_net_assets_employed":{"description":"Return on net assets employed.","type":"number","nullable":true},"return_on_total_assets_employed":{"description":"Return on total assets employed.","type":"number","nullable":true}},"type":"object"},"general":{"description":"General.","properties":{"type":{"description":"Type.","type":"string","nullable":true},"currency":{"description":"Currency.","type":"string","nullable":true},"year_end_date":{"description":"Year end date.","type":"string","nullable":true},"number_of_weeks":{"description":"Number of weeks.","type":"number","nullable":true},"consolidated_accounts":{"description":"Consolidated accounts.","type":"boolean","nullable":true}},"type":"object"},"balance_sheet":{"description":"Balance sheet figures.","properties":{"cash":{"description":"Cash.","type":"number","nullable":true},"total_assets":{"description":"Total assets.","type":"number","nullable":true},"other_reserves":{"description":"Other reserves.","type":"number","nullable":true},"trade_payables":{"description":"Trade payables.","type":"number","nullable":true},"bank_liabilities":{"description":"Bank liabilities.","type":"number","nullable":true},"revenue_reserves":{"description":"Revenue reserves.","type":"number","nullable":true},"total_inventories":{"description":"Total inventories.","type":"number","nullable":true},"total_liabilities":{"description":"Total liabilities.","type":"number","nullable":true},"total_receivables":{"description":"Total receivables.","type":"number","nullable":true},"trade_receivables":{"description":"Trade receivables.","type":"number","nullable":true},"total_fixed_assets":{"description":"Total fixed assets.","type":"number","nullable":true},"other_current_assets":{"description":"Other current assets.","type":"number","nullable":true},"total_current_assets":{"description":"Total current assets.","type":"number","nullable":true},"total_tangible_assets":{"description":"Total tangible assets.","type":"number","nullable":true},"other_loans_or_finance":{"description":"Other loans or finance.","type":"number","nullable":true},"called_up_share_capital":{"description":"Called up share capital.","type":"number","nullable":true},"total_intangible_assets":{"description":"Total intangible assets.","type":"number","nullable":true},"total_other_fixed_assets":{"description":"Total other fixed assets.","type":"number","nullable":true},"miscellaneous_liabilities":{"description":"Miscellaneous liabilities.","type":"number","nullable":true},"miscellaneous_receivables":{"description":"Miscellaneous receivables.","type":"number","nullable":true},"total_current_liabilities":{"description":"Total current liabilities.","type":"number","nullable":true},"total_shareholders_equity":{"description":"Total shareholders equity.","type":"number","nullable":true},"total_long_term_liabilities":{"description":"Total long term liabilities.","type":"number","nullable":true},"bank_liabilities_due_after1year":{"description":"Bank liabilities due after 1 year.","type":"number","nullable":true},"other_loans_or_finance_due_after1year":{"description":"Other loans or finance due after 1 year.","type":"number","nullable":true},"miscellaneous_liabilities_due_after1year":{"description":"Miscellaneous liabilities due after 1 year.","type":"number","nullable":true}},"type":"object"},"profit_and_loss":{"description":"Profit and loss.","properties":{"tax":{"description":"Tax.","type":"number","nullable":true},"revenue":{"description":"Revenue.","type":"number","nullable":true},"dividends":{"description":"Dividends.","type":"number","nullable":true},"amortisation":{"description":"Amortisation.","type":"number","nullable":true},"depreciation":{"description":"Depreciation.","type":"number","nullable":true},"pension_costs":{"description":"Pension costs.","type":"number","nullable":true},"operating_costs":{"description":"Operating costs.","type":"number","nullable":true},"retained_profit":{"description":"Retained profit.","type":"number","nullable":true},"operating_profit":{"description":"Operating profit.","type":"number","nullable":true},"profit_after_tax":{"description":"Profit after tax.","type":"number","nullable":true},"profit_before_tax":{"description":"Profit before tax.","type":"number","nullable":true},"financial_expenses":{"description":"Financial expenses.","type":"number","nullable":true},"minority_interests":{"description":"Minority interests.","type":"number","nullable":true},"wages_and_salaries":{"description":"Wages and salaries.","type":"number","nullable":true},"other_appropriations":{"description":"Other appropriations.","type":"number","nullable":true}},"type":"object"},"other_financials":{"description":"Other financials.","properties":{"net_worth":{"description":"Net worth.","type":"number","nullable":true},"working_capital":{"description":"Working capital.","type":"number","nullable":true},"contingent_liabilities":{"description":"Contingent liabilities.","type":"string","nullable":true}},"type":"object"}},"type":"object"}}},"type":"object"},"psc":{"description":"People with significant control.","type":"array","items":{"properties":{"nature_of_control":{"description":"Nature of control.","type":"array","items":{"type":"string"},"nullable":true},"is_active":{"description":"Whether this entry is active.","type":"boolean","nullable":true},"name":{"description":"Name.","type":"string","nullable":true},"kind":{"description":"Kind.","type":"string","nullable":true},"entityType":{"description":"Type of entity.","type":"string","nullable":true},"address":{"description":"Address.","type":"string","nullable":true},"notified_on":{"description":"Notified on.","type":"string","nullable":true},"ceased_on":{"description":"Ceased on.","type":"string","nullable":true},"dob_day":{"description":"Day of birth.","type":"number","nullable":true},"dob_month":{"description":"Month of birth.","type":"number","nullable":true},"dob_year":{"description":"Year of birth.","type":"number","nullable":true}},"type":"object"}},"domain":{"description":"Company domain information.","type":"array","items":{"properties":{"domain":{"description":"Domain.","type":"string","nullable":false},"online_presence":{"description":"Online presence.","type":"array","items":{"properties":{"founding_year":{"description":"Year the company was founded.","type":"string","nullable":true},"phone_number":{"description":"A contact phone number for the company.","type":"string","nullable":true},"industry":{"description":"The industry of the company.","type":"string","nullable":true},"tags":{"description":"Tags describing the company.","type":"array","items":{"type":"string"},"nullable":true},"address":{"description":"The company address.","type":"string","nullable":true}},"type":"object"},"nullable":true}},"type":"object"}},"screenings":{"description":"Screenings.","type":"array","items":{"type":"object","additionalProperties":true},"nullable":true}},"type":"object","nullable":true},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"}]},"ProfileListResource":{"title":"Profile List Resource","required":["id","customer_reference","review_status","updated_at","created_at"],"properties":{"id":{"description":"Profile UUID.","type":"string","nullable":false},"entity_type":{"description":"Entity type information.","properties":{"id":{"description":"Entity type ID.","type":"integer","nullable":true},"type":{"description":"Entity type value.","type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"],"nullable":false},"label":{"description":"Entity type label.","type":"string","nullable":false}},"type":"object","nullable":false},"customer_reference":{"description":"Your unique reference for the profile.","type":"string","nullable":false},"company_name":{"description":"Name of the company.","type":"string","nullable":false},"risk":{"description":"Risk category assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Risk category ID.","type":"string","nullable":false},"label":{"description":"Label of the risk category.","type":"string","nullable":true},"category":{"description":"Category of the risk.","type":"string","nullable":true}},"type":"object","nullable":true},"team":{"description":"Team the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"Team ID.","type":"number","nullable":false},"label":{"description":"Label of the team.","type":"string","nullable":true}},"type":"object","nullable":true},"configuration":{"description":"Configuration assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Configuration ID.","type":"number","nullable":false},"name":{"description":"Name of the configuration.","type":"string","nullable":true}},"type":"object","nullable":true},"brand":{"description":"Brand assigned to the profile, or `null` if there is none.","properties":{"id":{"description":"Brand UUID.","type":"string","nullable":false},"name":{"description":"Brand name.","type":"string","nullable":false},"slug":{"description":"Brand slug.","type":"string","nullable":false}},"type":"object","nullable":true},"review_status":{"description":"Review status of the profile.","type":"string","enum":["Processed","Needs Review","Additional Info Required","Approved","Declined","Archived"],"nullable":false},"assignee":{"description":"Case management user the profile is assigned to, or `null` if there is none.","properties":{"id":{"description":"ID of the case management user.","type":"string","nullable":false},"name":{"description":"Name of the case management user.","type":"string","nullable":true}},"type":"object","nullable":true},"review_at":{"description":"Date the profile's current review period started. The next review falls a configured review period after this date.","type":"string","nullable":false},"updated_at":{"description":"Date and time the profile was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the profile was created.","type":"string","nullable":false}},"type":"object"}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}":{"patch":{"tags":["Profiles"],"summary":"Update a profile","description":"Updates a profile. You can update `customer_reference`, `risk_id`, `configuration_id`, `team_id`, `assignee_id`, `brand_id` and `review_status`.\n\nSetting `review_status` to `Archived` or `Declined` stops all ongoing monitoring for the profile and its representatives, including company alert monitoring and screening monitoring. Monitoring cannot be restarted. The status change only succeeds once the provider has confirmed that monitoring has stopped.","operationId":"e9f9efbaf3c1186981085c70d0807e82","parameters":[{"$ref":"#/components/parameters/uuid"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ProfileResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"},"502":{"description":"Bad Gateway. Monitoring could not be fully stopped when setting `review_status` to `Archived` or `Declined`, so the status was not changed. It is safe to retry, because monitoring that has already stopped is skipped."}}}}}}
```

## Retrieve a profile domain

> Returns the domain details for a profile, including WHOIS, social media, online presence and scam advisor analysis.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"parameters":{"uuid":{"name":"uuid","in":"path","description":"UUID of the item named in the path, for example the profile in `/profiles/{uuid}` or the representative in `/representatives/{uuid}`.","required":true,"schema":{"type":"string","nullable":false}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"schemas":{"ProfileDomainResource":{"title":"Profile Domain Resource","required":["id","type","domain","updated_at","created_at"],"properties":{"id":{"description":"Domain ID.","type":"string","nullable":false},"type":{"description":"Type of the domain. Either `portal` or `api_import`.","type":"string","nullable":false},"domain":{"description":"The domain name.","type":"string","nullable":false},"whois":{"description":"Details about the WHOIS information of the domain.","properties":{"status":{"description":"WHOIS status of the domain.","type":"string","nullable":true},"age":{"description":"Human readable age of domain.","type":"string","nullable":true},"ageDays":{"description":"Age of the domain in days.","type":"integer","nullable":true},"createdAt":{"description":"Creation date of the domain.","type":"string","format":"date-time","nullable":true},"updatedAt":{"description":"Last updated date of domain WHOIS details.","type":"string","format":"date-time","nullable":true},"expiresAt":{"description":"Expiry date of the domain registration.","type":"string","format":"date-time","nullable":true}},"type":"object","nullable":true},"social":{"description":"Details about the social media presence of the company.","properties":{"title":{"description":"Title representing the company's online presence.","type":"string","nullable":true},"description":{"description":"Description about the company's objective or online presence.","type":"string","nullable":true},"responded":{"description":"Indicates if the website was active during the crawling.","type":"boolean","nullable":true},"twitter":{"description":"Twitter profile URL of the company.","type":"string","nullable":true},"facebook":{"description":"Facebook profile URL of the company.","type":"string","nullable":true},"linkedIn":{"description":"LinkedIn profile URL of the company.","type":"string","nullable":true},"instagram":{"description":"Instagram profile URL of the company.","type":"string","nullable":true}},"type":"object","nullable":true},"online_presence":{"description":"Online presence details for the domain.","type":"array","items":{"properties":{"founding_year":{"description":"Year the company was founded.","type":"string","nullable":true},"phone_number":{"description":"A contact phone number for the company.","type":"string","nullable":true},"industry":{"description":"The industry of the company.","type":"string","nullable":true},"tags":{"description":"Tags describing the company.","type":"array","items":{"type":"string"},"nullable":true},"address":{"description":"The company address.","type":"string","nullable":true}},"type":"object"},"nullable":true},"scam_advisor":{"description":"Scam advisor assessment details for the given domain.","properties":{"score":{"description":"The actual Trust Score of the Domain (0 = very likely a scam, 100 = very likely legit).","type":"integer","nullable":true},"blacklisted":{"description":"Whether the domain is blacklisted.","type":"boolean","nullable":true},"dns_threat_markers":{"description":"Number of DNS services identifying the domain as containing malicious (threat) content.","type":"integer","nullable":true},"dns_adult_content_markers":{"description":"Number of DNS services identifying the domain as containing adult content.","type":"integer","nullable":true},"website_title":{"description":"The meta-title of the website obtained by the scam advisor.","type":"string","nullable":true},"website_description":{"description":"The meta-description of the website retrieved by the scam advisor.","type":"string","nullable":true},"website_keywords":{"description":"Meta-keywords defined for the website.","type":"array","items":{"type":"string"},"nullable":true},"block_search_engines":{"description":"Whether the domain has a robots.txt that blocks search engines from indexing the site.","type":"boolean","nullable":true},"reviews":{"description":"List of reviews for the domain from various sources.","type":"array","items":{"properties":{"source":{"description":"The platform from which the review is sourced (e.g., Trustpilot).","type":"string","nullable":true},"source_url":{"description":"URL to the review source.","type":"string","format":"url","nullable":true},"count":{"description":"The total number of available reviews for this domain from the review source.","type":"integer","nullable":true},"avg_score":{"description":"The average review score (normalised between 1 [very bad] and 5 [very good]).","type":"number","format":"float","nullable":true}},"type":"object"},"nullable":true},"gca_domain_trust":{"description":"Assessment details for Global Cyber Alliance domain trust metrics.","properties":{"type":{"description":"The type of rating assigned (e.g., C = Third parties like Scamadviser/Spamhaus).","type":"string","nullable":true},"activity":{"description":"Domain activity status (A = active site, S = suspended, N = non-existing).","type":"string","nullable":true},"provider":{"description":"The name of the provider reporting the domain trust analysis.","type":"string","nullable":true},"created_at":{"description":"Date and time the trust data was first provided.","type":"string","format":"date-time","nullable":true},"is_blocked":{"description":"Indicates if the domain's trust level is blocked.","type":"boolean","nullable":true},"updated_at":{"description":"Date and time the trust data was last updated.","type":"string","format":"date-time","nullable":true},"source_name":{"description":"The source of the trust data (e.g., ScamAdviser).","type":"string","nullable":true},"provider_role":{"description":"The role of the provider (e.g., registry, registrar, or other).","type":"string","nullable":true},"classification":{"description":"Classification level of trustworthiness (e.g., 1 = Definitely legitimate).","type":"integer","nullable":true},"external_source":{"description":"Indicates if the data originates from an external source.","type":"boolean","nullable":true},"provider_rating":{"description":"The internal rating of the provider's reliability.","type":"string","nullable":true}},"type":"object","nullable":true},"antiphishing":{"description":"Domain data from the eCrime Exchange.","properties":{"count":{"description":"The count of sources that flagged the domain as being used for phishing.","type":"integer","nullable":true}},"type":"object","nullable":true},"certnz":{"description":"CERT NZ marker information.","properties":{"labels":{"description":"Labels describing the possible threat(s).","type":"array","items":{"type":"string"},"nullable":true},"marking":{"description":"Classification provided by CERT NZ (e.g., amber, red).","type":"string","nullable":true}},"type":"object","nullable":true},"maltiverse":{"description":"Maltiverse classification and threat tags for the domain.","properties":{"tags":{"description":"List of threat tags identified by Maltiverse.","type":"array","items":{"type":"string"},"nullable":true},"classification":{"description":"Domain threat classification by Maltiverse.","type":"string","nullable":true}},"type":"object","nullable":true},"ipqs":{"description":"IPQS domain analysis results.","properties":{"risk_score":{"description":"Overall risk score assigned by IPQS to the domain.","type":"integer","nullable":true},"unsafe":{"description":"Indicates if the domain is flagged as unsafe by IPQS.","type":"boolean","nullable":true},"dns_valid":{"description":"Whether IPQS considers the DNS of the domain valid.","type":"boolean","nullable":true},"parking":{"description":"Whether the domain is identified as parked.","type":"boolean","nullable":true},"spamming":{"description":"Indicates if significant spam activity originates from the domain.","type":"boolean","nullable":true},"malware":{"description":"Indicates if malware distribution has been detected for the domain.","type":"boolean","nullable":true},"phishing":{"description":"Indicates if phishing attempts are associated with the domain.","type":"boolean","nullable":true},"suspicious":{"description":"Identifies suspicious activity associated with the domain.","type":"boolean","nullable":true},"adult":{"description":"Whether adult content is hosted on the domain.","type":"boolean","nullable":true},"domain_age":{"description":"The age of the domain in timestamp form.","type":"integer","nullable":true}},"type":"object","nullable":true},"created_at":{"description":"Date and time this record was created.","type":"string","nullable":true},"updated_at":{"description":"Date and time this record was last updated.","type":"string","nullable":true}},"type":"object","nullable":true},"updated_at":{"description":"Date and time the domain was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the domain was created.","type":"string","nullable":false}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}/domain":{"get":{"tags":["Profiles"],"summary":"Retrieve a profile domain","description":"Returns the domain details for a profile, including WHOIS, social media, online presence and scam advisor analysis.","operationId":"68304a0a248b6141fe445ecacbf50b96","parameters":[{"$ref":"#/components/parameters/uuid"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/ProfileDomainResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Create a profile domain

> Creates a domain for a profile, if it does not already have one. The domain is processed in the background, so the response is \`202 Accepted\`. Retrieve the results later with \`GET /profiles/{uuid}/domain\`.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"schemas":{"CreateProfileDomainRequest":{"title":"Create Profile Domain Request","required":["domain"],"properties":{"domain":{"description":"Domain, without protocol or path, for example `subdomain.example.com`.","type":"string","nullable":false}},"type":"object"}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}/domain":{"post":{"tags":["Profiles"],"summary":"Create a profile domain","description":"Creates a domain for a profile, if it does not already have one. The domain is processed in the background, so the response is `202 Accepted`. Retrieve the results later with `GET /profiles/{uuid}/domain`.","operationId":"create-profile-domain-endpoint","parameters":[{"name":"uuid","in":"path","description":"The UUID of the profile.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProfileDomainRequest"}}}},"responses":{"202":{"description":"Accepted. The domain has been queued for processing.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Stop profile monitoring

> Stops ongoing monitoring for a profile. The \`scope\` in the request body controls how much is stopped:\
> \
> \- \`all\`: company-level alert monitoring and every screening, including representatives\
> \- \`alerts\`: company-level alert monitoring only\
> \- \`screenings\`: the profile's own screenings only\
> \
> Each stop is confirmed with the underlying data provider before the change is saved. If a request returns a \`502\` response, the response lists which targets failed. You can safely retry the request, because targets that have already stopped are skipped.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"schemas":{"ProfileMonitoringActionRequest":{"title":"Profile Monitoring Action Request","properties":{"scope":{"description":"What to stop: `all` (company-level alert monitoring and every screening, including representatives), `alerts` (company-level alert monitoring only) or `screenings` (the profile's own screenings only).","type":"string","default":"all","enum":["all","alerts","screenings"]}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}}},"paths":{"/profiles/{uuid}/monitoring/{action}":{"post":{"tags":["Profiles"],"summary":"Stop profile monitoring","description":"Stops ongoing monitoring for a profile. The `scope` in the request body controls how much is stopped:\n\n- `all`: company-level alert monitoring and every screening, including representatives\n- `alerts`: company-level alert monitoring only\n- `screenings`: the profile's own screenings only\n\nEach stop is confirmed with the underlying data provider before the change is saved. If a request returns a `502` response, the response lists which targets failed. You can safely retry the request, because targets that have already stopped are skipped.","operationId":"profile-monitoring-action-endpoint","parameters":[{"name":"uuid","in":"path","description":"The UUID of the profile.","required":true,"schema":{"type":"string"}},{"name":"action","in":"path","description":"The monitoring action to perform.","required":true,"schema":{"type":"string","enum":["stop"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileMonitoringActionRequest"}}}},"responses":{"200":{"description":"OK. Monitoring has been stopped and confirmed with all providers."},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"},"502":{"description":"Bad Gateway. Monitoring could not be stopped for one or more targets, and the response body lists which. It is safe to retry, because targets that have already stopped are skipped."}}}}}}
```

## Assign a portal user to a profile

> Assigns a portal user to a profile. Get the list of portal users with \*\*List portal users\*\*, or create a new portal user with \*\*Create a portal user\*\*.\
> \
> A portal user can have one of the following roles:\
> \
> \- \`admin\`: access to the main onboarding portal\
> \
> If you do not send a role, the \`admin\` role is assigned. By default an invitation email is sent. Set \`notify\` to \`false\` to skip it.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"schemas":{"AssignProfileUserRequest":{"title":"Assign Profile User Request","required":["user_id"],"properties":{"user_id":{"description":"ID of the portal user to assign to the profile.","type":"number","nullable":false},"role":{"description":"Role of the portal user on the profile. Currently only `admin` is supported, and it is the default.","type":"string","enum":["admin"],"nullable":false},"notify":{"description":"Whether to send the portal user an invitation email. The default is `true`.","type":"boolean","nullable":false}},"type":"object"},"PortalUserViewResource":{"title":"Portal User View Resource","required":["id","email","updated_at","created_at"],"properties":{"id":{"description":"Portal user ID.","type":"integer","nullable":false},"name":{"description":"Name of the portal user.","type":"string","nullable":true},"email":{"description":"Email address of the portal user.","type":"string","nullable":false},"profiles":{"description":"Profiles the portal user is assigned to.","type":"array","items":{"required":["id","name","role"],"properties":{"id":{"description":"Profile ID.","type":"string","nullable":false},"name":{"description":"Name of the profile.","type":"string","nullable":false},"role":{"description":"Role of the portal user on the profile.","type":"string","enum":["admin","identity"],"nullable":false}},"type":"object"},"nullable":true},"updated_at":{"description":"Date and time the portal user was last updated.","type":"string","nullable":false},"created_at":{"description":"Date and time the portal user was created.","type":"string","nullable":false}},"type":"object"}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"422":{"description":"Unprocessable Content. The request was understood but failed validation. The response lists the fields that failed and why.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"},"example_field":{"description":"Validation errors for one field of the request body. The property name is the name of the field that failed validation (`example_field` is a placeholder).","type":"array","items":{"type":"string"}}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/{uuid}/portal-users":{"put":{"tags":["Profiles"],"summary":"Assign a portal user to a profile","description":"Assigns a portal user to a profile. Get the list of portal users with **List portal users**, or create a new portal user with **Create a portal user**.\n\nA portal user can have one of the following roles:\n\n- `admin`: access to the main onboarding portal\n\nIf you do not send a role, the `admin` role is assigned. By default an invitation email is sent. Set `notify` to `false` to skip it.","operationId":"14793a9807e457c91b346e65df09d9a0","parameters":[{"name":"uuid","in":"path","description":"The UUID of the profile.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignProfileUserRequest"}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PortalUserViewResource"}},"type":"object"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"422":{"$ref":"#/components/responses/422"},"429":{"$ref":"#/components/responses/429"}}}}}}
```

## Retrieve profile type configuration

> Returns the fields that can be provided when creating a profile of the given entity type in the given country, and whether each field is required.

```json
{"openapi":"3.0.0","info":{"title":"Detected API","version":"v2"},"tags":[{"name":"Profiles","description":"Create, retrieve, update and delete profiles, and manage their domain, custom fields, monitoring and portal user assignments."}],"servers":[{"url":"https://api.detected.app/api/v2/public","description":"Production"}],"security":[{"AccessToken":[]}],"components":{"securitySchemes":{"AccessToken":{"type":"http","description":"The API uses OAuth 2.0. Request an access token from `POST /oauth/token` with the client ID and client secret of your integration client, and your account slug. Send the access token in the `Authorization` header of every request, in the format `Authorization: Bearer <access_token>`. The access token carries the scopes set on your integration client in the dashboard. Access tokens expire. When one expires, request a new one.","bearerFormat":"OAuth 2.0 access token","scheme":"bearer"}},"headers":{"X-RateLimit-Limit":{"description":"Maximum number of requests allowed in the rate limit window.","schema":{"type":"number","nullable":false}},"X-RateLimit-Remaining":{"description":"Number of requests remaining in the current rate limit window.","schema":{"type":"number","nullable":false}},"Retry-After":{"description":"Number of seconds to wait before making another request. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}},"X-RateLimit-Reset":{"description":"Unix timestamp (in seconds) at which the rate limit resets. Returned when the rate limit has been reached.","schema":{"type":"number","nullable":false}}},"schemas":{"ProfilesTypeConfigResponse":{"title":"Profile Entity Type Configuration Response","properties":{"id":{"description":"ID of the entity type.","type":"integer","nullable":false},"type":{"description":"Entity type.","type":"string","nullable":false},"label":{"description":"Display name of the entity type.","type":"string","nullable":false},"fields":{"description":"Fields that can be provided when creating a profile of this type.","type":"array","items":{"properties":{"code":{"description":"Code of the field. It is the property name to use in the request.","type":"string","nullable":false},"label":{"description":"Display name of the field.","type":"string","nullable":false},"is_required":{"description":"Whether the field is required.","type":"boolean","nullable":false},"position":{"description":"Position of the field in the form.","type":"integer","nullable":false}},"type":"object"}}},"type":"object"}},"responses":{"401":{"description":"Unauthorized. The access token is missing, invalid or has expired.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"404":{"description":"Not Found. The requested resource does not exist, or is not available to your account.","content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}},"429":{"description":"Too Many Requests. You have exceeded the rate limit. Wait for the number of seconds given in the `Retry-After` header before trying again.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"properties":{"message":{"description":"A human-readable description of the error.","type":"string"}},"type":"object"}}}}}},"paths":{"/profiles/types/{type}/{countryCode}":{"get":{"tags":["Profiles"],"summary":"Retrieve profile type configuration","description":"Returns the fields that can be provided when creating a profile of the given entity type in the given country, and whether each field is required.","operationId":"configuration-entity-type","parameters":[{"name":"type","in":"path","description":"Entity type, for example `company` or `sole_trader`.","required":true,"schema":{"type":"string","enum":["company","sole_trader","partnership","charity","government_entity","incorporated_syndicate","company_syndicate","syndicate","association","trust","fund","club","individual","joint_individual"]}},{"name":"countryCode","in":"path","description":"Two-letter country code in ISO 3166-1 alpha-2 format, for example `GB`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesTypeConfigResponse"}}}},"401":{"$ref":"#/components/responses/401"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://detected.gitbook.io/detected-docs/profiles.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
