main
ts 55 lines 1.71 KB
Raw
1 import type { FlaskBaseResponse } from "@/types/flask.d"
2 import type { AvailableMonitoringAlert, CustomProvisionPriority, MonitoringAlert } from "@/types/monitoringAlerts.d"
3 import { HttpClient } from "../httpClient"
4
5 export interface ProvisionsMonitoringAlertParams {
6 searchWithinLast: number
7 executeEvery: number
8 }
9
10 export interface CustomProvisionPayload {
11 alert_name: string
12 alert_description: string
13 alert_priority: CustomProvisionPriority
14 search_query: string
15 streams: string[]
16 custom_fields: {
17 name: string
18 value: string
19 }[]
20 search_within_ms: number
21 execute_every_ms: number
22 }
23
24 export default {
25 getAvailableMonitoringAlerts() {
26 return HttpClient.get<FlaskBaseResponse & { available_monitoring_alerts: AvailableMonitoringAlert[] }>(
27 `/monitoring_alert/available`
28 )
29 },
30 provisionsMonitoringAlert(alertName: string, params: ProvisionsMonitoringAlertParams) {
31 return HttpClient.post<FlaskBaseResponse>(`/monitoring_alert/provision`, {
32 search_within_last: params.searchWithinLast,
33 execute_every: params.executeEvery,
34 alert_name: alertName
35 })
36 },
37 customProvision(payload: CustomProvisionPayload) {
38 return HttpClient.post<FlaskBaseResponse>(`/monitoring_alert/provision/custom`, payload)
39 },
40 listAll(signal?: AbortSignal) {
41 return HttpClient.get<FlaskBaseResponse & { monitoring_alerts: MonitoringAlert[] }>(
42 `/monitoring_alert/list`,
43 signal ? { signal } : {}
44 )
45 },
46 invoke(alertId: number) {
47 return HttpClient.post<FlaskBaseResponse>(`/monitoring_alert/invoke/${alertId}`)
48 },
49 deleteAlert(alertId: number) {
50 return HttpClient.delete<FlaskBaseResponse>(`/monitoring_alert/single_alert/${alertId}`)
51 },
52 purge() {
53 return HttpClient.delete<FlaskBaseResponse>(`/monitoring_alert/purge`)
54 }
55 }