Skip to content

Commit 449fb72

Browse files
turt2liverichvdh
authored andcommitted
Merge branch 'master' into travis/clarification/lowercasing
2 parents fd81a4f + f6d4075 commit 449fb72

File tree

21 files changed

+661
-1380
lines changed

21 files changed

+661
-1380
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Correct examples of `client_secret` request body parameters so that they do not include invalid characters.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The v1 identity service API has been removed in favour of the v2 API, as per [MSC2713](https://github.com/matrix-org/matrix-doc/pull/2713).

content/appendices.md

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -590,32 +590,6 @@ Event IDs and Room IDs are case-sensitive. They are not meant to be
590590
human-readable. They are intended to be treated as fully opaque strings
591591
by clients.
592592

593-
#### Group Identifiers
594-
595-
Groups within Matrix are uniquely identified by their group ID. The
596-
group ID is namespaced to the group server which hosts this group and
597-
has the form:
598-
599-
+localpart:domain
600-
601-
The `localpart` of a group ID is an opaque identifier for that group. It
602-
MUST NOT be empty, and MUST contain only the characters `a-z`, `0-9`,
603-
`.`, `_`, `=`, `-`, and `/`.
604-
605-
The `domain` of a group ID is the [server name](#server-name) of the
606-
group server which hosts this group.
607-
608-
The length of a group ID, including the `+` sigil and the domain, MUST
609-
NOT exceed 255 characters.
610-
611-
The complete grammar for a legal group ID is:
612-
613-
group_id = "+" group_id_localpart ":" server_name
614-
group_id_localpart = 1*group_id_char
615-
group_id_char = DIGIT
616-
/ %x61-7A ; a-z
617-
/ "-" / "." / "=" / "_" / "/"
618-
619593
#### Room Aliases
620594

621595
A room may have zero or more aliases. A room alias has the format:
@@ -674,7 +648,6 @@ Examples of matrix.to URIs are:
674648
- Permalink by room alias:
675649
`https://matrix.to/#/%23somewhere:example.org/%24event%3Aexample.org`
676650
- User: `https://matrix.to/#/%40alice%3Aexample.org`
677-
- Group: `https://matrix.to/#/%2Bexample%3Aexample.org`
678651

679652
{{% boxes/note %}}
680653
Historically, clients have not produced URIs which are fully encoded.
@@ -690,6 +663,16 @@ versions](/#room-versions). These slashes should normally be
690663
encoded when producing matrix.to URIs, however.
691664
{{% /boxes/note %}}
692665

666+
{{% boxes/note %}}
667+
<!-- TODO: @@TravisR: Make "Spaces" a link when that specification exists -->
668+
In prior versions of this specification, a concept of "groups" were mentioned
669+
to organize rooms. This functionality did not properly get introduced into
670+
the specification and is subsequently replaced with "Spaces". Historical
671+
matrix.to URIs pointing to groups might still exist: they take the form
672+
`https://matrix.to/#/%2Bexample%3Aexample.org` (where the `+` sigil may or
673+
may not be encoded).
674+
{{% /boxes/note %}}
675+
693676
##### Routing
694677

695678
Room IDs are not routable on their own as there is no reliable domain to

content/client-server-api/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ specify parameter values. The flow for this method is as follows:
297297
6. If the `m.identity_server` property is present, extract the
298298
`base_url` value for use as the base URL of the identity server.
299299
Validation for this URL is done as in the step above, but using
300-
`/_matrix/identity/api/v1` as the endpoint to connect to. If the
300+
`/_matrix/identity/v2` as the endpoint to connect to. If the
301301
`m.identity_server` property is present, but does not have a
302302
`base_url` value, then `FAIL_PROMPT`.
303303

content/identity-service-api.md

Lines changed: 15 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -59,48 +59,48 @@ the keys `error` and `errcode` MUST always be present.
5959

6060
Some standard error codes are below:
6161

62-
`M_NOT_FOUND`
62+
`M_NOT_FOUND`
6363
The resource requested could not be located.
6464

65-
`M_MISSING_PARAMS`
65+
`M_MISSING_PARAMS`
6666
The request was missing one or more parameters.
6767

68-
`M_INVALID_PARAM`
68+
`M_INVALID_PARAM`
6969
The request contained one or more invalid parameters.
7070

71-
`M_SESSION_NOT_VALIDATED`
71+
`M_SESSION_NOT_VALIDATED`
7272
The session has not been validated.
7373

74-
`M_NO_VALID_SESSION`
74+
`M_NO_VALID_SESSION`
7575
A session could not be located for the given parameters.
7676

77-
`M_SESSION_EXPIRED`
77+
`M_SESSION_EXPIRED`
7878
The session has expired and must be renewed.
7979

80-
`M_INVALID_EMAIL`
80+
`M_INVALID_EMAIL`
8181
The email address provided was not valid.
8282

83-
`M_EMAIL_SEND_ERROR`
83+
`M_EMAIL_SEND_ERROR`
8484
There was an error sending an email. Typically seen when attempting to
8585
verify ownership of a given email address.
8686

87-
`M_INVALID_ADDRESS`
87+
`M_INVALID_ADDRESS`
8888
The provided third party address was not valid.
8989

90-
`M_SEND_ERROR`
90+
`M_SEND_ERROR`
9191
There was an error sending a notification. Typically seen when
9292
attempting to verify ownership of a given third party address.
9393

94-
`M_UNRECOGNIZED`
94+
`M_UNRECOGNIZED`
9595
The request contained an unrecognised value, such as an unknown token or
9696
medium.
9797

98-
`M_THREEPID_IN_USE`
98+
`M_THREEPID_IN_USE`
9999
The third party identifier is already in use by another user. Typically
100100
this error will have an additional `mxid` property to indicate who owns
101101
the third party identifier.
102102

103-
`M_UNKNOWN`
103+
`M_UNKNOWN`
104104
An unknown error has occurred.
105105

106106
{{% http-api spec="identity" api="versions" %}}
@@ -116,22 +116,6 @@ Matrix user identity, but not in the other direction (i.e. one should
116116
not be able to get all 3PIDs associated with a Matrix user ID, or get
117117
all 3PIDs associated with a 3PID).
118118

119-
## Version 1 API deprecation
120-
121-
As described on each of the version 1 endpoints, the v1 API is
122-
deprecated in favour of the v2 API described here. The major difference,
123-
with the exception of a few isolated cases, is that the v2 API requires
124-
authentication to ensure the user has given permission for the identity
125-
server to operate on their data.
126-
127-
The v1 API is planned to be removed from the specification in a future
128-
version.
129-
130-
Clients SHOULD attempt the v2 endpoints first, and if they receive a
131-
`404`, `400`, or similar error they should try the v1 endpoint or fail
132-
the operation. Clients are strongly encouraged to warn the user of the
133-
risks in using the v1 API, if they are planning on using it.
134-
135119
## Web browser clients
136120

137121
It is realistic to expect that some clients will be written to be run
@@ -149,12 +133,9 @@ recommended CORS headers to be returned by servers on all requests are:
149133

150134
## Authentication
151135

152-
Most `v2` endpoints in the Identity Service API require authentication
136+
Most endpoints in the Identity Service API require authentication
153137
in order to ensure that the requesting user has accepted all relevant
154-
policies and is otherwise permitted to make the request. The `v1` API
155-
(currently deprecated) does not require this authentication, however
156-
using `v1` is strongly discouraged as it will be removed in a future
157-
release.
138+
policies and is otherwise permitted to make the request.
158139

159140
Identity Servers use a scheme similar to the Client-Server API's concept
160141
of access tokens to authenticate users. The access tokens provided by an
@@ -204,8 +185,6 @@ has just accepted are appended to `m.accepted_terms`.
204185

205186
## Status check
206187

207-
{{% http-api spec="identity" api="ping" %}}
208-
209188
{{% http-api spec="identity" api="v2_ping" %}}
210189

211190
## Key management
@@ -219,23 +198,14 @@ The identity server may also keep track of some short-term
219198
public-private keypairs, which may have different usage and lifetime
220199
characteristics than the service's long-term keys.
221200

222-
{{% http-api spec="identity" api="pubkey" %}}
223-
224201
{{% http-api spec="identity" api="v2_pubkey" %}}
225202

226203
## Association lookup
227204

228-
{{% http-api spec="identity" api="lookup" %}}
229-
230205
{{% http-api spec="identity" api="v2_lookup" %}}
231206

232207
### Client behaviour
233208

234-
{{% boxes/note %}}
235-
This section only covers the v2 lookup endpoint. The v1 endpoint is
236-
described in isolation above.
237-
{{% /boxes/note %}}
238-
239209
Prior to performing a lookup clients SHOULD make a request to the
240210
`/hash_details` endpoint to determine what algorithms the server
241211
supports (described in more detail below). The client then uses this
@@ -246,11 +216,6 @@ Clients MUST support at least the `sha256` algorithm.
246216

247217
### Server behaviour
248218

249-
{{% boxes/note %}}
250-
This section only covers the v2 lookup endpoint. The v1 endpoint is
251-
described in isolation above.
252-
{{% /boxes/note %}}
253-
254219
Servers, upon receipt of a `/lookup` request, will compare the query
255220
against known bindings it has, hashing the identifiers it knows about as
256221
needed to verify exact matches to the request.
@@ -400,20 +365,14 @@ through without modification.
400365

401366
### Email associations
402367

403-
{{% http-api spec="identity" api="email_associations" %}}
404-
405368
{{% http-api spec="identity" api="v2_email_associations" %}}
406369

407370
### Phone number associations
408371

409-
{{% http-api spec="identity" api="phone_associations" %}}
410-
411372
{{% http-api spec="identity" api="v2_phone_associations" %}}
412373

413374
### General
414375

415-
{{% http-api spec="identity" api="associations" %}}
416-
417376
{{% http-api spec="identity" api="v2_associations" %}}
418377

419378
## Invitation storage
@@ -429,8 +388,6 @@ the Matrix user's homeserver via the
429388
endpoint. The request MUST be signed with a long-term private key for
430389
the identity server.
431390

432-
{{% http-api spec="identity" api="store_invite" %}}
433-
434391
{{% http-api spec="identity" api="v2_store_invite" %}}
435392

436393
## Ephemeral invitation signing
@@ -440,6 +397,4 @@ identity server offers some crypto functionality to help in accepting
440397
invitations. This is less secure than the client doing it itself, but
441398
may be useful where this isn't possible.
442399

443-
{{% http-api spec="identity" api="invitation_signing" %}}
444-
445400
{{% http-api spec="identity" api="v2_invitation_signing" %}}

content/proposals.md

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,13 @@ is as follows:
245245
75% of the members of the Spec Core Team agree on its outcome, and
246246
all existing concerns have been resolved.
247247
- The FCP will then begin and last for 5 days, giving anyone else some
248-
time to speak up before it concludes. On its conclusion, the
249-
disposition of the FCP will be carried out. If sufficient reasoning
250-
against the disposition is raised, the FCP can be cancelled and the
251-
MSC will continue to evolve accordingly.
248+
time to speak up before it concludes. If sufficient reasoning
249+
against the disposition is provided, a member of the Spec Core Team can
250+
raise a concern and block FCP from completing. This will not reset or
251+
pause the 5 day FCP timer, but FCP will not conclude until all concerns have
252+
been resolved. If sufficient change in the MSC is required to resolve those
253+
concerns, FCP might be cancelled and reproposed. Once FCP has concluded,
254+
the disposition of the FCP will be carried out.
252255
- Once the proposal has been accepted and merged, it is time to submit
253256
the actual change to the Specification that your proposal reasoned
254257
about. This is known as a spec PR. However in order for the spec PR
@@ -259,7 +262,7 @@ is as follows:
259262
will warrant another MSC. Any minor, non-fundamental changes are
260263
allowed but **must** be documented in the original proposal
261264
document. This ensures that someone reading a proposal in the future
262-
doesn't assume old information wasn't merged into the spec.
265+
doesn't assume old information that wasn't merged into the spec.
263266
- Similar to the proposal PR, please sign off the spec PR as per
264267
the guidelines on
265268
[CONTRIBUTING.rst](https://github.com/matrix-org/matrix-doc/blob/master/CONTRIBUTING.rst).
@@ -373,7 +376,7 @@ be merged without the Spec Core Team focusing on them specifically.
373376

374377
## Implementing a proposal
375378

376-
As part of the proposal process the spec core team will require evidence
379+
As part of the proposal process the Spec Core Team will require evidence
377380
of the MSC working in order for it to move into FCP. This can usually be
378381
a branch/pull request to whichever implementation of choice that proves
379382
the MSC works in practice, though in some cases the MSC itself will be
@@ -388,13 +391,11 @@ release, implementations are required to use the following process to
388391
ensure that the official Matrix namespace is not cluttered with
389392
development or testing data.
390393

391-
Note
392-
393-
Unreleased implementations (including proofs-of-concept demonstrating
394+
**Note:** Unreleased implementations (including proofs-of-concept demonstrating
394395
that a particular MSC works) do not have to follow this process.
395396

396397
1. Have an idea for a feature.
397-
2. Implement the feature using unstable endpoints, vendor prefixes, and
398+
1. Implement the feature using unstable endpoints, vendor prefixes, and
398399
unstable feature flags as appropriate.
399400
- When using unstable endpoints, they MUST include a vendor
400401
prefix. For example:
@@ -429,22 +430,25 @@ that a particular MSC works) do not have to follow this process.
429430
- If at any point after early release, the idea changes in a
430431
backwards-incompatible way, the feature flag should also change
431432
so that implementations can adapt as needed.
432-
3. In parallel, or ahead of implementation, open an MSC and solicit
433+
1. In parallel, or ahead of implementation, open an MSC and solicit
433434
review per above.
434-
4. Before FCP can be called, the Spec Core Team will require evidence
435+
1. Before FCP can be called, the Spec Core Team will require evidence
435436
of the MSC working as proposed. A typical example of this is an
436437
implementation of the MSC, though the implementation does not need
437438
to be shipped anywhere and can therefore avoid the
438439
forwards/backwards compatibility concerns mentioned here.
439-
5. The FCP process is completed, and assuming nothing is flagged the
440+
1. The FCP process is completed, and assuming nothing is flagged the
440441
MSC lands.
441-
6. A spec PR is written to incorporate the changes into Matrix.
442-
7. A spec release happens.
443-
8. Implementations switch to using stable prefixes (e.g.: `/r0`) if the
444-
server supports the specification version released. If the server
445-
doesn't advertise the specification version, but does have the
446-
feature flag, unstable prefixes should still be used.
447-
9. A transition period of about 2 months starts immediately after the
442+
1. Implementations can now switch to using stable prefixes
443+
(for example, for an endpoint, moving from
444+
`/unstable/org.matrix.mscxxxx/frobnicate`
445+
to `/v1/frobnicate`), assuming that the change
446+
is backwards compatible with older implementations. In the rare occasion
447+
where backwards compatibility is not possible without a new spec release,
448+
implementations should continue to use unstable prefixes.
449+
1. A spec PR is written to incorporate the changes into Matrix.
450+
1. A spec release happens.
451+
1. A transition period of about 2 months starts immediately after the
448452
spec release, before implementations start to encourage other
449453
implementations to switch to stable endpoints. For example, a server
450454
implementation should start asking client implementations to support
@@ -463,9 +467,9 @@ com.example/new/endpoint`.
463467

464468
In summary:
465469

466-
- Implementations MUST NOT use stable endpoints before the MSC is in
467-
the spec. This includes NOT using stable endpoints in the period
468-
between completion of FCP and release of the spec. passed.
470+
- Implementations MUST NOT use stable endpoints before the MSC has
471+
completed FCP. Once that has occurred, implementations are allowed
472+
to use stable endpoints, but are not required to.
469473
- Implementations are able to ship features that are exposed to users
470474
by default before an MSC has been merged to the spec, provided they
471475
follow the process above.

0 commit comments

Comments
 (0)