security_client_rs/fleet/
enrollment.rs1use std::fmt;
3
4use serde::Deserialize;
5use serde_json::Value;
6
7use super::{Fleet, FleetPage, Item};
8use crate::{Scope, http::Method, pagination::paginated, request::endpoint};
9
10#[derive(Clone, Deserialize)]
13#[non_exhaustive]
14pub struct EnrollmentKey {
15 pub id: String,
17 pub api_key_id: String,
18 pub api_key: String,
20 pub active: bool,
21 #[serde(default)]
22 pub policy_id: Option<String>,
23 #[serde(default)]
24 pub name: Option<String>,
25 #[serde(default)]
26 pub expire_at: Option<String>,
27}
28
29impl fmt::Debug for EnrollmentKey {
30 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31 f.debug_struct("EnrollmentKey")
32 .field("id", &self.id)
33 .field("active", &self.active)
34 .field("api_key", &"[redacted]")
35 .finish_non_exhaustive()
36 }
37}
38
39impl<'a> Fleet<'a> {
40 pub fn find_enrollment_keys(&self) -> FindEnrollmentKeys<'a> {
41 FindEnrollmentKeys(self.0.request(
42 Method::GET,
43 Scope::Space,
44 &["api", "fleet", "enrollment_api_keys"],
45 ))
46 }
47
48 pub fn get_enrollment_key(&self, id: &str) -> GetEnrollmentKey<'a> {
49 GetEnrollmentKey(self.0.request(
50 Method::GET,
51 Scope::Space,
52 &["api", "fleet", "enrollment_api_keys", id],
53 ))
54 }
55
56 pub fn create_enrollment_key(&self, policy_id: &str) -> CreateEnrollmentKey<'a> {
57 CreateEnrollmentKey(
58 self.0
59 .request(
60 Method::POST,
61 Scope::Space,
62 &["api", "fleet", "enrollment_api_keys"],
63 )
64 .nonempty("policy_id", policy_id)
65 .field("policy_id", policy_id),
66 )
67 }
68
69 pub fn revoke_enrollment_key(&self, id: &str) -> RevokeEnrollmentKey<'a> {
71 RevokeEnrollmentKey(self.0.request(
72 Method::DELETE,
73 Scope::Space,
74 &["api", "fleet", "enrollment_api_keys", id],
75 ))
76 }
77}
78
79endpoint! {
80 FindEnrollmentKeys => FleetPage<EnrollmentKey>
82}
83
84endpoint! {
85 GetEnrollmentKey => Item<EnrollmentKey>
87}
88
89endpoint! {
90 CreateEnrollmentKey => Item<EnrollmentKey>
92}
93
94impl CreateEnrollmentKey<'_> {
95 pub fn name(self, name: &str) -> Self {
96 Self(self.0.field("name", name))
97 }
98
99 pub fn expiration(self, duration: &str) -> Self {
101 Self(self.0.field("expiration", duration))
102 }
103}
104
105endpoint! {
106 RevokeEnrollmentKey => Value
108}
109
110page_setters!(FindEnrollmentKeys);
111paginated!(FindEnrollmentKeys => FleetPage<EnrollmentKey>);