This page documents the canonical HTTP contract for this endpoint.
Preflight is read-only: it does not create columns, mutate rows, spend credits, or admit an operation. Inspect readiness.ready, blockers, warnings, normalized mappings, and estimates before execution. A 200 response may still have ready: false.
Automatic mappings use Jev's current classified schema when available, otherwise the backend field-mapping resolver. Explicit mappings override those suggestions. The mapping target allowlist is the set documented here; unmapped/unknown target keys are not part of the normalized plan. A row source may use a nested path. Do not invent table, row, or column IDs. With availableDataOnly, the service maps company facts (and optional company_provider_evidence) for stored-data setup; it does not perform external identity search or provider enrichment. For event tables, preflight reports preservesEventRows: true; repeated company/person events remain separate rows.
For scope.mode=all, preflight estimates current rows while execute freezes the exact set at admission. For selected, selected IDs are validated as rows in this table and reused at execute. Developer-key scope: tables:read; the authenticated user must also access the table.
Path parameters
table_idrequiredstring
Target Research Table ID.
| Name | Type | Description |
|---|---|---|
| table_idrequired | string | Target Research Table ID. |
Body parameters
targetModerequiredaccounts, people, or accounts_people.
scope· optionalScope to review. Defaults to all; selected requires 1-10,000 unique rowIds from this table.
mappings· optionalOptional explicit mappings keyed by canonical target. The server suggests mappings from current classified/schema fields or column meaning when omitted; supplied mappings override suggestions. Review normalized mappings in the response.
options· optionalScoring, available-data, output, and threshold settings. Fields use the defaults shown below.
fitColumnId· optionalstring | null
Optional Fit column ID field. With includeScoring=true, selecting an existing Fit column is reported as a readiness blocker; turnkey execution does not edit an existing Fit column.
| Name | Type | Description |
|---|---|---|
| targetModerequired | TargetMode | accounts, people, or accounts_people. |
| scope | EnrichScoreScope | Scope to review. Defaults to all; selected requires 1-10,000 unique rowIds from this table. |
| mappings | FieldMappings | Optional explicit mappings keyed by canonical target. The server suggests mappings from current classified/schema fields or column meaning when omitted; supplied mappings override suggestions. Review normalized mappings in the response. |
| options | EnrichScoreOptions | Scoring, available-data, output, and threshold settings. Fields use the defaults shown below. |
| fitColumnId | string | null | Optional Fit column ID field. With includeScoring=true, selecting an existing Fit column is reported as a readiness blocker; turnkey execution does not edit an existing Fit column. |
Definitions
TargetMode
Select which records the table should resolve and score.
Fields
accounts· optionalstring
Resolve companies and score company fit.
people· optionalstring
Resolve people and score lead fit.
accounts_people· optionalstring
Resolve companies and people, then score both when enabled.
| Name | Type | Description |
|---|---|---|
| accounts | string | Resolve companies and score company fit. |
| people | string | Resolve people and score lead fit. |
| accounts_people | string | Resolve companies and people, then score both when enabled. |
"accounts_people"EnrichScoreScope
At most 10,000 rows per operation. Selected rows must be unique valid ObjectIds belonging to this table. Preflight reports the selected count; all-scope membership is frozen at execute admission, so rows arriving after preflight may be included.
Fields
mode· optionalstring: all | selected
Default all.
rowIds· optionalarray<string> (max 10,000)
Unique valid 24-character Mongo ObjectIds belonging to the target table; required for selected and forbidden for all.
| Name | Type | Description |
|---|---|---|
| mode | string: all | selected | Default all. |
| rowIds | array<string> (max 10,000) | Unique valid 24-character Mongo ObjectIds belonging to the target table; required for selected and forbidden for all. |
{"mode":"selected","rowIds":["000000000000000000000001","000000000000000000000002"]}FieldMappings
Map supported canonical targets to existing table columns. Each value is a column-key string or an object containing column and/or columnId and optional path. If both identifiers are supplied, they must resolve to the same column. Extra keys in the reference object are rejected.
Fields
company_id, company_domain, company_linkedin_url, linkedin_company_id, company_name, company_description, company_industry, company_employee_count, company_size, company_country, company_state, company_city· optionalstring | ColumnReference
Company lookup and Fit inputs.
person_name, person_first_name, person_last_name, person_email, person_linkedin_url, person_title, person_headline· optionalstring | ColumnReference
Person lookup and Fit inputs.
company_provider_evidence· optionalstring | ColumnReference
Optional existing company evidence source, used by available-data-only company setup when mapped.
| Name | Type | Description |
|---|---|---|
| company_id, company_domain, company_linkedin_url, linkedin_company_id, company_name, company_description, company_industry, company_employee_count, company_size, company_country, company_state, company_city | string | ColumnReference | Company lookup and Fit inputs. |
| person_name, person_first_name, person_last_name, person_email, person_linkedin_url, person_title, person_headline | string | ColumnReference | Person lookup and Fit inputs. |
| company_provider_evidence | string | ColumnReference | Optional existing company evidence source, used by available-data-only company setup when mapped. |
{
"company_domain": { "column": "website", "columnId": "000000000000000000000010" },
"person_title": { "column": "job_title", "columnId": "000000000000000000000011", "path": "primary_role.title" }
}ColumnReference
A source column reference; at least column or columnId must identify an existing column. If both are supplied, they must identify the same column.
Fields
column· optionalstring
Existing column key.
columnId· optionalstring
Existing column ID.
path· optionalstring
Nested property path within the source cell value.
| Name | Type | Description |
|---|---|---|
| column | string | Existing column key. |
| columnId | string | Existing column ID. |
| path | string | Nested property path within the source cell value. |
{"column":"job_title","columnId":"000000000000000000000011","path":"primary_role.title"}EnrichScoreOptions
All options are optional. The defaults below are applied when omitted.
Fields
includeScoring· optionalboolean
Default true. Also calculate Fit scores.
availableDataOnly· optionalboolean
Default false. Uses mapped row facts and available stored company/person data without external identity search or provider enrichment. An existing enrichment-enabled Company root blocks this mode; preflight reports the blocker rather than changing that root.
showComponentScores· optionalboolean
Default false. For combined Fit, expose native Company Fit and Person Fit projections beside Lead Fit.
addQualifiedCompanies· optionalboolean
Default false. Configure a Company workspace action for qualifying results; the write runs as a separate auditable operation.
addQualifiedLeads· optionalboolean
Default false. Configure a Lead workspace action for qualifying results; the write runs as a separate auditable operation.
companyFitThreshold· optionalinteger (0-100)
Default 65.
leadFitThreshold· optionalinteger (0-100)
Default 70.
| Name | Type | Description |
|---|---|---|
| includeScoring | boolean | Default true. Also calculate Fit scores. |
| availableDataOnly | boolean | Default false. Uses mapped row facts and available stored company/person data without external identity search or provider enrichment. An existing enrichment-enabled Company root blocks this mode; preflight reports the blocker rather than changing that root. |
| showComponentScores | boolean | Default false. For combined Fit, expose native Company Fit and Person Fit projections beside Lead Fit. |
| addQualifiedCompanies | boolean | Default false. Configure a Company workspace action for qualifying results; the write runs as a separate auditable operation. |
| addQualifiedLeads | boolean | Default false. Configure a Lead workspace action for qualifying results; the write runs as a separate auditable operation. |
| companyFitThreshold | integer (0-100) | Default 65. |
| leadFitThreshold | integer (0-100) | Default 70. |
{"includeScoring":true,"availableDataOnly":false,"showComponentScores":false,"addQualifiedCompanies":false,"addQualifiedLeads":false,"companyFitThreshold":65,"leadFitThreshold":70}PreflightResponse
Read-only result. The server supplies suggested/normalized mappings, estimates, table contract, readiness blockers/warnings, and a deterministic planId. This response is a review only; it does not reserve all-scope row membership.
Fields
planIdrequiredstring
Server-generated reviewed-plan identity; pass it to execute.
planVersionrequiredstring
Currently research_table.enrich_score_plan.v2.
tableIdrequiredstring
Reviewed table.
targetModerequiredReviewed target mode.
includeScoringrequiredboolean
Effective scoring setting.
scoperequiredobject
Contains mode, rowCount, and preservesEventRows.
readinessrequiredobject
Contains ready, blockers, and warnings.
estimates, mappings, tableContractrequiredobject
Server-calculated estimate, normalized mappings, and table contract.
companyRoot, rubricVersion· optionalobject | string | null
Present when applicable to the reviewed table and rubric.
| Name | Type | Description |
|---|---|---|
| planIdrequired | string | Server-generated reviewed-plan identity; pass it to execute. |
| planVersionrequired | string | Currently research_table.enrich_score_plan.v2. |
| tableIdrequired | string | Reviewed table. |
| targetModerequired | TargetMode | Reviewed target mode. |
| includeScoringrequired | boolean | Effective scoring setting. |
| scoperequired | object | Contains mode, rowCount, and preservesEventRows. |
| readinessrequired | object | Contains ready, blockers, and warnings. |
| estimates, mappings, tableContractrequired | object | Server-calculated estimate, normalized mappings, and table contract. |
| companyRoot, rubricVersion | object | string | null | Present when applicable to the reviewed table and rubric. |
{
"planId": "esp_example_plan_from_preflight",
"planVersion": "research_table.enrich_score_plan.v2",
"tableId": "000000000000000000000020",
"targetMode": "accounts_people",
"includeScoring": true,
"scope": { "mode": "selected", "rowCount": 2, "preservesEventRows": false },
"readiness": { "ready": true, "blockers": [], "warnings": [] },
"estimates": {},
"mappings": {},
"companyRoot": null,
"tableContract": {},
"rubricVersion": null
}Errors
| Status | Meaning |
|---|---|
| 400 | Invalid mappings or request values. |
| 401 | Authentication required. |
| 403 | Table access denied or the key is missing tables:read. |
| 404 | Table not found. |
| 422 | Request does not match the typed preflight schema. |
