/** * Organization API client */ import { Organization, OrganizationCreate, OrganizationUpdate, OrganizationScanResult, TaskListResponse, TaskStatus, WorkerStatus, } from '../types/organization'; const API_BASE_URL = import.meta.env.VITE_API_URL || '/api'; // Organizations export async function getOrganizations(skip = 0, limit = 100): Promise<{ items: Organization[]; total: number }> { const response = await fetch(`${API_BASE_URL}/organizations?skip=${skip}&limit=${limit}`); if (!response.ok) throw new Error('Failed to fetch organizations'); return response.json(); } export async function getOrganization(id: number): Promise { const response = await fetch(`${API_BASE_URL}/organizations/${id}`); if (!response.ok) throw new Error('Failed to fetch organization'); return response.json(); } export async function createOrganization(data: OrganizationCreate): Promise { const response = await fetch(`${API_BASE_URL}/organizations`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }); if (!response.ok) { const error = await response.json(); throw new Error(error.detail || 'Failed to create organization'); } return response.json(); } export async function updateOrganization(id: number, data: OrganizationUpdate): Promise { const response = await fetch(`${API_BASE_URL}/organizations/${id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }); if (!response.ok) { const error = await response.json(); throw new Error(error.detail || 'Failed to update organization'); } return response.json(); } export async function deleteOrganization(id: number): Promise { const response = await fetch(`${API_BASE_URL}/organizations/${id}`, { method: 'DELETE', }); if (!response.ok) throw new Error('Failed to delete organization'); } export async function scanOrganization(id: number): Promise { const response = await fetch(`${API_BASE_URL}/organizations/${id}/scan`, { method: 'POST', }); if (!response.ok) { const error = await response.json(); throw new Error(error.detail || 'Failed to scan organization'); } return response.json(); } // Tasks export async function getTasks(status?: TaskStatus, skip = 0, limit = 100): Promise { const params = new URLSearchParams({ skip: skip.toString(), limit: limit.toString() }); if (status) params.append('status', status); const response = await fetch(`${API_BASE_URL}/tasks?${params}`); if (!response.ok) throw new Error('Failed to fetch tasks'); return response.json(); } export async function getWorkerStatus(): Promise { const response = await fetch(`${API_BASE_URL}/tasks/worker/status`); if (!response.ok) throw new Error('Failed to fetch worker status'); return response.json(); } export async function retryTask(id: number): Promise { const response = await fetch(`${API_BASE_URL}/tasks/${id}/retry`, { method: 'POST', }); if (!response.ok) { const error = await response.json(); throw new Error(error.detail || 'Failed to retry task'); } } export async function deleteTask(id: number): Promise { const response = await fetch(`${API_BASE_URL}/tasks/${id}`, { method: 'DELETE', }); if (!response.ok) throw new Error('Failed to delete task'); }