Rust
Contract Validation
Backend-driven validation status for Rust SDK route/method parity.
This page tracks Rust SDK parity against backend routers, using backend handlers as source of truth.
Rust backend API docs now live under /docs/sdks/rust/backend/* as Rust-native pages.
Scope
deployment_routes.rsapi_auth_routes.rsai_routes.rsserver_routes.rs(backend-specific routes only)
Completed in this pass
- Organization/workspace role listing aligned to scoped contracts only:
GET /organizations/{organization_id}/rolesGET /workspaces/{workspace_id}/roles
- Removed stale Rust-only workspace creation method that had no backend route:
- removed SDK
POST /workspacessurface - workspace creation remains organization-scoped:
POST /organizations/{organization_id}/workspaces
- removed SDK
analyticsaligned toGET /analyticswithfromandtoquery window.- API auth key revoke/rotate aligned to app-scoped routes:
POST /api-auth/apps/{app_slug}/keys/{key_id}/revokePOST /api-auth/apps/{app_slug}/keys/{key_id}/rotate
- API auth coverage expanded with rate limit scheme routes:
GET/POST /api-auth/rate-limit-schemesGET/PATCH/DELETE /api-auth/rate-limit-schemes/{slug}
- API auth coverage expanded with audit routes:
GET /api-auth/apps/{app_slug}/audit/logsGET /api-auth/apps/{app_slug}/audit/analyticsGET /api-auth/apps/{app_slug}/audit/timeseries
- OAuth routes normalized to backend paths (removed stale deployment-prefixed routes):
/oauth/apps.../oauth/apps/{oauth_app_slug}/scopes.../oauth/apps/{oauth_app_slug}/clients.../oauth/apps/{oauth_app_slug}/clients/{oauth_client_id}/grants...
- OAuth app creation now uses multipart payload to match backend handler expectations.
Known remaining gaps
No unresolved gaps from the previously tracked list in this doc.
Previously listed webhook coverage gaps are now implemented in wacht-rs, including:
- Event catalog lifecycle routes:
GET/POST /webhooks/event-catalogsGET/PUT /webhooks/event-catalogs/{slug}POST /webhooks/event-catalogs/{slug}/append-eventsPOST /webhooks/event-catalogs/{slug}/archive-event
- App catalog route:
GET /webhooks/apps/{app_slug}/catalog
- Replay task lifecycle routes:
GET /webhooks/apps/{app_slug}/deliveries/replay/{task_id}POST /webhooks/apps/{app_slug}/deliveries/replay/{task_id}/cancel
Validation command
cd wacht-rs
cargo check -qStatus: passing after the contract fixes listed above.
Additional verification run for scoped-role change:
cd /Users/snipextt/code/wacht/platform-api
cargo check -q -p platform
cd /Users/snipextt/code/wacht/wacht-rs
cargo check -q
cd /Users/snipextt/code/wacht/console
pnpm exec tsc --noEmit
cd /Users/snipextt/code/wacht/node
pnpm exec tsc --noEmitCurrent matrix snapshot
Backend router scope validated:
deployment_routes.rsapi_auth_routes.rsai_routes.rsserver_routes.rs(backend_specific_routesonly, excluding billing and console-only routes)
Verb + path parity result after fixes:
- Backend routes in scope:
210 - Rust SDK routes:
210 - Missing:
0 - Extra:
0
Docs coverage snapshot
Current snapshot:
- Backend routes in scope:
210 - Rust docs method keys:
214 - Rust docs method pages:
214