Assembly Configs
Configure how a Spec composes grouped documents into one record with an anchor plus amendments. List, create, update, and delete assembly profiles via the API.
An assembly config tells a Spec how to compose several documents that belong together into a single composed record. Documents are grouped by grouping_field. Within a group, the anchor_field (matched against anchor_values) identifies the base document, and amendment documents may override only the fields listed in amendable_fields. Conflicts are resolved by override_rule_id, which defaults to newer-signed-overrides.
This is the configuration behind the Assembly stage of the Spec rail. A common shape is a base contract plus signed amendments: the base is the anchor, later signed amendments override the negotiated terms, and signed_field plus date_field drive the conflict ordering. Each Spec holds one row per assembly profile, and the list endpoint returns them ordered by creation time.
Every body field is optional at the schema level, but a profile only composes usefully once grouping_field and anchor_field are set — an assembly stage referencing a config with neither has nothing to group or anchor on. Field names refer to the Spec's own extracted fields (the field_name values on the schema), not display labels, so keep them in sync when you rename fields.
Note that PATCH replaces the whole profile rather than merging: every column is rewritten from the request body, so a field you omit resets to null (or, for override_rule_id, back to newer-signed-overrides). Read the config first, modify the fields you want, and send the complete object back — the same read-modify-write pattern the [delivery config](spec-delivery) uses.
/v1/schemas/{id}/assembly-configs/v1/schemas/{id}/assembly-configsBody parameters
newer-signed-overridesCreate an assembly profile
curl -X POST https://api.talonic.com/v1/schemas/a1b2c3d4-e5f6-7890-abcd-ef1234567890/assembly-configs \
-H "Authorization: Bearer tlnc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Contract + amendments",
"grouping_field": "contract_number",
"anchor_field": "document_kind",
"anchor_values": ["base_contract"],
"signed_field": "is_signed",
"date_field": "effective_date",
"amendable_fields": ["price", "term_months", "renewal_terms"]
}'/v1/schemas/{id}/assembly-configs/{configId}/v1/schemas/{id}/assembly-configs/{configId}Response
Assembly config fields
Response (POST create)
{
"id": "ab12cd34-ef56-7890-abcd-ef1234567890",
"schema_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Contract + amendments",
"grouping_field": "contract_number",
"anchor_field": "document_kind",
"anchor_values": ["base_contract"],
"signed_field": "is_signed",
"date_field": "effective_date",
"amendable_fields": ["price", "term_months", "renewal_terms"],
"override_rule_id": "newer-signed-overrides",
"created_at": "2024-09-14T10:32:00.000Z",
"updated_at": "2024-09-14T10:32:00.000Z"
}PATCH and DELETE return { "ok": true }.
Errors
Error responses