reduct_base/msg/
token_api.rs1use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
9pub struct Permissions {
10 #[serde(default)]
12 pub full_access: bool,
13 #[serde(default)]
15 pub read: Vec<String>,
16 #[serde(default)]
18 pub write: Vec<String>,
19}
20
21#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
23pub struct Token {
24 pub name: String,
26 pub value: String,
28 pub created_at: DateTime<Utc>,
30 pub permissions: Option<Permissions>,
32 pub is_provisioned: bool,
34 pub expires_at: Option<DateTime<Utc>>,
36 #[serde(default)]
38 pub ttl: Option<u64>,
39 pub last_access: Option<DateTime<Utc>>,
41 #[serde(default)]
44 pub ip_allowlist: Vec<String>,
45 #[serde(default)]
47 pub is_expired: bool,
48}
49#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
51pub struct TokenCreateRequest {
52 pub permissions: Permissions,
53 #[serde(default)]
54 pub expires_at: Option<DateTime<Utc>>,
55 #[serde(default)]
56 pub ttl: Option<u64>,
57 #[serde(default)]
58 pub ip_allowlist: Vec<String>,
59}
60
61#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
63pub struct TokenCreateResponse {
64 pub value: String,
65 pub created_at: DateTime<Utc>,
66}
67
68#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
70pub struct TokenList {
71 pub tokens: Vec<Token>,
72}