# kcode-k1-http-persons
Authenticated Axum routes for access-controlled K1 Persons. The adapter is intended to be nested below `K1Http`'s `/api` router and requires its `kcode_k1_http::Principal` extension on every request.
## Public API
```rust
pub fn authenticated_routes(
persons: Arc<K1AccessPersons>,
access: Arc<K1Access>,
model: ModelId,
) -> Result<axum::Router<()>, String>;
```
The configured model is server configuration, never request input. Routes create saved-profile Persons, read universally viewable Persons, update only currently manageable canonical Persons, and list only directly discovered manageable `k1-person` targets for the authenticated user.
All facade calls run in `tokio::task::spawn_blocking`. JSON success and adapter error responses carry `Cache-Control: no-store`. Error JSON is `{ "error", "message" }`; messages are fixed, safe, and never expose dependency details.