Update realm-level defaults of user settings

This endpoint is only available to organization administrators.

PATCH https://dry-rb.zulipchat.com/api/v1/realm/user_settings_defaults

Change the default values of settings for new users joining the organization. Essentially all personal preference settings are supported.

This feature can be invaluable for customizing Zulip's default settings for notifications or UI to be appropriate for how the organization is using Zulip. (Note that this only supports personal preference settings, like when to send push notifications or what emoji set to use, not profile or identity settings that naturally should be different for each user).

Note that this endpoint cannot, at present, be used to modify settings for existing users in any way.

Changes: New in Zulip 5.0 (feature level 96). If any parameters sent in the request are not supported by this endpoint, an ignored_parameters_unsupported array will be returned in the JSON success response.

Usage examples

curl -sSX PATCH https://dry-rb.zulipchat.com/api/v1/realm/user_settings_defaults \
    -u BOT_EMAIL_ADDRESS:BOT_API_KEY \
    --data-urlencode left_side_userlist=true \
    --data-urlencode emojiset=google

Parameters

dense_mode boolean optional

Example: true

This setting has no effect at present. It is reserved for use in controlling the default font size in Zulip.


starred_message_counts boolean optional

Example: true

Whether clients should display the number of starred messages.


fluid_layout_width boolean optional

Example: true

Whether to use the maximum available screen width for the web app's center panel (message feed, recent conversations) on wide screens.


high_contrast_mode boolean optional

Example: true

This setting is reserved for use to control variations in Zulip's design to help visually impaired users.


web_mark_read_on_scroll_policy integer optional

Example: 1

Whether or not to mark messages as read when the user scrolls through their feed.

  • 1 - Always
  • 2 - Only in conversation views
  • 3 - Never

Changes: New in Zulip 7.0 (feature level 175). Previously, there was no way for the user to configure this behavior on the web, and the Zulip web and desktop apps behaved like the "Always" setting when marking messages as read.

Must be one of: 1, 2, 3.


color_scheme integer optional

Example: 1

Controls which color theme to use.

  • 1 - Automatic
  • 2 - Dark theme
  • 3 - Light theme

Automatic detection is implementing using the standard prefers-color-scheme media query.

Must be one of: 1, 2, 3.


enable_drafts_synchronization boolean optional

Example: true

A boolean parameter to control whether synchronizing drafts is enabled for the user. When synchronization is disabled, all drafts stored in the server will be automatically deleted from the server.

This does not do anything (like sending events) to delete local copies of drafts stored in clients.


translate_emoticons boolean optional

Example: true

Whether to translate emoticons to emoji in messages the user sends.


display_emoji_reaction_users boolean optional

Example: false

Whether to display the names of reacting users on a message.

When enabled, clients should display the names of reacting users, rather than a count, for messages with few total reactions. The ideal cutoff may depend on the space available for displaying reactions; the official web application displays names when 3 or fewer total reactions are present with this setting enabled.

Changes: New in Zulip 6.0 (feature level 125).


web_home_view string optional

Example: "all_messages"

The home view used when opening a new Zulip web app window or hitting the Esc keyboard shortcut repeatedly.

  • "recent_topics" - Recent conversations view
  • "inbox" - Inbox view
  • "all_messages" - All messages view

Changes: New in Zulip 8.0 (feature level 219). Previously, this was called default_view, which was new in Zulip 4.0 (feature level 42).


web_escape_navigates_to_home_view boolean optional

Example: true

Whether the escape key navigates to the configured home view.

Changes: New in Zulip 8.0 (feature level 219). Previously, this was called escape_navigates_to_default_view, which was new in Zulip 5.0 (feature level 107).


left_side_userlist boolean optional

Example: true

Whether the users list on left sidebar in narrow windows.

This feature is not heavily used and is likely to be reworked.


emojiset string optional

Example: "google"

The user's configured emoji set, used to display emoji to the user everywhere they appear in the UI.

  • "google" - Google
  • "twitter" - Twitter
  • "text" - Plain text
  • "google-blob" - Google blobs

demote_inactive_streams integer optional

Example: 1

Whether to demote inactive streams in the left sidebar.

  • 1 - Automatic
  • 2 - Always
  • 3 - Never

Must be one of: 1, 2, 3.


user_list_style integer optional

Example: 1

The style selected by the user for the right sidebar user list.

  • 1 - Compact
  • 2 - With status
  • 3 - With avatar and status

Changes: New in Zulip 6.0 (feature level 141).

Must be one of: 1, 2, 3.


web_stream_unreads_count_display_policy integer optional

Example: 2

Configuration for which streams should be displayed with a numeric unread count in the left sidebar. Streams that do not have an unread count will have a simple dot indicator for whether there are any unread messages.

  • 1 - All streams
  • 2 - Unmuted streams and topics
  • 3 - No streams

Changes: New in Zulip 8.0 (feature level 210).

Must be one of: 1, 2, 3.


enable_stream_desktop_notifications boolean optional

Example: true

Enable visual desktop notifications for stream messages.


enable_stream_email_notifications boolean optional

Example: true

Enable email notifications for stream messages.


enable_stream_push_notifications boolean optional

Example: true

Enable mobile notifications for stream messages.


enable_stream_audible_notifications boolean optional

Example: true

Enable audible desktop notifications for stream messages.


notification_sound string optional

Example: "ding"

Notification sound name.


enable_desktop_notifications boolean optional

Example: true

Enable visual desktop notifications for direct messages and @-mentions.


enable_sounds boolean optional

Example: true

Enable audible desktop notifications for direct messages and @-mentions.


enable_followed_topic_desktop_notifications boolean optional

Example: true

Enable visual desktop notifications for messages sent to followed topics.

Changes: New in Zulip 8.0 (feature level 189).


enable_followed_topic_email_notifications boolean optional

Example: true

Enable email notifications for messages sent to followed topics.

Changes: New in Zulip 8.0 (feature level 189).


enable_followed_topic_push_notifications boolean optional

Example: false

Enable push notifications for messages sent to followed topics.

Changes: New in Zulip 8.0 (feature level 189).


enable_followed_topic_audible_notifications boolean optional

Example: false

Enable audible desktop notifications for messages sent to followed topics.

Changes: New in Zulip 8.0 (feature level 189).


email_notifications_batching_period_seconds integer optional

Example: 120

The duration (in seconds) for which the server should wait to batch email notifications before sending them.


enable_offline_email_notifications boolean optional

Example: true

Enable email notifications for direct messages and @-mentions received when the user is offline.


enable_offline_push_notifications boolean optional

Example: true

Enable mobile notification for direct messages and @-mentions received when the user is offline.


enable_online_push_notifications boolean optional

Example: true

Enable mobile notification for direct messages and @-mentions received when the user is online.


enable_digest_emails boolean optional

Example: true

Enable digest emails when the user is away.


message_content_in_email_notifications boolean optional

Example: true

Include the message's content in email notifications for new messages.


pm_content_in_desktop_notifications boolean optional

Example: true

Include content of direct messages in desktop notifications.


wildcard_mentions_notify boolean optional

Example: true

Whether wildcard mentions (E.g. @all) should send notifications like a personal mention.


enable_followed_topic_wildcard_mentions_notify boolean optional

Example: true

Whether wildcard mentions (e.g., @all) in messages sent to followed topics should send notifications like a personal mention.

Changes: New in Zulip 8.0 (feature level 189).


desktop_icon_count_display integer optional

Example: 1

Unread count badge (appears in desktop sidebar and browser tab)

  • 1 - All unread messages
  • 2 - DMs, mentions, and followed topics
  • 3 - DMs and mentions
  • 4 - None

Changes: In Zulip 8.0 (feature level 227), added DMs, mentions, and followed topics option, renumbering the options to insert it in order.

Must be one of: 1, 2, 3, 4.


realm_name_in_email_notifications_policy integer optional

Example: 1

Whether to include organization name in subject of message notification emails.

  • 1 - Automatic
  • 2 - Always
  • 3 - Never

Changes: New in Zulip 7.0 (feature level 168), replacing the previous realm_name_in_notifications boolean; true corresponded to Always, and false to Never.

Must be one of: 1, 2, 3.


automatically_follow_topics_policy integer optional

Example: 1

Which topics to follow automatically.

  • 1 - Topics the user participates in
  • 2 - Topics the user sends a message to
  • 3 - Topics the user starts
  • 4 - Never

Changes: New in Zulip 8.0 (feature level 214).

Must be one of: 1, 2, 3, 4.


automatically_unmute_topics_in_muted_streams_policy integer optional

Example: 1

Which topics to unmute automatically in muted streams.

  • 1 - Topics the user participates in
  • 2 - Topics the user sends a message to
  • 3 - Topics the user starts
  • 4 - Never

Changes: New in Zulip 8.0 (feature level 214).

Must be one of: 1, 2, 3, 4.


automatically_follow_topics_where_mentioned boolean optional

Example: true

Whether the server will automatically mark the user as following topics where the user is mentioned.

Changes: New in Zulip 8.0 (feature level 235).


presence_enabled boolean optional

Example: true

Display the presence status to other users when online.


enter_sends boolean optional

Example: true

Whether pressing Enter in the compose box sends a message (or saves a message edit).


twenty_four_hour_time boolean optional

Example: true

Whether time should be displayed in 24-hour notation.

Changes: New in Zulip 5.0 (feature level 99). Previously, this default was edited using the default_twenty_four_hour_time parameter to the PATCH /realm endpoint.


send_private_typing_notifications boolean optional

Example: true

Whether typing notifications be sent when composing direct messages.

Changes: New in Zulip 5.0 (feature level 105).


send_stream_typing_notifications boolean optional

Example: true

Whether typing notifications be sent when composing stream messages.

Changes: New in Zulip 5.0 (feature level 105).


send_read_receipts boolean optional

Example: true

Whether other users are allowed to see whether you've read messages.

Changes: New in Zulip 5.0 (feature level 105).


email_address_visibility integer optional

Example: 1

The policy for which other users in this organization can see the user's real email address.

  • 1 = Everyone
  • 2 = Members only
  • 3 = Administrators only
  • 4 = Nobody
  • 5 = Moderators only

Changes: New in Zulip 7.0 (feature level 163), replacing the realm-level setting.

Must be one of: 1, 2, 3, 4, 5.


Response

Example response(s)

Changes: The ignored_parameters_unsupported array was added as a possible return value for all REST API endpoint JSON success responses in Zulip 7.0 (feature level 167).

Previously, it was added to POST /users/me/subscriptions/properties in Zulip 5.0 (feature level 111) and to PATCH /realm/user_settings_defaults in Zulip 5.0 (feature level 96). The feature was introduced in Zulip 5.0 (feature level 78) as a return value for the PATCH /settings endpoint.

A typical successful JSON response with ignored parameters may look like:

{
    "ignored_parameters_unsupported": [
        "invalid_param_1",
        "invalid_param_2"
    ],
    "msg": "",
    "result": "success"
}