Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 1 addition & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,7 @@ on:
jobs:
style:
name: Style
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v6

- name: Install rust nightly toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.NIGHTLY }}

- uses: Swatinem/rust-cache@v2

- name: Check spelling
uses: crate-ci/typos@v1.39.2

- name: Install cargo-sort
uses: taiki-e/cache-cargo-install-action@v2
with:
tool: cargo-sort

- name: Run cargo-sort
run: |
cargo sort --workspace --grouped --check \
--order package,lib,features,dependencies,target,dev-dependencies,build-dependencies
uses: ruma/ruma/.github/workflows/style.yml@6fc96e3af47c05a096df2bf2428a9accfc9b73ed

msrv:
name: Minimum Supported Rust Version / Check All Features
Expand Down
33 changes: 33 additions & 0 deletions .rumdl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
cache = false

[per-file-ignores]
"crates/ruma-common/src/doc/*.md" = ["first-line-heading"]
"crates/ruma-client-api/src/doc/*.md" = ["first-line-heading"]
"crates/ruma-events/src/doc/*.md" = ["first-line-heading"]
"crates/ruma-macros/src/doc/*.md" = ["first-line-heading"]

[code-block-style]
style = "fenced"

[code-fence-style]
style = "backtick"

[emphasis-style]
style = "underscore"

[heading-style]
style = "atx"

[line-length]
line-length = 100
code-blocks = false
tables = false

[ol-prefix]
style = "ordered"

[strong-style]
style = "asterisk"

[ul-style]
style = "dash"
40 changes: 21 additions & 19 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
# [unreleased]
# Changelog

# 0.9.0
## [unreleased]

## 0.9.0

Breaking changes:

- Upgrade Ruma to 0.14.1
- All endpoints use `SinglePath` rather than `VersionHistory` as `PathBuilder`.
- Bump MSRV to 1.88.

# 0.8.0
## 0.8.0

Breaking changes:

Expand All @@ -33,32 +35,32 @@ Improvement:
- Add room_details api
- Add room_members api

# 0.7.0
## 0.7.0

* Upgrade to ruma 0.12.0
* Add room_membership api
- Upgrade to ruma 0.12.0
- Add room_membership api

# 0.6.0
## 0.6.0

* Update v1/server_version endpoint response data with optional python_version key
* Upgrade to ruma 0.9.4
* Add background updates endpoints
- Update v1/server_version endpoint response data with optional python_version key
- Upgrade to ruma 0.9.4
- Add background updates endpoints

# 0.5.0
## 0.5.0

* Upgrade ruma dependency to 0.7.2
* Work around a Synapse issue affecting sqlite configurations
- Upgrade ruma dependency to 0.7.2
- Work around a Synapse issue affecting sqlite configurations

# 0.4.0
## 0.4.0

* Upgrade ruma dependency to 0.6.4
- Upgrade ruma dependency to 0.6.4

# 0.3.0
## 0.3.0

* Upgrade ruma dependency to 0.5.0
- Upgrade ruma dependency to 0.5.0

# 0.2.0
## 0.2.0

Improvements:

* Upgrade ruma dependency to 0.4.0
- Upgrade ruma dependency to 0.4.0
53 changes: 28 additions & 25 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Contributing

Welcome! Thanks for looking into contributing to our project!

# Table of Contents
## Table of Contents

- [Looking for Help?](#looking-for-help)
- [Documentation](#documentation)
Expand All @@ -15,21 +17,21 @@ Welcome! Thanks for looking into contributing to our project!
- [LLM Contributions](#llm-contributions)
- [Project-related use of LLMs](#project-related-use-of-llms)

# Looking for Help?
## Looking for Help?

Here is a list of helpful resources you can consult:

## Documentation
### Documentation

- [Synapse Admin API Documentation](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/index.html)

## Chat Rooms
### Chat Rooms

- Ruma Matrix room: [#ruma:matrix.org](https://matrix.to/#/#ruma:matrix.org)
- Ruma Development Matrix room: [#ruma-dev:matrix.org](https://matrix.to/#/#ruma-dev:matrix.org)
- Synapse Community room: [#synapse:matrix.org](https://matrix.to/#/#synapse:matrix.org)

# Reporting Issues
## Reporting Issues

If you find any bugs, inconsistencies or other problems, feel free to submit
a GitHub [issue](https://github.com/ruma/synapse-admin-api/issues/new).
Expand All @@ -40,21 +42,21 @@ If you have a quick question, it may be easier to leave a message in
Also, if you have trouble getting on board, let us know so we can help future
contributors to the project overcome that hurdle too.

# Submitting Code
## Submitting Code

Ready to write some code? Great! Here are some guidelines to follow to
help you on your way:

## Coding Style
### Coding Style

In general, try to replicate the coding style that is already present. Specifically:

### Naming
#### Naming

For internal consistency, Ruma uses American spelling for variable names. Names may differ in the
serialized representation, as the Matrix specification has a mix of British and American English.

### Common Types
#### Common Types

When writing endpoint definitions, use the following mapping from request /
response field types listed in the specification to Rust types:
Expand All @@ -68,7 +70,7 @@ Specification type | Rust type
`[…]` | `Vec<…>`
`{string: …}` | `BTreeMap<String, …>` (or `BTreeMap<SomeId, …>`)

### Code Formatting and Linting
#### Code Formatting and Linting

We use [rustfmt] to ensure consistent formatting code and [clippy] to catch
common mistakes not caught by the compiler as well as enforcing a few custom
Expand All @@ -92,7 +94,7 @@ check that code
[rustfmt]: https://github.com/rust-lang/rustfmt#readme
[clippy]: https://github.com/rust-lang/rust-clippy#readme

### (Type) Privacy and Forwards Compatibility
#### (Type) Privacy and Forwards Compatibility

Generally, all `struct`s that are mirroring types defined in the Synapase Admin API docs should have
all their fields `pub`lic. Where there are restrictions to the fields value beyond their type, these
Expand All @@ -109,13 +111,13 @@ Due to this combination of public fields and non-exhaustiveness, all `struct`s g
constructor function or `From` / `TryFrom` implementation to be able to create them in a
straight-forward way (always going through `Deserialize` would be quite ugly).

### Import Formatting
#### Import Formatting

Organize your imports into three groups separated by blank lines:

1. `std` imports
1. External imports (from other crates)
1. Local imports (`self::`, `super::`, `crate::` and things like `LocalEnum::*`)
2. External imports (from other crates)
3. Local imports (`self::`, `super::`, `crate::` and things like `LocalEnum::*`)

For example,

Expand All @@ -127,7 +129,7 @@ use ruma_common::api::ruma_api;
use super::MyType;
```

### Commit Messages
#### Commit Messages

Write commit messages using the imperative mood, as if completing the sentence:
"If applied, this commit will \_\_\_." For example, use "Fix some bug" instead
Expand All @@ -137,9 +139,9 @@ of "Fixed some bug" or "Add a feature" instead of "Added a feature".
[blog post](https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/)
for more information on writing good commit messages.)

## Modifying Endpoints
### Modifying Endpoints

### Endpoint Module Structure
#### Endpoint Module Structure

Synapse uses versioned endpoints (with a few small exceptions), we follow this versioning approach
in modules as well.
Expand All @@ -163,7 +165,7 @@ mod v1 {

This happens if the endpoint either has a single version, or a few versions of sufficiently small size.

### Endpoint Documentation Header
#### Endpoint Documentation Header

Add a comment to the top of each endpoint file that includes the path
and a link to the documentation of the spec. Replace the version
Expand All @@ -183,11 +185,12 @@ pub mod v2 {
}
```

### Naming Endpoints
#### Naming Endpoints

When adding new endpoints, select the module that fits the purpose of the
endpoint. When naming the endpoint itself, you can use the following
guidelines:

- The name should be a verb describing what the client is requesting, e.g.
`get_some_resource`.
- Endpoints which are basic CRUD operations should use the prefixes
Expand All @@ -200,32 +203,32 @@ guidelines:
- If you're not sure what to name it, pick any name and we can help you
with it.

### Tracking Changes
#### Tracking Changes

If your changes affect the public API add an entry about them to the change log
(`CHANGELOG.md`). Where applicable, try to find and denote the version of
Synapse that included the change you are making.

## Submitting PRs
### Submitting PRs

Once you're ready to submit your code, create a pull request, and one of our
maintainers will review it. Once your PR has passed review, a maintainer will
merge the request and you're done! 🎉

## Where do I start?
### Where do I start?

If this is your first contribution to the project, we recommend taking a look
at one of the [open issues][] we've marked for new contributors.

[open issues]: https://github.com/ruma/synapse-admin-api/issues?q=is%3Aissue+is%3Aopen+label%3A"help+wanted"

# Testing
## Testing

Before committing, run `cargo check` to make sure that your changes can build,
as well as running the formatting and linting tools
[mentioned above](#code-formatting-and-linting).

# LLM Contributions
## LLM Contributions

Contributions must not include content generated by large language models
or other probabilistic tools like ChatGPT, Claude, and Copilot.
Expand All @@ -242,7 +245,7 @@ including, but not limited to, code, documentation, issues, and artworks.
An exception applies for purely translating texts for issues and comments to
English. We may make more exceptions for other accessibility-related uses.

## Project-related use of LLMs
### Project-related use of LLMs

We heavily discourage the use of LLM chat bots as a replacement for reading
Ruma's documentation and API reference.
Expand Down
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ serde_json = "1.0.61"
rust_2018_idioms = { level = "warn", priority = -1 }
semicolon_in_expressions_from_macros = "warn"
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(ruma_unstable_exhaustive_types)', # set all types as exhaustive
# set all types as exhaustive
'cfg(ruma_unstable_exhaustive_types)',
] }
unreachable_pub = "warn"
unused_import_braces = "warn"
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
[![docs.rs page](https://docs.rs/synapse-admin-api/badge.svg)](https://docs.rs/synapse-admin-api/)
![license: MIT](https://img.shields.io/crates/l/synapse-admin-api.svg)

**synapse-admin-api** contains serializable types for the requests and responses for each endpoint in the [synapse admin API](https://github.com/element-hq/synapse/tree/master/docs/admin_api).
**synapse-admin-api** contains serializable types for the requests and responses for each endpoint
in the [synapse admin API](https://github.com/element-hq/synapse/tree/master/docs/admin_api).