kontenhumas-be/docs/CLIENT_UPDATE_WITH_AUTH_API.md

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

  1. Profile Update: User mengupdate profil client mereka sendiri
  2. Settings Management: Mengubah pengaturan client
  3. Contact Information: Mengupdate informasi kontak client
  4. Logo Management: Mengupdate URL atau path logo client
  5. 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 UserMiddleware untuk mengekstrak informasi user dari JWT token
  • Client ID diambil dari user.ClientId dalam 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