# Bookmark Check API Documentation ## Overview API endpoint untuk mengecek apakah suatu artikel sudah di-bookmark oleh user yang sedang login. ## Endpoint ### Check Bookmark by Article ID **GET** `/bookmarks/check/{articleId}` #### Description Mengecek apakah artikel dengan ID tertentu sudah di-bookmark oleh user yang sedang login. #### Parameters - **articleId** (path, required): ID artikel yang akan dicek status bookmarknya #### Headers - **Authorization** (required): Bearer token untuk autentikasi user #### Response ##### Success Response (200) ```json { "success": true, "messages": ["Successfully checked bookmark status"], "data": { "isBookmarked": true, "articleId": 123, "bookmarkId": 456 } } ``` ##### Response Fields - **isBookmarked** (boolean): Status apakah artikel sudah di-bookmark atau belum - **articleId** (integer): ID artikel yang dicek - **bookmarkId** (integer, optional): ID bookmark jika artikel sudah di-bookmark #### Error Responses ##### 400 Bad Request ```json { "success": false, "messages": ["Invalid article ID"] } ``` ##### 401 Unauthorized ```json { "success": false, "messages": ["user not found"] } ``` ##### 500 Internal Server Error ```json { "success": false, "messages": ["article not found"] } ``` ## Usage Examples ### cURL Example ```bash curl -X GET "http://localhost:8080/bookmarks/check/123" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ``` ### JavaScript Example ```javascript const checkBookmark = async (articleId) => { try { const response = await fetch(`/bookmarks/check/${articleId}`, { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); const data = await response.json(); if (data.success) { console.log('Is bookmarked:', data.data.isBookmarked); if (data.data.bookmarkId) { console.log('Bookmark ID:', data.data.bookmarkId); } } } catch (error) { console.error('Error checking bookmark:', error); } }; ``` ## Use Cases 1. **Frontend Bookmark Status**: Mengecek status bookmark untuk menampilkan icon bookmark yang sesuai (filled/unfilled) 2. **Conditional UI**: Menampilkan tombol "Remove Bookmark" atau "Add Bookmark" berdasarkan status 3. **Bookmark Counter**: Menghitung jumlah bookmark yang dimiliki user 4. **Bookmark Management**: Validasi sebelum melakukan operasi bookmark lainnya ## Notes - Endpoint ini menggunakan middleware `UserMiddleware` untuk mengekstrak informasi user dari JWT token - Jika artikel tidak ditemukan, akan mengembalikan error 500 - Jika user tidak ditemukan dari token, akan mengembalikan error 401 - Field `bookmarkId` hanya akan ada jika `isBookmarked` bernilai `true`