{"id":22526218,"url":"https://github.com/harmony-development/harmony_rust_sdk","last_synced_at":"2025-08-03T22:30:44.431Z","repository":{"id":38454627,"uuid":"322933172","full_name":"harmony-development/harmony_rust_sdk","owner":"harmony-development","description":"Rust implementation of the Harmony chat protocol.","archived":false,"fork":false,"pushed_at":"2023-03-13T12:00:27.000Z","size":33855,"stargazers_count":9,"open_issues_count":15,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-14T14:17:27.842Z","etag":null,"topics":["api-bindings","chat","client","harmony","harmony-chat-protocol","harmony-protocol","protocol","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harmony-development.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-19T20:33:31.000Z","updated_at":"2024-04-04T09:09:11.000Z","dependencies_parsed_at":"2023-02-18T13:00:57.923Z","dependency_job_id":null,"html_url":"https://github.com/harmony-development/harmony_rust_sdk","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmony-development%2Fharmony_rust_sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmony-development%2Fharmony_rust_sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmony-development%2Fharmony_rust_sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmony-development%2Fharmony_rust_sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harmony-development","download_url":"https://codeload.github.com/harmony-development/harmony_rust_sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228566990,"owners_count":17937986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-bindings","chat","client","harmony","harmony-chat-protocol","harmony-protocol","protocol","rust"],"created_at":"2024-12-07T06:14:18.426Z","updated_at":"2024-12-07T06:14:19.208Z","avatar_url":"https://github.com/harmony-development.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub Workflow Status](https://img.shields.io/github/workflow/status/yusdacra/harmony_rust_sdk/Rust)\n[![crates.io](https://img.shields.io/crates/v/harmony_rust_sdk)](https://crates.io/crates/harmony_rust_sdk)\n[![docs.rs](https://docs.rs/harmony_rust_sdk/badge.svg)](https://docs.rs/harmony_rust_sdk)\n[![docs.rs](https://img.shields.io/badge/docs-master-blue)](https://harmonyapp.io/harmony_rust_sdk)\n![MSRV](https://img.shields.io/badge/MSRV-current%20stable-red)\n\nRust implementation of [the Harmony chat protocol](https://github.com/harmony-development).\nCurrently implements a lightweight client and a client API (powered by [hrpc](https://crates.io/crates/hrpc)),\nalong with auto generated API via [hrpc-build](https://crates.io/crates/hrpc-build).\n\n## Requirements\n\n- Latest stable Rust and Cargo.\n- If you are using Nix, `nix-shell` (or `nix develop` if you use flakes) should\nget you covered.\n- Otherwise, you'll need to get protobuf and make sure `protoc` is in your `PATH`\nenv variable.\n  - If for some reason `build.rs` fails, make sure to set:\n    - `PROTOC` env variable to your `protoc` executable\n    - and `PROTOC_INCLUDE` env variable to wherever protobuf include files are\n    located, most likely in `/usr/share/include`.\n\n## Examples\n\n- `message_log`: Showcases a simple message log bot that operates in a guild.\nIt will log messages to the console whenever someone posts a message.\n- Bot run instructions:\n  - Run bots with `GUILD_INVITE=invite cargo run --package example_name`.\n  - Make sure the bot has necessary permissions to view channels / send messages etc.\n\n## Crate features\n\n- By default, only a bare-bones common API types used in Harmony is generated.\nYou can customize the crate to your needs by enabling feature(s) listed below:\n  - Enable `gen_all_protocols` to enable all protocols, stable and staging.\n  - Enable `rkyv` feature to derive `rkyv::{Archive, Deserialize, Serialize}`\n  for all Harmony API types (except the `batch` service).\n    - Enable `rkyv_validation` to derive `bytecheck::CheckBytes` for all Harmony\n    API types and enable `rkyv/validation`.\n  - Enable `serde_derive` feature to derive `serde::{Deserialize, Serialize}`\n  for all Harmony API types (except the `batch` service).\n  - Enable `valuable` feature to derive `valuable::Valuable` for all Harmony\n  API types (except the `batch` service).\n  - customizing hRPC codegen:\n    - Enable the `gen_client` feature to generate client service code for\n    enabled protocols.\n    - Enable the `gen_server` feature to generate server service code for\n    enabled protocols.\n  - Client:\n    - Enable the `client_native` feature for a lightweight client implementation\n    that uses `hyper` and works on native platforms.\n    - Enable the `client_web` feature for a lightweight client implementation that\n    works on web platforms (WASM).\n    - Enable the `client_backoff` feature to enable request retrying on ratelimited\n    requests.\n  - Stable protocols (enable `gen_stable_protocols` for all):\n    - Enable the `gen_chat` feature to generate chat service code.\n    - Enable the `gen_auth` feature to generate auth service code.\n    - Enable the `gen_mediaproxy` feature to generate media proxy service code.\n    - Enable the `gen_harmonytypes` feature to generate common Harmony types.\n    - Enable the `gen_sync` feature to generate sync service code.\n    - Enable the `gen_emote` feature to generate emote service code.\n    - Enable the `gen_profile` feature to generate profile service code.\n    - Enable the `gen_batch` feature to generate batch service code.\n    - Enable the `rest` feature to include REST API code.\n  - Staging protocols (enable `gen_staging_protocols` for all):\n    - Enable the `staging_gen_voice` feature to generate voice service code.\n    - Enable the `staging_gen_bots` feature to generate bots service code.\n\n## MSRV\n\nMinimum Supported Rust Version: current stable.\n\nChanging MSRV is not considered a semver-breaking change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmony-development%2Fharmony_rust_sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharmony-development%2Fharmony_rust_sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmony-development%2Fharmony_rust_sdk/lists"}