CustomerUnificationDecision
Immutable clerical decision row for a party pair (merge, reject, defer, or unmerge).
This page contains
Fields
| decisionId: ID! | Surrogate id of this decision record. |
| pairId: ID! | Pair this decision applies to. |
| advisorId: ID! | Advisor scope for the pair. |
| leftSourceSystem: String! | Left party source system at decision time. |
| leftSourceId: String! | Left party source id at decision time. |
| leftName: String | Left party display name from the review queue at decision time. |
| rightSourceSystem: String! | Right party source system at decision time. |
| rightSourceId: String! | Right party source id at decision time. |
| rightName: String | Right party display name from the review queue at decision time. |
| decision: CustomerUnificationDecisionType! PREVIEW | Outcome that was recorded. |
| reviewer: String! | Authenticated principal name stored as reviewer. |
| reviewedAt: DateTime | When the decision was recorded (RFC 3339); null when no review timestamp is available. |
| notes: String | Optional audit note. |
| fieldSelections: String | Opaque JSON of per-field merge resolutions when applicable. |
Parent objects of CustomerUnificationDecision
| CustomerUnificationCluster PREVIEW | Cluster of duplicate party records reachable from an entry-point pair. The size field is always 1 + the number of members; the primary record is the cluster anchor surfaced first. |
| CustomerUnificationDecisionConflictError PREVIEW | A merge or reject decision already exists for this pair; unmerge first to record a new decision. |
| CustomerUnificationDecisionPage PREVIEW | One page of historical decisions for audit and support. |
| CustomerUnificationReviewQueueItem PREVIEW | A pending merge cluster: transitively linked party pairs grouped into one connected component for clerical review. Listing rows use the representative pair id and primary party display fields; full members are loaded on the cluster detail query. |
Mutations for CustomerUnificationDecision
| customerUnificationMarkClusterNotDuplicate PREVIEW | Record a NOT_DUPLICATE outcome for every pair (i, j) of the supplied party identifiers, idempotently. Pairs whose latest decision is already a terminal REJECT are counted as succeeded without persisting a duplicate row. Per-pair failures (missing pair, prior MERGE conflict) are isolated; the invariant succeeded + failed = number of distinct party-id pairs holds when the request is accepted. |
| customerUnificationMergeCluster PREVIEW | Record a MERGE decision for every (primary, member) pair in an N-record cluster using a single set of field selections supplied by the caller. Per-pair failures (missing pair, prior terminal decision) are isolated and reflected in succeeded / failed counters; the invariant succeeded + failed = memberPartyIds.length holds when the request is accepted. Suggested members passed as rejectedPartyIds are recorded as REJECT in a second batch once the merge batch succeeds, reported through rejectedSucceeded / rejectedFailed. |
| customerUnificationSubmitDecisionByAdvisorId PREVIEW | Record one merge, reject, defer, or unmerge outcome for a single pair. |
Queries for CustomerUnificationDecision
| customerUnificationDecisionsByAdvisorId PREVIEW | Paged history of recorded decisions scoped to an advisor, with optional filters on reviewer, outcome, and reviewed-at range. |
| customerUnificationDecisionsByCustomerId PREVIEW | Retired Changed By audit history. Always resolves to an empty page ( |
| customerUnificationDecisionsByCustomerIdAndMarketplaceTenant PREVIEW | Retired Changed By audit history, marketplace-tenant scope. Always resolves to an empty page
( |