Documentation menu

API reference

11 operations in entity-dedupe. Raw spec: openapi.json.

GET/api/v1/clients/org-map

GET /api/clients/org-map — the durable operator mapping (settings view).

Responses

StatusDescription
200

Security: bearer

POST/api/v1/clients/org-reconcile

POST /api/clients/org-reconcile — the connectors' org_map seam (public API): report an unmapped vendor org; the durable map resolves it instantly, otherwise deterministic label proposals queue reviewable candidates. Never a guess, never a silent auto-map.

Request body

OrgReconcileRequest

Responses

StatusDescription
200
409idempotency key reused

Security: bearer

POST/api/v1/contacts/feed-upsert

POST /api/contacts/feed-upsert — the contact ingest seam (the CI2 pattern generalized): never blind-inserts; email/phone identity keys resolve the deterministic case; ambiguity queues reviewable candidates; the same org auto-merge threshold applies.

Request body

ContactFeedUpsertRequest

Responses

StatusDescription
200
409idempotency key reused

Security: bearer

GET/api/v1/entity-dedupe/candidates

GET /api/entity-dedupe/candidates — the client/contact review queue.

Parameters

NameInTypeRequiredDescription
kindquery—Nocontact | client
statusquery—Nopending | auto_merged | accepted | rejected | deferred

Responses

StatusDescription
200

Security: bearer

POST/api/v1/entity-dedupe/candidates/batch

POST /api/entity-dedupe/candidates/batch — accept/reject/defer N.

Request body

EntityBatchRequest

Responses

StatusDescription
200
422unknown batch action / empty id list

Security: bearer

POST/api/v1/entity-dedupe/candidates/{id}/accept

POST /api/entity-dedupe/candidates/{id}/accept — contact: audited + undoable merge; client: writes the durable operator map.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404candidate not visible in scope
409candidate already decided

Security: bearer

POST/api/v1/entity-dedupe/candidates/{id}/defer

POST /api/entity-dedupe/candidates/{id}/defer — park without deciding.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404candidate not visible in scope
409candidate already decided

Security: bearer

POST/api/v1/entity-dedupe/candidates/{id}/reject

POST /api/entity-dedupe/candidates/{id}/reject — keep both rows (or keep the vendor org unmapped).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404candidate not visible in scope
409candidate already decided

Security: bearer

POST/api/v1/entity-dedupe/candidates/{id}/restore

POST /api/entity-dedupe/candidates/{id}/restore — un-defer.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404candidate not visible in scope
409candidate is not deferred

Security: bearer

GET/api/v1/entity-dedupe/candidates/{id}/workbench

GET /api/entity-dedupe/candidates/{id}/workbench — the client/contact side of the guided merge workbench.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404candidate not visible in scope

Security: bearer

POST/api/v1/entity-dedupe/merges/{id}/split

POST /api/entity-dedupe/merges/{id}/split — undo a contact merge (IF7).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404merge not visible in scope
409merge already undone

Security: bearer