bestool_alertd/http_server/
types.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, facet::Facet)]
4pub struct StatusResponse {
5 pub name: String,
6 pub version: String,
7 pub started_at: String,
8 pub pid: u32,
9}
10
11#[derive(Deserialize)]
12pub struct AlertRequest {
13 pub message: String,
14 #[serde(default)]
15 pub subject: Option<String>,
16 #[serde(flatten)]
17 pub custom: serde_json::Value,
18}
19
20#[derive(Deserialize, facet::Facet)]
21pub struct PauseAlertRequest {
22 pub alert: String,
23 pub until: String,
24}
25
26#[derive(Serialize, Deserialize, facet::Facet)]
27pub struct ValidationResponse {
28 pub valid: bool,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub error: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub error_location: Option<ErrorLocation>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub info: Option<ValidationInfo>,
35}
36
37#[derive(Serialize, Deserialize, facet::Facet)]
38pub struct ErrorLocation {
39 pub line: usize,
40 pub column: usize,
41 pub path: String,
42}
43
44#[derive(Serialize, Deserialize, facet::Facet)]
45pub struct ValidationInfo {
46 pub enabled: bool,
47 pub interval: String,
48 pub source_type: String,
49 pub targets: usize,
50}
51
52#[derive(Debug, Deserialize, facet::Facet)]
53pub struct AlertsQuery {
54 #[serde(default)]
55 pub detail: bool,
56}
57
58#[derive(Debug, Serialize, Deserialize, facet::Facet)]
59pub struct AlertStateInfo {
60 pub path: String,
61 pub enabled: bool,
62 pub interval: String,
63 pub triggered_at: Option<String>,
64 pub last_sent_at: Option<String>,
65 pub paused_until: Option<String>,
66 pub always_send: String,
67}