diff --git a/CHANGELOG.md b/CHANGELOG.md index 61e90397..d811a283 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Improvements: * Add `r0::device` endpoints * Add `r0::room::get_room_event` (introduced in r0.4.0) +* Add `r0::read_marker::set_read_marker` (introduced in r0.4.0) # 0.5.0 diff --git a/src/r0.rs b/src/r0.rs index 68d5a76f..cf8718c4 100644 --- a/src/r0.rs +++ b/src/r0.rs @@ -15,6 +15,7 @@ pub mod message; pub mod presence; pub mod profile; pub mod push; +pub mod read_marker; pub mod receipt; pub mod redact; pub mod room; diff --git a/src/r0/read_marker.rs b/src/r0/read_marker.rs new file mode 100644 index 00000000..7b9e14c3 --- /dev/null +++ b/src/r0/read_marker.rs @@ -0,0 +1,3 @@ +//! Endpoints for "fully read markers" + +pub mod set_read_marker; diff --git a/src/r0/read_marker/set_read_marker.rs b/src/r0/read_marker/set_read_marker.rs new file mode 100644 index 00000000..e7dbd31d --- /dev/null +++ b/src/r0/read_marker/set_read_marker.rs @@ -0,0 +1,35 @@ +//! [POST /_matrix/client/r0/rooms/{roomId}/read_markers](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-rooms-roomid-read-markers) + +use ruma_api::ruma_api; +use ruma_identifiers::{EventId, RoomId}; + +ruma_api! { + metadata { + description: "Sets the position of the read marker for a given room, and optionally the read receipt's location.", + method: POST, + name: "set_read_marker", + path: "/_matrix/client/r0/rooms/:room_id/read_markers", + rate_limited: true, + requires_authentication: true, + } + + request { + /// The room ID to set the read marker in for the user. + #[ruma_api(path)] + pub room_id: RoomId, + + /// The event ID the read marker should be located at. + /// The event MUST belong to the room. + #[serde(rename = "m.fully_read")] + pub fully_read: EventId, + + /// The event ID to set the read receipt location at. + /// This is equivalent to calling the create_read_receipt endpoint and is + /// provided here to save that extra call. + #[serde(rename = "m.read", skip_serializing_if = "Option::is_none")] + pub read_receipt: Option, + + } + + response {} +}