In conversation with several client and homeserver developers it has
come up that the current schedule for rolling out authenticated media is
hard for them to follow if they have to support all of 1.11 at once.
I think the value of authenticated media is high enough to warrant a
stable flag to encourage a faster rollout of authenticated media. This
allows servers to support authenticated media without supporting all of
1.11 already and the additional burden on client developers is minimal.
This flag is already in use by serveral implementations:
- 51b5c98033
- 2dce08bab1
Signed-off-by: Nicolas Werner <nicolas.werner@hotmail.de>
This updates the sign-off requirements to match what most other
matrix-org and element-hq repos already have. The change was first made
in synapse: https://github.com/matrix-org/synapse/pull/3467
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* marking rooms as unread
Signed-off-by: Marcus Hoffmann <bubu@bubu1.eu>
* Add alternative suggestion by @turt2live
Co-authored-by: Travis Ralston <travpc@gmail.com>
* mention that this msc lacks thread support
* typo fix
* clarify type of notification we are referring to
* fix some small typos
* Update proposals/2867-rooms_marked_unread.md
grammar improvement
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Signed-off-by: Marcus Hoffmann <bubu@bubu1.eu>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Andrew Morgan <andrew@amorgan.xyz>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Proposal for membership information on events
* unstable prefix
* typo
* Update proposals/4115-membership-on-events.md
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
* Update MSC4115
* Make the new property *optional*.
* Describe linear-DAG situation.
* Mention client-side calculation as an alternative.
* spleling
* Return state *after* the event
This is much easier to calculate in Synapse.
* Clarificatoins to scope of MSC
* List of endpoints is incomplete
* RFC2119 keywords
* Remove non-issue potential issue
* Expand on why doing it client side doesn't work
* Update proposals/4115-membership-on-events.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Update proposals/4115-membership-on-events.md
* Update proposals/4115-membership-on-events.md
* fix formatting
---------
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Deprecate Linking to an Event Against a Room Alias
* Pin the spec links
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Address feedback.
* Address comments about via and the URIs that should be used.
* Rewording.
---------
Co-authored-by: Travis Ralston <travpc@gmail.com>
* MSC: Deprecation of query string auth
* Update proposals/4126-deprecate-query-string-auth.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* add proposal for using LaTeX for maths display
* rename to match MSC number
* change title
* update based on feedback
* up to clients how to deal with potentially-dangerous commands
* fix typo
Co-authored-by: Travis Ralston <travpc@gmail.com>
* small typo fix
---------
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Terms of service API proposal
* Alter structures to support multiple languages
This also introduces an ID for clients to internally reference the policies.
* Alter the login process to reflect login's lack of UI auth
* Add a note about MSC2140
* Add a flag to the sync response to indicate the sync is withheld
* Use the soft logout MSC
* Fix headings
* Move non-registration bits out
* Reference MSC3012
* Adjust wording for new scope
* Rewrite to newer modern standards; address feedback from last FCP
* Update proposals/1692-terms-at-registration.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update references
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify how m.push_rules works with account_data.
* Typo fix.
* Fix typo.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add info on MSC3391.
* Clarify potential issues.
* Clarify returned value
* Fix typo.
Co-authored-by: David Vo <auscompgeek@users.noreply.github.com>
* Add information on Conduit.
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
* More consistent wording.
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: David Vo <auscompgeek@users.noreply.github.com>
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
* MSC: Improved process for handling deprecated HTML features
* <3 spellcheck
* Apply suggestions from code review
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Proposal to use body field as media caption
* Add paragraph about relation-based captions being difficult for bridges
* Clarify how to treat body when filename is not present
* Refactor proposal text
* Fix heading size
* Add problem statement
* Add links to and quotes from current spec
* Adjust wording and quote m.audio body spec
* Clarify that m.location and m.sticker are out of scope for this proposal
* Add examples and summary of changes
* Fix JSON syntax in example
* http header Retry-After for http code 429
* MSC id
* Update proposals/4041-retry-after-header-rate-limiting.md
Thanks for the advice! What a stupid mistake!
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
* notes on backward compatibility
* fixes https://github.com/matrix-org/matrix-spec-proposals/pull/4041#discussion_r1299385626
* fixed typos
* made calculation of the Retry-After header value less explicit
* Update proposals/4041-retry-after-header-rate-limiting.md
Co-authored-by: Will Hunt <will@half-shot.uk>
* retry_after_ms gets deprecated
* explicit advice for server and client
* * moved deprecation into proposal
* made Retry-After is a delay
---------
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
Co-authored-by: Will Hunt <will@half-shot.uk>
* Initial Draft for MSC 3981: /relations recursion
Signed-off-by: Janne Mareike Koschinski <jannemk@element.io>
* fix accidentally copy-pasted title
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Remove unnecessarily specific sentence
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Add warning to avoid unlimited recursion
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Clean-up links in MSC
* Apply reviewer suggestions
* More clarifications on examples
* Address feedback on formatting
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Address feedback on linking related specs
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Rephrase technical definition of the parameter
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Correct mistake in examples
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Rephrase paragraph on O(n+1) issue
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* fix: correct mixup between event type and rel type
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* feat: add clarification for why this was needed
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* feat: add clarification for how it affects intermediate events
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* feat: add clarification for how it affects intermediate events
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Add /version unstable feature flag
* feat: improve phrasing of unstable prefix section
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* feat: add clarification for how clients can make use of this
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
* Clarify unstable features map
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Attempt at resolving the discussion threads for 3981.
Largely removes the talk about topological vs chronological ordering as I
don't really see what it was trying to express either, other than the fact
that a client fetching relations by recursing manually would give no ordering
information, which is what I've reduced it to.
* Add note that security is discussed elsewhere.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Add recursion_depth response parameter.
* Note that recursion_depth is sent un-prefixed.
* Add summary of security discussions
---------
Signed-off-by: Janne Mareike Koschinski <jannemk@element.io>
Signed-off-by: Janne Mareike Koschinski <janne.koschinski@matrix.org>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Michael Weimann <michaelw@element.io>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Proposal to clarify how Content-Type works with media
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Modernize wording
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Proposal to introduce sane Content-Disposition semantics
* Update proposals/2702-media-content-disposition.md
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Update for the year 2023
* Clarify thumbnails receiving Content-Disposition header
* Clarify layering
* Update proposals/2702-media-content-disposition.md
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Fix wording
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify wording
* Add clarifying words
* Adjust security section
---------
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Polls (mk II)
* m.poll.start
* m.poll.* types
* Allow multiple selections
* Give moderators access to closing polls
* Mention freeform edits
* Mention how edits are a security issue
* Enforce minimum and maximum length
* Rename open and secret
* Mention message pinning
* Update unstable definition for polls
* Rework responses into aggregations/annotations
* Note how answer IDs should be unique
* Mention MSC3523
* Revert change to annotations
* Mention how to handle invalid closure events
* Only count the first closure
* Add push rules
* spelling
* Clarify the extensible events structure
* Fix wording of answer handling in start event
* Clarify how the push rules work, and add one for ending polls
* WIP rewrite of polls to consider content blocks system
* Finish the polls rewrite
* Remove notifications
* Update links and MSC1767 behaviour
* Remove excess artifact
* Note UISI problems in potential issues section
* Note why MSC3523 is a bad idea
* Update proposals/3381-polls.md
Co-authored-by: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com>
* Update MSC
* Update proposals/3381-polls.md
Co-authored-by: Kévin Commaille <76261501+zecakeh@users.noreply.github.com>
* Typo: event layering
* Minor clarifications from non-blocking review feedback
---------
Co-authored-by: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com>
Co-authored-by: Kévin Commaille <76261501+zecakeh@users.noreply.github.com>
* Split poll notifications out to their own MSC
* Assign number
* Update proposals/3930-polls-notifications.md
* Change sync behaviour; Add links; Account for room versions
* spelling
* Update proposals/3930-polls-notifications.md
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Clarity around rule order
* spelling
* Use modern push rule practices
* More using of modern push rule practices
---------
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* initial version
* use MSC number
* address comments from review
* fix list
* fix markdown
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Suppress message edits.
* Fix typo.
Co-authored-by: Sumner Evans <me@sumnerevans.com>
* Add @room.
* Match MSC title to PR.
* Add a potential issue.
* Clarify rule placement.
* Change link text.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix typo.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add a note about mobile clients.
* Update from anoa's feedback.
* Updates for Matrix 1.7
* Update more spec links.
* Minor clarifications.
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Add downside about "all messages"
* Clarify again that this *does* work with all messages.
---------
Co-authored-by: Sumner Evans <me@sumnerevans.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* MSC: Muting in VoIP calls
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Update MSC number
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Missing :
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Fix MSC number in prefix
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Fix unstable prefix table
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Reword pottential issues
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add an Alternatives section
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Remove trailing comma
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix a typo
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix missing word
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Link to MSC for holding
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Update unstable prefixes
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Simplify things
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be explicit about deps
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be clearer about how things work
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Update proposals/3291-muting.md
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* `disabled` -> `enabled`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Fix client mention
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Improve explaination
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more precise
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix negation
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Don't refer to something that doesn't exist
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Draft of multi-stream MSC
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Remove unnecessary article and don't use CamelCase
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Fix naming and MSC number
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Make it prefixy
Co-authored-by: Tulir Asokan <tulir@maunium.net>
* Be more descriptive about keys
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add more info about usermedia and screenshare
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Simplifie backwards compatibility
I would be tempted to skip the capability advertisement for this and just say that the absence of stream metadata means clients just take the first or whatever MSC2746 says. I can't think of anything the capability advertisement caters for specifically? - Dave
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Reword parts of backwards compatibility section
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Improve explanation of backwards compatibility
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add missing spaces to unstable perifix table
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Remove support for stream-replacement
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Apply suggestions from code review
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix concerns
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Link to specific spec version
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Be more readable
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Don't ref non-existing thing
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove confusing words
---------
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
Co-authored-by: Tulir Asokan <tulir@maunium.net>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Start an MSC2176 2.0
* Remove scary warning about unstable implementation
* Update spec links
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Rewrite words into order that sense make
* Update intro & unstable prefix history
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Redact `origin` field on events
* Provide context and remove hunt for more useless fields
* spelling: actually
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Slight wording alterations
* Property
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* E.164 Matrix IDs.
* Fix typo.
* small typo fixes
* Expand examples.
Another reasonable way around this is to use a prefix,
instead of character mapping.
The downsides are essentially the same.
* Updates from feedback.
* Fix typos.
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Add note about re-using IDs.
---------
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Add media download redirect proposal
* Add urls
* Rename
* Wrap content
* Add note about MSC proposal and implementation work
* Add missing sections to MSC
* Rework to be opt-in via query param
* Fix typos
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Clarify security considerations
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Clarify that unstable prefix should be used
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Add 308 status code for redirects
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Add clarification about no/false redirect param
* Add link to current spec media endpoints
* Add note about additional benefit of not proxying untrusted homeserver media
* Expand issues section to cover possible homeserver abuse
* fix a typo
---------
Signed-off-by: Sumner Evans <sumner@beeper.com>
Co-authored-by: Sumner Evans <sumner@beeper.com>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Proposal for an application service ping endpoint
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Apply suggestions from code review
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Change unstable prefix and add appserviceId parameter to path
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Redo MSC to use dedicated endpoint
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Re-add appservice ID path parameter and txn ID body field
* Add some alternatives
* Fix path in unstable prefix
* Add some optional extra behavior to endpoints
* Specify transaction_id type and mention it in both endpoints
* Add note about homeservers not calling ping randomly
* Make it more explicit which request duration is being measured
* Add example of full ping flow
* Fix markdown list
* Add /versions endpoint under alternatives
* Add MSC number to title
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Rename duration field
* Document unstable_features flags
---------
Signed-off-by: Tulir Asokan <tulir@maunium.net>
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Allow an existing session to sign in a new session
* MSC3882
* Line length
* Resolve TODOs
* Document unstable prefixes
* Add docs on data returned by request
* Reference to MSC3906
* Incorporate review feedback
* Apply suggestions from code review
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Add note on rate limiting
* Revision 1 of proposal
- /_matrix/client/v3/login/token => /_matrix/client/v1/login/get_token
- expires_in => expires_in_ms
- Security clarifications
* Update proposals/3882-login-token-request.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Refer to spec about not requiring auth
* Expose availability via capabilities
* Update proposals/3882-login-token-request.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Use GET /login when unauthenticated
* Apply suggestions from code review
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
---------
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Proposal for asynchronous media uploads
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Add security consideration and mention possible /create request body
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Expand on security consideration
* Change error code for existing media PUT
Co-Authored-By: Travis Ralston <travpc@gmail.com>
* Add spam prevention error, example response and auth requirements
* Add query parameters to control downloading
* Rename max_stall to max_stall_ms
* Specify /create request body content
* Update links, versions and prefixes
* Add recommended maximum delay for starting upload
* Explicitly deny uploading to other users' media IDs
* Prevent spam by ratelimiting instead of limiting number of IDs
* Remove streaming requirement
It's complicated
* Add unstable prefixes for new error codes
* Add missing words
* Change /create endpoint to use v1
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Reorganize /upload spec and integrate feedback
* Explicitly specify that M_NOT_FOUND should be used for expired media
* Explicitly specify that M_FORBIDDEN should be used when a user other
than the one who created the media ID tries to upload to it
* Remove content-length failure note
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Rename max_stall_ms -> timeout_ms
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Mention that maximum value for timeout_ms should be imposed by the server
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Mention that the timeout_ms can be ignored if the media exists already
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Change M_NOT_YET_UPLOADED to use 504 status code
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Remove retry_after_ms optional field
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Make unused_expires_at the deadline for the upload to complete rather than start
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Add notes about suggested rate-limiting techniques
Namely, allowing a limited number of concurrent uploads
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Recommend 24 hours instead of 1 minute
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Clarify that rate limiting can apply on /create and /upload
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Clarify that unused_expires_at is a POSIX millisecond timestamp
Signed-off-by: Sumner Evans <sumner@beeper.com>
---------
Signed-off-by: Tulir Asokan <tulir@maunium.net>
Signed-off-by: Sumner Evans <sumner@beeper.com>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Sumner Evans <sumner@beeper.com>
* MSC3970: Scope transaction IDs to devices
* Line length
* Correction to claims from Synapse
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3970-device-scope-txnid.md
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Make section on recommended transaction ID format make sense
* Make it clearer in the intro section what the problem is
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* initial version of reactions proposal
* fix MSC numbers
* add security consideration
* remove event type from aggregation grouping criteria because of e2ee
* Apply suggestions from code review
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Update intro and add background
* Corrections and clarifications to the main text
In particular: we *do* aggregate based on event `type` as well as key.
* Clarify counting rules and interactions with edits
* Error code for deduplicating annotations
* Clarify eligible target events
* Notes on encryption
* Clarify variation-16
* Update 2677-reactions.md
* No server-side aggregation for reactions
---------
Co-authored-by: Bruno Windels <bruno@windels.cloud>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <richard@matrix.org>
* First cut of an MSC+IETF spec process
* Rewrite for process considerations
* Update links
* Don't forget affected MSCs
* Apply suggestions from code review
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Clarify what kind of server-specific behaviour is trapped in the CS API
---------
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Create xxxx-expand-push-rule-conditions.md
* Rename to proper MSC number
* Add PR number to title & wrap
* Remove list matching part of MSC3758, will propose in a new MSC
* Link through to the spec for current match type
* Switch to `value` instead of `pattern` for match key
* Expand missing sections
* Fix typo.
* Clarifications from review.
* Update title in MSC to match PR.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update the name of the push rule condition.
---------
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* first cut of MSC1767 for extensible events (replaces MSC1225)
* tabs->spaces
* fix markdown
* fix markdown
* GFM needs two spaces after ##?
* delta from msc1225
* 2021 refresh
* Refactor to be just text messaging + schema
* Update MSC numbers
* Touchups for FCP
* *ahem*
* Rewrite MSC to be understandable?
* Update proposals/1767-extensible-events.md
* Rewrite MSC, again
* Clarify Andy's blog state
* Relax m.markup's requirements
* Misc clarifications
* Revert "Relax m.markup's requirements"
This reverts commit 5f15b9f552.
* Clarify push rules handling
* Fix example
* Update extensible events MSCs list
* Update Andy's blog post reference
* Update per review feedback
* Move emotes, notices, and encryption out to dedicated MSCs
* Clarify text throughout
* Cover all the bases
* Clarify mixins are exactly what they're assumed to be
* Clarify fallback and number of datums per event
* Fix description of plain text baseline
* Clarify SCT's role in feature scope & cut "mixed" events (not mixins)
* Fix description of mixins
* Update proposals/1767-extensible-events.md
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Expand on how unknown events are handled
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Trim line length post-suggestions
* Mention that extensible events might appear in other room versions early
* Remove duplicated unknown parse order being an implementation detail
* Note difference between optional content blocks and mixins
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/1767-extensible-events.md
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
* Clarify that clients are still strongly encouraged to validate HTML
* Fix mention of mixing legacy event types
* Update proposals/1767-extensible-events.md
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Link to MSC3765
* Rename `m.markup` to `m.text`
---------
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* init m.replace aggregation with full event
Signed-off-by: benkuly <kontakt@folivo.net>
* Rename tmp.md to 3925-replace-aggregation-with-full-event.md
Signed-off-by: benkuly <kontakt@folivo.net>
* Update 3925-replace-aggregation-with-full-event.md
typos
Signed-off-by: benkuly <kontakt@folivo.net>
* Update 3925-replace-aggregation-with-full-event.md
added MSC number
Signed-off-by: benkuly <kontakt@folivo.net>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
Signed-off-by: benkuly <kontakt@folivo.net>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
Signed-off-by: benkuly <kontakt@folivo.net>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* redact instead of delete
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* word wrap 80
* remove immutable argument
* add alternative from https://github.com/matrix-org/matrix-spec/issues/1299#issuecomment-1290332433
* add json example
* shorter version of the actual proposal
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* describe the actual reason, why encrypted events cannot be replaced
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* mention discussion
* typo
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* clarify inconsistent behavior with replaced contents
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3925-replace-aggregation-with-full-event.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* clarify inconsistent behavior and put it into introduction
* remove superfluous event content field
* add some details to potential issues
suggested by @richvdh
---------
Signed-off-by: benkuly <kontakt@folivo.net>
Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Initial Commit for Room version 10 as default
* fix filename
* Give file and filename its MSC number
* Add update progress information
* Update 3904-room-version-10-as-a-default.md
* Initial MSC3856 draft.
* s/filter/include/g
* Fix typo.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add link to the current spec.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Link to MSC3440 for related_by_rel_types.
* Rework and clarify intro.
* Clarify what is returned by the API.
* Add a note on dir.
* Add info on ignored users.
* Clarifications from review.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Add notes about MSC2836.
* Add a comma to enum values.
Co-authored-by: Erik Johnston <erik@matrix.org>
* Simplify pagination.
* Fix typos.
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Erik Johnston <erik@matrix.org>
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
* Add initial MSC for read receipts for threads.
* Fix events in diagram.
* Add sync response.
* Link to the spec.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify sentence.
* Some clarifications.
* Simplification.
* Fix JSON key format.
Co-authored-by: Tulir Asokan <tulir@maunium.net>
* Add information on clearing notifications.
* Fix example.
* Update with current understanding.
* Clarify introduction.
* MSC3773 is not yet accepted.
* Updates from feedback.
* Update from learnings from the proof of concept.
* Add link to the current spec.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Clarify that false positives are deliberate in the design.
* Receipts must move forward.
* More info on unthreaded receipts.
* Reflow.
* Clarify the proposal to explain why both threaded and unthreaded receipts need to exist and what the main timeline is.
* Add information about validating that an event is part of a thread.
* Remove section on second-order relations.
* Use proper syntax highlighting.
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Clarify unthreaded vs. main timeline receipts.
* Fix typos.
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Clarify wording.
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Clarify example.
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Fix alternatives section.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Tulir Asokan <tulir@maunium.net>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Add MSC for dir & filter on /relations.
* Fix typo.
* Simplify additional parameters.
* Add alternative.
* Add an unstable prefix.
* Move note about backwards compat.
* Add a link.
* Clarify proposal.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Re-title MSC
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Document another alternative.
* Add note about prev_batch token.
* Clarifications from review.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Flesh out description.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add initial MSC for notfications for threads.
* No longer depends on MSC3664.
* Fix events in diagram.
* Major simplification.
* Add missing words.
* Add a note about reactions.
* Clarify homeserver behavior when processing push rules.
* Link to a spec version instead of latest.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update 3773-notifications-for-threads.md
typoe
* Clarify wording.
* Update how homeservers are to partition threads.
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
https://github.com/matrix-org/synapse/pull/13031 originally added support for the feature to Synapse, which although doesn't include an obvious federation route it does end up sending the field over federation.
[Here](a6895dd576/synapse/federation/transport/client.py (L481)) the server copies the search filter just before it goes over the wire, which is supplied by through a chain of function calls originating [here](c6d6176411/synapse/rest/client/room.py (L456)).
Additionally, it is clear that this sort of feature would have included federation given the filtering is able to be proxied directly like this (as demonstrated by Synapse above).
As such, this is determined to be a clarification/minor edit to the MSC, not requiring a second MSC to add the functionality.
* add proposal xxxx-copy-room-type-on-upgrade.md
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* MSC 3818: add MSC number
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* msc3818: remove template text from beginning
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* 3818-copy-room-type-on-upgrade: refer to the current version of spec and what to change
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* Update proposals/3818-copy-room-type-on-upgrade.md
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
Co-authored-by: Andy Balaam <mail@artificialworlds.net>
* Update proposals/3818-copy-room-type-on-upgrade.md
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* 3818-copy-room-type-on-upgrade.md: specify v1.2 in links
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* 3818-copy-room-type-on-upgrade.md: correct link for MSC3588
Signed-off-by: Aminda Suomalainen <suomalainen+git@mikaela.info>
* MSC3818: note potential issue when state events are needed
* MSC3818: note an alternative of all room types needing an MSC
Co-authored-by: Andy Balaam <mail@artificialworlds.net>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* initial version of message editing proposal
* fix MSC numbers
* Fix JSON in example
Co-authored-by: Alexandre Morignot <erdnaxeli@gmail.com>
* clarifications
* remove obsolete "XXX:", and fix a typo
* Initial cleanup and restructuring
* Clarify algorithm for replacing content
* background
* More clarifications on applying edits
* Clarify behaviour of redactions
* Minor grammar fixes
* Move the section on `msgtype` down
It clutters up the initial description - let's move it down into a more
detailed section.
* Clarify how edits are ordered
- we use event_id as a tiebreaker.
We also have a section in "Future considerations" about this, so I don't think
we need the braindump in "Edge cases".
* Spec the behaviour for encrypted events
* Requirements for an edit event to be considered valid
* Collect "client behaviour" and "sever behaviour" together
... and clarify these sections.
* Clarify permalinks section
* Notes on edits of replies
* Clarify that `m.relates_to` within `m.new_content` is ignored
* Clarifications from review
* event ids are sorted lexicographically
* Clarify aggregation section
* minor clarifications
* Clarify which endpoints support edits
* move definition of latest edit
* Apply suggestions from code review
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* fix typo
* Attempt to clarify encrypted events
Co-authored-by: Alexandre Morignot <erdnaxeli@gmail.com>
Co-authored-by: Richard van der Hoff <richard@matrix.org>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* What if we let people hide their read receipts?
* Add unstable prefix
* Update proposals/2285-hidden-read-receipts.md
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Use a separate `receiptType` for hidden read receipts (#3750)
* Update the way MSC2285 works
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Update proposals/2285-hidden-read-receipts.md
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Clarify notification behaviour and other things
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Mention adding `m.fully_read` to `/receipt`
* Rename MSC to `Private read receipts`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Apply suggestions from review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply suggestions from review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove trailing comma
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply suggestions from review
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Apply suggestions from review
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* `r0` -> `v3`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Describe how to determine server support while stable
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more precise about the failure mode
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Improve wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Improve wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Improve wording
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more explicit
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more explicit around server support
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Simplify text
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more explicit about detecting server support
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add note about consistency
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Clarify how exactly to detect support
* Try to fix clarity around precedence
* Be clearer about alternatives
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add sentence about `/receipt` federation
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be more explicit about adding `m.read.private` to `/receipt`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Fix wrong RR type
Co-authored-by: Kévin Commaille <76261501+zecakeh@users.noreply.github.com>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Kévin Commaille <76261501+zecakeh@users.noreply.github.com>
* Proposal to fix homeserver -> appservice authorization
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Remove query parameter entirely instead of deprecating it
Signed-off-by: Tulir Asokan <tulir@maunium.net>
* Update title
Co-authored-by: Jonathan de Jong <jonathandejong02@gmail.com>
Co-authored-by: Jonathan de Jong <jonathandejong02@gmail.com>
* initial draft of reference relations msc
* change MSC number
* Apply formatting
* Convert to point at present rather than ideal
* Clarify that multiple relations is a thing we don't have and won't fix here
* Fix wording to match reality, again
* fix a typo
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Andrew Morgan <andrewm@element.io>
* Add a default push rule to ignore `m.room.server_acl` events
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Update MSC number
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Add prefix `.`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Link to spec
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Be more explicit about why the rule is needed
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Clarify push rule ordering
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Don't rely on unmerged MSCs for ordering
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Be even more explicit about why we need this
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Improve wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Improve wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Improve wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add missing period
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add spec link
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove `when merged`
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove `dont_notify`
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Check `state_key`
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify the current_user_participated flag from MSC3440.
* Add a better link to the definition.
* Clarifications from review.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* add proposal for adding the dest to federation auth headers
Signed-off-by: Jan Christian Grünhage <jcgruenhage@famedly.com>
* address compatibility concern regarding fed auth headers
The MSC already addressed old implementations receiving events from
newer implementations sending the additional field, but not the other
way around, which is added in here
* clarify the problem MSC3383 aims to solve
* clarify which verification msc3383 talks about
* clarify what happens with unknown destinations in msc3383
* Initial commit.
* MSC number.
* Link to the current specification.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify that this is a change (and not part of MSC2675).
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove extra work.
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Add missing slashes and some links.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Initial deprecate sender key MSC
* Formatting
* Deprecate 'sender_key' in 'm.room_key_request'
* Update proposals/3700-deprecate-sender-key.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3700-deprecate-sender-key.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Formatting
* Update language around looking up sessions
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Threading via relation
* Add explainer on how to handle m.in_reply_to
* Clarify wording on threading MSC
* Mention MSC3051 in the alternative section of MSC3440
* Clarify updates to MSC2675 for MSC3440
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Line wrap the MSC
* More line wrapping for MSC3440
* Clarify single-layer event aggregation section
* Update thread-as-rooms advantages
* Clarify backwards compatibility and incremental support
* Clarify wording and correct typos
* Splitting Cerulean and MSC2836 in alternatives section
* Add dependencies for threads MSC
* Clarify intro to threads as rooms
* Add currentUserParticipated flag
* snake_case over camelCase
* Adding dependency to MSC3567
* Add threads capability
* Fix typo
* Update syntax highlighting to use jsonc
* Add limitations when fetching thread content by relation type
* Add reply chain fallback via m.in_reply_to
* Clarity in wording and fix typo
Co-authored-by: James Salter <jamess@element.io>
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
* Cosmetic changes based on pull request feedback
* Add note to allow clients to omit fallback for rich replies
* fix typo
* Clarify wording to not confuse thread answers with quote-replies
* move relations justification to alternatives section
* Clarify handling of m.in_reply_to missing rel_type:m.thread
* Fix typo
* Fix typo
* Declare MSC2781 as a dependency
* Use rich reply over quote reply
* Depend on MSC3676 rather than MSC2781
Rather than relying on fallbacks being removed outright (and all the notification complications that causes in #2781), instead depend on #3676 which makes fallbacks best effort.
* Remove full stop typo
Co-authored-by: Erik Johnston <erik@matrix.org>
* Clarify new filtering parameters.
* Fix typo.
* Update wording for client side considerations
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Add m.in_reply_to mixin to thread fallback
* Add guidance for clients and servers for thread invalid relations
* update thread root wording
* Add better definition to reply target event
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Add note regarding forward compatibility
* link to MSC2674
* Update proposals/3440-threading-via-relations.md
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
* Clarification on responsibilities for the reply fallback
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update `/messages` API endpoint version on example
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply wording suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add notes on server-side invalid relation filtering
* Fix typo
* reword paragraph about forwarding m.thread relation
* Add unstable prefix for capability endpoint
* Re-order alternatives to match intro paragraph
* rework relation_senders and relation_types definition
* Apply wording suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Kim Brose <kim.brose@rwth-aachen.de>
* Clarify fallback mechanism
* Rename filter property names
* Change m.render_in to m.display_reply_fallback
* Clarify what endpoints support the new filter
* Switch from /capabilities to /versions
* remove references to Cerulean
* Update latest_event description
* Clarity in wording and fix typo
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* rename m.display_reply_fallback to hide_reply
* remove redundant paragraph about forward compat
* Improve bundled relationship example
* Explain context on why a thread-unaware client might want to send m.thread
* Clarify `hide_reply`
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Rename hide_reply to show_reply
* rename show_reply to is_falling_back
* Add note about stable support.
* Update proposals/3440-threading-via-relations.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: James Salter <jamess@element.io>
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
Co-authored-by: Erik Johnston <erik@matrix.org>
Co-authored-by: Patrick Cloke <patrickc@matrix.org>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Kim Brose <kim.brose@rwth-aachen.de>
The spec had an erroneous `room_id` field in a m.typing EDU entry of /sync, `m.read` receipts in `/sync`, and `m.fully_read` room account data objects in the spec. None of these are necessary nor used in practice.
Checking part of the ecosystem for whether clients look for, or homeservers include, these room_id fields, I found that:
Element does not require them, nor does Synapse include them.
Ruma does not include them.
Dendrite does not include them.
nheko/mtxclient does not look for them.
This change removes room_id from the example and OpenAPI schema in each case mentioned above. It only affects the Client-Server spec - the Server-Server spec text remains unchanged.
The field was initially introduced in 0f28f83.
Fixes#3641
The spec says the name field in m.room.name events must not exceed 255 bytes but no servers actually enforce this over the C-S API. Clients should probably already be truncating room names to an appropriate length for their user interface.
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Fix membership state table and diagram
There were 2 missing cases which are legal:
* `invite->knock` (a fairly silly thing to do, but legal under the auth rules)
* `external->leave (via /kick)` (another somewhat silly thing to do, but no different than `external->ban (via /ban)`)
The state table considered the first as illegal, which is untrue.
* Changelog
* Make the graph prettier
* Update changelogs/client_server/newsfragments/3730.clarification
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix m.login.appservice -> m.login.application_service
Implementations seem to agree with the proposal, so I'd suggest we fix the typo in the spec. I don't *think* this needs a MSC as the original proposal was fine, and this was just a copy error.
* Create 3711.clarification
* Update 3711.clarification
* Update changelogs/3711.clarification
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Fix knock->leave transition in auth rules
This was an oversight from knocking being added.
For safety, this has been verified as at least intended by Synapse to work:
f5e2cde3f5/synapse/event_auth.py (L390-L391)
* changelog
* MSC3676: Transitioning away from reply fallbacks
* msc number
* md fails
* typoe
* Update proposals/3676-transitioning-away-from-reply-fallbacks.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* incorporate feedback
* consolidate justification
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Fixes#3305Fixes#3380
The idea here is to better distinguish between a 'raw' event (as we send over the wire), and the
'serialised' format, as sent in responses to the C-S api and in `PUT /_matrix/app/v1/transactions/{txnId}`.
It's made more complicated by the fact that there are _two_ serialisation formats, one used by `/sync`
and `/notifications`, and one by everything else (the difference being whether `room_id` is included).
In an ideal world, we wouldn't repeat `SerialisedEvent` every time it's used, and instead just link to the
first reference, but that's a job for another day.
Another job for another day is to get rid of things like `sync_state_event.yaml` (which is now used
only in one place, so should be inlined.)
* Update documentation style & fix room version heading order
Also add a missing signing key section to v6.
This additionally contains various edits to the fragments to have them make a little bit more sense in context.
Finally, this updates various aspects of the documentation style which haven't previously been considered - they're added here considering we're in the area.
* changelog
* enhanced changelogs
* Minor wording adjustments
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update several spots where C-S API was still using r0 APIs
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Add changelog
Signed-off-by: Aaron Raimist <aaron@raim.ist>
Fixes#2237.
Corrects the response schemas for:
```
PUT /user/{user_id}/account_data/{account_dataType}
PUT /user/{user_id}/rooms/{roomId}/account_data/{type}
PUT /directory/list/room/{roomId}
PUT /sendToDevice/{eventType}/{txnId}
POST /account/3pid
POST /account/3pid/add
POST /account/3pid/bind
```
* Room versions 8 and 9: Restricted rooms
MSCs:
* https://github.com/matrix-org/matrix-doc/pull/3083
* https://github.com/matrix-org/matrix-doc/pull/3289
* https://github.com/matrix-org/matrix-doc/pull/3375
* Changelogs
* Capitalization
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Remove verbiage for spaces because they don't exist
* Iterations on text
* Another clarification
* Make error code descriptions consistent
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Incorporate from merge
* Misc language update per review
* Update accuracy before splitting auth rules
* fix wtf moment
* Fix up v8 and v9 to match "fully specify room versions"
* Scope auth events selection to room version
* Apply consistency
* Add changelogs
* Review part 1
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Split out redaction sections
* Clarify general case of join conditions
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* First iteration of specifying Spaces
MSCs:
* https://github.com/matrix-org/matrix-doc/pull/3288
* https://github.com/matrix-org/matrix-doc/pull/2946
* https://github.com/matrix-org/matrix-doc/pull/1772
Note that this makes modifications to the underlying MSCs as well. These are intended to be minor edits to aid clarity/accuracy of the MSCs, as per the proposal process. Functionally, clients and servers might need to change their behaviour slightly as is expected of implementing this stuff early. Synapse has these changes (alongside backwards compatibility) here: https://github.com/matrix-org/synapse/pull/11667
* add changelogs
* Accuracy per review
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* fully prefix new endpoints
* Fully prefix endpoint in 3616 too
* Fix ordering example
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Initial cut of MSC to standardize from being optiona on /messages requests.
* Fix typo.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Clarifications of start/end.
* Add information about back-paginating excluded events.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* initial version of serverside aggregations proposal
* fix MSC numbers
* clarification
* add e2ee section from 2674 here, as it is only needed for server-side aggregations
* move edge case wrt to calling /context on a relation here from 2674
* fix typo
* clarify which APIs should bundle relations
* move stale_events over to future extensions section
* summarize stale_events and make tone conditional to mark that is not part of the MSC
* casing and wording
* clarify in summary an API for requesting relations is also proposed
* remove proposal for batch get event api as is unused and unimplemented
* attempt to clarify relations vs aggregations
* clarify pagination and align it with synapse impl already in the wild
* conciseness
* better headers
* clarify that relations are always returned, contrary to aggregations
* document the limitation of the event type not being known in e2ee rooms
* specify that redacted relations are not aggregated
* remove type in (non-binding) example as synapse doesn't do this
* mention that these are just examples
* clarify that this is a non-normative example
* Update proposals/2675-aggregations-server.md
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* add http method for endpoint list
* line break
* remove "unbundled relations" term, it's just confusing
instead use relation events,
with the bundled form now called aggregation
also restructure the headings so we have on section about aggregations
and another one about querying relation events
* some more restructuring of text after changing doc structure
* mention original_event for m.replace relations
* remove dir param as it is unused and unimplemented
* clarify that relating pending events should happen by transaction_id
* remove unimplemented /aggregations/{eventID}//{eventType}/{key}
endpoint
* Update proposals/2675-aggregations-server.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* mention that the server might not be aware of all the relations
* clarify that redacted events should still return their relations and aggregations respectively
* remove /context edge case, it should not be special-cased
* Update proposals/2675-aggregations-server.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* bad example, replies doesn't use relations
* clarify that we dont bundle discrete events
* clarify that we dont bundle discrete events, again
* improve example
* clarify this MSC does not use a prefix
* better english
* clarify pagination in example
* better english
* remove contradication: m.reference doesn't support pagination but example mentions it
* double punctuation
* clarify that only the bundled aggregation limit for truncation can't be set by the client, /aggregations does have a limit param
* move e2ee limitation to limitations section
* clarify prefixes
* mention that state events never bundle aggregations
* Update proposals/2675-aggregations-server.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* add that the visibility of relations can derive from that of the target
* typsos
* be more explicit
* moar rewording
* keep related parts together
* don't make a relation invisible because the target event isn't
also clarify what to do with relations for which the target is invisible
* Update proposals/2675-aggregations-server.md
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* better words
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* be more precise when clients should ensure the key is shared
* mention that ignored users can cause different aggregations for users
* move visibility rule changes to MSC3570
* don't overspecify visibility limitation, allow for unspecified behaviour
as synapse includes the invisible events in the aggregation
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* move non-normative note to below example
* make rel_type mandatory as the response structure doesn't allow for mixing types
* fix typo/thinko
* make pagination forward only as there is no use case for backwards
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* add non-normative aggregation examples
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* use relation type rather than rel_type
the former is already define as the latter in MSC 2674
* change trailing slashes remark to event_type, rel_type is mandatory now
* reword and split out client-side aggregation section
* rename parent event to target event, the term used elsewhere
* apply suggestion
* apply suggestion
* remove pagination
* remove mentions of /aggregations endpoint after removing pagination
* add note about not bundling into state events
* restructure headers so more of the aggregations stuff is under section
* make rel_type mandatory for /relations and better wording
* remove confusion that aggregations contain more info than relations
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* mention that tokens from /sync, /messages can be used on /relations
* try not to be overly prescriptive
* remove edge case of ignoring events without target event, as ignoring is not always safe
* clarify limitation for encrypted rooms
* make rel_type optional again for /relations
* Update proposals/2675-aggregations-server.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2675-aggregations-server.md
Co-authored-by: Matthew Hodgson <matthew@arasphere.net>
* mention requires auth and rate-limited on /relations
* replace hypothetical examples for bundled aggregations with non-normative ones
* move to MSC 2676 as it's specific to edits
* dont repeat how local echo using transaction_id works
Co-authored-by: Bruno Windels <bruno@windels.cloud>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Matthew Hodgson <matthew@arasphere.net>
Now that we've dropped the old build pipeline (and an assets directory does not exist in the repo any longer, we can rename the hugo version of the assets (assets-hugo) created during the build tools migration back to simply assets.
* Add registration token UIA type
MSC: https://github.com/matrix-org/matrix-doc/pull/3231
**Note**: This introduces the endpoint as v1 rather than r0 given the global versioning changes landed between the acceptance of the MSC and now.
* Fix swagger
* Changelogs
* Update data/api/client-server/registration_tokens.yaml
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Fix rendering of response examples
Fixes the autogeneration of JSON examples for array objects. This fixes a
number of "Specification error: Example invalid or not present" errors in the
rendered spec.
* Unbreak examples for non-objects/arrays
The previous change had broken auto-generated examples for everything that
wasn't an object or array; fix it up again.
* Remove conditions on $example
Everything should now have a generated example, so the condition is
redundant. Furthermore it was suppressing examples for APIs where the example
was an empty dict.
* Copy spec PR near-verbatim from past PR
With light review being addressed.
https://github.com/matrix-org/matrix-doc/pull/3168
* Alter for modern day
* Add changelog
* specify that we're using the grammar
* Add HTTP 403 to possible profile responses
Some servers may not allow profile lookup over federation, and thus
respond to GET /_matrix/client/v3/profile/{userId} with an HTTP 403.
For example, Synapse can be configured to behave in this way by setting:
allow_profile_lookup_over_federation=false
Thus, this behavior already exists in the wild, and may cause issues for
clients such as https://github.com/vector-im/element-web/issues/17269.
Synapse could alter its behavior and return an HTTP 404 in these cases,
but amending the Spec seems preferable to align with extant behavior.
Further, allowing HTTP 403 gives clients more specific information as to
why a request has failed, enabling more precise error handling.
Signed-off-by: Dan Callahan <danc@element.io>
* Update changelogs/client_server/newsfragments/3530.clarification
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Annotate misc data about error
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Fixes#3465. The change adds a line explicitly warning developers that the base_url of client well_known may or may not include a trailing slash and to be prepared to handle both cases.
* Add a release branch to avoid orphaned commits.
* Specify a patch process.
* Match reality and reference the internal deployment process.
This is largely what we do in practice now, including a created `release/v1.1` branch.
Switch to upstream and use a more recent version.
Fixes failure to edit on empty descriptions.
Signed-off-by: Alexandre Franke <alexandre.franke@matrix.org>
* MSC3419 - Guest state events
Let guests send state events. Needed for guests to work with native
group voip in #3401
* typo
* Update 3419-guest-state-events.md
incorporate @clokep clarification
* also let guests send non-m.room.message events in general.
* Update proposals/3419-guest-state-events.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3419-guest-state-events.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* wordwrap
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
The documentation for the `/notifications` API had its own special definition
of what an Event was, which was used nowhere else.
The common definition isn't perfect, but it *is* common, so it gives us a
better starting place for improvement.
* Clarify that E0 and E1 are not returned
* Clarify that ASCII art diagram 2 refers to diagram 1
* Correct third ASCII art diagram
To match the spacing in. Borked in the move to new docs format.
55aed1d296/specification/client_server_api.rst (L1610-L1615)
* Make ASCII art 3 follow from ASCII art 2
* Explain how to fill the gap
* Create 3543.clarification
* Update content/client-server-api/_index.md
Co-authored-by: Travis Ralston <travisr@matrix.org>
Remove a bunch of fields from the `unsigned` property of PDUs. These things
shouldn't be passed over the Federation API, and they *really* shouldn't be
trusted if they are sent by another server.
* `replaces_state` *is* returned by Synapse, but probably shouldn't
be.
* `redacted_because`, `prev_sender` and `prev_content` are not sent by Synapse.
* initial version of event relationship MSC
* fix MSC numbers
* clarifications
* mention multiple relations per event might be useful, but postpone for a future MSC
* mention MSC 3051 for proposed multiple relations
* remove send_relation endpoint
* move e2ee section under sending relations
* mention limitation of leaving server-side aggregations out for now
* remove mentions of m.reference, we'll sort that out in another MSC
* whitespace
* argument why m.relates_to should be preserved by redactions more general
but still give example of redacted edits
* deal with this in the comments
* clarify the conditions to meet for a relation
* mention specifically that this does not replace replies (yet)
* clarify how general rel_types should be
* clarify that gaps may cause clients to be unaware of some relations
* Update proposals/2674-event-relationships.md
Co-authored-by: DeepBlueV7.X <nicolas.werner@hotmail.de>
* Update proposals/2674-event-relationships.md
Co-authored-by: DeepBlueV7.X <nicolas.werner@hotmail.de>
* make wording clearer and move to bottom of section
* remove this as references are not defined here anymore
* clearer wording
* move edge cases to other relevant mscs
* clarify that a goal of sticking to this format is backwards compat.
* mention MSC 3267, to which m.reference has been extracted
* Update proposals/2674-event-relationships.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2674-event-relationships.md
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Update proposals/2674-event-relationships.md
Co-authored-by: Matthew Hodgson <matthew@arasphere.net>
* Update proposals/2674-event-relationships.md
Co-authored-by: Matthew Hodgson <matthew@arasphere.net>
* Update proposals/2674-event-relationships.md
Co-authored-by: Travis Ralston <travpc@gmail.com>
* wrap lines
* better wording
* this is singular, really
* add example of event shape
* specify how invalid relations should be treated by the redaction algorithm
* fix typo
* split up redactions changes in separate MSC
* also add new msc to introduction
* reword why not adopt m.in_reply_to
* remove guidelines how to pick rel_type
* mention that the target event must exist in the same room
* spell out the conscious (subject, object, verb) triple idea.
* Spelling
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* remove paragraph saying what server should accept
* Revert "remove paragraph saying what server should accept"
This reverts commit e0271331b2.
* further specify that a server should reject invalid relations through the cs api
* linebreak
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Bruno Windels <bruno@windels.cloud>
Co-authored-by: DeepBlueV7.X <nicolas.werner@hotmail.de>
Co-authored-by: Matthew Hodgson <matthew@arasphere.net>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Split the text about event IDs and event formats into separate sections. This
is largely to make it easier to link to, but I think the resulting text makes
more sense too.
The entries were text-less and not really helping anyone. They are included as pages because we need them for templating, but we don't need people to be able to land on them directly.
* Remove entries which don't affect the rendered spec (sorry people using the swagger schemas - we'll have to figure out a changelog for you). See https://github.com/matrix-org/matrix-doc/issues/3475
* Note that a breaking change is removed by this commit: key backup was introduced in this release cycle, so is not breaking.
* Use uniform references to MSCs ("as per MSC0000").
* General rewording to be consistent with the overall voice of the changelog.
* Condensing of entries where needed to make them fit in the changelog.
* Rewording to collapse entries into fewer lines.
* Spell "deprecation" correctly in file extension.
This fixes the behaviour to match what synapse implements in practice.
If you use threepidCreds, you will just get an error about a missing
threepid_creds field. Synapse also treats this as an object. All clients
also seem to send threepid_creds, if they work on Synapse. Since
matrix.org requires an email currently for registration, most clients
that implement registration, will hit this issue.
a0f48ee89d/synapse/handlers/ui_auth/checkers.py (L145)fixes#3156fixes#2189
Signed-off-by: Nicolas Werner <nicolas.werner@hotmail.de>
* Fully specify room versions
* Misc typo clarifications
* Try to clarify redactions a bit
* Update content/client-server-api/_index.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update content/rooms/v6.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update content/rooms/v6.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Better describe client considerations
* Doc template params
* Move redaction "new stuff" to v3
* Remove unhelpful sentences about "here follows unchanged stuff"
* Simplify event signing text
* Clean up handling redactions sections
* Move v4's event schema to unchanged section
* Update content/rooms/v4.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Spaces Summary
* MSC2946
* Clarity
* More clarity
* Clarify what no room data means for clients
* Federation API
* Update 2946-spaces-summary.md
* auto_join filter
* Blurb on auth for fed api
* Update to reflect MSC1772 changes
* Mention auth chain on federation api
* Add 'version' field
* Stripped state; remove room versions
* Update 2946-spaces-summary.md
* Update proposals/2946-spaces-summary.md
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Replace with link to draft doc.
* Add a preamble and copy the current draft API.
* Switch to using stable identifiers (and add an unstable identifiers section).
* Updates / clarifications.
* Fix typo.
* Clean-ups.
* Update proposals/2946-spaces-summary.md
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Drop unstable identifiers from MSC1772.
* Various updates and clarifications.
* Include the origin_server_ts in the response, as needed by MSC1772.
* Rename a parameter for clarity.
* Fix typo.
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Various clarifications based on feedback.
* Add auth / rate-limiting info.
* Combine some double spaces.
* Use only GET endpoints.
* Add notes about DoS potential.
* Tweaks from review.
* Add context about why stripped events are returned.
* Remove some implementation details.
* Add notes on ordering.
* Remove unnecessary data.
* Clarify the server-server API.
* More clarifications.
* Remove obsolete note.
* Some clarifications to what accessible means.
* Update notes about sorting to include the origin_server_ts of the m.space.child event.
This reverts commit af8c7b04d9.
* Only consider `m.space` rooms and do not return links to nowhere.
* Updates based on MSC3173 merging and updates to MSC3083.
* Updates per MSC2403.
* Remove field which is not part of the C-S API.
* Rewrite the proposal.
* Handle todo comments.
* Update URLs.
* Rename field.
* Updates based on implementation.
* Clarify the state which is persisted.
* Expand notes about errors.
* Update MSC with pagination parameter.
* Fix wrong endpoint.
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
* Clarifications based on implementation.
* Remove empty section.
* Fix typo.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Rename field in example.
* Clarify error code.
* Clarify ordering changes.
* Clarify wording.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Fix typos.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Clarify that rooms do not belong to servers.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Fix example to use correct URL.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Clarify using local vs. remote data.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Clarify bits aboud stripped state.
* Clarify access control of federation responses.
* Clarify error code.
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Be less prescriptive about expiring data.
* Limit must be non-zero.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Rate limiting.
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Add a note about room upgrades.
* Update stable URLs per MSC2844.
* Clarify federation return values.
* Clarify `origin_server_ts`.
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Tweak wording around `inaccessible_children`.
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <richard@matrix.org>
Co-authored-by: Patrick Cloke <patrickc@matrix.org>
Co-authored-by: Matthew Hodgson <matthew@matrix.org>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Build release tags of the spec
* Update .github/workflows/main.yml
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Move historical (future old) job out to its own thing
* Update for new baseurl setup
* Use hugo config overrides instead
* Remove mistakenly re-added matrix.org poke
* Restore npm stuff to main branch representations
* [2] Restore npm stuff to main branch representations
* Update .github/workflows/main.yml
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* add room type in store invite
* update dev identifier purpose
* Added clarification if type not present, and on email generation
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update proposals/3288-pass_room_type_in_3pid_invite.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update 3288-pass_room_type_in_3pid_invite.md
fix typo
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove extra pyprojects and update changelog docs
* Add script for rendering the changelog
* Add docs for how to release the spec
* Move legacy changelogs out of the way
* Inline resolve_references in dump-swagger
Since this is the only bit of the old templating system we still use, let's
inline it.
OrederedLoader and OrderedDict are now redundant, because all dicts in Python
preserve insertion order.
* Remove the old templating system
We've now replaced the old templates with hugo, so we can get rid of this mess.
PyYAML 6.0 was released yesterday, and it finally drops support for `yaml.load`
without a `loader` argument, which has been deprecated since 2017.
We don't use any fancy yaml objects, so `safe_load` should be fine.
* Introduce a new "added-in" template and use it on endpoints
* Use "added-in" on schema properties too
* Annotate sections of the spec with their added versions
* Demo of "added-in" on a room version (to be fleshed out)
* Use clearer versioning semantics
* Update and fix validator for Swagger custom properties
* Fix docs
* Cut/paste room version spec to its own page
* Move grammar to bottom + add feature matrix
The version grammar is not as interesting as the actual room versions, so this moves that whole section to the bottom.
* Fix all links to room versions
As "unstable" changes and "latest" becomes no more, these sorts of links should be updated to reference the approximate section they intended to reference at the time of writing.
This change tries to link up the relevant bits for the time of the proposal, though it's not a perfect match. Some MSCs were brought into the spec before an API version could be assigned to the "old" text, so github permalinks are used instead.
* Refresh tokens MSC
* MSC2918: minor changes
* MSC2918: access token expiration as milliseconds
* MSC2918: account registration API changes
* MSC2918: fix `expires_in_ms` example
* MSC2918: add precision about token revocation
* MSC2918: specify error codes for the refresh API
* MSC2918: clarify that the change also applies to ASes
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* MSC2918: clarify what problem this MSC solves
* MSC2918: minor formatting and rephrasing
* MSC2918: clarify ratelimiting, masquerading and authentication on refresh token API
* MSC2918: make expires_in_ms/refresh_token optional
* MSC2918: soft logout in refresh token API
* MSC2918: add detailed rationale
While not exhaustive, it outlines a few attack vectors this MSC tries to
mitigate.
* MSC2918: minor fix
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* MSC2918: clarifications on backward compatibility
* MSC2918: advertise support in the request body
* MSC2918: clarify on what happen when token expire
* MSC2918: remove redundant precision about token expiration and lifetime
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* MSC2918: minor clarification
* MSC2918: soft logout when using expired token
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Hubert Chathi <hubert@uhoreg.ca>
* Proposal for token authenticated registration
Signed-off-by: Callum Brown <callum@calcuode.com>
* Hard-wrap lines
Signed-off-by: Callum Brown <callum@calcuode.com>
* Link to released version of spec
Signed-off-by: Callum Brown <callum@calcuode.com>
* Fix unstable prefix wording
Signed-off-by: Callum Brown <callum@calcuode.com>
* Tokens should only be invalidated after registration
Signed-off-by: Callum Brown <callum@calcuode.com>
* Change auth type to m.login.registration_token
This is consistent with the other UIAA auth types, and does not suggest
that other `m.login.*` types cannot be used for registration.
Signed-off-by: Callum Brown <callum@calcuode.com>
* Add proposal for checking the validity of a token
Signed-off-by: Callum Brown <callum@calcuode.com>
* Fix validity checking endpoint
Signed-off-by: Callum Brown <callum@calcuode.com>
* Limit allowed characters and length of token
This allows tokens to be used easily in query parameters
Signed-off-by: Callum Brown <callum@calcuode.com>
* Give reason for limiting token length and chars
Signed-off-by: Callum Brown <callum@calcuode.com>
* Note all stages must be complete for registration
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix mistake in MSC number
Signed-off-by: Callum Brown <callum@calcuode.com>
* Validity checking should be rate limited
Signed-off-by: Callum Brown <callum@calcuode.com>
* Change v1 to r0
Signed-off-by: Callum Brown <callum@calcuode.com>
* Include `.` and `~` in allowed characters for registration tokens
For consistency with the unreserved URL characters in RFC3986
https://www.ietf.org/rfc/rfc3986.html#section-2.3
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Clarify how redacted_because actually works for events
* changelog
* mention federation
* Fix wording
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This tweaks the DAG to be simpler, with two linear event chains E4 -> E3
-> E2 -> E1 and E6 -> E5 -> E2 -> E1. The extremities of the DAG are now
the first and only point in the DAG where multiple event parents occur.
Since the point of the diagram is to demonstrate this very situation,
it's better didactically if there is only one such situation in the
diagram.
The Pagination section in the C-S API was, basically, full of rubbish. I think that anything of any value it contained was repeated either directly on the API definitions or in the text specific to syncing at https://spec.matrix.org/unstable/client-server-api/#syncing.
The conventions I've added to the Appendices are based on the discussions in #1898. They are there because I don't want to have to go through it all again next time we add a paginated API.
Fixes: #1898Fixes: #2268
Apparently, in response to a /_matrix/federation/v1/user/devices/{userId} request, Synapse actually returns a key called "self_signing_key" instead of "self_signing_keys".
This change drops the Origin and Accept header names from the
recommended value for the CORS Access-Control-Allow-Headers header. Per
the CORS protocol, it’s not necessary or useful to include them.
Per-spec at https://fetch.spec.whatwg.org/#forbidden-header-name, Origin
is a “forbidden header name” set by the browser and that frontend
JavaScript code is never allowed to set.
So the value of Access-Control-Allow-Headers isn’t relevant to Origin or
in general to other headers set by the browser itself — the browser
never ever consults the Access-Control-Allow-Headers value to confirm
that it’s OK for the request to include an Origin header.
And per-spec at https://fetch.spec.whatwg.org/#cors-safelisted-request-header,
Accept is a “CORS-safelisted request-header”, which means that browsers
allow requests to contain the Accept header regardless of whether the
Access-Control-Allow-Headers value contains "Accept".
So it’s unnecessary for the Access-Control-Allow-Headers to explicitly
include Accept. Browsers will not perform a CORS preflight for requests
containing an Accept request header.
Related: Related: https://github.com/matrix-org/synapse/pull/10114
Signed-off-by: Michael[tm] Smith <mike@w3.org>
This resolves a jarring text overlap issue with the sidebar by only adjusting
the `max-height` at larger widths, which matches the original rule being
overridden.
Fixes https://github.com/matrix-org/matrix-doc/issues/3049
Fixes#3146.
This PR changes the Matrix Spec Proposals page to clarify that implementations **do not** need to wait until a spec release to use stable prefixes, but that they can do so after the corresponding MSC has been merged. The justification is that once an MSC has been merged, it's fairly guaranteed that it will land in the spec. Yet it will take time for the spec release process to run its course, and we shouldn't make implementations wait for that.
The exception to this is if implementating a feature in a backwards-compatible way requires a new spec version to indicate to clients/servers that a feature has been added/changed. This situation is rare though, and most implementations won't fall into this category.
It wasn't entirely clear what should happen to the FCP timer (and state) when a concern is raised during FCP. After some discussion, we agreed that when a concern is raised:
1. FCP will continue to not conclude until at least 5 days have passed, but once those 5 days are up it *still* won't conclude until all concerns raised during FCP are resolved.
2. If a concern warrants a large enough change in the document, then the Spec Core Team may consider cancelling FCP and restarting the timer in order for people to have some time to think about and review the new changes.
The regex of allowed characters for a `client_secret` parameter is `[0-9a-zA-Z.=_-]`.
This PR updates the `client_secret` spec examples, which currently include an invalid character (an apostrophe).
This PR does two things:
* Updates the git submodule for the new spec hugo theme ([google/docsy](https://github.com/google/docsy)) to our fork ([matrix-org/docsy](https://github.com/matrix-org/docsy)) which has a couple changes to load JS from local sources instead of remote, as well as allowing sites to override the URL that font CSS files are loaded from. Note that my definition of "font CSS" files here as CSS files that contain settings and point to locations of where font files (`.woff2`) are located.
* Adds a script (and the files generated as a result of running that script) that can take a google fonts URL, download the fonts it points to and spit out those fonts as well as a font CSS file pointing to them for local distribution. We then use the resulting font CSS file in our project variables.
This brings the benefit of not serving files from a CDN which can track users across the web, as well as inadvertently pinning docsy to a specific commit. The downside is that we need to remember to update [matrix-org/docsy](https://github.com/matrix-org/docsy) when needed (and apply the patches on top, though they're quite small).
Since we're deploying to https://spec.matrix.org/unstable now. This only updates the `baseURL` for our buildkite build. The default is still `/` when doing a local build.
This PR attempts to update the CI of matrix-doc to build [the new spec redesign](https://github.com/matrix-org/matrix-doc/issues/2906). It does so by additionally building the new spec in parallel to the old. The plan is to continue to host the old spec at https://matrix.org/docs/spec, while the new spec will be at https://spec.matrix.org. Eventually we will retire the old version of the spec, and have the old URL redirect to the new one.
In detail, this PR:
* Adds a new step to CircleCI to build the new spec with `hugo`. This step uses alpine, grabs some dependencies, and then builds the HTML.
* We needed to hand some specific options to hugo for CircleCI in order to continue allowing CircleCI to host temporary builds of the spec after each CI run. This required changing some assumptions related to relative paths.
* CircleCI's artifacts hosting is also quite limited. Specifically it will not automatically resolve `/some/path` to `/some/path/index.html`, which our hugo theme relied on. Fixes were implemented for this, but we may want to consider switching away from CircleCI artifacts as a host, and using something like [netlify](https://www.netlify.com/) instead.
* Modifies the existing Buildkite pipeline step to build both the new spec in a separate step. It additionally modifies the old spec to be built with alpine. (Separate out into another PR)
* We'd like to separate out the deployment of matrix.org from the new spec. Therefore a new step, with a separate artifact build (`spec.tar.gz`). We will eventually remove the old step and the matrix.org build trigger.
* Modifies `pyproject.toml` to update the config of [giles](https://github.com/OpenAstronomy/baldrick/blob/master/baldrick/plugins/circleci_artifacts.py), which is what creates the "docs", "swagger" links in the CI steps for matrix-docs PRs.
* A new step was added for the new spec. The old spec was renamed to "legacy".
Historical note: this was originally a series of several commits, spread out
over several weeks. They have been squashed together to make `git annotate`
work properly.
The original commits were:
* 91ab3934 <Will> 2021-01-25 21:16:42 -0800 Add raw API end event schemas into /data directory
* aae22f47 <Will> 2021-01-25 21:33:06 -0800 Remove non-data files
* 1092d4ca <Will> 2021-01-26 20:41:33 -0800 Add data-compatiuble extension (.yaml) to all data files that currently omit one
* 21060109 <Will> 2021-01-26 20:57:28 -0800 Remove symlink to event-schemas, and update openAPI schema paths accordingly
* 4f633845 <Travis Ralston> 2021-04-12 21:54:54 -0600 Fix event schema examples too
* 301c7b2f <Will> 2021-02-05 10:15:42 -0800 Restore docs describing OpenAPI extensions that we use
check-swagger-sources also had a bug which caused it to fail while validating the directory
structure of /data/api. This was fixed by @KitsuneRal - thank you!
I'm doing this for two reasons:
1) If I ever wanted to create another knock-related MSC, it would be nice to be able
to give it a different namespace for endpoints, such as xyz.amorgan.knock2/knock. If
we were only using xyz.amorgan as the namespace for endpoints, that restricts that
namespace to only work for one MSC which attempts to use /knock as part of an endpoint.
2) I accidentally made the implementation use xyz.amorgan.knock/knock :)
Got a bit confused with the sender and state_key being different in invite
membership events. In case of a knock, even if the knock event is being
inserted into the room by another homeserver over federation, the sender
of the event is still the knocking user, just like the state_key.
This aligns with the current v2 federation endpoints. However, we're still using v1
as a prefix here as it is still the first version of this endpoint.
* add a base file
* Fix directory name
* Added translation using Weblate (English)
* Translated using Weblate (English)
Currently translated at 1.6% (1 of 64 strings)
Translation: matrix-doc/SAS Emoji v1
Translate-URL: https://translate.riot.im/projects/matrix-doc/sas-emoji-v1/en_EN/
* add english files
* delete english files
* Added translation using Weblate (English)
* Added translation using Weblate (English)
* Do manual translations
* Deleted translation using Weblate (English)
* Deleted translation using Weblate (English)
* Add a script to update the definitions with the translations
* update i18n
* Add a note to the spec about translations
* changelog
* Ensure translations end with json
- Authority part semantics are no more prescribed; authority part has
defined syntax but reserved for future use.
- Moved away non-normative parts to "Discussion" and/or "Alternatives"
- Added `action=chat`
- Extended `via=` applicability to non-roomid cases to compensate
dropping the authority part semantics.
- Added a reference algorithm to parse a URI.
- Closed outstanding questions/discussion points.
- Added more cases for future evolution.
- Added "minimal syntax" options to the discussion of possible
alternatives
* Most of the changes: align to the $ref object definition
(https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3)
that says that any attribute other than $ref be ignored.
* Remove extraneous leading ./ in $ref paths
* Fix an apparent typo in registration.yaml:
/account/password/msisdn/requestToken used a file from ../identity/*
instead of its c2s namesake.
MSC: https://github.com/matrix-org/matrix-doc/pull/2209
The changes are slightly difficult to word without dumping the text in and playing a game of spot the difference, so we now use our pre-existing pygments support to render a representation of the difference. The difference is shown in markdown-like format instead of RST for ease of understanding. It's also not rendered HTML for largely complexity reasons.
We stick it in a client section of v1 as the earliest version to define the algorithm is v1, and the client-server spec tells clients to use this algorithm.
MSC: https://github.com/matrix-org/matrix-doc/pull/2432
This commit does not deal with areas which will be covered by the room version specifications (namely the redaction algorithm).
It feels a bit overly cruel to completely obliterate all mentions of `m.room.aliases` from the spec as client/server developers may encounter the event type in the wild. To ensure that CTRL+F still works, a brief mention that they do nothing has been put in place, leaving no other references (except the redaction algorithm - see previous paragraph).
The device keys structure in queryKeys is not the same as the one
defined in device_keys.yaml (it adds things on top of it).
Signed-off-by: Alexey Rusakov <Alexey.Rusakov@pm.me>
Fixes the typo in the Request Authentication python example. It seems like a copy paste error.
Closes: #2509
Signed-off-by: Rudi Floren <rudi.floren@gmail.com>
I couldn't find any other reference to a state_type within the entire specification. I assume this is supposed to be the event_type? This aligns with the description of changes resulting from a state update.
Co-Authored-By: David Baker <dbkr@users.noreply.github.com>
Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-Authored-By: Erik Johnston <erikj@jki.re>
Part of MSC2140
Convert status codes to strings if there is a string status code. Fixes a build error when we mix 4xx and 403 in the same definition. We also have to correct stringified numbers to pass the build.
Affects the title and the table of contents. We can't realistically alter just the table of contents, but the table of contents is generated from this header.
Fixes https://github.com/matrix-org/matrix-doc/issues/1800
The spec states that the action of a room key request cancellation
should be "cancel_request" but every known implementation uses
"request_cancellation" instead.
This patch fixes the spec to reflect the implementations.
Used **Note** to describe notes around the authorisation rules. Otherwise restored the original state for the consequences from the auth rules.
Moved the clarification regarding default power levels up above the auth rules. Removed third sentence. And followed @turt2live's example, but opted for "for users in that room" because the default user power level is applied to all users.
Added missing added and removed to the rule, because these keys are not required for m.room.power_levels. Also moved the note down to the Note section.
The rules for m.room.power_levels power were somewhat unclear regarding the behaviour towards the always present keys, such as kick and ban. Additionally, it is now also clarified that in the users and events dictionary also added and removed keys are taken into consideration.
The server-server specification describes a "reference hash" of an event
and how to calculate it, but is otherwise not mentioned anywhere else in
the document. This change adds a sentence to explain that they are used
for event identifiers in later room versions, which are described in
other documents.
Signed-off-by: Jimmy Cuadra <jimmy@jimmycuadra.com>
- indicate how to use MSC 1946 to store/share private keys
- add signing by devices to enable migrating from device verifications
- add information about signature upload failures and M_INVALID_SIGNATURE code
- add security consideration
This clarifies the `.m.rule.room_one_to_one` push rule by adding a condition on
event type. Some parts of the spec already had this info, while others were
missing it. Synapse has had this behaviour since the push rule appeared.
Fixes https://github.com/matrix-org/matrix-doc/issues/2150
* Switch "an SAS" back to "a SAS"
* Remove the `next_method` field from m.key.verification.start$m.sas.v1
but add additional clarification to its description on
m.key.verification.start that it is never present for methods that
verify keys both ways.
Currently the *m.key.verification.start* event appears twice with the
exact same title, in the "Key verification framework" section and the
"Short Authentication (SAS) verification" section. It's not immediately
clear that the first occurrence describes the format of the event in
general terms and that the second occurrence describes the fields when
the *m.sas.v1* verification method is being used. This is a similar
relationship to the *m.room.message* event and its various *msgtype*
variants.
This commit does three things:
* It tweaks the generation of the documentation to change the title
of the second occurrence of *m.key.verification.start* to
distinguish it from the first.
* It updates the language in the description of the two versions of the
event to better describe the relationship between the two.
* It adds the optional `next_method` field to the schema of the
*m.sas.v1* variant, as specified in the general form of
*m.key.verification.start*.
Signed-off-by: Jimmy Cuadra <jimmy@jimmycuadra.com>
m.room.message msgtypes.
Now that content referenced by the *m.audio*, *m.file*, *m.image*, and
*m.video* message types can be encrypted, the `url` field is required
*only* if the content is unencrypted. The "required" designation in the
event schemas (which prefixes the field description with "Required" in
bold in the generated HTML) is used to indicate fields which must always
be present, and this is no longer the case.
Signed-off-by: Jimmy Cuadra <jimmy@jimmycuadra.com>
* master:
Update example
Fix 404s in links from room v1 spec
Provide a more complete example of a "minimally-sized event"
Revert signature change for redactable event test
Clarify how many PDUs are in a given transaction object
Clarify that the server shouldn't process retries for UIA
Clarify when authorization and rate-limiting are not applicable
Skip over partial event definitions in examples
Rename example to invite_room_state
Shorten references to StrippedState in s2s spec
Fix examples of StrippedState in s2s spec
Clarify exactly what StrippedState is
Clarify that UIA stages cannot be attempted twice
Fix test vectors with invalid JSON and signature
Spec 3PID unbind API
Spec MSISDN UIA support
Fixes https://github.com/matrix-org/matrix-doc/issues/1166
Fixes https://github.com/matrix-org/matrix-doc/issues/1527
Fixes https://github.com/matrix-org/matrix-doc/issues/1827
Note: In order to fix the "state events have the following fields: [no words]" bug (1827) we need to resolve references on common event types. When doing this we ultimately end up with more fields than may be required to explain the section, however this commit alters the section descriptions to just say "these fields" instead of "these additional fields".
This is also preferable over trying to get the inheritance reversed in the common event types, as the `/sync` endpoint has a high amount of reliance on partial events definitions.
Fixes https://github.com/matrix-org/matrix-doc/issues/2066
The expectation everywhere is that the `sender` is required. `/initialSync` references StrippedState through a `m.room.member` event reference, and does not need editing.
It was a little unclear what the client should do when asked to send a validation email and provides a `send_attempt` value that is not greater than previous attempts. As this is intended to be for when a client mistakenly sends the request twice, it makes logical sense that the implication was to simply resend a success value so the client doesn't error even when an email may have been sent on the first attempt.
This behaviour was also mimicked in Synapse/Sydent.
Fixes https://github.com/matrix-org/matrix-doc/issues/1987
Note: Synapse currently does not care, however the spirit of the text in the spec implies that completed == done forever, so we're just reinforcing it here.
# is reserved by the swagger validator as a way to include partial content from a JSON object (eg: "#/path" would include {"test": true} from the object {"path":{"test":true}}). Instead of trying to convince the validator that it is wrong, we'll just use a different character.
Note that our rendering tools do not care about #-style references to objects. It's still somewhat worth changing the character though.
Note: This makes assumptions on what the TODO comment in Synapse means: e26e6b3230/synapse/handlers/pagination.py (L262)
Due to lack of implementation, it is assumed that using the same filter across multiple calls to /sync OR /messages will result in the redundant members being excluded in the next request. For example, calling /sync, then /messages which returns some members, then /sync again will exclude the members due to them being in /messages.
As per [MSC1452](https://github.com/matrix-org/matrix-doc/issues/1452)
Fixes https://github.com/matrix-org/matrix-doc/issues/1254
Although MSC1452 focuses on just the warnings part of the server notices, the base for notices has not been established in the spec. This commit adds the needed support to be able to handle notices.
No intentional divergences from the proposal are included in this changeset. There are a few additions which are used in practice although not defined in the proposal, such as who is responsible for aesthetics, sending notices, and other misc rules.
so that a matrix client A can check it is synchronised with the backup.
If not, that means that another client B has pushed keys client A does not have locally. Client A should then propose to the end user to retrieve keys from the backup.
We don'e need `{{server_server_changelog_r0.1.0}}` (for example), so don't go through the hassle of generating it. Instead, we'll generate the changelog for the requested versions of each API and put that in place. In the future, we may wish to consider bringing back more complicated variables when/if we start generating released versions of the spec on the fly rather than manually.
Currently if you generate a changelog for r0.1.1 of an API, you'd get "No significant changes" which is wrong. You should get a real changelog for the version.
This is now handled by generating a "preferred" changelog which acts as the default for version variables in the RST. Using a specific version's changelog is still supported for the rare cases where that is desired.
Fix missed example in make_join
Fix state array in response of send_join
Try removing examples from send_join?
Try printing more information about the error
Copy/paste known working examples
Try schema definitions in the response?
Note that MSC1831 changes the order, so the changes to MSC1708 might not make sense when combining all the proposals together. However, independently the change should make sense.
Original proposal: https://github.com/matrix-org/matrix-doc/pull/1659
Implementation proofs (some traversing of the PR tree may be required to get all of them):
* https://github.com/matrix-org/synapse/pull/4483
* https://github.com/matrix-org/synapse/pull/4499
This doesn't intentionally change anything from the proposal.
**Implementation details**:
The simple part of this is the introduction of a rooms/v3.html document. The somewhat unclear part is the stuff done to the s2s definitions. This pulls `unsigned_pdu` out to `unsigned_pdu_base` (all fields except `event_id`) where it can be reused in `pdu` and `pdu_v3` (for rooms v3). These definitions are further moved into the room version specifications where they can highlight the exact schemas in detail.
Version 1 has been updated to include the pre-existing event format, however the core principles of the room have not been changed. The same applies to room version 2. Room versions have immutable core principles once in the spec, otherwise these format changes would land in a pre-existing version.
The client-server API event formats will need updating, however that is being punted to a different commit to try and keep these changes reviewable.
The main reason for this is that Apache etc won't stick a content-type on by
default, because they don't know it's JSON, so requiring it seems like it will
require unnecessary hoop-humping for everyone who wants to use a .well-known.
> Since this is a copy-and-paste of old text, I think the copyright year should match when the original text was written, which according to git was 2017.
Co-Authored-By: turt2live <travpc@gmail.com>
Instead of trying to describe maturity, stability, and recommendedness in one list we should describe what is "safe" and "unsafe" to use. The default version is just something that servers should use, and is normally going to be stable.
Versions are actually on a scale of recommendations, and are expected to be created as needed. The scale presented here (develop/beta/default/recommended/mandatory) is a more wordy version of what was previously discussed/intended for room versions - the labels aren't final and may be changed.
The "Room Specification" (or "Room Version Specification") is the specification that defines which room versions do what and are intended to be documents which speak the truth about how rooms operate under the hood.
The approach taken here is a bit different than other specifications. For starters, the specification is versioned in this project instead of relying on the matrix.org repository to track compiled HTML. This is done for a couple reasons, the first being we're still developing the v1 specification while concurrently making a v2 spec and the second being trying to reduce the reliance on matrix.org's repository for specifications.
Because the room spec is built into versions, some changes needed to be made. The `targets.yaml` now has a special syntax for indicating what version something is at, and the changelog generator can handle rendering different versions of the same changelog (as parsed from the RST). Some additional work has been put in to the changelog parsing to allow us to reference the v1 room spec as "v1" without having to sacrifice clarity in the changelog headings.
Finally, this moves the state resolution algorithms into the versioned
spec as a result of MSC1759 (https://github.com/matrix-org/matrix-doc/pull/1759).
Note: this does not introduce the concept of versioned schemas (tabs) that I was previously working with. There's currently no use for them, so they are shelved elsewhere.
Fix `.m.rule.encrypted_room_one_to_one` by moving a condition to the right block
of the rule.
Fix `.m.rule.encrypted` to state that it applies to group rooms.
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
It's possible for events in an an event's auth chain to be rejected due
to not having passed auth (based on the state at the time), so we need
to be explicit about how to handle that case.
about: A proposal that isn't quite ready for formal review yet.
title: '[WIP] Your Proposal Title'
labels: proposal
assignees: ''
---
<!-- Put your "rendered" link here -->
### Pull Request Checklist
<!-- Please read CONTRIBUTING.md before submitting your pull request -->
* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-spec-proposals/blob/master/CONTRIBUTING.md#sign-off)
* [ ] Update the title and file name of your proposal to match this PR's number (after opening).
* [ ] Pull request includes a ['Rendered' link](https://matrix.org/docs/spec/proposals#process) above.
* [ ] Have a look at the [MSC Checklist](MSC_CHECKLIST.md) for guidelines on various aspects of your MSC.
<!-- Once the proposal is ready for review, ask in [#matrix-spec:matrix.org](https://matrix.to/#/#matrix-spec:matrix.org) to get it marked as such. -->
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
swagger:'2.0'
info:
title:"Matrix Client-Server Room Banning API"
version:"1.0.0"
host:localhost:8008
schemes:
- https
- http
basePath:/_matrix/client/%CLIENT_MAJOR_VERSION%
consumes:
- application/json
produces:
- application/json
securityDefinitions:
$ref:definitions/security.yaml
paths:
"/rooms/{roomId}/ban":
post:
summary:Ban a user in the room.
description:|-
Ban a user in the room. If the user is currently in the room, also kick them.
When a user is banned from a room, they may not join it or be invited to it until they are unbanned.
The caller must have the required power level in order to perform this operation.
operationId:ban
security:
- accessToken:[]
parameters:
- in:path
type:string
name:roomId
description:The room identifier (not alias) from which the user should be banned.
required:true
x-example:"!e42d8c:matrix.org"
- in:body
name:body
required:true
schema:
type:object
example:{
"reason": "Telling unfunny jokes",
"user_id": "@cheeky_monkey:matrix.org"
}
properties:
user_id:
type:string
description:The fully qualified user ID of the user being banned.
reason:
type:string
description:The reason the user has been banned. This will be supplied as the
``reason`` on the target's updated `m.room.member`_ event.
required:["user_id"]
responses:
200:
description:The user has been kicked and banned from the room.
examples:
application/json:{
}
schema:
type:object
403:
description:|-
You do not have permission to ban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
- The banner is not currently in the room.
- The banner's power level is insufficient to ban users from the room.
examples:
application/json:{
"errcode": "M_FORBIDDEN",
"error": "You do not have a high enough power level to ban from this room."
}
schema:
"$ref": "definitions/errors/error.yaml"
tags:
- Room membership
"/rooms/{roomId}/unban":
post:
summary:Unban a user from the room.
description:|-
Unban a user from the room. This allows them to be invited to the room,
and join if they would otherwise be allowed to join according to its join rules.
The caller must have the required power level in order to perform this operation.
operationId:unban
security:
- accessToken:[]
parameters:
- in:path
type:string
name:roomId
description:The room identifier (not alias) from which the user should be unbanned.
required:true
x-example:"!e42d8c:matrix.org"
- in:body
name:body
required:true
schema:
type:object
example:{
"user_id": "@cheeky_monkey:matrix.org"
}
properties:
user_id:
type:string
description:The fully qualified user ID of the user being unbanned.
required:["user_id"]
responses:
200:
description:The user has been unbanned from the room.
examples:
application/json:{
}
schema:
type:object
403:
description:|-
You do not have permission to unban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
- The unbanner's power level is insufficient to unban users from the room.
examples:
application/json:{
"errcode": "M_FORBIDDEN",
"error": "You do not have a high enough power level to unban from this room."
summary:Create a new mapping from room alias to room ID.
operationId:setRoomAlias
security:
- accessToken:[]
parameters:
- in:path
type:string
name:roomAlias
description:The room alias to set.
required:true
x-example:"#monkeys:matrix.org"
- in:body
name:body
description:Information about this room alias.
required:true
schema:
type:object
properties:
room_id:
type:string
description:The room ID to set.
required:['room_id']
example:{
"room_id": "!abnjk1jdasj98:capuchins.com"
}
responses:
200:
description:The mapping was created.
examples:
application/json:{}
schema:
type:object
409:
description:A room alias with that name already exists.
examples:
application/json:{
"errcode": "M_UNKNOWN",
"error": "Room alias #monkeys:matrix.org already exists."
}
schema:
"$ref": "definitions/errors/error.yaml"
tags:
- Room directory
get:
summary:Get the room ID corresponding to this room alias.
description:|-
Requests that the server resolve a room alias to a room ID.
The server will use the federation API to resolve the alias if the
domain part of the alias does not correspond to the server's own
domain.
operationId:getRoomIdByAlias
parameters:
- in:path
type:string
name:roomAlias
description:The room alias.
required:true
x-example:"#monkeys:matrix.org"
responses:
200:
description:The room ID and other information for this alias.
schema:
type:object
properties:
room_id:
type:string
description:The room ID for this room alias.
servers:
type:array
description:A list of servers that are aware of this room alias.
items:
type:string
description:A server which is aware of this room alias.
examples:
application/json:{
"room_id": "!abnjk1jdasj98:capuchins.com",
"servers": [
"capuchins.com",
"matrix.org",
"another.com"
]
}
404:
description:There is no mapped room ID for this room alias.
examples:
application/json:{
"errcode": "M_NOT_FOUND",
"error": "Room alias #monkeys:matrix.org not found."
}
schema:
"$ref": "definitions/errors/error.yaml"
tags:
- Room directory
delete:
summary:Remove a mapping of room alias to room ID.
description:|-
Remove a mapping of room alias to room ID.
Servers may choose to implement additional access control checks here, for instance that room aliases can only be deleted by their creator or a server administrator.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
swagger:'2.0'
info:
title:"Matrix Client-Server Room Joining API"
version:"1.0.0"
host:localhost:8008
schemes:
- https
- http
basePath:/_matrix/client/%CLIENT_MAJOR_VERSION%
consumes:
- application/json
produces:
- application/json
securityDefinitions:
$ref:definitions/security.yaml
paths:
# With an extra " " to disambiguate from the 3pid invite endpoint
# The extra space makes it sort first for what I'm sure is a good reason.
"/rooms/{roomId}/invite ":
post:
summary:Invite a user to participate in a particular room.
description:|-
.. _invite-by-user-id-endpoint:
*Notethat there are two forms of this API, which are documented separately.
This version of the API requires that the inviter knows the Matrix
identifier of the invitee. The other is documented in the*
`third party invites section`_.
This API invites a user to participate in a particular room.
They do not start participating in the room until they actually join the
room.
Only users currently in a particular room can invite other users to
join that room.
If the user was invited to the room, the homeserver will append a
``m.room.member`` event to the room.
.. _third party invites section:`invite-by-third-party-id-endpoint`_
operationId:inviteUser
security:
- accessToken:[]
parameters:
- in:path
type:string
name:roomId
description:The room identifier (not alias) to which to invite the user.
required:true
x-example:"!d41d8cd:matrix.org"
- in:body
name:body
required:true
schema:
type:object
example:{
"user_id": "@cheeky_monkey:matrix.org"
}
properties:
user_id:
type:string
description:The fully qualified user ID of the invitee.
required:["user_id"]
responses:
200:
description:The user has been invited to join the room.
examples:
application/json:{
}
schema:
type:object
403:
description:|-
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
- The invitee has been banned from the room.
- The invitee is already a member of the room.
- The inviter is not currently in the room.
- The inviter's power level is insufficient to invite users to the room.
examples:
application/json:{
"errcode": "M_FORBIDDEN", "error": "@cheeky_monkey:matrix.org is banned from the room"}
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
swagger:'2.0'
info:
title:"Matrix Client-Server Room Kicking API"
version:"1.0.0"
host:localhost:8008
schemes:
- https
- http
basePath:/_matrix/client/%CLIENT_MAJOR_VERSION%
consumes:
- application/json
produces:
- application/json
securityDefinitions:
$ref:definitions/security.yaml
paths:
"/rooms/{roomId}/kick":
post:
summary:Kick a user from the room.
description:|-
Kick a user from the room.
The caller must have the required power level in order to perform this operation.
Kicking a user adjusts the target member's membership state to be ``leave`` with an
optional ``reason``. Like with other membership changes, a user can directly adjust
the target member's state by making a request to ``/rooms/<room id>/state/m.room.member/<user id>``.
operationId:kick
security:
- accessToken:[]
parameters:
- in:path
type:string
name:roomId
description:The room identifier (not alias) from which the user should be kicked.
required:true
x-example:"!e42d8c:matrix.org"
- in:body
name:body
required:true
schema:
type:object
example:{
"reason": "Telling unfunny jokes",
"user_id": "@cheeky_monkey:matrix.org"
}
properties:
user_id:
type:string
description:The fully qualified user ID of the user being kicked.
reason:
type:string
description:|-
The reason the user has been kicked. This will be supplied as the
``reason`` on the target's updated `m.room.member`_ event.
required:["user_id"]
responses:
200:
description:The user has been kicked from the room.
examples:
application/json:{
}
schema:
type:object
403:
description:|-
You do not have permission to kick the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
- The kicker is not currently in the room.
- The kickee is not currently in the room.
- The kicker's power level is insufficient to kick users from the room.
examples:
application/json:{
"errcode": "M_FORBIDDEN",
"error": "You do not have a high enough power level to kick from this room."
You aren't a member of the room and weren't previously a
member of the room.
tags:
- Room participation
"/rooms/{roomId}/joined_members":
get:
summary:Gets the list of currently joined users and their profile data.
description:
This API returns a map of MXIDs to member info objects for members of the room. The current user must be in the room for it to work, unless it is an Application Service in which case any of the AS's users must be in the room.
This API is primarily for Application Services and should be faster to respond than ``/members`` as it can be implemented more efficiently on the server.
description:The room identifier (not alias) to which to invite the user.
required:true
x-example:"!d41d8cd:matrix.org"
- in:body
name:body
required:true
schema:
type:object
example:{
"id_server": "matrix.org",
"medium": "email",
"address": "cheeky@monkey.com"
}
properties:
id_server:
type:string
description:The hostname+port of the identity server which should be used for third party identifier lookups.
medium:
type:string
# TODO: Link to Identity Service spec when it eixsts
description:The kind of address being passed in the address field, for example ``email``.
address:
type:string
description:The invitee's third party identifier.
required:["id_server","medium","address"]
responses:
200:
description:The user has been invited to join the room.
examples:
application/json:{
}
schema:
type:object
403:
description:|-
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
- The invitee has been banned from the room.
- The invitee is already a member of the room.
- The inviter is not currently in the room.
- The inviter's power level is insufficient to invite users to the room.
examples:
application/json:{
"errcode": "M_FORBIDDEN", "error": "@cheeky_monkey:matrix.org is banned from the room"}