API Autentikasi
Gunakan endpoint berikut untuk membuat, memeriksa, memperbarui, dan mencabut sesi pengguna.
Path dasar: /api/auth
Ringkasan endpoint
| Metode | Path | Autentikasi | Tujuan |
|---|---|---|---|
POST | /login | Publik | Menukar kredensial dengan token akses |
GET | /session | Header Authorization | Memvalidasi sesi saat ini |
GET | /me | Token bearer | Mengambil data pengguna saat ini |
POST | /logout | Token dalam body JSON | Mencabut token sesi yang diberikan |
POST | /logout-all | Token bearer | Mencabut seluruh sesi milik pengguna saat ini |
Autentikasi bearer
Kirim token yang diperoleh dari proses login pada endpoint yang dilindungi:
Authorization: Bearer <access_token>
Login
POST /api/auth/login
Lakukan autentikasi dengan nama pengguna dan kata sandi.
Autentikasi: Publik
Body permintaan: application/json
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
username | string | Ya | Nama pengguna Sociovite |
password | string | Ya | Kata sandi akun |
{
"username": "your_username",
"password": "your_password"
}
Respons berhasil — 200 OK:
{
"token": "eyJhbGciOi...",
"expires_at": "2026-07-29T23:26:03.041292+07:00",
"roles": [
"user"
],
"user": {
"userId": "user_id",
"name": "user",
"email": "user@example.com",
"username": "user"
}
}
Gunakan token sebagai token akses bearer. Kontrak API mendefinisikan expires_at sebagai string dan tidak membatasi format tanggalnya.
Respons lainnya:
| Status | Arti |
|---|---|
400 | Body permintaan tidak valid atau kredensial tidak lengkap |
401 | Kredensial tidak valid |
curl -X POST \
"$SOCIOVITE_API_URL/api/auth/login" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"username": "your_username",
"password": "your_password"
}'
Memvalidasi sesi
GET /api/auth/session
Validasi token akses yang diberikan dan kembalikan identitas sesi.
Header wajib:
Authorization: Bearer <access_token>
Respons berhasil — 200 OK:
{
"valid": true,
"expires_at": "2026-07-29T23:26:03.041292+07:00",
"roles": [
"admin"
],
"user": {
"userId": "user_id",
"name": "Admin",
"email": "admin@example.com",
"username": "admin"
}
}
Respons lainnya: 401 jika token tidak valid atau tidak diberikan.
curl \
"$SOCIOVITE_API_URL/api/auth/session" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'
Mengambil data pengguna saat ini
GET /api/auth/me
Kembalikan data pengguna yang diwakili oleh token bearer.
Autentikasi: Token bearer
Respons berhasil — 200 OK:
{
"userId": "user_id",
"name": "Admin",
"email": "admin@example.com",
"username": "admin"
}
Respons lainnya: 401 jika token tidak memiliki otorisasi atau tidak valid.
curl \
"$SOCIOVITE_API_URL/api/auth/me" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'
Logout dari satu sesi
POST /api/auth/logout
Batalkan sesi yang diwakili oleh token yang diberikan. Swagger mendeskripsikan nilai body ini sebagai token refresh.
Autentikasi: Tidak ada header bearer yang didefinisikan. Token dikirim melalui body.
Body permintaan: application/json
| Kolom | Tipe | Wajib |
|---|---|---|
token | string | Ya |
{
"token": "current_access_token"
}
Respons berhasil — 200 OK:
{
"success": true,
"message": "Logout successful"
}
Respons lainnya:
| Status | Arti |
|---|---|
400 | Permintaan tidak valid |
401 | Token tidak valid |
curl -X POST \
"$SOCIOVITE_API_URL/api/auth/logout" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"token": "current_access_token"
}'
Logout dari semua perangkat
POST /api/auth/logout-all
Batalkan seluruh sesi yang terkait dengan pengguna terautentikasi.
Autentikasi: Token bearer
Body permintaan: Tidak ada
Respons berhasil — 200 OK:
{
"success": true,
"message": "All sessions revoked",
"revoked": 3
}
revoked adalah jumlah sesi yang dibatalkan.
Respons lainnya: 401 jika permintaan tidak memiliki otorisasi.
curl -X POST \
"$SOCIOVITE_API_URL/api/auth/logout-all" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'
Bentuk respons error
Error autentikasi menggunakan model error bersama:
{
"success": false,
"error": "Invalid credentials",
"message": "Unable to authenticate the request"
}