/** * API Keys management endpoints * Handles CRUD operations for user API keys */ import { apiClient } from './client' import type { ApiKey, CreateApiKeyRequest, UpdateApiKeyRequest, PaginatedResponse } from '@/types' /** * List all API keys for current user * @param page - Page number (default: 1) * @param pageSize - Items per page (default: 10) * @returns Paginated list of API keys */ export async function list( page: number = 1, pageSize: number = 10 ): Promise> { const { data } = await apiClient.get>('/keys', { params: { page, page_size: pageSize } }) return data } /** * Get API key by ID * @param id - API key ID * @returns API key details */ export async function getById(id: number): Promise { const { data } = await apiClient.get(`/keys/${id}`) return data } /** * Create new API key * @param name - Key name * @param groupId - Optional group ID * @param customKey - Optional custom key value * @returns Created API key */ export async function create( name: string, groupId?: number | null, customKey?: string ): Promise { const payload: CreateApiKeyRequest = { name } if (groupId !== undefined) { payload.group_id = groupId } if (customKey) { payload.custom_key = customKey } const { data } = await apiClient.post('/keys', payload) return data } /** * Update API key * @param id - API key ID * @param updates - Fields to update * @returns Updated API key */ export async function update(id: number, updates: UpdateApiKeyRequest): Promise { const { data } = await apiClient.put(`/keys/${id}`, updates) return data } /** * Delete API key * @param id - API key ID * @returns Success confirmation */ export async function deleteKey(id: number): Promise<{ message: string }> { const { data } = await apiClient.delete<{ message: string }>(`/keys/${id}`) return data } /** * Toggle API key status (active/inactive) * @param id - API key ID * @param status - New status * @returns Updated API key */ export async function toggleStatus(id: number, status: 'active' | 'inactive'): Promise { return update(id, { status }) } export const keysAPI = { list, getById, create, update, delete: deleteKey, toggleStatus } export default keysAPI