{"id":15018128,"url":"https://github.com/onlivfe/vrc_rs","last_synced_at":"2025-10-23T15:31:43.035Z","repository":{"id":65189298,"uuid":"586593234","full_name":"onlivfe/vrc_rs","owner":"onlivfe","description":"VRChat's API in a rust idiomatic way (unofficial)","archived":false,"fork":false,"pushed_at":"2024-12-28T19:18:37.000Z","size":660,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-29T16:05:22.204Z","etag":null,"topics":["api-client","rust","rust-crate","rust-lang","rust-library","vr","vrc","vrchat","vrchat-api"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onlivfe.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-08T17:19:41.000Z","updated_at":"2024-12-28T19:18:41.000Z","dependencies_parsed_at":"2024-07-27T20:25:08.028Z","dependency_job_id":"f93350f4-00c8-4f0f-b635-59359f91f19f","html_url":"https://github.com/onlivfe/vrc_rs","commit_stats":{"total_commits":58,"total_committers":5,"mean_commits":11.6,"dds":0.5862068965517242,"last_synced_commit":"8254197f8ea33caa02c51f32b70164c88564ac42"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlivfe%2Fvrc_rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlivfe%2Fvrc_rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlivfe%2Fvrc_rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlivfe%2Fvrc_rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onlivfe","download_url":"https://codeload.github.com/onlivfe/vrc_rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237852407,"owners_count":19376675,"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-client","rust","rust-crate","rust-lang","rust-library","vr","vrc","vrchat","vrchat-api"],"created_at":"2024-09-24T19:51:29.081Z","updated_at":"2025-10-23T15:31:42.521Z","avatar_url":"https://github.com/onlivfe.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VRChat API in rust\n\n\u003cimg align=\"right\" width=\"256\" height=\"256\" src=\"https://github.com/onlivfe/vrc_rs/raw/main/logo.png\"/\u003e\n\n[![License](https://img.shields.io/crates/l/vrc.svg)](https://github.com/onlivfe/vrc_rs/src/LICENSE)\n[![Crates.io](https://img.shields.io/crates/v/vrc.svg)](https://crates.io/crates/vrc)\n[![Docs](https://docs.rs/vrc/badge.svg)](https://docs.rs/crate/vrc/)\n\nWIP rust models of [VRChat](https://store.steampowered.com/app/438100/VRChat/)'s API.\n\nThis is fully unofficial and in no way affiliated, endorsed, supported, or created by VRChat.\n\nHuge shoutout to the MIT licensed [vrchatapi](https://vrchatapi.github.io), which this crate borrows a lot from.\nIf you're looking for a more mature project, please consider looking at their [generated rust crate](https://github.com/vrchatapi/vrchatapi-rust) instead.\n\nI disliked the generated nature of it though, and wanted more strong Rust-like things for some things, which is why this crate exists.\n\nThere's quite a bit missing, if you want to help with that, see [contributing](#contributing).\n\n| Status | Category | Planned |\n| --- | --- | --- |\n| Implemented | Authentication | More testing |\n| None | Avatars | Getting a specific avatar only |\n| None | Economy | None |\n| None | Favorites | Eventual implementation |\n| None | Files | None |\n| Partial | Friends | Implementation soon |\n| Partial | Groups | More testing (requires VRC+ :/ ) |\n| None | Invites | Listing invites only |\n| Partial | Instances | Implementation soon |\n| None | Notifications | Eventual implementation |\n| None | Permissions | None |\n| None | System | Eventual implementation of system statistics |\n| Partial | Users | Planned to be implemented soon |\n| Partial | Worlds | None, at least in the near term |\n\nThe categories are from the awesome [VRChat API Docs](https://vrchatapi.github.io/docs/api/) project.\n\n## Testing\n\nThe integration tests contact the live API.\nThat's why they are ignored by default.\n\nPretty much all of them require authentication.\n\nSadly not all the things can even be reliably tested without creating a mock API.\nWhich in turn defeats the purpose of the tests in the first place.\nSo only some of the behavior is actually tested, though improvements to it are welcome.\n\n### Creating a user session manually\n\nGetting the authentication for VRC takes a few steps due to it's usage of cookies, and 2fa requiring another request.\n\nYou can use the `get_auth.py` script for convenience.\nIt's in python since it was created before the proper typed rust API client was ready.\nNote that you should've have logged in from the same IP address previously,\nas VRChat handles logins from new IPs differently which just breaks everything.\n\n### Running ignored tests\n\nMake sure that you've got:\n\n- an internet connection\n- a valid `user-sesion.json`\n\nThen just run the tests;\n\n```sh\n# A specific test with output logging\ncargo test --all-features current_user -- --exact --ignored --nocapture\n# All tests\ncargo test --all-features -- --ignored\n```\n\n## Contributing\n\n### Coding\n\nThis crate aims to be of higher quality vs quantity.\nThis means that the bar for what gets merged is maybe higher than some want to bother with.\nPlease run the clippy checks along with nightly cargo formatting, and check that the CI checks pass.\n\nAny contributions are welcome though, just mark the PR as editable by maintainers.\nThat way even if you don't feel like acting out on the feedback, the improvements will most likely eventually find their way back to here.\n\n### Other\n\nAlternatively if you don't feel like coding, creating GitHub issues for wrong behavior would be very welcome.\nAdditionally, figuring out the actual data types and inheritance models, and improving the docs would really help with development!\nAlso just starring this GitHub repository helps with motivation for more work on this crate that serves other projects as well.\n\n## License\n\nNote that the license is `MPL-2.0` instead of the more common `MIT OR Apache-2.0`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonlivfe%2Fvrc_rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonlivfe%2Fvrc_rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonlivfe%2Fvrc_rs/lists"}