Skip to content

Not signed in (401) ​

https://rowstile.dev/problems/not-signed-in is the type of the problem body (RFC 9457) the SDKs answer with when the database says the request needs someone signed in: a visitor who hasn't signed in asks for access or makes an API key, or a login with an API key or a token is refused. Signing in is the user's to do, not the server's failure.

json
{
  "type": "https://rowstile.dev/problems/not-signed-in",
  "title": "Unauthorized",
  "status": 401,
  "detail": "sign in first",
  "code": "AZ714"
}
  • detail: the database's words: "sign in first", "invalid API key", "token expired or not yet valid".
  • code: AZ714, a call that needs someone signed in, or AZ703, a login refused.

The app sends no WWW-Authenticate header with it: how people sign in is the app's. A query in a transaction that never signed in at all is the app's bug (AZ701), not this: it stays an error, a 500.

Where it comes from: rowstile.fastapi (FastAPI), route() and action() in @rowstile/next (Next.js) and problemOf(e) for any other framework (Node). The routes authzRoutes() makes for @rowstile/react answer with it too: POST request from someone not signed in. useAccessRequest then fails with the database's words.