Compare Configuration
Compares an FMV1 configuration supplied as a structured JSON body against the current database state and returns a diff summary. The body is the structured FMV1 configuration shape (the same one export returns). Each configuration category (field definitions, option sets, custom objects, etc.) includes counts of additions, updates, deletes, and unchanged items.
Use it to preview what an import would change before applying it. It is read-only — it computes a diff and writes nothing.
Required permission: company.configuration:export
This endpoint requires an API key created with the FMV1_CONFIGURATION_MANAGER role. See Authentication for how to create API keys with specific roles.
Authorizations
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
Company identifier
Body
A COMPLETE configuration body (the same one export returns). A
delta/patch body is rejected with a 400 — typed changes go to the
patch endpoint (POST .../configuration/patch).
Field definitions, keyed by entity + reference id.
Page definitions.
Card definitions.
Placements of cards onto pages.
Option-set type declarations.
Custom-object type declarations.
Option sets and their options.
Custom-object sub-field definitions, joined to object types.
Object-primitive sub-field definitions (Address / Date / Currency).
Field placements (the layout) onto cards.
Rating workflow definitions.
Per-entity invariant conditions enforced on every write.
Forms-logic rules (quote-flow auto-add rules). Optional — existing payloads predate the "Forms" tab; absent ⇒ no rules.
Smart tags — the named values resolved into generated documents. Optional: existing payloads predate the slice, and absent ⇒ no smart tags, which is also how a company that has not yet moved to this format is recognised.
Omitted from an export when the company has none, rather than emitted as an empty array.
Declared export columns — the tenant-facing column set of each export surface (the seven entity exports plus the bordereau). Optional: existing payloads predate the slice, and absent ⇒ no declared columns, which is also how a surface that still offers every configured field is recognised.
Activation is per surface: a surface with at least one row here resolves its whole tenant column set through those rows, in the order they appear; a surface with none behaves exactly as it did before this section existed.
Omitted from an export when the company has declared none, rather than emitted as an empty array.
Response
Comparison completed
Diff between the supplied configuration and the current database configuration
Change counts for a single configuration category
Change counts for a single configuration category
Change counts for a single configuration category
Change counts for a single configuration category
Change counts for a single configuration category
Change counts for a single configuration category
