From c06b32448cc7a9e031ede0889da74fe297e95757 Mon Sep 17 00:00:00 2001 From: Jonas Kress Date: Wed, 17 Nov 2021 16:45:14 +0100 Subject: [PATCH] MSC3283: Expose capabilities for profile actions (#3283) * Create 3278-enable_set_displayname-capabilities.md * Apply suggestions from code review Co-authored-by: Alexey Rusakov * Apply suggestions from code review Co-authored-by: Alexey Rusakov * Update and rename 3278-enable_set_displayname-capabilities.md to 3279-enable_set_displayname-capabilities.md * Update and rename 3279-enable_set_displayname-capabilities.md to 3282-enable_set_displayname-capabilities.md * Update and rename 3282-enable_set_displayname-capabilities.md to 3283-enable_set_displayname-capabilities.md * Update proposals/3283-enable_set_displayname-capabilities.md Co-authored-by: Alexey Rusakov * Update proposals/3283-enable_set_displayname-capabilities.md Co-authored-by: Will Hunt * Update proposals/3283-enable_set_displayname-capabilities.md Co-authored-by: Will Hunt * Update 3283-enable_set_displayname-capabilities.md * Update 3283-enable_set_displayname-capabilities.md * Update proposals/3283-enable_set_displayname-capabilities.md Co-authored-by: Dirk Klimpel <5740567+dklimpel@users.noreply.github.com> * Update proposals/3283-enable_set_displayname-capabilities.md Co-authored-by: Dirk Klimpel <5740567+dklimpel@users.noreply.github.com> * Update 3283-enable_set_displayname-capabilities.md * Update 3283-enable_set_displayname-capabilities.md * Update 3283-enable_set_displayname-capabilities.md * Update 3283-enable_set_displayname-capabilities.md Co-authored-by: Alexey Rusakov Co-authored-by: Will Hunt Co-authored-by: Dirk Klimpel <5740567+dklimpel@users.noreply.github.com> --- ...283-enable_set_displayname-capabilities.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 proposals/3283-enable_set_displayname-capabilities.md diff --git a/proposals/3283-enable_set_displayname-capabilities.md b/proposals/3283-enable_set_displayname-capabilities.md new file mode 100644 index 000000000..e59746d8b --- /dev/null +++ b/proposals/3283-enable_set_displayname-capabilities.md @@ -0,0 +1,46 @@ +# MSC3283: Expose enable_set_displayname, enable_set_avatar_url and enable_3pid_changes in capabilities response + +Some home servers like [Synapse](https://github.com/matrix-org/synapse/blob/756fd513dfaebddd28bf783eafa95b4505ce8745/docs/sample_config.yaml#L1207) +can be configured to `enable_set_displayname: false`, `enable_set_avatar_url: false` or `enable_3pid_changes: false`. +To enable clients to handle that gracefully in the UI this setting should be exposed. + +## Proposal + +The `/_matrix/client/r0/capabilities` endpoint should be decorated to provide more information on capabilities. +```jsonc +{ + "capabilities": { + "m.set_displayname": { "enabled": false }, + "m.set_avatar_url": { "enabled": false }, + "m.3pid_changes": { "enabled": false }, + "m.room_versions": {...}, + } +} +``` +As part of this MSC, a capability for each setting will be added that exposes the server setting: +- `m.set_displayname` + +Whether users are allowed to change their displayname after it has been initially set. +Useful when provisioning users based on the contents of a third-party directory. + +- `m.set_avatar_url` + +Whether users are allowed to change their avatar after it has been initially set. +Useful when provisioning users based on the contents of a third-party directory. + +- `m.3pid_changes` + +Whether users can change the 3PIDs associated with their accounts +(email address and msisdn). +Useful when provisioning users based on the contents of a third-party directory. + +## Client recommendations +When presenting profile settings, clients should use capabilities in order to display the correct UI. + +Capability should always be present. +Servers should always send these capabilities. If they aren't (because the server does not support +a new enough spec version or for any other reason), clients should behave as if they were present and set to true. + +## Unstable prefix + +While this MSC is not considered stable, implementations should use `org.matrix.msc3283.` in place of `m.` throughout this proposal.