//! Endpoints for push notifications. use ruma_common::{push::PusherData, StringEnum}; use serde::{Deserialize, Serialize}; pub mod delete_pushrule; pub mod get_notifications; pub mod get_pushers; pub mod get_pushrule; pub mod get_pushrule_actions; pub mod get_pushrule_enabled; pub mod get_pushrules_all; pub mod get_pushrules_global_scope; pub mod set_pusher; pub mod set_pushrule; pub mod set_pushrule_actions; pub mod set_pushrule_enabled; /// The kinds of push rules that are available #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, StringEnum)] #[ruma_enum(rename_all = "snake_case")] pub enum RuleKind { /// User-configured rules that override all other kinds Override, /// Lowest priority user-defined rules Underride, /// Sender-specific rules Sender, /// Room-specific rules Room, /// Content-specific rules Content, #[doc(hidden)] _Custom(String), } /// Defines a pusher #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Pusher { /// This is a unique identifier for this pusher. Max length, 512 bytes. pub pushkey: String, /// The kind of the pusher. If set to None in a call to set_pusher, this /// will delete the pusher pub kind: Option, /// This is a reverse-DNS style identifier for the application. Max length, 64 chars. pub app_id: String, /// A string that will allow the user to identify what application owns this pusher. pub app_display_name: String, /// A string that will allow the user to identify what device owns this pusher. pub device_display_name: String, /// This string determines which set of device specific rules this pusher executes. #[serde(skip_serializing_if = "Option::is_none")] pub profile_tag: Option, /// The preferred language for receiving notifications (e.g. 'en' or 'en-US') pub lang: String, /// Information for the pusher implementation itself. pub data: PusherData, } /// Which kind a pusher is #[derive(Clone, Debug, PartialEq, Eq, StringEnum)] #[ruma_enum(rename_all = "snake_case")] pub enum PusherKind { /// A pusher that sends HTTP pokes. Http, /// A pusher that emails the user with unread notifications. Email, #[doc(hidden)] _Custom(String), }