Device credential — for the CLI
DEVICE_REVOKED (401).
Session cookie — for the browser
Set by
POST /api/v1/auth/signup, /auth/login, and /auth/recover; revoked server-side
by /auth/logout.
This is deliberately separate from the device credential. A browser session cannot act as a
CLI, and a device credential cannot approve its own device link — that separation is the
whole point of the approval step.
Share password — for a shared report
shares/slug/{slug}/report and shares/slug/{slug}/export/{format}. The export
route also accepts it as a password query parameter.
Attempts are throttled at 10 per 10 minutes per link. Correct attempts are not counted, so
one attacker cannot lock out the link’s legitimate readers.
Which endpoints accept what
A workspace-scoped read accepts either principal, because both the CLI and the dashboard
legitimately need it. Report writes are device-only, and report reads are
session-only — the CLI has no reason to read back a report it produced.
/api/v1/admin/* requires a browser session belonging to a platform administrator, and
/api/v1/billing/* a browser session or a verified provider signature. Both are
operator-only and not documented here.
Authorization, beyond authentication
Workspace membership is checked, never inferred
Workspace membership is checked, never inferred
Creating a project and creating a report both verify membership first. A non-member gets
the same answer as a non-existent workspace, so these routes cannot be used to discover
workspace identifiers.
Report writes require ownership
Report writes require ownership
Progress, upload-intent, finalize, and the upload endpoint all check that the report
belongs to the authenticated device’s user.
Platform admin is a role, not a superpower
Platform admin is a role, not a superpower
The administrator role is granted only to the address configured in
PLATFORM_ADMIN_EMAIL, and only when that address signs up. Nobody is promoted
implicitly, and a deployment with the variable unset has no administrator at all.The role grants aggregated operational metadata. It does not grant report content:
GET /api/v1/reports/{id} returns NOT_FOUND to an administrator who is not the owner.
Reaching a customer’s report body requires a separate, unexpired
support grant with a written reason, a bounded
expiry, and a password re-entry — and every use is counted and audited.Analytics attribution is verified
Analytics attribution is verified
Server-side identity overrides whatever the client claims, and a
workspaceId,
projectId, or reportId the principal does not hold is refused with FORBIDDEN
rather than silently dropped — dropping it would leave the caller believing it was
recorded.Full linking sequence
myrqen link does all four steps for you.