This repo contains the code for an unofficial, third-party Zulip API client library crate written in the Rust programming language. This library maps Zulip API endpoints into a set of modules that can be used in a Rust project.
TODO: How to add to crate to Cargo.toml.
use zulip_api_rust_client::client::{ZulipCredentials, ZulipClient};
#[tokio::main]
async fn main() {
let auth = ZulipCredentials::new(
"USER_OR_BOT_EMAIL".to_string(),
"API_KEY".to_string()
);
let zulip_client = ZulipClient::new("REALM_URL".to_string(), auth);
zulip_client.messages()
.get_message(42)
.send()
.await;
}
PR's are welcome including documentation, typo corrections, tests, feedback, etc. There are many endpoints that have not been fully implemented and they can make for great practical learning oppunitunies (aka good first issues)
please note: I am a beginner in Rust so it may take me some time to review any PR's and provide helpful feedback or insight
- send a message
- upload a file
- edit a message
- delete a message
- get messages
- construct a narrow
- add an emoji reaction
- remove an emoji reaction
- render a message
- fetch a single message
- check if messages match narrow
- get a message's edit history
- update personal message flags
- mark messages as read in bulk
- get drafts
- create drafts
- edit a draft
- delete a draft
- get subscribed streams
- subscribe to a stream
- unsubscribe from a stream
- get subscription
- update subscription settings
- get all streams
- get a stream by ID
- get stream ID
- create a stream
- update a stream
- archive a stream
- get topics in a stream
- topic muting
- delete a topic
- add a default stream
- remove a default stream
- get all users
- get own user
- get a user
- get a user by email
- update a user
- update your status
- create a user
- deactivate a user
- reactivate a user
- deactivate own user
- set "typing" status
- get user presence
- get presence of all users
- get attachments
- delete an attachment
- update settings
- get user groups
- create a user group
- update a user group
- delete a user group
- update user group members
- update user group subgroups
- get user group membership status
- get user group members
- get subgroups of user group
- mute a user
- unmute a user
The design of this library was and is inspired by Octocrab