You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| User Id (no `action` in URI):<br/>`matrix:user/her:example.org`|_Outside the room context_: show user profile<br/>_Inside the room context:_ mention the user in the current room (client-local operation) | No default non-interactive operation<br/>`GET /profile/@her:example.org/display_name`<br/>`GET /profile/@her:example.org/avatar_url`|
435
-
| User Id (`action=chat`):<br/>`matrix:user/her:example.org?action=chat`| Open a direct chat with the user (see the next column on identifying the room) | If [canonical direct chats](https://github.com/matrix-org/matrix-doc/pull/2199) are supported: `GET /_matrix/client/r0/user/@me:example.org/dm?involves=@her:example.org`<br/>Without canonical direct chats:<br/>1. `GET /user/@me:example.org/account_data/m.direct`<br/>2. Find the room id for `@her:example.org` in the event content<br/>3. if found, return this room id; if not, `POST /createRoom` with `"is_direct": true` and return id of the created room |
436
-
| Room (no `action` in URI):<br/>`matrix:roomid/rid:example.org`<br/>`matrix:room/us:example.org`| Attempt to "open" (usually: display the timeline at the latest or last remembered position) the room | No default non-interactive operation<br/>API: Find the respective room in the local `/sync` cache or<br/>`GET /rooms/!rid:example.org/...`<br/> |
437
-
| Room (`action=join`):<br/>`matrix:roomid/rid:example.org?action=join&via=example2.org`<br/>`matrix:room/us:example.org?action=join`| Attempt to join the room |`POST /join/!rid:example.org?server_name=example2.org`<br/>`POST /join/#us:example.org`|
438
-
| Event:<br/>`matrix:room/us:example.org/event/lol823y4bcp3qo4`<br/>`matrix:roomid/rid:example.org/event/lol823y4bcp3qo4?via=example2.org`| 1. For room aliases, resolve an alias to a room id (HOW?)<br/>2. Attempt to retrieve (see the next column) and display the event;<br/>3. If the event could not be retrieved due to access denial and the current user is not a member of the room, the client MAY offer the user to join the room and try to open the event again | Non-interactive operation: return event or event content, depending on context<br/>API: find the event in the local `/sync` cache or<br/>`GET /directory/room/%23us:example.org` (to resolve alias to id)<br/>`GET /rooms/!rid:example.org/event/lol823y4bcp3qo4?server_name=example2.org`<br/> |
443
+
| User Id (no `action` in URI):<br/>`matrix:u/her:example.org`|_Outside the room context_: show user profile<br/>_Inside the room context:_ mention the user in the current room (client-local operation) | No default non-interactive operation<br/>`GET /profile/@her:example.org/display_name`<br/>`GET /profile/@her:example.org/avatar_url`|
444
+
| User Id (`action=chat`):<br/>`matrix:u/her:example.org?action=chat`| Open a direct chat with the user (see the next column on identifying the room) | If [canonical direct chats](https://github.com/matrix-org/matrix-doc/pull/2199) are supported: `GET /_matrix/client/r0/user/@me:example.org/dm?involves=@her:example.org`<br/>Without canonical direct chats:<br/>1. `GET /user/@me:example.org/account_data/m.direct`<br/>2. Find the room id for `@her:example.org` in the event content<br/>3. if found, return this room id; if not, `POST /createRoom` with `"is_direct": true` and return id of the created room |
445
+
| Room (no `action` in URI):<br/>`matrix:roomid/rid:example.org`<br/>`matrix:r/us:example.org`| Attempt to "open" (usually: display the timeline at the latest or last remembered position) the room | No default non-interactive operation<br/>API: Find the respective room in the local `/sync` cache or<br/>`GET /rooms/!rid:example.org/...`<br/> |
446
+
| Room (`action=join`):<br/>`matrix:roomid/rid:example.org?action=join&via=example2.org`<br/>`matrix:r/us:example.org?action=join`| Attempt to join the room |`POST /join/!rid:example.org?server_name=example2.org`<br/>`POST /join/#us:example.org`|
447
+
| Event:<br/>`matrix:r/us:example.org/e/lol823y4bcp3qo4`<br/>`matrix:roomid/rid:example.org/event/lol823y4bcp3qo4?via=example2.org`| 1. For room aliases, resolve an alias to a room id (HOW?)<br/>2. Attempt to retrieve (see the next column) and display the event;<br/>3. If the event could not be retrieved due to access denial and the current user is not a member of the room, the client MAY offer the user to join the room and try to open the event again | Non-interactive operation: return event or event content, depending on context<br/>API: find the event in the local `/sync` cache or<br/>`GET /directory/room/%23us:example.org` (to resolve alias to id)<br/>`GET /rooms/!rid:example.org/event/lol823y4bcp3qo4?server_name=example2.org`<br/> |
439
448
440
449
441
450
#### URI construction algorithm
@@ -447,9 +456,9 @@ compliance of identifiers passed to this algorithm.
447
456
For room and user identifiers (including room aliases):
448
457
1. Remove the sigil character from the identifier and match it against
449
458
the following list to produce `prefix-1`:
450
-
-`@` -> `user/`
459
+
-`@` -> `u/`
460
+
-`#` -> `r/`
451
461
-`!` -> `roomid/`
452
-
-`#` -> `room/`
453
462
2. Build the Matrix URI as a concatenation of:
454
463
- literal `matrix:`;
455
464
-`prefix-1`;
@@ -463,7 +472,7 @@ may change this):
463
472
1. Take the event's room id or canonical alias and build a Matrix URI for them
464
473
as described above.
465
474
2. Append to the result of previous step:
466
-
- literal `event/`;
475
+
- literal `e/`;
467
476
- the event id after removing the sigil (`$`) and percent-encoding.
468
477
469
478
Clients MUST implement proper percent-encoding of the identifiers; there's no
@@ -481,7 +490,7 @@ extensions. Here are a few ideas:
481
490
482
491
* Add specifying a segment of the room timeline (`from=$evtid1&to=$evtid2`).
483
492
484
-
* Unlock bare event ids (`matrix:event/$event_id`) - subject to change in
493
+
* Unlock bare event ids (`matrix:e/$event_id`) - subject to change in
485
494
other areas of the specification.
486
495
487
496
* Bring tangible semantics to the authority part. The main purpose of
@@ -516,12 +525,12 @@ extensions. Here are a few ideas:
516
525
(also referred to in the previous section).
517
526
518
527
* One could conceive a URI mapping of avatars in the form of
0 commit comments