main
ts 79 lines 2.13 KB
Raw
1 import type {
2 VulnerabilityReportDeleteResponse,
3 VulnerabilityReportGenerateRequest,
4 VulnerabilityReportGenerateResponse,
5 VulnerabilityReportListResponse,
6 VulnerabilitySearchQuery,
7 VulnerabilitySearchResponse
8 } from "@/types/vulnerabilities.d"
9 import { HttpClient } from "../httpClient"
10
11 // TODO-FE: refactor
12 export default {
13 /**
14 * Search vulnerabilities directly from Wazuh indexer with filtering and pagination
15 */
16 searchVulnerabilities(query?: VulnerabilitySearchQuery, signal?: AbortSignal) {
17 return HttpClient.get<VulnerabilitySearchResponse>(`/vulnerabilities/search`, {
18 params: {
19 customer_code: query?.customer_code,
20 agent_name: query?.agent_name,
21 severity: query?.severity,
22 cve_id: query?.cve_id,
23 package_name: query?.package_name,
24 page: query?.page || 1,
25 page_size: query?.page_size || 50,
26 include_epss: query?.include_epss !== false
27 },
28 signal
29 })
30 },
31
32 /**
33 * Generate a vulnerability report (synchronous)
34 */
35 generateReport(request: VulnerabilityReportGenerateRequest) {
36 return HttpClient.post<VulnerabilityReportGenerateResponse>(`/vulnerabilities/reports/generate`, request)
37 },
38
39 /**
40 * Generate a vulnerability report (background task)
41 */
42 generateReportBackground(request: VulnerabilityReportGenerateRequest) {
43 return HttpClient.post<{
44 success: boolean
45 message: string
46 report_id: number
47 report_name: string
48 customer_code: string
49 status: string
50 check_status_url: string
51 download_url: string
52 }>(`/vulnerabilities/reports/generate/background`, request)
53 },
54
55 /**
56 * List all vulnerability reports
57 */
58 listReports(customer_code?: string) {
59 return HttpClient.get<VulnerabilityReportListResponse>(`/vulnerabilities/reports`, {
60 params: customer_code ? { customer_code } : undefined
61 })
62 },
63
64 /**
65 * Download a vulnerability report
66 */
67 downloadReport(reportId: number) {
68 return HttpClient.get<Blob>(`/vulnerabilities/reports/${reportId}/download`, {
69 responseType: "blob"
70 })
71 },
72
73 /**
74 * Delete a vulnerability report
75 */
76 deleteReport(reportId: number) {
77 return HttpClient.delete<VulnerabilityReportDeleteResponse>(`/vulnerabilities/reports/${reportId}`)
78 }
79 }