Skip to main content

Login

Authenticate and receive JWT tokens.
POST /api/v1/auth/login
FieldTypeRequired
usernamestringyes
passwordstringyes
{
  "username": "admin",
  "password": "secret123"
}
{
  "success": true,
  "message": "Login successful",
  "data": {
    "user": {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "first_name": "Admin",
      "last_name": "User",
      "username": "admin",
      "email": "admin@example.com",
      "phone": null,
      "lang": "en",
      "location": null,
      "nationality": null,
      "timezone": "UTC",
      "last_uuid": null,
      "last_login_ip": "::1",
      "last_login_at": "2026-06-28T12:00:00.000Z",
      "last_logout_ip": null,
      "is_active": true,
      "created_at": "2026-06-28T12:00:00.000Z",
      "created_by": null,
      "updated_at": "2026-06-28T12:00:00.000Z",
      "created_ip": "::1",
      "updated_ip": "::1"
    },
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
  },
  "metadata": {}
}

Register

Create a new user account. Requires PUBLIC_REGISTER=true or admin token.
POST /api/v1/auth/register
FieldTypeRequiredDefault
first_namestringyes
last_namestringyes
usernamestringyes
emailstringyes
passwordstringyes
phonestringnonull
langstringno"en"
locationstringnonull
nationalitystringnonull
timezonestringno"UTC"
{
  "first_name": "John",
  "last_name": "Doe",
  "username": "johndoe",
  "email": "john@example.com",
  "password": "securePass123",
  "phone": "+351912345678",
  "lang": "en",
  "location": "Lisbon",
  "nationality": "Portuguese",
  "timezone": "Europe/Lisbon"
}
{
  "success": true,
  "message": "Registration successful",
  "data": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "first_name": "John",
    "last_name": "Doe",
    "username": "johndoe",
    "email": "john@example.com",
    "phone": "+351912345678",
    "lang": "en",
    "location": "Lisbon",
    "nationality": "Portuguese",
    "timezone": "Europe/Lisbon",
    "last_uuid": null,
    "last_login_ip": null,
    "last_login_at": null,
    "last_logout_ip": null,
    "is_active": true,
    "created_at": "2026-06-28T12:00:00.000Z",
    "created_by": null,
    "updated_at": "2026-06-28T12:00:00.000Z",
    "created_ip": "::1",
    "updated_ip": "::1"
  },
  "metadata": {}
}

Logout

Revoke refresh token(s). Requires Bearer token.
POST /api/v1/auth/logout
Authorization: Bearer <token>
FieldTypeRequired
refresh_tokenstringno (revokes all if omitted)
{
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
{
  "success": true,
  "message": "Logout successful",
  "data": null,
  "metadata": {}
}

Refresh

Exchange a refresh token for a new token pair. The old token is revoked.
POST /api/v1/auth/refresh
FieldTypeRequired
refresh_tokenstringyes
{
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
{
  "success": true,
  "message": "Token refreshed",
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
  },
  "metadata": {}
}

Me

Get the authenticated user’s profile and permission level.
GET /api/v1/auth/me
Authorization: Bearer <token>
{
  "success": true,
  "message": "Authenticated user",
  "data": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "first_name": "Admin",
    "last_name": "User",
    "username": "admin",
    "email": "admin@example.com",
    "phone": null,
    "lang": "en",
    "location": null,
    "nationality": null,
    "timezone": "UTC",
    "last_uuid": "550e8400-e29b-41d4-a716-446655440000",
    "last_login_ip": "::1",
    "last_login_at": "2026-06-28T12:00:00.000Z",
    "last_logout_ip": null,
    "is_active": true,
    "created_at": "2026-06-28T12:00:00.000Z",
    "created_by": null,
    "updated_at": "2026-06-28T12:00:00.000Z",
    "created_ip": "::1",
    "updated_ip": "::1",
    "permission": {
      "level": 0,
      "perm_name": "superadmin"
    }
  },
  "metadata": {}
}