import apiClient from './client' import type { LabelCreate, LabelResponse, LabelTreeResponse, LabelUpdate, MessageBulkLabelRequest, MessageBulkLabelResponse, MessageLabelAddRequest, MessageLabelRemoveRequest, MessageLabelSetRequest, } from '@/types/api.types' export const labelsApi = { // ─── CRUD Tag ───────────────────────────────────────────────────────────── list: () => apiClient.get('/labels').then((r) => r.data), /** Restituisce la tassonomia come albero annidato (Ambito > Processo > Classificazione). */ getTree: () => apiClient.get('/labels/tree').then((r) => r.data), create: (data: LabelCreate) => apiClient.post('/labels', data).then((r) => r.data), update: (id: string, data: LabelUpdate) => apiClient.patch(`/labels/${id}`, data).then((r) => r.data), delete: (id: string) => apiClient.delete(`/labels/${id}`).then((r) => r.data), // ─── Tag su singolo messaggio ───────────────────────────────────────────── getMessageLabels: (messageId: string) => apiClient .get(`/messages/${messageId}/labels`) .then((r) => r.data), /** Sostituisce tutti i tag di un messaggio. */ setMessageLabels: (messageId: string, data: MessageLabelSetRequest) => apiClient .put(`/messages/${messageId}/labels`, data) .then((r) => r.data), /** Aggiunge tag a un messaggio senza rimuovere quelli esistenti. */ addMessageLabels: (messageId: string, data: MessageLabelAddRequest) => apiClient .post(`/messages/${messageId}/labels/add`, data) .then((r) => r.data), /** Rimuove specifici tag da un messaggio. */ removeMessageLabels: (messageId: string, data: MessageLabelRemoveRequest) => apiClient .post(`/messages/${messageId}/labels/remove`, data) .then((r) => r.data), // ─── Bulk ───────────────────────────────────────────────────────────────── bulkLabels: (data: MessageBulkLabelRequest) => apiClient .post('/messages/bulk-labels', data) .then((r) => r.data), }