netbox_openapi/models/
data_source.rs

1/*
2 * NetBox REST API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 4.4.2-Docker-3.4.1 (4.4)
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11/// DataSource : Adds support for custom fields and tags.
12
13#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct DataSource {
15    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
16    pub id: Option<i32>,
17    #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
18    pub url: Option<String>,
19    #[serde(rename = "display_url", skip_serializing_if = "Option::is_none")]
20    pub display_url: Option<String>,
21    #[serde(rename = "display", skip_serializing_if = "Option::is_none")]
22    pub display: Option<String>,
23    #[serde(rename = "name")]
24    pub name: String,
25    #[serde(rename = "type")]
26    pub r#type: Box<crate::models::DataSourceType>,
27    #[serde(rename = "source_url")]
28    pub source_url: String,
29    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
30    pub enabled: Option<bool>,
31    #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
32    pub status: Option<Box<crate::models::DataSourceStatus>>,
33    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
34    pub description: Option<String>,
35    /// * `1` - Minutely * `60` - Hourly * `720` - 12 hours * `1440` - Daily * `10080` - Weekly * `43200` - 30 days
36    #[serde(
37        rename = "sync_interval",
38        default,
39        with = "::serde_with::rust::double_option",
40        skip_serializing_if = "Option::is_none"
41    )]
42    pub sync_interval: Option<Option<SyncInterval>>,
43    #[serde(
44        rename = "parameters",
45        default,
46        with = "::serde_with::rust::double_option",
47        skip_serializing_if = "Option::is_none"
48    )]
49    pub parameters: Option<Option<serde_json::Value>>,
50    /// Patterns (one per line) matching files to ignore when syncing
51    #[serde(rename = "ignore_rules", skip_serializing_if = "Option::is_none")]
52    pub ignore_rules: Option<String>,
53    #[serde(rename = "comments", skip_serializing_if = "Option::is_none")]
54    pub comments: Option<String>,
55    #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
56    pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
57    #[serde(
58        rename = "created",
59        default,
60        with = "::serde_with::rust::double_option",
61        skip_serializing_if = "Option::is_none"
62    )]
63    pub created: Option<Option<String>>,
64    #[serde(
65        rename = "last_updated",
66        default,
67        with = "::serde_with::rust::double_option",
68        skip_serializing_if = "Option::is_none"
69    )]
70    pub last_updated: Option<Option<String>>,
71    #[serde(
72        rename = "last_synced",
73        default,
74        with = "::serde_with::rust::double_option",
75        skip_serializing_if = "Option::is_none"
76    )]
77    pub last_synced: Option<Option<String>>,
78    #[serde(rename = "file_count", skip_serializing_if = "Option::is_none")]
79    pub file_count: Option<i64>,
80}
81
82impl DataSource {
83    /// Adds support for custom fields and tags.
84    pub fn new(
85        name: String,
86        r#type: crate::models::DataSourceType,
87        source_url: String,
88    ) -> DataSource {
89        DataSource {
90            id: None,
91            url: None,
92            display_url: None,
93            display: None,
94            name,
95            r#type: Box::new(r#type),
96            source_url,
97            enabled: None,
98            status: None,
99            description: None,
100            sync_interval: None,
101            parameters: None,
102            ignore_rules: None,
103            comments: None,
104            custom_fields: None,
105            created: None,
106            last_updated: None,
107            last_synced: None,
108            file_count: None,
109        }
110    }
111}
112
113/// * `1` - Minutely * `60` - Hourly * `720` - 12 hours * `1440` - Daily * `10080` - Weekly * `43200` - 30 days
114#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
115pub enum SyncInterval {
116    #[serde(rename = "1")]
117    Variant1,
118    #[serde(rename = "60")]
119    Variant60,
120    #[serde(rename = "720")]
121    Variant720,
122    #[serde(rename = "1440")]
123    Variant1440,
124    #[serde(rename = "10080")]
125    Variant10080,
126    #[serde(rename = "43200")]
127    Variant43200,
128    #[serde(rename = "null")]
129    Null,
130}
131
132impl Default for SyncInterval {
133    fn default() -> SyncInterval {
134        Self::Variant1
135    }
136}