Users API
The user list, used for things like picking interviewers. See API Conventions for shared rules.
Base path: /api/v1/users
| Method | Path | Summary | Auth | Role |
|---|---|---|---|---|
| GET | / |
List users | Required | - |
List Users
Returns the user list used for interviewer selection and similar purposes.
URI
Authentication
Requires Authorization: Bearer <access_token>. No role restriction.
Query Parameters
| Field | Type | Required | Default | Rules | Description |
|---|---|---|---|---|---|
page |
integer | - | 1 |
Positive integer | Page number |
limit |
integer | - | 20 |
1โ100 | Items per page |
sort |
string | - | - | - | Format createdAt:desc |
search |
string | - | - | - | Partial match on name or email |
Example Request
Response (200 OK)
A paginated response.
{
"success": true,
"status": "success",
"statusCode": 200,
"timestamp": "2026-01-15T10:00:00.000Z",
"data": [
{
"id": 1,
"email": "user@example.com",
"name": "John Doe",
"picture": "https://example.com/avatar.jpg",
"role": "member",
"createdAt": "2026-01-15T09:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"totalCount": 12,
"totalPages": 1,
"hasNext": false,
"hasPrevious": false
},
"path": "/api/v1/users",
"method": "GET"
}
| Field | Type | Description |
|---|---|---|
id |
integer | User ID |
email |
string | Email address |
name |
string | Display name |
picture |
string | null | Profile image URL |
role |
enum | admin / member / viewer |
createdAt |
string(date-time) | Registration timestamp |
Errors
| Description | Status code | Status name |
|---|---|---|
| Token missing or invalid | 401 | Unauthorized |
Notes
- There is no API to create, update, or delete users. Users are registered automatically on their first Google OAuth login, and role changes are currently made directly in the DB
- To add an interviewer, pass an
idobtained here to the Interviewers API