nomad_client_rs/api/
acl.rs1use reqwest::Method;
2
3use crate::api::acl::models::{AclTokenCreateRequest, AclTokenUpdateRequest, AclTokensListParams};
4use crate::models::acl_token::AclToken;
5use crate::{ClientError, NomadClient};
6
7impl NomadClient {
8 pub async fn acl_tokens_list(
9 &self,
10 params: &AclTokensListParams,
11 ) -> Result<Vec<AclToken>, ClientError> {
12 let req = self.request(Method::GET, "/acl/tokens").query(params);
13
14 self.send::<Vec<AclToken>>(req).await
15 }
16
17 pub async fn acl_token_create(
18 &self,
19 req: &AclTokenCreateRequest,
20 ) -> Result<AclToken, ClientError> {
21 let req = self.request(Method::POST, "/acl/token").json(req);
22
23 self.send::<AclToken>(req).await
24 }
25
26 pub async fn acl_token_update(
27 &self,
28 accessor_id: String,
29 req: &AclTokenUpdateRequest,
30 ) -> Result<AclToken, ClientError> {
31 let req = self
32 .request(Method::POST, &format!("/acl/token/{}", accessor_id))
33 .json(req);
34
35 self.send::<AclToken>(req).await
36 }
37
38 pub async fn acl_token_read(&self, accessor_id: String) -> Result<AclToken, ClientError> {
39 let req = self.request(Method::GET, &format!("/acl/token/{}", accessor_id));
40
41 self.send::<AclToken>(req).await
42 }
43
44 pub async fn acl_token_read_self(&self) -> Result<AclToken, ClientError> {
45 let req = self.request(Method::GET, "/acl/token/self");
46
47 self.send::<AclToken>(req).await
48 }
49
50 pub async fn acl_token_delete(&self, accessor_id: String) -> Result<(), ClientError> {
51 let req = self.request(Method::DELETE, &format!("/acl/token/{}", accessor_id));
52
53 self.send_plain(req).await.map(|_| ())
54 }
55}
56
57pub mod models {
58 use serde::Serialize;
59
60 #[derive(Debug, Default, Serialize)]
61 #[serde(rename_all = "camelCase")]
62 pub struct AclTokensListParams {
63 pub global: Option<bool>,
64 pub prefix: Option<String>,
65 #[serde(rename = "next_token")]
66 pub next_token: Option<String>,
67 #[serde(rename = "per_page")]
68 pub per_page: Option<u64>,
69 pub filter: Option<String>,
70 pub reverse: Option<bool>,
71 }
72
73 #[derive(Debug, Serialize)]
74 #[serde(rename_all = "camelCase")]
75 pub struct AclTokenCreateRequest {
76 pub name: Option<String>,
77 pub r#type: AclTokenType,
78 pub policies: Vec<String>,
79 pub global: bool,
80 pub expiration_time: Option<String>,
81 pub expiration_ttl: Option<i64>,
82 }
83
84 #[derive(Debug, Serialize)]
85 #[serde(rename_all = "camelCase")]
86 pub struct AclTokenUpdateRequest {
87 #[serde(rename = "AccessorID")]
88 pub accessor_id: String,
89 pub name: Option<String>,
90 pub r#type: AclTokenType,
91 pub policies: Vec<String>,
92 }
93
94 #[derive(Clone, Debug, Serialize)]
95 #[serde(rename_all = "camelCase")]
96 pub enum AclTokenType {
97 Client,
98 Management,
99 }
100}