API reference
11 operations in entity-dedupe. Raw spec: openapi.json.
GET
/api/v1/clients/org-mapGET /api/clients/org-map — the durable operator mapping (settings view).
Responses
| Status | Description |
|---|---|
200 |
Security: bearer
POST
/api/v1/clients/org-reconcilePOST /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
| Status | Description |
|---|---|
200 | |
409 | idempotency key reused |
Security: bearer
POST
/api/v1/contacts/feed-upsertPOST /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
| Status | Description |
|---|---|
200 | |
409 | idempotency key reused |
Security: bearer
GET
/api/v1/entity-dedupe/candidatesGET /api/entity-dedupe/candidates — the client/contact review queue.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
kind | query | — | No | contact | client |
status | query | — | No | pending | auto_merged | accepted | rejected | deferred |
Responses
| Status | Description |
|---|---|
200 |
Security: bearer
POST
/api/v1/entity-dedupe/candidates/batchPOST /api/entity-dedupe/candidates/batch — accept/reject/defer N.
Request body
EntityBatchRequest
Responses
| Status | Description |
|---|---|
200 | |
422 | unknown batch action / empty id list |
Security: bearer
POST
/api/v1/entity-dedupe/candidates/{id}/acceptPOST /api/entity-dedupe/candidates/{id}/accept — contact: audited + undoable merge; client: writes the durable operator map.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | candidate not visible in scope |
409 | candidate already decided |
Security: bearer
POST
/api/v1/entity-dedupe/candidates/{id}/deferPOST /api/entity-dedupe/candidates/{id}/defer — park without deciding.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | candidate not visible in scope |
409 | candidate already decided |
Security: bearer
POST
/api/v1/entity-dedupe/candidates/{id}/rejectPOST /api/entity-dedupe/candidates/{id}/reject — keep both rows (or keep the vendor org unmapped).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | candidate not visible in scope |
409 | candidate already decided |
Security: bearer
POST
/api/v1/entity-dedupe/candidates/{id}/restorePOST /api/entity-dedupe/candidates/{id}/restore — un-defer.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | candidate not visible in scope |
409 | candidate is not deferred |
Security: bearer
GET
/api/v1/entity-dedupe/candidates/{id}/workbenchGET /api/entity-dedupe/candidates/{id}/workbench — the client/contact side of the guided merge workbench.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | candidate not visible in scope |
Security: bearer
POST
/api/v1/entity-dedupe/merges/{id}/splitPOST /api/entity-dedupe/merges/{id}/split — undo a contact merge (IF7).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Responses
| Status | Description |
|---|---|
200 | |
404 | merge not visible in scope |
409 | merge already undone |
Security: bearer