Endpoints
All routes are under /v1. Every route except health requires a bearer token.
| Method & path | Auth | Purpose |
|---|---|---|
GET /v1/health | public | Liveness check. |
POST /v1/resolve | bearer | Native package names → canonical slugs for a release. |
POST /v1/translate | bearer | Canonicals → target packages (+ confidence, caveats, conditionals). |
POST /v1/config-paths | bearer | Canonicals → config-path relocations for a release pair. |
POST /v1/usage | bearer | Record a depersonalized VM usage event (preflight / readiness / migration). |
POST /v1/migration | bearer | Upsert a VM migration record under an engagement. |
GET /v1/account | bearer | The account's billing/usage summary. |
Metering & usage
resolve, translate, and config-paths each record a metered request against the account. POST /v1/usage records a per-VM event whose kind is one of:
preflight— a feasibility check; never billable;readiness— a fleet feasibility check; never billable;migration— a real migration; billable-eligible depending on plan and target.
Errors
Errors return a JSON {"error": "..."} with a standard status code:
| Status | Meaning |
|---|---|
400 | Malformed request (empty batch, over the 1000-item limit, bad kind/migration_type). |
401 | Missing, invalid, or disabled token. |
402 | Migration quota reached — see Accounts, quota & billing. |
404 | Unknown engagement on /v1/migration. |