bestool_alertd/http_server/
types.rs

1use 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}