Phase 1b: REST API. Axum router with shared state (Arc<Database>). Endpoints: GET /api/inbox?did=&limit=&cursor= (grants by recipient), GET /api/keyrings?did=&limit=&cursor= (keyrings by member). Bearer token auth middleware. Composite cursor (indexed_at::uri) for deterministic pagination. Response types with Serialize. main.rs loads config, inits DB, starts Axum server.
Phase 1b: REST API. Axum router with shared state (Arc<Database>). Endpoints: GET /api/inbox?did=&limit=&cursor= (grants by recipient), GET /api/keyrings?did=&limit=&cursor= (keyrings by member). Bearer token auth middleware. Composite cursor (indexed_at::uri) for deterministic pagination. Response types with Serialize. main.rs loads config, inits DB, starts Axum server.