vbox funzionanti
This commit is contained in:
@@ -8,6 +8,8 @@ import type {
|
||||
export interface MessageFilters {
|
||||
page?: number
|
||||
page_size?: number
|
||||
/** Filtra per Virtual Box assegnata all'utente corrente */
|
||||
vbox_id?: string
|
||||
mailbox_id?: string
|
||||
direction?: 'inbound' | 'outbound'
|
||||
state?: string
|
||||
@@ -17,6 +19,17 @@ export interface MessageFilters {
|
||||
search?: string
|
||||
}
|
||||
|
||||
export interface MessageBulkUpdatePayload {
|
||||
ids: string[]
|
||||
is_starred?: boolean
|
||||
is_archived?: boolean
|
||||
}
|
||||
|
||||
export interface MessageBulkUpdateResponse {
|
||||
updated: number
|
||||
items: MessageResponse[]
|
||||
}
|
||||
|
||||
export const messagesApi = {
|
||||
list: (filters: MessageFilters = {}) =>
|
||||
apiClient
|
||||
@@ -42,6 +55,17 @@ export const messagesApi = {
|
||||
.patch<MessageResponse>(`/messages/${id}`, { is_archived: true })
|
||||
.then((r) => r.data),
|
||||
|
||||
unarchive: (id: string) =>
|
||||
apiClient
|
||||
.patch<MessageResponse>(`/messages/${id}`, { is_archived: false })
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Aggiorna in blocco is_starred e/o is_archived su più messaggi */
|
||||
bulkUpdate: (payload: MessageBulkUpdatePayload) =>
|
||||
apiClient
|
||||
.patch<MessageBulkUpdateResponse>('/messages/bulk', payload)
|
||||
.then((r) => r.data),
|
||||
|
||||
getAttachments: (id: string) =>
|
||||
apiClient.get<AttachmentResponse[]>(`/messages/${id}/attachments`).then((r) => r.data),
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
import apiClient from './client'
|
||||
import type {
|
||||
ChannelTestResult,
|
||||
NotificationChannelCreate,
|
||||
NotificationChannelListResponse,
|
||||
NotificationChannelResponse,
|
||||
NotificationChannelUpdate,
|
||||
NotificationLogListResponse,
|
||||
NotificationRuleCreate,
|
||||
NotificationRuleListResponse,
|
||||
NotificationRuleResponse,
|
||||
NotificationRuleUpdate,
|
||||
} from '@/types/api.types'
|
||||
|
||||
export const notificationsApi = {
|
||||
// ── Channels ───────────────────────────────────────────────────────────────
|
||||
|
||||
/** Crea un canale di notifica. */
|
||||
createChannel: (data: NotificationChannelCreate) =>
|
||||
apiClient
|
||||
.post<NotificationChannelResponse>('/notifications/channels', data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Lista canali. */
|
||||
listChannels: (params?: { page?: number; page_size?: number }) =>
|
||||
apiClient
|
||||
.get<NotificationChannelListResponse>('/notifications/channels', { params })
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Dettaglio canale. */
|
||||
getChannel: (id: string) =>
|
||||
apiClient
|
||||
.get<NotificationChannelResponse>(`/notifications/channels/${id}`)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Aggiorna canale. */
|
||||
updateChannel: (id: string, data: NotificationChannelUpdate) =>
|
||||
apiClient
|
||||
.patch<NotificationChannelResponse>(`/notifications/channels/${id}`, data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Elimina canale. */
|
||||
deleteChannel: (id: string) => apiClient.delete(`/notifications/channels/${id}`),
|
||||
|
||||
/** Test canale. */
|
||||
testChannel: (id: string) =>
|
||||
apiClient
|
||||
.post<ChannelTestResult>(`/notifications/channels/${id}/test`)
|
||||
.then((r) => r.data),
|
||||
|
||||
// ── Rules ──────────────────────────────────────────────────────────────────
|
||||
|
||||
/** Crea una regola. */
|
||||
createRule: (data: NotificationRuleCreate) =>
|
||||
apiClient
|
||||
.post<NotificationRuleResponse>('/notifications/rules', data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Lista regole. */
|
||||
listRules: (params?: { channel_id?: string; page?: number; page_size?: number }) =>
|
||||
apiClient
|
||||
.get<NotificationRuleListResponse>('/notifications/rules', { params })
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Aggiorna regola. */
|
||||
updateRule: (id: string, data: NotificationRuleUpdate) =>
|
||||
apiClient
|
||||
.patch<NotificationRuleResponse>(`/notifications/rules/${id}`, data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Elimina regola. */
|
||||
deleteRule: (id: string) => apiClient.delete(`/notifications/rules/${id}`),
|
||||
|
||||
// ── Logs ───────────────────────────────────────────────────────────────────
|
||||
|
||||
/** Lista log notifiche. */
|
||||
listLogs: (params?: { channel_id?: string; page?: number; page_size?: number }) =>
|
||||
apiClient
|
||||
.get<NotificationLogListResponse>('/notifications/logs', { params })
|
||||
.then((r) => r.data),
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
import apiClient from './client'
|
||||
import type {
|
||||
AssignedUserResponse,
|
||||
MailboxBriefResponse,
|
||||
VirtualBoxAssignmentResponse,
|
||||
VirtualBoxAssignRequest,
|
||||
VirtualBoxCreate,
|
||||
VirtualBoxListResponse,
|
||||
VirtualBoxMailboxAssignRequest,
|
||||
VirtualBoxResponse,
|
||||
VirtualBoxRuleCreate,
|
||||
VirtualBoxUpdate,
|
||||
} from '@/types/api.types'
|
||||
|
||||
export const virtualBoxesApi = {
|
||||
/** Crea una nuova Virtual Box. */
|
||||
create: (data: VirtualBoxCreate) =>
|
||||
apiClient.post<VirtualBoxResponse>('/virtual-boxes', data).then((r) => r.data),
|
||||
|
||||
/** Lista Virtual Box del tenant. */
|
||||
list: (params?: { page?: number; page_size?: number; active_only?: boolean }) =>
|
||||
apiClient
|
||||
.get<VirtualBoxListResponse>('/virtual-boxes', { params })
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Virtual Box assegnate all'utente corrente. */
|
||||
myVirtualBoxes: () =>
|
||||
apiClient.get<VirtualBoxResponse[]>('/virtual-boxes/my').then((r) => r.data),
|
||||
|
||||
/** Dettaglio Virtual Box. */
|
||||
get: (id: string) =>
|
||||
apiClient.get<VirtualBoxResponse>(`/virtual-boxes/${id}`).then((r) => r.data),
|
||||
|
||||
/** Aggiorna Virtual Box (incluse caselle se fornito mailbox_ids). */
|
||||
update: (id: string, data: VirtualBoxUpdate) =>
|
||||
apiClient.patch<VirtualBoxResponse>(`/virtual-boxes/${id}`, data).then((r) => r.data),
|
||||
|
||||
/** Elimina Virtual Box. */
|
||||
delete: (id: string) => apiClient.delete(`/virtual-boxes/${id}`),
|
||||
|
||||
/** Sostituisce le regole di una Virtual Box. */
|
||||
replaceRules: (id: string, rules: VirtualBoxRuleCreate[]) =>
|
||||
apiClient
|
||||
.put<VirtualBoxResponse>(`/virtual-boxes/${id}/rules`, rules)
|
||||
.then((r) => r.data),
|
||||
|
||||
// ─── Caselle reali ─────────────────────────────────────────────────────────
|
||||
|
||||
/** Imposta le caselle PEC reali associate (sostituzione completa). */
|
||||
setMailboxes: (id: string, data: VirtualBoxMailboxAssignRequest) =>
|
||||
apiClient
|
||||
.put<VirtualBoxResponse>(`/virtual-boxes/${id}/mailboxes`, data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Lista caselle PEC reali associate. */
|
||||
listMailboxes: (id: string) =>
|
||||
apiClient
|
||||
.get<MailboxBriefResponse[]>(`/virtual-boxes/${id}/mailboxes`)
|
||||
.then((r) => r.data),
|
||||
|
||||
// ─── Assegnazioni utenti ───────────────────────────────────────────────────
|
||||
|
||||
/** Assegna utenti a una Virtual Box. */
|
||||
assignUsers: (id: string, data: VirtualBoxAssignRequest) =>
|
||||
apiClient
|
||||
.post<VirtualBoxAssignmentResponse[]>(`/virtual-boxes/${id}/assignments`, data)
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Rimuovi assegnazione utente. */
|
||||
unassignUser: (vboxId: string, userId: string) =>
|
||||
apiClient.delete(`/virtual-boxes/${vboxId}/assignments/${userId}`),
|
||||
|
||||
/** Lista utenti assegnati. */
|
||||
listAssignedUsers: (id: string) =>
|
||||
apiClient
|
||||
.get<AssignedUserResponse[]>(`/virtual-boxes/${id}/assignments`)
|
||||
.then((r) => r.data),
|
||||
}
|
||||
Reference in New Issue
Block a user