On this page

An entity connects a table with optional search, duplicate-resolution, resource, and scheduling configuration.

Entity types

TypeCapability
NONEManaged records without search or duplicate resolution
SEARCHManaged records and record search
DUPLICATESSearch and duplicate candidates for stewardship
AUTO_DUPLICATESDuplicate resolution with configured automatic stewardship

Entity states

StateMeaningResponse
EMPTYNo completed data-processing cycleRun a controlled synchronization when configuration is ready
WORKINGEntity work is activeFollow its task
READYAvailable for configured operationsVerify the intended search or review result
INCONSISTENTConfiguration and processed state need reconciliationValidate dependencies and synchronize with the appropriate masks
ERRORValidation or processing failedInspect the related task and correct the cause

Configuration and control fields

Entity responses include identifiers for the table, dataset, and applicable pipeline, indexer, classifier, merger, steward, source, and sink resources. They also expose:

FieldPurpose
enabledWhether the entity can serve configured operations
lockedWhether entity-changing work is blocked
automaticWhether configured automatic synchronization is active
statusCurrent lifecycle state
searches, duplicates, stewardingCapabilities derived from entity type
stewardCronType, stewardCronAutomatic-steward scheduling settings when configured
viewThe data view a record of this entity is presented with
validationValidation findings and their count, or nulls when the entity is valid
dependencyWhat the entity uses and what uses it, with counts

Use the explicit state endpoints to change enabled, locked, or automatic flags; see Golden API endpoints.

Reported figures

An entity response carries its own current counts. They are read-only.

FieldMeaning
recordCountRecords in the entity’s table
bucketCountBuckets the indexer produced, duplicated or not
duplicateBucketCountBuckets holding a possible duplicate
indexDuplicateCountsDuplicate groups per indexer mapping
indexLabelsEach mapping’s description, for display

bucketCount and duplicateBucketCount answer different questions. In the Aurelia Utilities sample they are 1,129 and 245: most buckets hold a single record and are not a duplicate signal at all.

indexDuplicateCounts reports 84 tax-identifier groups, 76 email groups, 85 name-and-postcode groups, and 0 exact-phone groups in the initial sample.

Data-scope fields

FieldMeaning
scopeColumnThe column that partitions this entity for row-level access, or null
scopeIndexStateNONE, BUILDING, VALID, or FAILED
aggregateScopeThe scope the entity’s aggregates are computed over

See Restrict access with data scopes.

Sources and destinations

Each source entry reports:

FieldPurpose
resourceSource resource identifier
transformationOptional transformation applied to its records
cronType, cronSource-specific schedule preset and expression
incrementalWhether the source uses incremental loading
lastExecutionLast reported execution time for that source

Each destination entry reports its resource and optional transformation. Use source-level scheduling fields to answer when an entity reads that source; task scheduling is a separate product surface.

Read these statistics from GET /api/entities/{entity}. Counts describe volume; they do not establish that a classification or decision is correct.

Synchronization

PUT /api/entities/synchronize accepts:

FieldPurpose
idEntity identifier
loadMaskSelect source-load work
loadFrom, loadToOptional ISO 8601 load-time bounds
indexClassificationMaskSelect indexing and classification work
sinkMaskSelect destination work

Choose values per phase; a shared schema enum does not make each value valid in every field:

FieldAccepted values and behavior
loadMaskFULL: read the full source; INCREMENTAL: use the incremental loading window; CUSTOM: use supplied time bounds; NONE: skip loading
indexClassificationMaskFULL: rebuild indexing and classification for a duplicate-capable entity; CHANGES: reconcile changed configuration; DIRTY: classify pending groups without reindexing; NONE: skip this phase
sinkMaskFULL: deliver the current full set; NONE: skip delivery

CUSTOM loading requires at least loadFrom or loadTo. CHANGES can be a no-op when the configuration is already applied; DIRTY specifically requests pending classification. For a SEARCH entity, use CHANGES to build or update search without duplicate classification.

loadOperation is UPSERT by default. DELETE removes the records identified by the source documents; it is ignored when loading is NONE. A full load is not an instruction to delete every target record absent from the source.

All three masks and id are required. Synchronization requires ADMIN. The response contains run when work was queued; an already up-to-date entity may return no run. Follow run.id to a terminal state and then verify the entity and records. See the complete search tutorial.

Exchange entity definitions

Administrators can export selected entities with POST /api/entities/export, export all with GET /api/entities/export/all, and import a previously returned exchange with POST /api/entities/import. Promote dependencies before the entity and validate environment-specific resources before enabling work. See Manage resources.

Golden 3.0.0 · Published 2026-10-04