# Autenticación y sesiones

Convray usa access tokens administrativos de 15 minutos ligados a una sesión server-side revocable. El refresh token se transporta en una cookie HttpOnly.

## Operaciones

- `POST /api/v1/auth/sessions`: iniciar sesión.
- `POST /api/v1/auth/sessions/refresh`: rotar credenciales.
- `GET /api/v1/me`: consultar identidad y membresías.
- `PATCH /api/v1/auth/sessions/current`: cambiar membresía activa y rotar la sesión.
- `DELETE /api/v1/auth/sessions/current`: revocar la sesión.

## Seguridad

- Una sesión o membresía revocada invalida el JWT aunque aún no haya expirado.
- El cambio de workspace exige bearer y refresh vigentes.
- Volver a la landing no cierra la sesión: el cliente verifica el refresh y
  presenta el enlace al dashboard autorizado.
- Las pestañas compatibles coordinan la rotación mediante Web Locks. Un refresh
  obsoleto que recibe 401 no emite una cookie de borrado.
- Refresh conserva rate limit y responde `429` con `Retry-After` cuando se excede.
- Las credenciales anteriores dejan de funcionar después del cambio.
- Una membresía ajena se oculta como `404 resource_not_found`.
- Las mutaciones de navegador validan `Origin` y pueden responder `403 csrf_rejected`.
- Toda respuesta `/api/v1` usa `private, no-store`, `no-cache` y `nosniff`.

Guía web: https://convray.com/docs/api/authentication
