Onboarding API
Onboarding endpoints exposed by the Devotel CPaaS API Base path:/api/v1/onboarding
Endpoint count: 6
Get workspace provisioning progress
GET /api/v1/onboarding/provisioning-statusreadyCount and allReady are computed from the three blocking signals (email, schema, API key). Poll at ~2s intervals during signup; responses are cached 5s so the panel advances rows with sub-second lag.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get the SMS getting-started checklist
GET /api/v1/onboarding/sms-checklistcompletedCount of 5) without hitting six endpoints.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get the getting-started checklist
GET /api/v1/onboarding/statuscompleted, completedAt, and whether completion came from the platform’s own probes (system) or a manual override (user), plus the next incomplete step for the resume banner. Poll this to render or hide the dashboard checklist — responses are cached 60s per (org, user) and degrade to an all-incomplete 200 when the backend is briefly unavailable, so the UI never throws on a transient miss.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Get the compliance status timeline
GET /api/v1/onboarding/status-timelinepending / in_review / approved / rejected / not_applicable), submitted and updated timestamps, a documented SLA + computed ETA when the underlying service defines one (KYC only: 24h), the current blocker line, and a deep-link resolveUrl to fix it. Use it to power one where-verification-is-stuck view instead of polling five services; cached 60s per org.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.Mark an onboarding step complete
POST /api/v1/onboarding/complete-stepstring
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the
Idempotency-Replay: true response header.string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.string (enum: email_verified|org_created|org_named|payment_method_added|trial_credit_granted|first_number_purchased|…)
required
One of the nine canonical onboarding step ids (e.g.
first_number_purchased).Skip an onboarding step
POST /api/v1/onboarding/skip-steppayment_method_added on a sandbox-only workspace). Behaves exactly like completing the step — the override row is marked skipped, the step surfaces as completed with completedBy: 'user' in the status response, and the distinction is retained for product analytics. Admin-or-higher only; the change is audit-logged.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the
Idempotency-Replay: true response header.string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.string (enum: email_verified|org_created|org_named|payment_method_added|trial_credit_granted|first_number_purchased|…)
required
One of the nine canonical onboarding step ids (e.g.
first_number_purchased).