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)]
27 pub expire_at: Option<String>,
28}
29
30impl fmt::Debug for EnrollmentKey {
31 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32 f.debug_struct("EnrollmentKey")
33 .field("id", &self.id)
34 .field("active", &self.active)
35 .field("api_key", &"[redacted]")
36 .finish_non_exhaustive()
37 }
38}
39
40impl<'a> Fleet<'a> {
41 pub fn find_enrollment_keys(&self) -> FindEnrollmentKeys<'a> {
42 FindEnrollmentKeys(self.0.request(
43 Method::GET,
44 Scope::Space,
45 &["api", "fleet", "enrollment_api_keys"],
46 ))
47 }
48
49 pub fn get_enrollment_key(&self, id: &str) -> GetEnrollmentKey<'a> {
50 GetEnrollmentKey(self.0.request(
51 Method::GET,
52 Scope::Space,
53 &["api", "fleet", "enrollment_api_keys", id],
54 ))
55 }
56
57 pub fn create_enrollment_key(&self, policy_id: &str) -> CreateEnrollmentKey<'a> {
58 CreateEnrollmentKey(
59 self.0
60 .request(
61 Method::POST,
62 Scope::Space,
63 &["api", "fleet", "enrollment_api_keys"],
64 )
65 .nonempty("policy_id", policy_id)
66 .field("policy_id", policy_id),
67 )
68 }
69
70 pub fn revoke_enrollment_key(&self, id: &str) -> RevokeEnrollmentKey<'a> {
72 RevokeEnrollmentKey(self.0.request(
73 Method::DELETE,
74 Scope::Space,
75 &["api", "fleet", "enrollment_api_keys", id],
76 ))
77 }
78}
79
80endpoint! {
81 FindEnrollmentKeys => FleetPage<EnrollmentKey>
83}
84
85endpoint! {
86 GetEnrollmentKey => Item<EnrollmentKey>
88}
89
90endpoint! {
91 CreateEnrollmentKey => Item<EnrollmentKey>
93}
94
95impl CreateEnrollmentKey<'_> {
96 pub fn name(self, name: &str) -> Self {
97 Self(self.0.field("name", name))
98 }
99
100 pub fn expiration(self, duration: &str) -> Self {
102 Self(self.0.field("expiration", duration))
103 }
104}
105
106endpoint! {
107 RevokeEnrollmentKey => Value
109}
110
111page_setters!(FindEnrollmentKeys);
112paginated!(FindEnrollmentKeys => FleetPage<EnrollmentKey>);