1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct Role {
6 pub id: String,
7 pub name: String,
8 pub membership_id: String,
9 pub permissions: Vec<String>,
10 pub is_predefined: bool,
11 pub created_at: DateTime<Utc>,
12 #[serde(default, skip_serializing_if = "Option::is_none")]
13 pub updated_at: Option<DateTime<Utc>>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct CreateRoleRequest {
18 pub name: String,
19 pub permissions: Vec<String>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct UpdateRoleRequest {
24 pub name: String,
25 pub permissions: Vec<String>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct RoleListResponse {
30 pub roles: Vec<Role>,
31}