kuma_client/models/
tag.rs

1//! Models related to Uptime Kuma tags
2
3use crate::deserialize::DeserializeNumberLenient;
4use serde::{Deserialize, Serialize};
5use serde_with::{serde_as, skip_serializing_none};
6
7#[skip_serializing_none]
8#[serde_as]
9#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
10pub struct TagDefinition {
11    #[serde(rename = "id")]
12    #[serde_as(as = "Option<DeserializeNumberLenient>")]
13    pub tag_id: Option<i32>,
14
15    #[serde(rename = "name")]
16    pub name: Option<String>,
17
18    #[serde(rename = "color")]
19    pub color: Option<String>,
20}
21
22#[skip_serializing_none]
23#[serde_as]
24#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
25pub struct Tag {
26    #[serde(rename = "tag_id")]
27    #[serde_as(as = "Option<DeserializeNumberLenient>")]
28    pub tag_id: Option<i32>,
29
30    #[serde(rename = "name")]
31    pub name: Option<String>,
32
33    #[serde(rename = "color")]
34    pub color: Option<String>,
35
36    #[serde(rename = "value")]
37    pub value: Option<String>,
38}
39
40impl From<TagDefinition> for Tag {
41    fn from(value: TagDefinition) -> Self {
42        Tag {
43            name: value.name,
44            color: value.color,
45            tag_id: value.tag_id,
46            value: None,
47        }
48    }
49}
50
51impl From<Tag> for TagDefinition {
52    fn from(value: Tag) -> Self {
53        TagDefinition {
54            tag_id: value.tag_id,
55            name: value.name,
56            color: value.color,
57        }
58    }
59}
60
61#[cfg(feature = "private-api")]
62#[skip_serializing_none]
63#[serde_as]
64#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
65pub struct TagValue {
66    #[serde(rename = "name")]
67    pub name: String,
68
69    #[serde(rename = "value")]
70    pub value: Option<String>,
71}