From ebc6b4682389fd80a9ad0577ea3fdae17fe8854b Mon Sep 17 00:00:00 2001 From: chihlasm Date: Sat, 4 Apr 2026 07:48:03 +0000 Subject: [PATCH] feat: add frontend API clients for device types and network diagrams Adds deviceTypesApi (list, create, update, remove) and networkDiagramsApi (list, get, create, update, archive, duplicate, exportJson, importJson, aiGenerate, listClients) following the existing apiClient module pattern. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/api/deviceTypes.ts | 23 +++++++++++ frontend/src/api/index.ts | 2 + frontend/src/api/networkDiagrams.ts | 63 +++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 frontend/src/api/deviceTypes.ts create mode 100644 frontend/src/api/networkDiagrams.ts diff --git a/frontend/src/api/deviceTypes.ts b/frontend/src/api/deviceTypes.ts new file mode 100644 index 00000000..1425584a --- /dev/null +++ b/frontend/src/api/deviceTypes.ts @@ -0,0 +1,23 @@ +import apiClient from './client' +import type { DeviceTypeResponse, DeviceTypeCreate } from '@/types' + +export const deviceTypesApi = { + async list(): Promise { + const response = await apiClient.get('/device-types/') + return response.data + }, + + async create(data: DeviceTypeCreate): Promise { + const response = await apiClient.post('/device-types/', data) + return response.data + }, + + async update(id: string, data: Partial): Promise { + const response = await apiClient.put(`/device-types/${id}`, data) + return response.data + }, + + async remove(id: string): Promise { + await apiClient.delete(`/device-types/${id}`) + }, +} diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index b362e193..9ec66c9b 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -35,3 +35,5 @@ export { betaFeedbackApi } from './betaFeedback' export { branchesApi } from './branches' export { handoffsApi } from './handoffs' export { resolutionsApi } from './resolutions' +export { deviceTypesApi } from './deviceTypes' +export { networkDiagramsApi } from './networkDiagrams' diff --git a/frontend/src/api/networkDiagrams.ts b/frontend/src/api/networkDiagrams.ts new file mode 100644 index 00000000..c074fb00 --- /dev/null +++ b/frontend/src/api/networkDiagrams.ts @@ -0,0 +1,63 @@ +import apiClient from './client' +import type { + NetworkDiagramResponse, + NetworkDiagramListItem, + NetworkDiagramCreate, + NetworkDiagramUpdate, + AIGenerateRequest, + AIGenerateResponse, + DiagramImportData, + DiagramImportResponse, + DiagramExportResponse, +} from '@/types' + +export const networkDiagramsApi = { + async list(params?: { client_name?: string; search?: string }): Promise { + const response = await apiClient.get('/network-diagrams/', { params }) + return response.data + }, + + async get(id: string): Promise { + const response = await apiClient.get(`/network-diagrams/${id}`) + return response.data + }, + + async create(data: NetworkDiagramCreate): Promise { + const response = await apiClient.post('/network-diagrams/', data) + return response.data + }, + + async update(id: string, data: NetworkDiagramUpdate): Promise { + const response = await apiClient.put(`/network-diagrams/${id}`, data) + return response.data + }, + + async archive(id: string): Promise { + await apiClient.delete(`/network-diagrams/${id}`) + }, + + async duplicate(id: string): Promise { + const response = await apiClient.post(`/network-diagrams/${id}/duplicate`) + return response.data + }, + + async exportJson(id: string): Promise { + const response = await apiClient.get(`/network-diagrams/${id}/export`) + return response.data + }, + + async importJson(data: DiagramImportData): Promise { + const response = await apiClient.post('/network-diagrams/import', data) + return response.data + }, + + async aiGenerate(data: AIGenerateRequest): Promise { + const response = await apiClient.post('/network-diagrams/ai-generate', data) + return response.data + }, + + async listClients(): Promise { + const response = await apiClient.get('/network-diagrams/clients') + return response.data + }, +}