import { api } from './client' export interface AIProvider { id: string; name: string; model: string; endpoint: string is_active: boolean; has_key: boolean } export interface AIRoleConfig { provider_id: string; model: string } export interface AIRoles { summary: AIRoleConfig; report: AIRoleConfig; filter: AIRoleConfig } export interface OllamaModelInfo { name: string; size: number; modified_at: string details: { parameter_size: string; quantization_level: string; family: string } } export interface Source { id: string; name: string; type: string; enabled: boolean } export interface ScrapeJob { id: string; source_id: string; source_name: string; status: string started_at: { Time: string; Valid: boolean } | null finished_at: { Time: string; Valid: boolean } | null articles_found: number; error_msg: string; created_at: string } export interface Setting { key: string; value: string } export interface ScheduleSlot { id?: string; day_of_week: number; hour: number; minute: number } export interface AdminUser { id: string; email: string; role: string; created_at: string } export interface Credential { source_id: string; source_name: string; username: string; has_password: boolean } export const adminApi = { // Credentials getCredentials: () => api.get('/admin/credentials'), updateCredentials: (data: { source_id: string; username: string; password?: string }) => api.put('/admin/credentials', data), // AI Providers listProviders: () => api.get('/admin/ai-providers'), createProvider: (data: { name: string; api_key?: string; model?: string; endpoint?: string }) => api.post('/admin/ai-providers', data), updateProvider: (id: string, data: { name: string; api_key?: string; model?: string; endpoint?: string }) => api.put(`/admin/ai-providers/${id}`, data), activateProvider: (id: string) => api.post(`/admin/ai-providers/${id}/activate`), deleteProvider: (id: string) => api.delete(`/admin/ai-providers/${id}`), listModels: (id: string) => api.get(`/admin/ai-providers/${id}/models`), // AI Roles getRoles: () => api.get('/admin/ai-roles'), updateRole: (role: string, data: AIRoleConfig) => api.put(`/admin/ai-roles/${role}`, data), // Ollama model management listOllamaModels: () => api.get('/admin/ollama/models'), pullOllamaModel: (name: string) => api.post('/admin/ollama/pull', { name }), deleteOllamaModel: (name: string) => api.delete(`/admin/ollama/models/${encodeURIComponent(name)}`), // Sources listSources: () => api.get('/admin/sources'), updateSource: (id: string, enabled: boolean) => api.put(`/admin/sources/${id}`, { enabled }), // Jobs listJobs: () => api.get('/admin/scrape-jobs'), triggerJob: (source_id: string) => api.post('/admin/scrape-jobs/trigger', { source_id }), // Settings listSettings: () => api.get('/admin/settings'), updateSettings: (settings: Setting[]) => api.put('/admin/settings', { settings }), getDefaultPrompt: () => api.get<{ prompt: string }>('/admin/settings/default-prompt'), // Schedule getSchedule: () => api.get('/admin/schedule'), updateSchedule: (slots: ScheduleSlot[]) => api.put('/admin/schedule', { slots }), // Users listUsers: () => api.get('/admin/users'), updateUser: (id: string, email: string, role: string) => api.put(`/admin/users/${id}`, { email, role }), deleteUser: (id: string) => api.delete(`/admin/users/${id}`), }