Concepts
A tenant’s adoption is modelled as one state aggregate with four relations.
Milestones gated behind a paid capability carry
paidTeaser: true, a requiredCapability, and an upgradeContext describing the recommended upgrade — see Upgrade context.
Get the adoption state
Returns the full state: maturity rung, health band and score, network density, path profile, and the complete ordered list of milestones with their status and lock reasons.Get the next best action
Returns the single most valuable unblocked milestone (nextBestAction), plus the full available and locked lists and an optional nextUpgradePrompt. Each milestone carries unlocks (how many downstream steps it frees) and a plain-language becauseOf reason. This is what the application renders as “do this next”.
Complete a milestone
A small number of milestones have no automatic event trigger and are completed manually. Pass the milestonekey in the path. The body is optional: evidenceRef links the producing record, and expectedVersion enables optimistic-concurrency control (a stale version returns 409).
GET /tenant/adoption/state. Completing a milestone whose dependencies are unmet returns 403; an unknown key returns 404.
Get coverage cells
Returns the macro coverage cells shown on the application Home — products on the network, partners connected, data flowing, and so on. Each cell reports whether the tenant iscapable of the activity (entitlement), whether it has achieved it, a count, and a viewedCount.
Get risk signals
Returns the active drift-watch signals for the tenant, most recent first. Use the optionallimit query parameter to cap the result count.
kind is one of INVITATION_UNACCEPTED, POLICY_UNVIEWED, INTEGRATION_FAILING, DATA_STALE, CASCADE_STALLED, REQUEST_UNANSWERED. resolution walks the ladder OPEN → AUTO_NUDGED → REO_PROMPTED → ESCALATED → RESOLVED.
The success plan
A tenant has at most oneACTIVE success plan. Read it, create it, or renew it.
Read
data: null when none exists:
Create
Requires theOWNER or ADMIN role. Returns 409 if an active plan already exists.
Renew
Renewing marks the predecessorRENEWED and creates a new ACTIVE plan that carries the prior objectives forward. Pass the predecessor’s id as fromPlanId. The response is the recomputed adoption state.
Next steps
Upgrade context
Resolve the upgrade card behind a gated milestone
API Reference
Browse the complete API documentation

