import request from './client'; import type { TaskProgress } from './offlineDownloads'; export interface AutomationTask { id: number; name: string; event: string; path_pattern?: string; filename_regex?: string; processor_type: string; processor_config: Record; enabled: boolean; } export type AutomationTaskCreate = Omit; export type AutomationTaskUpdate = Partial; export interface QueuedTask { id: string; name: string; status: 'pending' | 'running' | 'success' | 'failed'; result?: any; error?: string; task_info: Record; progress?: TaskProgress | null; meta?: Record | null; } export interface TaskQueueSettings { concurrency: number; active_workers: number; } export interface TaskQueueSettingsUpdate { concurrency: number; } export const tasksApi = { list: () => request('/tasks/'), create: (payload: AutomationTaskCreate) => request('/tasks/', { method: 'POST', json: payload }), update: (id: number, payload: AutomationTaskUpdate) => request(`/tasks/${id}`, { method: 'PUT', json: payload }), remove: (id: number) => request(`/tasks/${id}`, { method: 'DELETE' }), getQueue: () => request('/tasks/queue'), getQueueSettings: () => request('/tasks/queue/settings'), updateQueueSettings: (payload: TaskQueueSettingsUpdate) => request('/tasks/queue/settings', { method: 'POST', json: payload }), };