# AuthApi document shapes

This service expects JSON request bodies for its auth endpoints and stores user
documents in MongoDB.

Inbound JSON documents
- RegisterRequest (`POST /api/auth/register`)
  ```json
  {
    "username": "string",
    "password": "string",
    "email": "string (optional)"
  }
  ```
- LoginRequest (`POST /api/auth/login`)
  ```json
  {
    "username": "string",
    "password": "string"
  }
  ```
- RefreshRequest (`POST /api/auth/refresh`)
  ```json
  {
    "username": "string",
    "refreshToken": "string"
  }
  ```
- ChangeRoleRequest (`POST /api/auth/role`)
  ```json
  {
    "username": "string",
    "newRole": "USER | SUPER"
  }
  ```

Stored documents (MongoDB)
- User
  ```json
  {
    "id": "string (ObjectId)",
    "username": "string",
    "passwordHash": "string",
    "role": "USER | SUPER",
    "email": "string (optional)",
    "refreshToken": "string (optional)",
    "refreshTokenExpiry": "string (optional, ISO-8601 datetime)"
  }
  ```
