4.7 KiB
4.7 KiB
Client Update with Auth Token API Documentation
Overview
API endpoint untuk mengupdate data client menggunakan client ID yang diambil dari auth token, tanpa perlu menyertakan client ID sebagai path parameter.
Endpoint
Update Client with Auth Token
PUT /clients/update
Description
Mengupdate data client yang sedang login menggunakan client ID dari auth token.
Parameters
- Tidak ada path parameter, client ID diambil dari auth token
Headers
- Authorization (required): Bearer token untuk autentikasi user
Request Body
{
"name": "Updated Client Name",
"description": "Updated client description",
"clientType": "standalone",
"parentClientId": null,
"maxUsers": 100,
"maxStorage": 1073741824,
"settings": "{\"theme\": \"dark\"}",
"isActive": true,
"logoUrl": "https://example.com/logo.png",
"logoImagePath": "clients/logos/client-id/logo.png",
"address": "Jl. Example No. 123",
"phoneNumber": "+62-123-456-7890",
"website": "https://example.com"
}
Response Fields
- name (string, optional): Nama client
- description (string, optional): Deskripsi client
- clientType (string, optional): Tipe client (
parent_client,sub_client,standalone) - parentClientId (string, optional): ID parent client (untuk sub client)
- maxUsers (integer, optional): Batas maksimal user
- maxStorage (integer, optional): Batas maksimal storage dalam bytes
- settings (string, optional): JSON string untuk custom settings
- isActive (boolean, optional): Status aktif client
- logoUrl (string, optional): URL logo client
- logoImagePath (string, optional): Path logo di MinIO storage
- address (string, optional): Alamat client
- phoneNumber (string, optional): Nomor telepon client
- website (string, optional): Website resmi client
Response
Success Response (200)
{
"success": true,
"messages": ["Clients successfully updated"],
"data": null
}
Error Responses
400 Bad Request
{
"success": false,
"messages": ["Validation error"],
"data": {
"field": "error message"
}
}
401 Unauthorized
{
"success": false,
"messages": ["user not found"]
}
500 Internal Server Error
{
"success": false,
"messages": ["client ID not found in user token"]
}
Usage Examples
cURL Example
curl -X PUT "http://localhost:8080/clients/update" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Client Name",
"description": "Updated description",
"clientType": "standalone",
"maxUsers": 100,
"isActive": true,
"address": "Jl. Example No. 123",
"phoneNumber": "+62-123-456-7890",
"website": "https://example.com"
}'
JavaScript Example
const updateClient = async (clientData) => {
try {
const response = await fetch('/clients/update', {
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(clientData)
});
const data = await response.json();
if (data.success) {
console.log('Client updated successfully');
} else {
console.error('Update failed:', data.messages);
}
} catch (error) {
console.error('Error updating client:', error);
}
};
// Usage
updateClient({
name: "Updated Client Name",
description: "Updated description",
clientType: "standalone",
maxUsers: 100,
isActive: true,
address: "Jl. Example No. 123",
phoneNumber: "+62-123-456-7890",
website: "https://example.com"
});
Use Cases
- Profile Update: User mengupdate profil client mereka sendiri
- Settings Management: Mengubah pengaturan client
- Contact Information: Mengupdate informasi kontak client
- Logo Management: Mengupdate URL atau path logo client
- Resource Limits: Mengubah batas user atau storage
Security Features
- Authentication Required: Harus menggunakan Bearer token yang valid
- Client Isolation: User hanya bisa mengupdate client mereka sendiri
- Token Validation: Client ID diambil dari token yang sudah diverifikasi
- Input Validation: Semua input divalidasi sebelum diproses
Notes
- Endpoint ini menggunakan middleware
UserMiddlewareuntuk mengekstrak informasi user dari JWT token - Client ID diambil dari
user.ClientIddalam token - Jika user tidak ditemukan atau client ID tidak ada dalam token, akan mengembalikan error
- Semua field dalam request body bersifat optional
- Endpoint ini lebih aman daripada endpoint update dengan path parameter karena mencegah user mengupdate client lain