synapse_admin_api/rooms/room_details/
v1.rs1use ruma::{
3 OwnedMxcUri, OwnedRoomAliasId, OwnedRoomId, OwnedUserId, UInt,
4 api::{auth_scheme::AccessToken, metadata, request, response},
5 events::room::{guest_access::GuestAccess, history_visibility::HistoryVisibility},
6 room::{JoinRuleKind, RoomType},
7 uint,
8};
9
10metadata! {
11 method: GET,
12 rate_limited: false,
13 authentication: AccessToken,
14 path: "/_synapse/admin/v1/rooms/{room_id}",
15}
16
17#[request]
18pub struct Request {
19 #[ruma_api(path)]
21 pub room_id: OwnedRoomId,
22}
23
24#[response]
25pub struct Response {
26 pub room_id: OwnedRoomId,
28
29 pub name: Option<String>,
31
32 pub topic: Option<String>,
34
35 pub avatar: Option<OwnedMxcUri>,
37
38 pub canonical_alias: Option<OwnedRoomAliasId>,
40
41 pub joined_members: UInt,
43
44 pub joined_local_members: UInt,
46
47 pub joined_local_devices: UInt,
49
50 pub version: Option<String>,
52
53 #[serde(deserialize_with = "ruma::serde::empty_string_as_none")]
55 pub creator: Option<OwnedUserId>,
56
57 pub encryption: Option<String>,
59
60 #[serde(deserialize_with = "crate::serde::bool_or_uint")]
62 pub federatable: bool,
63
64 #[serde(deserialize_with = "crate::serde::bool_or_uint")]
66 pub public: bool,
67
68 pub join_rules: Option<JoinRuleKind>,
70
71 pub guest_access: Option<GuestAccess>,
73
74 pub history_visibility: Option<HistoryVisibility>,
76
77 pub state_events: UInt,
79
80 pub room_type: Option<RoomType>,
82
83 #[serde(deserialize_with = "crate::serde::bool_or_uint")]
85 pub forgotten: bool,
86}
87
88impl Request {
89 pub fn new(room_id: OwnedRoomId) -> Self {
91 Self { room_id }
92 }
93}
94
95impl Response {
96 pub fn new(room_id: OwnedRoomId) -> Self {
98 Self {
99 room_id,
100 name: None,
101 topic: None,
102 avatar: None,
103 canonical_alias: None,
104 joined_members: uint!(0),
105 joined_local_members: uint!(0),
106 joined_local_devices: uint!(0),
107 version: None,
108 creator: None,
109 encryption: None,
110 federatable: false,
111 public: false,
112 join_rules: None,
113 guest_access: None,
114 history_visibility: None,
115 state_events: uint!(0),
116 room_type: None,
117 forgotten: false,
118 }
119 }
120}