Skip to main content
GET
List Data Validation Run Findings

Authorizations

Authorization
string
header
required

User-principal OAuth 2.0 Bearer authentication. Send a user-scoped Auth0 access token (audience = the app API audience) as Authorization: Bearer <jwt>. The request resolves to the user's identity and is authorized by their Role on the {companyId} in the path — the same role-based permissions the web app enforces. This is the path the MCP connector uses to act on a user's behalf; endpoints that accept it list both BearerAuth and ApiKeyAuth.

Path Parameters

companyId
string<uuid>
required

Company identifier

runId
string<uuid>
required

The run identifier returned by POST /configuration/data-validation-runs. Runs are scoped to their company: a run id belonging to another company returns 404, exactly as an id that exists nowhere does.

Query Parameters

page
integer
default:1

1-based page number. Defaults to the first page.

A page above 9007199254740991, or a page and pageSize whose product skips past that many rows, is a 400 — such a page is past the end of any collection, and the offset it asks for is not a number the database can seek to.

Required range: 1 <= x <= 9007199254740991
pageSize
integer
default:50

Number of findings per page (default 50, maximum 500).

A pageSize above 500 is silently clamped to 500 rather than rejected — it is not a 400. Read the length of items rather than assuming you received the size you asked for, and page through the rest. The cap exists because an unbounded page over a badly broken book would load every finding row into one response, which is the exact cost this endpoint is paginated to avoid.

The one exception is a pageSize above 9007199254740991, which is a 400 rather than a clamp: that is not a page size, it is a number too large for the pagination arithmetic to be meaningful.

Required range: 1 <= x <= 500
entityType
enum<string>

Return only the findings for this entity type, and count only those in totalCount. Omit it for every finding the run produced.

A value that is not one of the listed entity types is a 400, not an empty page: ?entityType=Policies answering {"items":[],"totalCount":0} would read as "none of my Policy records have a problem", which is silently wrong on the one endpoint whose job is to report problems.

Available options:
Event,
Exposure,
Quote,
Submission,
Person,
Organization,
Policy

Response

One page of the run's findings, plus the unpaginated total

One page of a data-validation run's per-record findings, plus the total number of findings matching the request. A finding exists only for a record the scan judged NOT to adhere, so a run over a clean book returns an empty page.

items
object[]
required

The findings on this page, oldest-first

totalCount
integer
required

How many findings match this request IGNORING the pagination. When entityType is sent it counts only that entity type, so it always describes the items beside it. It is NOT any of the run's records* counters: those count records SCANNED (clean ones included, which write no finding at all), and none of them is broken down by entity type.

It is only stable between pages once the run has reached a terminal status (succeeded or failed). A run still queued or running appends findings as it scans, so page 1 can report a smaller total than a later page of the same run. Findings only ever append and never reorder, so already-read pages stay valid. Poll the run to a terminal status before sizing a whole pull from the first page.