Consumers
Your end users on the ForestVPN platform — consumer accounts, device authentication, sessions, and strict per-project isolation.
Consumers are your product's end users. They are a deliberately separate
identity system from your project's staff: a consumer is a consumer
account that exists only inside your project, talks only to the
/consumer/v1 plane, and can never hold project-management credentials. The
separation is structural — the two planes have different auth, different
tokens, and different data scopes.
The consumer plane
Everything an end user does goes through /consumer/v1/*:
| Area | Endpoints |
|---|---|
| Identity | GET /consumer/v1/me, linked sign-in identities under /consumer/v1/me/identities |
| Account | GET /consumer/v1/account, usage at /consumer/v1/account/usage, export and deletion flows |
| Device auth | the /consumer/v1/auth/device/* family — challenge/verify, pairing tokens, registration, session refresh and revocation |
| Devices | the /consumer/v1/devices family |
| Networks | private mesh networks (vspaces) under /consumer/v1/vspaces |
| Billing | the consumer's own plan, subscription, and invoices under /consumer/v1/billing/* |
| Audit | GET /consumer/v1/audit-log — the consumer's own trail |
How a device gets signed in
The device-auth family implements a challenge-based flow:
- the device asks for a challenge (
POST /consumer/v1/auth/device/challenge) and proves control of its key (…/challenge/verify); - a signed-in surface can hand a device a one-time pair token
(
POST /consumer/v1/auth/device/pair-token) to adopt it onto an account; - the device registers (
POST /consumer/v1/auth/device/register) and holds a session it can refresh (…/sessions/refresh) — and the account can revoke any or all sessions.
After that, GET /consumer/v1/bootstrap hands the device its configuration
profile — the same document the Apple quickstart
feeds into the SDK.
Isolation guarantees
- A consumer account is scoped to one project; there is no cross-project consumer identity.
- Suspending a consumer account cuts off the whole account — every device session it holds stops authenticating.
- Consumer data (accounts, devices, usage) is queryable only through your project's own credentials.
Reference
Every operation above is documented in the generated API reference under the consumer plane.