Files
geointel/frontend/src/services/api/projects.ts
T
Codex a29c787238
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s
Complete operational map result workflow
2026-07-17 12:35:50 +02:00

19 lines
1.0 KiB
TypeScript

import { apiDelete, apiGet, apiPatch, apiPost } from './client'
import type { ProjectCreate, ProjectListResponse, ProjectRead } from '../../types'
export const projectsApi = {
list: (options?: { name?: string; limit?: number }): Promise<ProjectListResponse> => {
const search = new URLSearchParams()
if (options?.name) search.set('name', options.name)
if (options?.limit) search.set('limit', String(options.limit))
const query = search.toString()
return apiGet<ProjectListResponse>(`/api/v1/projects${query ? `?${query}` : ''}`)
},
create: (payload: ProjectCreate): Promise<ProjectRead> => apiPost<ProjectRead>('/api/v1/projects', payload),
get: (id: string): Promise<ProjectRead> => apiGet<ProjectRead>(`/api/v1/projects/${id}`),
update: (id: string, payload: Partial<ProjectCreate>): Promise<ProjectRead> =>
apiPatch<ProjectRead>(`/api/v1/projects/${id}`, payload),
delete: (id: string): Promise<{ deleted: boolean }> =>
apiDelete<{ deleted: boolean }>(`/api/v1/projects/${id}`),
}