Contributions

Contributions are the immutable evidence records that feed into a record's materialised view. Each contribution represents a single data ingestion event — a document extraction, an integration response, a manual entry, or an API write. They are a first-class resource used for provenance, compliance, and audit.

Read endpoints

Method
Path
Description

GET

/contributions

List contributions

GET

/contributions/{contributionId}

Get a contribution

GET

/records/{recordId}/contributions

List contributions bound to a record

GET

/contexts/{contextId}/contributions

List contributions within a context

Write endpoints

Method
Path
Description

POST

/contributions

Ingest a contribution

POST

/contributions/bulk

Batch ingest contributions

Ingest a contribution

POST /contributions

Request

{
  "contextId": "01957c3a-5678-7000-8000-000000000001",
  "modelId": "01957c3a-1234-7000-8000-000000000001",
  "sourceId": "revenue-integration-2026-01",
  "sourceType": "integration",
  "data": {
    "annualIncome": 54800
  },
  "fieldConfidences": {
    "annualIncome": 0.99
  }
}
Field
Required
Description

contextId

Yes

The decisioning context this evidence belongs to

modelId

Yes

The model this evidence is for

sourceId

Yes

Identifier for the data source (e.g., a document ID, integration name)

sourceType

Yes

Category of the source: document_extraction, integration, manual_entry, api

data

Yes

The evidence payload — field names and values

fieldConfidences

No

Per-field confidence scores (0.0 to 1.0). Omitted fields default to 1.0.

supersedes

No

ID of a previous contribution to supersede

Response 201 Created

The contribution is persisted and the containing context is marked stale for reprocessing. The platform's resolution pipeline will bind this contribution to a record and materialise the result.

Superseding contributions

If a source sends corrected data, create a new contribution that supersedes the previous one:

The platform validates that both contributions share the same sourceId, marks the old contribution as superseded (excluded from resolution but retained for audit), and processes the new one as active.

circle-info

The original contribution is never modified. Superseding creates a new contribution and changes how the platform interprets the existing evidence.

Get a contribution

Response 200 OK

When the contribution has been bound to a record by the resolution pipeline, targetRecordId and fieldMappings are populated.

List contributions

All list endpoints support standard filtering:

Bulk ingest

Accepts an array of up to 100 contributions. See Bulk Operations for the response format and partial success semantics.

Binding

Contributions are not bound to records at ingestion time. Binding — associating a contribution with a target record and field mappings — is handled by the platform's resolution pipeline. This ensures bindings are created as part of an atomic resolution transaction.

You can observe binding status by reading a contribution after resolution completes: the targetRecordId and fieldMappings fields will be populated.

Last updated