Skip to main content
POST

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

entityType
enum<string>
required

Field Model V1 EXPORTABLE entity type (lowercase kebab-case URL slug): the six CRUD entity types plus policy. Unlike the CRUD entity routes, policy IS valid here — a Policy export reads the segment in effect on the asOf date (defaulting to today).

Available options:
event,
exposure,
quote,
submission,
person,
organization,
policy

Query Parameters

force
boolean
default:false

When true, start a new run even if a run is already in flight producing this exact export — i.e. skip the duplicate check and always mint a fresh run. Any value other than the literal true (including omission) is treated as false. This does not raise the limit of 3 runs in flight per company.

Body

application/json

OPTIONAL. The export request; omit it entirely (or send {}) to export the type's full default column set with no filters. A body that cannot be read as JSON is a 400, never a silent default export.

fields
object[]

Explicit export columns, in CSV column order. Omit to export the type's full default column set (system columns + every configured column of the type's export surface).

filters
object[]

Filters applied to the export snapshot with AND semantics. Tenant filters must use fieldType: "declared" and a key from the entity surface's listFilters. Explicit systemUser, systemDate, and systemId forms remain supported.

Implicit field-derived forms fail at admission with HTTP 400 and code implicit-filters-disabled; no run is persisted or enqueued.

A filter accepted by FMV1 external list, version, and export endpoints.

Tenant-field filters must use fieldType: declared and the key of a listFilters definition on the surface being queried. The definition supplies the SQL expression, result type, and permitted operators; the request supplies only its key, an exposed operator, and an operand of that operator's shape.

The fixed systemUser, systemDate, and systemId forms remain explicit. Implicit field-derived forms such as text, number, optionSet, or join are rejected with 400 and code implicit-filters-disabled.

filterText
string

Free-text filter over the type's search fields

sortBy
string
sortDirection
enum<string>
Available options:
asc,
desc
asOf
string<date>

Point-in-time lens (YYYY-MM-DD); see the endpoint description.

Response

The run to poll. outcome: "enqueued" means a new export was started; outcome: "duplicate" means runId is a run already in flight producing this exact export and no second one was started.

The run to poll after starting an export run. outcome is a policy verdict delivered as a successful 200, not an error: duplicate means a run producing this exact export (same request, same configuration version) was already in flight, so runId is that run and no second export was started.

runId
string<uuid>
required

The run to poll via the start endpoint's GET .../export-runs/{runId} sibling

outcome
enum<string>
required

enqueued when a new export was started; duplicate when a run already in flight was producing this exact export (pass ?force=true to start a new run anyway)

Available options:
enqueued,
duplicate