Client Integration API
Connect your systems to company users, portfolio records, sanctions and PEP lookup.
This reference includes only endpoints available with a client API key. Each key acts as an administrator for its assigned company. The documentation and downloads are generated from the deployed API.
Production: https://api.sancticheck.com
Local development: http://localhost:8000
Integration packages
Postman environments: Production · Local
Import the collection and an environment, select the environment and set api_key privately. Fill resource IDs from list responses. Optional filters are disabled initially. Run individual requests, since write requests change data. Download fresh packages after API upgrades.
Authenticate with a named API key
- A client administrator or staff member opens a company and selects API keys → Create API key.
- Give the key a descriptive name, such as “ERP integration”. Copy the secret when shown and store it securely. It cannot be retrieved again.
- Send
Authorization: Bearer <api_key>on every request.
Key requests do not require login cookies, a CSRF token or an Origin header. Keys can manage users and portfolios only within their company. They cannot grant staff access or create other keys. API-key actions in company activity show the key name.
Keep keys on your server, outside browser bundles, URLs and AI prompts. Give your AI assistant the OpenAPI file or Markdown guide and an environment-variable name instead.
Keys stop working when revoked, expired or when the company is inactive. They are independent of the creator’s login session. Manage or revoke keys from the company’s API keys tab.
First request
Set SANCTICHECK_API_KEY privately in your environment. Retrieve your company ID:
curl --fail-with-body https://api.sancticheck.com/api/v1/clients \
-H "Authorization: Bearer $SANCTICHECK_API_KEY"Search sanctions names and identifying information:
curl --fail-with-body --get https://api.sancticheck.com/api/v1/sanctions/search \
-H "Authorization: Bearer $SANCTICHECK_API_KEY" \
--data-urlencode 'q=abu hud'The integration guide includes Python and server-side JavaScript examples.
Data conventions and errors
Search results include classifications: SANCTIONS, PEP, CRIME, NARCOTICS or TERRORISM. Filter with classification=PEP. Wikidata supplies PEP information only. Political exposure does not establish wrongdoing or a sanctions designation. Review the public role, dates and source evidence.
Use JSON request bodies and UUID resource IDs. Paginated lists return items, total, page and page_size. Pages start at 1; page size defaults to 20, maximum 100.
Sanctions lookup requires at least 3 letters or numbers and returns at most 10 results. Every whole word must occur, in any order. Punctuation and text edges count as word boundaries; partial names do not match. If has_more is true, narrow the query. This lookup does not perform automated screening or produce a sanctions decision.
Record dates accept DAY, MONTH, YEAR or RANGE precision. Use ISO date strings; ranges require end_value. Read records before editing: record PATCH requests replace collections with defaults when fields are omitted. Set group_id to null to move a record to Unassigned.
| Status | Meaning |
|---|---|
| 400 / 422 | Invalid input or failed validation. Read the detail field. |
| 401 | Missing, invalid, expired or revoked API key. |
| 403 / 404 | Access denied, inactive company, or resource unavailable within this company. |
| 409 | Conflict, duplicate name, protected administrator or required deletion confirmation. |
| 429 | Invitation rate limit reached. Wait up to 15 minutes before retrying. |
| 5xx | Temporary service failure. Retry reads with bounded backoff; verify state before retrying writes. |
Domain errors use {"detail":"message"}; validation errors use a list of loc, msg and type objects. Responses normally include X-Request-ID for support. Writes do not support idempotency keys.
Structured report enrichment
Screening record details include revision-linked background facts, locations, roles, relationships and country context. Each completed result includes retrieval dates and source references. Check enrichment.status and enrichment.outdated before using the information. Background facts do not alter provider evidence or classifications. Maps, flags and presentation belong to the report generator.
The integration guide describes the data fields, identity review and refresh rules.
Endpoint reference
32 operations. All require the client API key.
GET /api/v1/clients/{client_id}/screening/settings
Read platform default, nullable company override and effective threshold (1 to 5 stars).
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanySettingsOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}PATCH /api/v1/clients/{client_id}/screening/settings
Set company threshold to 1 through 5, or null to inherit the platform default. Queues screening; preserves existing reviews until evidence or customer identity changes.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanyThreshold"
}
}
},
"required": true
}Example body
{}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanySettingsOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}PATCH /api/v1/clients/{client_id}/groups/{group_id}/screening-threshold
Set screening_threshold to 1 through 5 or null to inherit the company default. Also supported for Unassigned.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupThreshold"
}
}
},
"required": true
}Example body
{}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/screening/dashboard
Paginated portfolio screening status, counts, latest record check and next scheduled check. Includes failed checks awaiting retry; last_scan_at is latest record activity, not completion of a whole-company cycle.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
status | query | No | {"anyOf": [{"enum": ["ACTION_REQUIRED", "CONFIRMED", "NO_OUTSTANDING", "PENDING"], "type": "string"}, {"type": "null"}], "title": "Status"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DashboardOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/screening/records/{record_id}
Read current candidates, preserved evidence and recent meaningful history. This view is audited separately and does not create a screening-history entry.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DetailOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/screening/records/{record_id}/history
Paginate immutable screening changes and review decisions for reporting. Routine views and unchanged daily checks are excluded; latest scan timestamps remain available on the screening record.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_EventOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/clients/{client_id}/screening/matches/{match_id}/review
Save FALSE_POSITIVE, CONFIRMED or NEEDS_REVIEW with notes. Copy version from the latest match detail response; stale versions return 409 and must be refreshed before deciding.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
match_id | path | Yes | {"format": "uuid", "title": "Match Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/app__domain__screening__schemas__Review"
}
}
},
"required": true
}Example body
{
"decision": "FALSE_POSITIVE",
"version": "Example name"
}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Message"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/groups/linked-companies
List active companies in this client portfolio for the optional linked_to_id field. Supports q and pagination.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 100, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_RecordOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients
List the company assigned to this API key. Supports q, page and page_size.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_ClientOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}
Read the assigned company.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ClientOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/audit
Read company activity. API-key actions include the key name.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_AuditOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/users
List users in the assigned company. Staff users are excluded.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | query | No | {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Client Id"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_UserOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/users/invite
Invite a user or client administrator to the assigned company. Email is queued; invitations expire after 48 hours. Staff access cannot be granted.
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Invite"
}
}
},
"required": true
}Example body
{
"client_id": "{{client_id}}",
"email": "{{invite_email}}",
"is_staff": false,
"role": "USER"
}Responses
{
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
},
"429": {
"description": "Too many attempts. Wait up to 15 minutes before retrying."
}
}PATCH /api/v1/users/{user_id}
Update a company user. Omit unchanged fields. Staff access cannot be granted and the last active client administrator is protected.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
user_id | path | Yes | {"format": "uuid", "title": "User Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserUpdate"
}
}
},
"required": true
}Example body
{
"name": "Updated name"
}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/users/{user_id}/resend-invitation
Replace an unaccepted invitation and queue a new email. The previous link becomes invalid.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
user_id | path | Yes | {"format": "uuid", "title": "User Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Message"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
},
"429": {
"description": "Too many attempts. Wait up to 15 minutes before retrying."
}
}GET /api/v1/clients/{client_id}/groups
List company groups with record_count counting all active records, including linked descendants. Unassigned appears first; remaining groups are ordered by name.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_GroupOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/clients/{client_id}/groups
Create a group. Names are trimmed and must be unique within the company, ignoring case.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInput"
}
}
},
"required": true
}Example body
{
"name": "Example name"
}Responses
{
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/groups/{group_id}
Read a company group.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}PATCH /api/v1/clients/{client_id}/groups/{group_id}
Replace group name and description. The Unassigned group cannot be changed.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInput"
}
}
},
"required": true
}Example body
{
"name": "Example name"
}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}DELETE /api/v1/clients/{client_id}/groups/{group_id}
Archive a group and move its active records to Unassigned. Nonempty groups require confirm=true. Unassigned cannot be deleted.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
confirm | query | No | {"default": false, "title": "Confirm", "type": "boolean"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Message"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/groups/{group_id}/records
List active portfolio records in a group. Set hierarchy=true to keep linked records beneath their company, paginating whole families. depth and linked_to_name describe the displayed hierarchy.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
hierarchy | query | No | {"default": false, "title": "Hierarchy", "type": "boolean"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_RecordOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/clients/{client_id}/groups/{group_id}/records
Create a portfolio record using a generic name and typed identifying information. Optional linked_to_id must reference an active organisation in the same client; relationship_role describes the link. Cycles are rejected.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordInput"
}
}
},
"required": true
}Example body
{
"name": "Example name"
}Responses
{
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/clients/{client_id}/groups/{group_id}/records/{record_id}
Read an active portfolio record.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}PATCH /api/v1/clients/{client_id}/groups/{group_id}/records/{record_id}
Replace record fields. Supply group_id to move within the same company; null moves to Unassigned, omission keeps the current group. Omitted collection fields reset to their schema defaults.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordUpdate"
}
}
},
"required": true
}Example body
{
"name": "Example name"
}Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}DELETE /api/v1/clients/{client_id}/groups/{group_id}/records/{record_id}
Archive a portfolio record while preserving its history.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | path | Yes | {"format": "uuid", "title": "Client Id", "type": "string"} |
group_id | path | Yes | {"format": "uuid", "title": "Group Id", "type": "string"} |
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Message"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/sanctions/search
Search active full names and aliases using PostgreSQL trigram candidates and the same confidence rules as daily screening. At least 3 letters or numbers, or 2 East Asian characters; at most 10 consolidated profiles. Best full-name similarity ranks first, with primary-name agreement breaking ties. Configured company suffixes are ignored for organisations. Initials, surname-only matches and conflicting generation suffixes are capped below 4 stars. Ratings: 5 for scores at least 97 with exact meaningful-token agreement, 4 at least 90, 3 at least 60, 2 at least 40, otherwise 1. matched_name identifies the source name or alias used. Repeated aliases do not boost confidence. sources lists conservatively linked providers; has_more indicates further candidates. classifications optionally filters candidates.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
exact | query | No | {"default": false, "title": "Exact", "type": "boolean"} |
classification | query | No | {"anyOf": [{"enum": ["SANCTIONS", "PEP", "CRIME", "NARCOTICS", "TERRORISM", "MONEY_LAUNDERING", "TERRORIST_FINANCING", "PROLIFERATION", "CORRUPTION", "FRAUD", "ORGANISED_CRIME", "HUMAN_TRAFFICKING", "HUMAN_RIGHTS_ABUSES", "CYBERCRIME", "ARMS_TRAFFICKING", "SANCTIONS_EVASION", "REGULATORY_ACTION", "DEBARMENT", "SANCTIONS_LINKED", "SANCTIONS_CONTROL", "COUNTER_SANCTIONS", "RCA", "WANTED", "PERSON_OF_INTEREST", "REGULATORY_WARNING", "EXPORT_CONTROL", "EXPORT_CONTROL_LINKED", "TRADE_RISK", "INVESTMENT_RISK", "INVESTMENT_BAN", "DISQUALIFIED", "FINANCIAL_CRIME", "WAR_CRIMES", "TRAFFICKING", "THEFT", "ENVIRONMENTAL_VIOLATIONS", "FORCED_LABOUR", "FROZEN_ASSET", "MARITIME_DETENTION", "SHADOW_FLEET", "OLIGARCH", "CLONE_ENTITY", "HIGH_RISK_AREA", "SCREENING_INTEREST", "CRIMINAL_LEADERSHIP"], "type": "string"}, {"type": "null"}], "title": "Classification"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchResults"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/sanctions/search/{record_id}
Read a sanctions lookup result, including source, aliases and original provider information. Inactive records and disabled sources return 404.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchDetail"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/sanctions/search/{record_id}/profile
Read a consolidated profile from any member record ID. Optional q supplies the search relevance rating. Includes all active, enabled records linked by shared explicit identifiers or exact full name and full birth date, excluding conflicting evidence. Each record retains its source, classifications and enrichment. Does not merge stored provider evidence.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
record_id | path | Yes | {"format": "uuid", "title": "Record Id", "type": "string"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScreeningProfile"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}POST /api/v1/reports
Queue a detailed PDF screening report for background generation. kind is profile for a consolidated source profile, or portfolio for an authorised company record and its screening history. Portfolio requires client_id. Optional q records the profile search and confidence. Returns 202 while queued or generating, or 200 when reusing a completed report less than 24 hours old. Poll the report metadata for status and download its authenticated PDF URL when ready. Older reports remain available.
Request body
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReportRequest"
}
}
},
"required": true
}Example body
{
"kind": "profile",
"record_id": "{{client_id}}"
}Responses
{
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReportOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/reports
List report jobs and saved reports within the API key company, optionally filtered by record_id, kind, status or subject name q. Paginated and newest first.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
client_id | query | No | {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Client Id"} |
record_id | query | No | {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Record Id"} |
kind | query | No | {"anyOf": [{"enum": ["profile", "portfolio"], "type": "string"}, {"type": "null"}], "title": "Kind"} |
status | query | No | {"anyOf": [{"enum": ["queued", "processing", "ready", "failed"], "type": "string"}, {"type": "null"}], "title": "Status"} |
for_request | query | No | {"default": false, "title": "For Request", "type": "boolean"} |
q | query | No | {"default": "", "maxLength": 200, "title": "Q", "type": "string"} |
page | query | No | {"default": 1, "minimum": 1, "title": "Page", "type": "integer"} |
page_size | query | No | {"default": 20, "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Page_ReportOut_"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/reports/{report_id}
Read saved report metadata within the API key company, including the SHA-256 of its PDF.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
report_id | path | Yes | {"format": "uuid", "title": "Report Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReportOut"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}GET /api/v1/reports/{report_id}/pdf
Download the original saved PDF within the API key company. Authenticate this request as well. Source updates do not change an already generated report.
Parameters
| Name | Location | Required | Schema |
|---|---|---|---|
report_id | path | Yes | {"format": "uuid", "title": "Report Id", "type": "string"} |
Responses
{
"200": {
"content": {
"application/pdf": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": "Successful Response"
},
"400": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Invalid request or business rule"
},
"401": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Missing, invalid, expired or revoked API key"
},
"403": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Action not permitted or company inactive"
},
"404": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Resource not found within this company"
},
"409": {
"content": {
"application/json": {
"schema": {
"properties": {
"detail": {
"type": "string"
}
},
"required": [
"detail"
],
"type": "object"
}
}
},
"description": "Conflict, duplicate name or protected last administrator"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}Data schemas
These definitions are generated from the API validation and response models. A $ref refers to another schema below.
app__domain__screening__schemas__Review
{
"additionalProperties": false,
"properties": {
"decision": {
"enum": [
"FALSE_POSITIVE",
"CONFIRMED",
"NEEDS_REVIEW"
],
"title": "Decision",
"type": "string"
},
"notes": {
"default": "",
"maxLength": 10000,
"title": "Notes",
"type": "string"
},
"version": {
"maxLength": 64,
"minLength": 64,
"title": "Version",
"type": "string"
}
},
"required": [
"version",
"decision"
],
"title": "Review",
"type": "object"
}AuditOut
{
"properties": {
"action": {
"title": "Action",
"type": "string"
},
"actor_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Email"
},
"actor_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Id"
},
"actor_key_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Key Id"
},
"actor_key_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Key Name"
},
"actor_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actor Name"
},
"client_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"details": {
"additionalProperties": true,
"title": "Details",
"type": "object"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"target_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Id"
}
},
"required": [
"id",
"actor_id",
"actor_key_id",
"actor_key_name",
"actor_name",
"actor_email",
"client_id",
"action",
"target_id",
"details",
"created_at"
],
"title": "AuditOut",
"type": "object"
}ClientOut
{
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_active": {
"title": "Is Active",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"id",
"name",
"is_active",
"created_at"
],
"title": "ClientOut",
"type": "object"
}CompanySettingsOut
{
"properties": {
"effective_threshold": {
"title": "Effective Threshold",
"type": "integer"
},
"platform_threshold": {
"title": "Platform Threshold",
"type": "integer"
},
"threshold": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Threshold"
}
},
"required": [
"threshold",
"platform_threshold",
"effective_threshold"
],
"title": "CompanySettingsOut",
"type": "object"
}CompanyThreshold
{
"additionalProperties": false,
"properties": {
"threshold": {
"anyOf": [
{
"maximum": 5.0,
"minimum": 1.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Threshold"
}
},
"title": "CompanyThreshold",
"type": "object"
}CountsOut
{
"properties": {
"action_required": {
"title": "Action Required",
"type": "integer"
},
"confirmed": {
"title": "Confirmed",
"type": "integer"
},
"no_outstanding": {
"title": "No Outstanding",
"type": "integer"
},
"pending": {
"title": "Pending",
"type": "integer"
}
},
"required": [
"action_required",
"confirmed",
"no_outstanding",
"pending"
],
"title": "CountsOut",
"type": "object"
}DashboardOut
{
"properties": {
"counts": {
"$ref": "#/components/schemas/CountsOut"
},
"items": {
"items": {
"$ref": "#/components/schemas/DashboardRecordOut"
},
"title": "Items",
"type": "array"
},
"last_scan_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Scan At"
},
"next_scan_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Scan At"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"scan_error_count": {
"title": "Scan Error Count",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"counts",
"last_scan_at",
"next_scan_at",
"scan_error_count",
"items",
"total",
"page",
"page_size"
],
"title": "DashboardOut",
"type": "object"
}DashboardRecordOut
{
"properties": {
"group_id": {
"format": "uuid",
"title": "Group Id",
"type": "string"
},
"group_name": {
"title": "Group Name",
"type": "string"
},
"highest_rating": {
"title": "Highest Rating",
"type": "integer"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"last_scanned_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Scanned At"
},
"linked_to_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Linked To Name"
},
"match_count": {
"title": "Match Count",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
},
"threshold": {
"title": "Threshold",
"type": "integer"
}
},
"required": [
"id",
"name",
"group_id",
"group_name",
"linked_to_name",
"status",
"last_scanned_at",
"threshold",
"match_count",
"highest_rating"
],
"title": "DashboardRecordOut",
"type": "object"
}DetailOut
{
"properties": {
"history": {
"items": {
"$ref": "#/components/schemas/EventOut"
},
"title": "History",
"type": "array"
},
"history_has_more": {
"title": "History Has More",
"type": "boolean"
},
"last_error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Error"
},
"last_scanned_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Scanned At"
},
"matches": {
"items": {
"$ref": "#/components/schemas/MatchOut"
},
"title": "Matches",
"type": "array"
},
"next_scan_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Scan At"
},
"record": {
"$ref": "#/components/schemas/RecordOut"
},
"status": {
"title": "Status",
"type": "string"
},
"threshold": {
"title": "Threshold",
"type": "integer"
}
},
"required": [
"record",
"status",
"last_scanned_at",
"next_scan_at",
"threshold",
"last_error",
"matches",
"history",
"history_has_more"
],
"title": "DetailOut",
"type": "object"
}EventOut
{
"properties": {
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"details": {
"additionalProperties": true,
"title": "Details",
"type": "object"
},
"event_type": {
"title": "Event Type",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
}
},
"required": [
"id",
"event_type",
"created_at",
"details"
],
"title": "EventOut",
"type": "object"
}GroupInput
{
"additionalProperties": false,
"properties": {
"description": {
"default": "",
"maxLength": 2000,
"title": "Description",
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"title": "Name",
"type": "string"
}
},
"required": [
"name"
],
"title": "GroupInput",
"type": "object"
}GroupOut
{
"properties": {
"client_id": {
"format": "uuid",
"title": "Client Id",
"type": "string"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"description": {
"title": "Description",
"type": "string"
},
"effective_screening_threshold": {
"default": 4,
"title": "Effective Screening Threshold",
"type": "integer"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"is_default": {
"title": "Is Default",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"record_count": {
"title": "Record Count",
"type": "integer"
},
"screening_threshold": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Screening Threshold"
}
},
"required": [
"id",
"client_id",
"name",
"description",
"is_default",
"created_at",
"record_count"
],
"title": "GroupOut",
"type": "object"
}GroupThreshold
{
"additionalProperties": false,
"properties": {
"screening_threshold": {
"anyOf": [
{
"maximum": 5.0,
"minimum": 1.0,
"type": "integer"
},
{
"type": "null"
}
],
"title": "Screening Threshold"
}
},
"title": "GroupThreshold",
"type": "object"
}HTTPValidationError
{
"properties": {
"detail": {
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"title": "Detail",
"type": "array"
}
},
"title": "HTTPValidationError",
"type": "object"
}Invite
{
"additionalProperties": false,
"properties": {
"client_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"email": {
"format": "email",
"title": "Email",
"type": "string"
},
"is_staff": {
"const": false,
"default": false,
"title": "Is Staff",
"type": "boolean"
},
"name": {
"default": "",
"maxLength": 200,
"title": "Name",
"type": "string"
},
"role": {
"default": "USER",
"enum": [
"CLIENT_ADMIN",
"USER"
],
"title": "Role",
"type": "string"
}
},
"required": [
"email"
],
"title": "Invite",
"type": "object"
}MatchOut
{
"properties": {
"active": {
"title": "Active",
"type": "boolean"
},
"classifications": {
"items": {
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"decision": {
"title": "Decision",
"type": "string"
},
"evidence": {
"additionalProperties": true,
"title": "Evidence",
"type": "object"
},
"first_matched_at": {
"format": "date-time",
"title": "First Matched At",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"last_seen_at": {
"format": "date-time",
"title": "Last Seen At",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"rating": {
"title": "Rating",
"type": "integer"
},
"review_notes": {
"title": "Review Notes",
"type": "string"
},
"reviewed_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Reviewed At"
},
"sanction_record_id": {
"format": "uuid",
"title": "Sanction Record Id",
"type": "string"
},
"source_name": {
"title": "Source Name",
"type": "string"
},
"version": {
"title": "Version",
"type": "string"
}
},
"required": [
"id",
"sanction_record_id",
"name",
"source_name",
"classifications",
"rating",
"active",
"decision",
"evidence",
"first_matched_at",
"last_seen_at",
"reviewed_at",
"review_notes",
"version"
],
"title": "MatchOut",
"type": "object"
}Message
{
"properties": {
"message": {
"title": "Message",
"type": "string"
}
},
"required": [
"message"
],
"title": "Message",
"type": "object"
}Page_AuditOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/AuditOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[AuditOut]",
"type": "object"
}Page_ClientOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/ClientOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[ClientOut]",
"type": "object"
}Page_EventOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/EventOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[EventOut]",
"type": "object"
}Page_GroupOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/GroupOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[GroupOut]",
"type": "object"
}Page_RecordOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/RecordOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[RecordOut]",
"type": "object"
}Page_ReportOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/ReportOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[ReportOut]",
"type": "object"
}Page_UserOut_
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/UserOut"
},
"title": "Items",
"type": "array"
},
"page": {
"title": "Page",
"type": "integer"
},
"page_size": {
"title": "Page Size",
"type": "integer"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"items",
"total",
"page",
"page_size"
],
"title": "Page[UserOut]",
"type": "object"
}RecordDate
{
"additionalProperties": false,
"properties": {
"end_value": {
"anyOf": [
{
"maxLength": 10,
"type": "string"
},
{
"type": "null"
}
],
"title": "End Value"
},
"precision": {
"enum": [
"DAY",
"MONTH",
"YEAR",
"RANGE"
],
"title": "Precision",
"type": "string"
},
"type": {
"maxLength": 80,
"minLength": 1,
"title": "Type",
"type": "string"
},
"value": {
"maxLength": 10,
"title": "Value",
"type": "string"
}
},
"required": [
"type",
"precision",
"value"
],
"title": "RecordDate",
"type": "object"
}RecordInput
{
"additionalProperties": false,
"properties": {
"addresses": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Addresses",
"type": "array"
},
"aliases": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Aliases",
"type": "array"
},
"countries": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Countries",
"type": "array"
},
"dates": {
"items": {
"$ref": "#/components/schemas/RecordDate"
},
"maxItems": 100,
"title": "Dates",
"type": "array"
},
"entity_type": {
"default": "PERSON",
"enum": [
"PERSON",
"ORGANISATION",
"VESSEL",
"UNKNOWN"
],
"title": "Entity Type",
"type": "string"
},
"identifiers": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Identifiers",
"type": "array"
},
"linked_to_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Linked To Id"
},
"name": {
"maxLength": 500,
"minLength": 1,
"title": "Name",
"type": "string"
},
"notes": {
"default": "",
"maxLength": 10000,
"title": "Notes",
"type": "string"
},
"relationship_role": {
"default": "",
"maxLength": 200,
"title": "Relationship Role",
"type": "string"
}
},
"required": [
"name"
],
"title": "RecordInput",
"type": "object"
}RecordOut
{
"additionalProperties": false,
"properties": {
"addresses": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Addresses",
"type": "array"
},
"aliases": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Aliases",
"type": "array"
},
"client_id": {
"format": "uuid",
"title": "Client Id",
"type": "string"
},
"countries": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Countries",
"type": "array"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"dates": {
"items": {
"$ref": "#/components/schemas/RecordDate"
},
"maxItems": 100,
"title": "Dates",
"type": "array"
},
"depth": {
"default": 0,
"title": "Depth",
"type": "integer"
},
"entity_type": {
"default": "PERSON",
"enum": [
"PERSON",
"ORGANISATION",
"VESSEL",
"UNKNOWN"
],
"title": "Entity Type",
"type": "string"
},
"group_id": {
"format": "uuid",
"title": "Group Id",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"identifiers": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Identifiers",
"type": "array"
},
"linked_to_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Linked To Id"
},
"linked_to_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Linked To Name"
},
"name": {
"maxLength": 500,
"minLength": 1,
"title": "Name",
"type": "string"
},
"normalized_name": {
"title": "Normalized Name",
"type": "string"
},
"notes": {
"default": "",
"maxLength": 10000,
"title": "Notes",
"type": "string"
},
"relationship_role": {
"default": "",
"maxLength": 200,
"title": "Relationship Role",
"type": "string"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"linked_to_id",
"relationship_role",
"name",
"entity_type",
"aliases",
"dates",
"identifiers",
"countries",
"addresses",
"notes",
"id",
"client_id",
"group_id",
"normalized_name",
"linked_to_name",
"depth",
"created_at",
"updated_at"
],
"title": "RecordOut",
"type": "object"
}RecordUpdate
{
"additionalProperties": false,
"properties": {
"addresses": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Addresses",
"type": "array"
},
"aliases": {
"items": {
"type": "string"
},
"maxItems": 100,
"title": "Aliases",
"type": "array"
},
"countries": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Countries",
"type": "array"
},
"dates": {
"items": {
"$ref": "#/components/schemas/RecordDate"
},
"maxItems": 100,
"title": "Dates",
"type": "array"
},
"entity_type": {
"default": "PERSON",
"enum": [
"PERSON",
"ORGANISATION",
"VESSEL",
"UNKNOWN"
],
"title": "Entity Type",
"type": "string"
},
"group_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Id"
},
"identifiers": {
"items": {
"$ref": "#/components/schemas/TypedValue"
},
"maxItems": 100,
"title": "Identifiers",
"type": "array"
},
"linked_to_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Linked To Id"
},
"name": {
"maxLength": 500,
"minLength": 1,
"title": "Name",
"type": "string"
},
"notes": {
"default": "",
"maxLength": 10000,
"title": "Notes",
"type": "string"
},
"relationship_role": {
"default": "",
"maxLength": 200,
"title": "Relationship Role",
"type": "string"
}
},
"required": [
"name"
],
"title": "RecordUpdate",
"type": "object"
}ReportEnrichment
{
"properties": {
"outdated": {
"title": "Outdated",
"type": "boolean"
},
"providers": {
"additionalProperties": {
"additionalProperties": true,
"type": "object"
},
"title": "Providers",
"type": "object"
},
"result": {
"anyOf": [
{
"$ref": "#/components/schemas/ReportResult"
},
{
"type": "null"
}
]
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"status",
"outdated",
"result"
],
"title": "ReportEnrichment",
"type": "object"
}ReportOut
{
"properties": {
"can_regenerate": {
"title": "Can Regenerate",
"type": "boolean"
},
"client_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"company_name": {
"title": "Company Name",
"type": "string"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"created_by": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Created By"
},
"created_by_name": {
"title": "Created By Name",
"type": "string"
},
"error": {
"title": "Error",
"type": "string"
},
"generated_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"kind": {
"enum": [
"profile",
"portfolio"
],
"title": "Kind",
"type": "string"
},
"pdf_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pdf Url"
},
"record_id": {
"format": "uuid",
"title": "Record Id",
"type": "string"
},
"reference": {
"title": "Reference",
"type": "string"
},
"reusable_until": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Reusable Until"
},
"reused": {
"default": false,
"title": "Reused",
"type": "boolean"
},
"sha256": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sha256"
},
"status": {
"enum": [
"queued",
"processing",
"ready",
"failed"
],
"title": "Status",
"type": "string"
},
"subject_name": {
"title": "Subject Name",
"type": "string"
}
},
"required": [
"id",
"reference",
"subject_name",
"created_at",
"pdf_url",
"sha256",
"kind",
"record_id",
"client_id",
"company_name",
"created_by",
"created_by_name",
"generated_at",
"status",
"error",
"reusable_until",
"can_regenerate"
],
"title": "ReportOut",
"type": "object"
}ReportRequest
{
"additionalProperties": false,
"properties": {
"client_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"kind": {
"enum": [
"profile",
"portfolio"
],
"title": "Kind",
"type": "string"
},
"q": {
"default": "",
"maxLength": 200,
"title": "Q",
"type": "string"
},
"record_id": {
"format": "uuid",
"title": "Record Id",
"type": "string"
}
},
"required": [
"kind",
"record_id"
],
"title": "ReportRequest",
"type": "object"
}ReportResult
{
"properties": {
"data": {
"additionalProperties": true,
"title": "Data",
"type": "object"
},
"entity_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Entity Id"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"provider": {
"default": "wikidata",
"title": "Provider",
"type": "string"
},
"refresh_after": {
"format": "date-time",
"title": "Refresh After",
"type": "string"
},
"retrieved_at": {
"format": "date-time",
"title": "Retrieved At",
"type": "string"
},
"revision_id": {
"format": "uuid",
"title": "Revision Id",
"type": "string"
}
},
"required": [
"id",
"revision_id",
"entity_id",
"retrieved_at",
"refresh_after",
"data"
],
"title": "ReportResult",
"type": "object"
}ScreeningProfile
{
"properties": {
"classifications": {
"items": {
"enum": [
"SANCTIONS",
"PEP",
"CRIME",
"NARCOTICS",
"TERRORISM",
"MONEY_LAUNDERING",
"TERRORIST_FINANCING",
"PROLIFERATION",
"CORRUPTION",
"FRAUD",
"ORGANISED_CRIME",
"HUMAN_TRAFFICKING",
"HUMAN_RIGHTS_ABUSES",
"CYBERCRIME",
"ARMS_TRAFFICKING",
"SANCTIONS_EVASION",
"REGULATORY_ACTION",
"DEBARMENT",
"SANCTIONS_LINKED",
"SANCTIONS_CONTROL",
"COUNTER_SANCTIONS",
"RCA",
"WANTED",
"PERSON_OF_INTEREST",
"REGULATORY_WARNING",
"EXPORT_CONTROL",
"EXPORT_CONTROL_LINKED",
"TRADE_RISK",
"INVESTMENT_RISK",
"INVESTMENT_BAN",
"DISQUALIFIED",
"FINANCIAL_CRIME",
"WAR_CRIMES",
"TRAFFICKING",
"THEFT",
"ENVIRONMENTAL_VIOLATIONS",
"FORCED_LABOUR",
"FROZEN_ASSET",
"MARITIME_DETENTION",
"SHADOW_FLEET",
"OLIGARCH",
"CLONE_ENTITY",
"HIGH_RISK_AREA",
"SCREENING_INTEREST",
"CRIMINAL_LEADERSHIP"
],
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"match_rating": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Match Rating"
},
"name": {
"title": "Name",
"type": "string"
},
"records": {
"items": {
"$ref": "#/components/schemas/SearchDetail"
},
"title": "Records",
"type": "array"
}
},
"required": [
"id",
"name",
"classifications",
"records"
],
"title": "ScreeningProfile",
"type": "object"
}SearchDetail
{
"properties": {
"active": {
"title": "Active",
"type": "boolean"
},
"attributes": {
"additionalProperties": true,
"title": "Attributes",
"type": "object"
},
"classifications": {
"items": {
"enum": [
"SANCTIONS",
"PEP",
"CRIME",
"NARCOTICS",
"TERRORISM",
"MONEY_LAUNDERING",
"TERRORIST_FINANCING",
"PROLIFERATION",
"CORRUPTION",
"FRAUD",
"ORGANISED_CRIME",
"HUMAN_TRAFFICKING",
"HUMAN_RIGHTS_ABUSES",
"CYBERCRIME",
"ARMS_TRAFFICKING",
"SANCTIONS_EVASION",
"REGULATORY_ACTION",
"DEBARMENT",
"SANCTIONS_LINKED",
"SANCTIONS_CONTROL",
"COUNTER_SANCTIONS",
"RCA",
"WANTED",
"PERSON_OF_INTEREST",
"REGULATORY_WARNING",
"EXPORT_CONTROL",
"EXPORT_CONTROL_LINKED",
"TRADE_RISK",
"INVESTMENT_RISK",
"INVESTMENT_BAN",
"DISQUALIFIED",
"FINANCIAL_CRIME",
"WAR_CRIMES",
"TRAFFICKING",
"THEFT",
"ENVIRONMENTAL_VIOLATIONS",
"FORCED_LABOUR",
"FROZEN_ASSET",
"MARITIME_DETENTION",
"SHADOW_FLEET",
"OLIGARCH",
"CLONE_ENTITY",
"HIGH_RISK_AREA",
"SCREENING_INTEREST",
"CRIMINAL_LEADERSHIP"
],
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"dates": {
"items": {},
"title": "Dates",
"type": "array"
},
"enrichment": {
"$ref": "#/components/schemas/ReportEnrichment"
},
"entity_type": {
"title": "Entity Type",
"type": "string"
},
"external_id": {
"title": "External Id",
"type": "string"
},
"first_seen_at": {
"format": "date-time",
"title": "First Seen At",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"identifiers": {
"items": {},
"title": "Identifiers",
"type": "array"
},
"last_changed_at": {
"format": "date-time",
"title": "Last Changed At",
"type": "string"
},
"last_seen_at": {
"format": "date-time",
"title": "Last Seen At",
"type": "string"
},
"locations": {
"items": {},
"title": "Locations",
"type": "array"
},
"match_rating": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Match Rating"
},
"name": {
"title": "Name",
"type": "string"
},
"names": {
"items": {},
"title": "Names",
"type": "array"
},
"programs": {
"items": {},
"title": "Programs",
"type": "array"
},
"provider_details": {
"additionalProperties": true,
"title": "Provider Details",
"type": "object"
},
"reference_numbers": {
"items": {},
"title": "Reference Numbers",
"type": "array"
},
"snapshot_id": {
"format": "uuid",
"title": "Snapshot Id",
"type": "string"
},
"source_id": {
"format": "uuid",
"title": "Source Id",
"type": "string"
},
"source_last_success_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Last Success At"
},
"source_name": {
"title": "Source Name",
"type": "string"
},
"source_website": {
"title": "Source Website",
"type": "string"
}
},
"required": [
"classifications",
"id",
"source_id",
"external_id",
"name",
"entity_type",
"active",
"reference_numbers",
"names",
"dates",
"identifiers",
"locations",
"programs",
"attributes",
"snapshot_id",
"first_seen_at",
"last_seen_at",
"last_changed_at",
"enrichment",
"provider_details",
"source_name",
"source_website",
"source_last_success_at"
],
"title": "SearchDetail",
"type": "object"
}SearchResult
{
"properties": {
"classifications": {
"items": {
"enum": [
"SANCTIONS",
"PEP",
"CRIME",
"NARCOTICS",
"TERRORISM",
"MONEY_LAUNDERING",
"TERRORIST_FINANCING",
"PROLIFERATION",
"CORRUPTION",
"FRAUD",
"ORGANISED_CRIME",
"HUMAN_TRAFFICKING",
"HUMAN_RIGHTS_ABUSES",
"CYBERCRIME",
"ARMS_TRAFFICKING",
"SANCTIONS_EVASION",
"REGULATORY_ACTION",
"DEBARMENT",
"SANCTIONS_LINKED",
"SANCTIONS_CONTROL",
"COUNTER_SANCTIONS",
"RCA",
"WANTED",
"PERSON_OF_INTEREST",
"REGULATORY_WARNING",
"EXPORT_CONTROL",
"EXPORT_CONTROL_LINKED",
"TRADE_RISK",
"INVESTMENT_RISK",
"INVESTMENT_BAN",
"DISQUALIFIED",
"FINANCIAL_CRIME",
"WAR_CRIMES",
"TRAFFICKING",
"THEFT",
"ENVIRONMENTAL_VIOLATIONS",
"FORCED_LABOUR",
"FROZEN_ASSET",
"MARITIME_DETENTION",
"SHADOW_FLEET",
"OLIGARCH",
"CLONE_ENTITY",
"HIGH_RISK_AREA",
"SCREENING_INTEREST",
"CRIMINAL_LEADERSHIP"
],
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"entity_type": {
"title": "Entity Type",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"match_rating": {
"maximum": 5.0,
"minimum": 1.0,
"title": "Match Rating",
"type": "integer"
},
"matched_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched Name"
},
"matched_words": {
"title": "Matched Words",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
},
"record_count": {
"title": "Record Count",
"type": "integer"
},
"reference_numbers": {
"items": {
"type": "string"
},
"title": "Reference Numbers",
"type": "array"
},
"source_last_success_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Last Success At"
},
"source_name": {
"title": "Source Name",
"type": "string"
},
"source_website": {
"title": "Source Website",
"type": "string"
},
"sources": {
"items": {
"$ref": "#/components/schemas/SearchSource"
},
"title": "Sources",
"type": "array"
}
},
"required": [
"match_rating",
"matched_words",
"sources",
"record_count",
"classifications",
"id",
"name",
"entity_type",
"reference_numbers",
"source_name",
"source_website",
"source_last_success_at"
],
"title": "SearchResult",
"type": "object"
}SearchResults
{
"properties": {
"complete": {
"default": true,
"title": "Complete",
"type": "boolean"
},
"has_more": {
"title": "Has More",
"type": "boolean"
},
"items": {
"items": {
"$ref": "#/components/schemas/SearchResult"
},
"title": "Items",
"type": "array"
},
"minimum_characters": {
"default": 3,
"title": "Minimum Characters",
"type": "integer"
}
},
"required": [
"items",
"has_more"
],
"title": "SearchResults",
"type": "object"
}SearchSource
{
"properties": {
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"last_success_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Success At"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"id",
"name",
"last_success_at"
],
"title": "SearchSource",
"type": "object"
}TypedValue
{
"additionalProperties": false,
"properties": {
"type": {
"maxLength": 80,
"minLength": 1,
"title": "Type",
"type": "string"
},
"value": {
"maxLength": 500,
"minLength": 1,
"title": "Value",
"type": "string"
}
},
"required": [
"type",
"value"
],
"title": "TypedValue",
"type": "object"
}UserOut
{
"properties": {
"client_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Id"
},
"client_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Name"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"email": {
"title": "Email",
"type": "string"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"invited": {
"title": "Invited",
"type": "boolean"
},
"is_active": {
"title": "Is Active",
"type": "boolean"
},
"is_staff": {
"title": "Is Staff",
"type": "boolean"
},
"name": {
"title": "Name",
"type": "string"
},
"role": {
"title": "Role",
"type": "string"
}
},
"required": [
"id",
"email",
"name",
"role",
"is_staff",
"is_active",
"client_id",
"created_at",
"invited"
],
"title": "UserOut",
"type": "object"
}UserUpdate
{
"additionalProperties": false,
"properties": {
"is_active": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Active"
},
"name": {
"anyOf": [
{
"maxLength": 200,
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"role": {
"anyOf": [
{
"enum": [
"CLIENT_ADMIN",
"USER"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Role"
}
},
"title": "UserUpdate",
"type": "object"
}ValidationError
{
"properties": {
"ctx": {
"title": "Context",
"type": "object"
},
"input": {
"title": "Input"
},
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
}