API untuk sistem scheduler dengan fitur autentikasi JWT dan manajemen user.
Write on rust for efficiency and better peformance
{{base_url}}
API ini menggunakan JWT (JSON Web Token) untuk autentikasi. Token yang digunakan:
- Access Token: Digunakan untuk mengakses endpoint yang memerlukan autentikasi
- Refresh Token: Digunakan untuk mendapatkan access token baru
Authorization: Bearer {access_token}
Melakukan login dan mendapatkan access token & refresh token.
Endpoint: POST /login
Request Body:
{
"identifier": "admin",
"password": "admin123"
}Response Success (200):
{
"success": true,
"status": 200,
"message": "Login success!",
"path": "/login",
"timestamp": "2025-12-09T06:58:02Z",
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
}Mendapatkan access token dan refresh token baru.
Endpoint: POST /refresh/token
Request Body:
{
"refresh_token": "{{refresh_token}}"
}Response Success (200):
{
"success": true,
"status": 200,
"message": "Refresh success!",
"path": "/refresh/token",
"timestamp": "2025-12-09T06:59:14Z",
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
}Melakukan logout dan menginvalidasi token.
Endpoint: POST /logout
Authentication: Required (Bearer Token)
Request Body:
{
"refresh_token": "{{refresh_token}}"
}Response Success (200):
{
"success": true,
"status": 200,
"message": "Logout successful!",
"path": "/logout",
"timestamp": "2025-12-09T11:12:29Z"
}Mendapatkan informasi profile user yang sedang login.
Endpoint: GET /user/me
Authentication: Required (Bearer Token)
Response Success (200):
{
"success": true,
"status": 200,
"message": "Welcome admin!",
"path": "/user/me",
"timestamp": "2025-12-11T13:41:06Z",
"data": {
"id": 1,
"username": "admin",
"email": "admin@teknohole.com",
"is_superuser": true,
"created_at": "2025-12-09T03:01:40.912343Z",
"updated_at": "2025-12-11T13:41:00.158809Z"
}
}Memperbarui informasi profile user yang sedang login.
Endpoint: PATCH /user/me
Authentication: Required (Bearer Token)
Request Body:
{
"username": "admin",
"email": "admin@teknohole.com",
"is_superuser": true
}Response Success (200):
{
"success": true,
"status": 200,
"message": "Profile updated successfully!",
"path": "/user/me",
"timestamp": "2025-12-11T13:41:00Z",
"data": {
"id": 1,
"username": "admin",
"email": "admin@teknohole.com",
"is_superuser": true,
"created_at": "2025-12-09T03:01:40.912343Z",
"updated_at": "2025-12-11T13:41:00.158809Z"
}
}Mendapatkan daftar semua user (hanya untuk superuser).
Endpoint: GET /user
Authentication: Required (Bearer Token)
Response Success (200):
{
"success": true,
"status": 200,
"message": "List of all users",
"path": "/user",
"timestamp": "2025-12-13T04:14:14Z",
"data": [
{
"id": 1,
"username": "admin",
"email": "admin@teknohole.com",
"is_superuser": true,
"created_at": "2025-12-09T03:01:40.912343Z",
"updated_at": "2025-12-13T04:07:34.331875Z"
},
{
"id": 2,
"username": "arbath",
"email": "arbath@teknohole.com",
"is_superuser": false,
"created_at": "2025-12-13T04:09:29.647656Z",
"updated_at": "2025-12-13T04:09:29.647656Z"
}
]
}Membuat user baru (hanya untuk superuser).
Endpoint: POST /user
Authentication: Required (Bearer Token)
Request Body:
{
"username": "arbath",
"password": "arbath123",
"email": "arbath@teknohole.com",
"is_superuser": false
}Response Success (201):
{
"success": true,
"status": 201,
"message": "User arbath has been created successfully!",
"path": "/user",
"timestamp": "2025-12-13T04:14:04Z",
"data": {
"id": 2,
"username": "arbath",
"email": "arbath@teknohole.com",
"is_superuser": false,
"created_at": "2025-12-13T04:14:04.051047Z",
"updated_at": "2025-12-13T04:14:04.051047Z"
}
}Menghapus user berdasarkan ID (hanya untuk superuser).
Endpoint: DELETE /user/{id}
Authentication: Required (Bearer Token)
Path Parameters:
id(integer): ID user yang akan dihapus
Response Success (200):
{
"success": true,
"status": 200,
"message": "User with id 5 has been deleted successfully!",
"path": "/user/5",
"timestamp": "2025-12-13T04:14:39Z"
}Endpoint untuk mengecek status API.
Endpoint: GET /
Authentication: Not Required
Semua response mengikuti format standar:
{
"success": boolean,
"status": number,
"message": string,
"path": string,
"timestamp": string,
"data": object | array (optional)
}API akan mengembalikan response error dengan format yang sama:
- 400 Bad Request: Request body tidak valid
- 401 Unauthorized: Token tidak valid atau tidak ada
- 403 Forbidden: User tidak memiliki akses
- 404 Not Found: Resource tidak ditemukan
- 500 Internal Server Error: Kesalahan server
- Semua timestamp menggunakan format ISO 8601 (UTC)
- Access token dan refresh token harus disimpan dengan aman
- Token akan expired sesuai dengan konfigurasi server
- Endpoint yang memerlukan superuser hanya dapat diakses oleh user dengan
is_superuser: true