Fix some documentation pertaining versioned endpoints

This commit is contained in:
Jonathan de Jong 2022-03-09 12:01:52 +01:00 committed by GitHub
parent e1c9af6d74
commit ac2d2f634d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -147,14 +147,48 @@ for more information on writing good commit messages.)
Use the [latest v1.x documentation](https://spec.matrix.org/latest/) when adding or modifying code. We target Use the [latest v1.x documentation](https://spec.matrix.org/latest/) when adding or modifying code. We target
the latest minor version of the Matrix specification. the latest minor version of the Matrix specification.
### Endpoint Module Structure
Matrix uses [versioned endpoints](https://spec.matrix.org/v1.2/#endpoint-versioning) (with a few small exceptions),
we follow this versioning approach in modules as well.
We structure endpoints and their versions like the following;
`endpoint_name::v1`
All bits pertaining a specific version (that can be linked to in the spec) reside in such a module,
some bits may be shared between endpoint versions, but this should be handled on a case-by-case basis.
Endpoint files may have their version modules embedded;
```rs
// endpoint_name.rs
mod v1 {
// (version-specific stuff)
}
```
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 Add a comment to the top of each endpoint file that includes the path
and a link to the documentation of the spec. You can use the latest and a link to the documentation of the spec. Replace the version
version at the time of the commit. For example: marker (`v3`) with a `*`, like so;
```rust ```rust
//! [GET /.well-known/matrix/client](https://spec.matrix.org/v1.1/client-server-api/#getwell-knownmatrixclient) //! `GET /_matrix/client/*/sync`
```
Then, in the subsequent version module, embed the version and specification link like so;
```rs
pub mod v3 {
//! `/v3/` ([spec])
//!
//! [spec]: https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv3sync
}
``` ```
### Naming Endpoints ### Naming Endpoints