diff --git a/ruma-appservice-api/CHANGELOG.md b/ruma-appservice-api/CHANGELOG.md index 0b93c2da..2b46d1f3 100644 --- a/ruma-appservice-api/CHANGELOG.md +++ b/ruma-appservice-api/CHANGELOG.md @@ -1,5 +1,9 @@ # [unreleased] +Improvements: + +* Add room visibility management endpoint + Breaking changes: * Fix endpoint versioning diff --git a/ruma-appservice-api/src/directory.rs b/ruma-appservice-api/src/directory.rs new file mode 100644 index 00000000..a64a2492 --- /dev/null +++ b/ruma-appservice-api/src/directory.rs @@ -0,0 +1,3 @@ +//! Endpoints to manage public room directories. + +pub mod set_room_visibility; diff --git a/ruma-appservice-api/src/directory/set_room_visibility.rs b/ruma-appservice-api/src/directory/set_room_visibility.rs new file mode 100644 index 00000000..6419c687 --- /dev/null +++ b/ruma-appservice-api/src/directory/set_room_visibility.rs @@ -0,0 +1,30 @@ +//! [PUT /_matrix/client/r0/directory/list/appservice/{networkId}/{roomId}](https://matrix.org/docs/spec/application_service/r0.1.2#put-matrix-client-r0-directory-list-appservice-networkid-roomid) + +use ruma_api::ruma_api; +use ruma_identifiers::RoomId; + +ruma_api! { + metadata: { + description: "Updates the visibility of a given room on the application service's room directory.", + method: PUT, + name: "set_room_visibility", + path: "/_matrix/client/r0/directory/list/appservice/:network_id/:room_id", + rate_limited: false, + authentication: QueryOnlyAccessToken, + } + + request: { + /// The protocol (network) ID to update the room list for. + #[ruma_api(path)] + pub network_id: String, + + /// Room ID of the room to add or remove from the directory. + #[ruma_api(path)] + pub room_id: RoomId, + + /// Whether the room should be visible (public) in the directory or not (private). + pub visibility: Visibility, + } + + response: {} +}