The client-server spec currently specifies a `/versions` endpoint that allows
The client-server API currently specifies a `/versions` endpoint that allows
clients to know what version of that spec and unstable features are implemented
clients to know what version of that API and unstable features are implemented
by the server. This allows MSC to be implemented and supported by both servers
by the server. This allows MSC to be implemented and supported by both servers
and clients before they're merged and incorporated into the stable spec.
and clients before they're merged and incorporated into the stable API.
This is also a feature we will need on the identity server spec, because
This is also a feature we will need on the identity server API, because
clients talk to them and need to be aware of unstables features (such as
clients talk to them and need to be aware of unstables features (such as
[MSC2265](https://github.com/matrix-org/matrix-doc/pull/2265)) when they're
[MSC2265](https://github.com/matrix-org/matrix-doc/pull/2265)) when they're
implemented by the identity server it's using (if there is one).
implemented by the identity server it's using (if there is one).
@ -14,14 +14,14 @@ implemented by the identity server it's using (if there is one).
This proposal extends the [`/_matrix/identity/v2`](https://matrix.org/docs/spec/identity_service/r0.2.1#get-matrix-identity-api-v1)
This proposal extends the [`/_matrix/identity/v2`](https://matrix.org/docs/spec/identity_service/r0.2.1#get-matrix-identity-api-v1)
endpoint's response by adding information about the supported versions of the
endpoint's response by adding information about the supported versions of the
identity server specification and unstable features implemented by the server
identity server API and unstable features implemented by the server
to it. Because the current response for this endpoint is an empty object
to it. Because the current response for this endpoint is an empty object
(which is discarded by the client), the new response would look like:
(which is discarded by the client), the new response would look like:
```json
```json
{
{
"unstable_features": {
"unstable_features": {
"m.casefold_email_addresses": true
"casefold_email_addresses": true
},
},
"versions": [
"versions": [
"r0.1.0",
"r0.1.0",
@ -31,12 +31,12 @@ to it. Because the current response for this endpoint is an empty object
}
}
```
```
This response would follow the format of the [`/_matrix/client/versions`](https://matrix.org/docs/spec/client_server/unstable#get-matrix-client-versions) endpoint.
This response would follow the format of the [`/_matrix/client/versions`](https://matrix.org/docs/spec/client_server/r0.5.0#get-matrix-client-versions) endpoint.
## Alternative solutions
## Alternative solutions
An alternative solution to this issue would be to add a
An alternative solution to this issue would be to add a
`/_matrix/identity/versions` endpoint to the identity server specificiation.
`/_matrix/identity/versions` endpoint to the identity server API.
This would however add more complexity by adding a new endpoint whereas there's
This would however add more complexity by adding a new endpoint whereas there's
already an existing endpoint which seems relevant for handling this kind of
already an existing endpoint which seems relevant for handling this kind of