From 361fe1d2b5888c5eaf019370377c693f130206c7 Mon Sep 17 00:00:00 2001 From: Vincent Stuyck Date: Sat, 20 Dec 2025 23:25:48 +0100 Subject: [PATCH] add schemars feature --- Cargo.lock | 373 +++++++++++++++++++++++++++++++++ Cargo.toml | 5 + src/api/folders.rs | 13 ++ src/api/hosts.rs | 10 + src/api/rules/contactgroups.rs | 4 + src/api/rules/snmp.rs | 8 + 6 files changed, 413 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 1c69b39..83ef160 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,35 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "serde", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -40,18 +69,45 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +[[package]] +name = "borrow-or-share" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" + [[package]] name = "bumpalo" version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "bytes" version = "1.11.0" @@ -86,8 +142,10 @@ version = "0.1.0" dependencies = [ "async-trait", "chrono", + "jsonschema", "log", "reqwest", + "schemars", "secrecy", "serde", "serde_json", @@ -126,6 +184,12 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "deranged" version = "0.5.5" @@ -146,6 +210,21 @@ dependencies = [ "syn", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "email_address" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" +dependencies = [ + "serde", +] + [[package]] name = "encoding_rs" version = "0.8.35" @@ -171,6 +250,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "fancy-regex" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -183,12 +273,29 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +[[package]] +name = "fluent-uri" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e" +dependencies = [ + "borrow-or-share", + "ref-cast", + "serde", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -213,6 +320,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fraction" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f158e3ff0a1b334408dc9fb811cd99b446986f4d8b741bb08f9df1604085ae7" +dependencies = [ + "lazy_static", + "num", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -220,6 +337,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -228,6 +346,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + [[package]] name = "futures-sink" version = "0.3.31" @@ -247,9 +371,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", + "futures-io", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -303,6 +431,11 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "http" @@ -592,6 +725,40 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonschema" +version = "0.37.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c9ffb2b5c56d58030e1b532d8e8389da94590515f118cf35b5cb68e4764a7e" +dependencies = [ + "ahash", + "bytecount", + "data-encoding", + "email_address", + "fancy-regex", + "fraction", + "getrandom 0.3.4", + "idna", + "itoa", + "num-cmp", + "num-traits", + "percent-encoding", + "referencing", + "regex", + "regex-syntax", + "reqwest", + "serde", + "serde_json", + "unicode-general-category", + "uuid-simd", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.178" @@ -671,12 +838,82 @@ dependencies = [ "tempfile", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-cmp" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -745,6 +982,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "outref" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" + [[package]] name = "parking_lot" version = "0.12.5" @@ -933,6 +1176,70 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "referencing" +version = "0.37.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4283168a506f0dcbdce31c9f9cce3129c924da4c6bca46e46707fcb746d2d70c" +dependencies = [ + "ahash", + "fluent-uri", + "getrandom 0.3.4", + "hashbrown", + "parking_lot", + "percent-encoding", + "serde_json", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + [[package]] name = "reqwest" version = "0.12.26" @@ -942,7 +1249,9 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", + "futures-util", "h2", "http", "http-body", @@ -1066,6 +1375,31 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "schemars" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +dependencies = [ + "dyn-clone", + "ref-cast", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -1135,6 +1469,17 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "serde_json" version = "1.0.145" @@ -1503,6 +1848,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "unicode-general-category" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" + [[package]] name = "unicode-ident" version = "1.0.22" @@ -1533,12 +1884,34 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8" +dependencies = [ + "outref", + "vsimd", +] + [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + [[package]] name = "want" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index f2b5785..aac251e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,11 +9,16 @@ authors = [ [dependencies] async-trait = "0.1.89" chrono = { version = "0.4.42", features = ["serde"] } +jsonschema = { version = "0.37.4", optional = true } log = "0.4.29" reqwest = { version = "0.12.26", features = ["json", "rustls-tls"] } +schemars = { version = "1.1.0", optional = true } secrecy = { version = "0.10.3", features = ["serde"] } serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0.145" simplelog = "0.12.2" thiserror = "2.0.17" tokio = { version = "1.48.0", features = ["full"] } + +[features] +schemars = ["dep:schemars"] diff --git a/src/api/folders.rs b/src/api/folders.rs index d378b0a..d70b964 100644 --- a/src/api/folders.rs +++ b/src/api/folders.rs @@ -5,6 +5,9 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_json::Value; +#[cfg(feature = "schemars")] +use schemars::JsonSchema; + use crate::api::rules::contactgroups::HostContactGroups; use crate::api::rules::snmp::SnmpCommunity; use crate::api::{BulkReadDomainExtension, BulkUpdateDomainExtension, DomainExtension}; @@ -19,12 +22,14 @@ impl Client { } #[derive(Debug, Default, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderConfig { pub path: String, pub attributes: FolderAttributes, } #[derive(Debug, Default, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderAttributes { #[serde(default, skip_serializing_if = "Option::is_none")] pub site: Option, @@ -121,6 +126,7 @@ impl FolderAttributes { } #[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct MetaData { pub created_at: DateTime, pub updated_at: DateTime, @@ -139,6 +145,7 @@ impl DomainExtension for FolderConfig { } #[derive(Debug, Default, Clone, Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderCreationRequest { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, @@ -176,6 +183,7 @@ impl FolderCreationRequest { } #[derive(Debug, Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderUpdateRequest { #[serde(skip_serializing_if = "Option::is_none")] pub title: Option, @@ -231,6 +239,7 @@ impl FolderUpdateRequest { } #[derive(Debug, Default, Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderDeleteQuery { pub delete_mode: FolderDeleteMode, } @@ -242,6 +251,7 @@ impl FolderDeleteQuery { } #[derive(Debug, Default, Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] #[serde(rename_all = "snake_case")] pub enum FolderDeleteMode { #[default] @@ -254,6 +264,7 @@ impl BulkReadDomainExtension for FolderConfig { } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderBulkReadQuery { pub parent: String, pub recursive: bool, @@ -270,6 +281,7 @@ impl BulkUpdateDomainExtension for FolderConfig { } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct FolderBulkUpdateRequest { folder: String, #[serde(flatten)] @@ -286,6 +298,7 @@ impl FolderBulkUpdateRequest { } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct MoveFolderRequest { destination: String, } diff --git a/src/api/hosts.rs b/src/api/hosts.rs index 48ff3ea..2099fc6 100644 --- a/src/api/hosts.rs +++ b/src/api/hosts.rs @@ -1,6 +1,8 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use serde::{Deserialize, Serialize}; +#[cfg(feature = "schemars")] +use schemars::JsonSchema; use crate::api::folders::FolderAttributes; use crate::api::{ @@ -16,6 +18,7 @@ impl Client { } #[derive(Debug, Default, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostConfig { pub folder: String, pub attributes: HostAttributes, @@ -27,6 +30,7 @@ pub struct HostConfig { #[derive(Debug, Default, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostAttributes { #[serde(default)] alias: Option, @@ -54,20 +58,24 @@ impl DomainExtension for HostConfig { } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostCreationRequest { pub host_name: String, pub folder: String, pub attributes: FolderAttributes, } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostCreationQuery { pub bake_agent: bool, } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostReadQuery { pub effective_attributes: bool, } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostUpdateRequest { #[serde(skip_serializing_if = "Option::is_none")] pub attributes: Option, @@ -135,6 +143,7 @@ impl BulkUpdateDomainExtension for HostConfig { impl BulkDeleteDomainExtension for HostConfig {} #[derive(Debug, Default, Clone, Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostBulkReadQuery { effective_attributes: bool, #[serde(skip_serializing_if = "Option::is_none")] @@ -192,6 +201,7 @@ impl HostBulkReadQuery { } #[derive(Serialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostBulkUpdateRequest { host_name: String, #[serde(flatten)] diff --git a/src/api/rules/contactgroups.rs b/src/api/rules/contactgroups.rs index 9ff31ed..cec3aa8 100644 --- a/src/api/rules/contactgroups.rs +++ b/src/api/rules/contactgroups.rs @@ -1,6 +1,10 @@ use serde::{Deserialize, Serialize}; +#[cfg(feature = "schemars")] +use schemars::JsonSchema; + #[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct HostContactGroups { groups: Vec, r#use: bool, diff --git a/src/api/rules/snmp.rs b/src/api/rules/snmp.rs index a58a6ff..4e95ec7 100644 --- a/src/api/rules/snmp.rs +++ b/src/api/rules/snmp.rs @@ -1,6 +1,10 @@ use serde::{Deserialize, Serialize}; +#[cfg(feature = "schemars")] +use schemars::JsonSchema; + #[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub enum SnmpV3AuthProtocol { #[serde(rename = "MD5-96")] Md5, @@ -17,6 +21,7 @@ pub enum SnmpV3AuthProtocol { } #[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct SnmpV3Auth { pub auth_protocol: SnmpV3AuthProtocol, pub security_name: String, @@ -24,6 +29,7 @@ pub struct SnmpV3Auth { } #[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub enum SnmpV3PrivProtocol { #[serde(rename = "CBC-DES")] Des, @@ -42,12 +48,14 @@ pub enum SnmpV3PrivProtocol { } #[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] pub struct SnmpV3Priv { pub privacy_protocol: SnmpV3PrivProtocol, pub privacy_password: String, } #[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "schemars", derive(JsonSchema))] #[serde(tag = "type")] pub enum SnmpCommunity { V1V2Community {