Skip to main content
The adoption API exposes a tenant’s progress through the LinkXG network as structured, machine-readable state. It is the contract behind the in-product guidance experience — the maturity ladder, the “do this next” prompt, the coverage cells, the drift-watch feed, and the renewable success plan. Every endpoint is tenant-scoped: the data returned always belongs to the authenticated user’s company. These reads are designed for first-party surfaces (the application Home and the Manual), but they are part of the documented API and behave like any other authenticated endpoint.

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.
Response:

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”.
Response (abridged):

Complete a milestone

A small number of milestones have no automatic event trigger and are completed manually. Pass the milestone key in the path. The body is optional: evidenceRef links the producing record, and expectedVersion enables optimistic-concurrency control (a stale version returns 409).
The response is the recomputed adoption state, identical in shape to 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 is capable of the activity (entitlement), whether it has achieved it, a count, and a viewedCount.
Response:

Get risk signals

Returns the active drift-watch signals for the tenant, most recent first. Use the optional limit query parameter to cap the result count.
Response:
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 one ACTIVE success plan. Read it, create it, or renew it.

Read

Returns the active plan, or data: null when none exists:

Create

Requires the OWNER or ADMIN role. Returns 409 if an active plan already exists.

Renew

Renewing marks the predecessor RENEWED 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