import { api } from '@/lib/api' import type { ApiKey, ApiResponse, GetApiKeysParams, GetApiKeysResponse, SearchApiKeysParams, ApiKeyFormData, } from './types' // ============================================================================ // API Key Management // ============================================================================ // Get paginated API keys list export async function getApiKeys( params: GetApiKeysParams = {} ): Promise { const { p = 1, size = 10 } = params const res = await api.get(`/api/token/?p=${p}&size=${size}`) return res.data } // Search API keys by keyword or token (with pagination) export async function searchApiKeys( params: SearchApiKeysParams ): Promise<{ success: boolean; message?: string; data?: ApiKey[] }> { const { keyword = '', token = '', p, size } = params const queryParams = new URLSearchParams() if (keyword) queryParams.set('keyword', keyword) if (token) queryParams.set('token', token) if (p != null) queryParams.set('p', String(p)) if (size != null) queryParams.set('size', String(size)) const res = await api.get(`/api/token/search?${queryParams.toString()}`) return res.data } // Get single API key by ID export async function getApiKey(id: number): Promise> { const res = await api.get(`/api/token/${id}`) return res.data } // Create a new API key export async function createApiKey( data: ApiKeyFormData ): Promise> { const res = await api.post('/api/token/', data) return res.data } // Update an existing API key export async function updateApiKey( data: ApiKeyFormData & { id: number } ): Promise> { const res = await api.put('/api/token/', data) return res.data } // Delete a single API key export async function deleteApiKey(id: number): Promise { const res = await api.delete(`/api/token/${id}/`) return res.data } // Batch delete multiple API keys export async function batchDeleteApiKeys( ids: number[] ): Promise> { const res = await api.post('/api/token/batch', { ids }) return res.data } // Update API key status (enable/disable) export async function updateApiKeyStatus( id: number, status: number ): Promise> { const res = await api.put('/api/token/?status_only=true', { id, status }) return res.data } // Fetch the real (unmasked) key for a token by ID export async function fetchTokenKey( id: number ): Promise<{ success: boolean; message?: string; data?: { key: string } }> { const res = await api.post(`/api/token/${id}/key`) return res.data } // Batch fetch real (unmasked) keys for multiple tokens export async function fetchTokenKeysBatch(ids: number[]): Promise<{ success: boolean message?: string data?: { keys: Record } }> { const res = await api.post('/api/token/batch/keys', { ids }) return res.data }