Register an event queue

POST https://juxt-oss.zulipchat.com/api/v1/register

This powerful endpoint can be used to register a Zulip "event queue" (subscribed to certain types of "events", or updates to the messages and other Zulip data the current user has access to), as well as to fetch the current state of that data.

(register also powers the call_on_each_event Python API, and is intended primarily for complex applications for which the more convenient call_on_each_event API is insufficient).

This endpoint returns a queue_id and a last_event_id; these can be used in subsequent calls to the "events" endpoint to request events from the Zulip server using long-polling.

The server will queue events for up to 10 minutes of inactivity. After 10 minutes, your event queue will be garbage-collected. The server will send heartbeat events every minute, which makes it easy to implement a robust client that does not miss events unless the client loses network connectivity with the Zulip server for 10 minutes or longer.

Once the server garbage-collects your event queue, the server will return an error with a code of BAD_EVENT_QUEUE_ID if you try to fetch events from the event queue. Your software will need to handle that error condition by re-initializing itself (e.g. this is what triggers your browser reloading the Zulip webapp when your laptop comes back online after being offline for more than 10 minutes).

When prototyping with this API, we recommend first calling register with no event_types parameter to see all the available data from all supported event types. Before using your client in production, you should set appropriate event_types and fetch_event_types filters so that your client only requests the data it needs. A few minutes doing this often saves 90% of the total bandwidth and other resources consumed by a client using this API.

See the events system developer documentation if you need deeper details about how the Zulip event queue system works, avoids clients needing to worry about large classes of potentially messy races, etc.

Usage examples

#!/usr/bin/env python3

import zulip

# Pass the path to your zuliprc file here.
client = zulip.Client(config_file="~/zuliprc")

# Register the queue
result = client.register(
    event_types=['message', 'realm_emoji'],
)
print(result)

More examples and documentation can be found here.

const Zulip = require('zulip-js');

// Pass the path to your zuliprc file here.
const config = { zuliprc: 'zuliprc' };

Zulip(config).then(async (client) => {
    // Register a queue
    const params = {
        event_types: ["message"],
    };

    return await client.queues.register(params);
}).then(console.log).catch(console.err);

curl -sSX POST https://juxt-oss.zulipchat.com/api/v1/register \
    -u BOT_EMAIL_ADDRESS:BOT_API_KEY \
    --data-urlencode event_types='["message"]'

Parameters

apply_markdown optional

Example: True

Set to true if you would like the content to be rendered in HTML format (otherwise the API will return the raw text that the user entered)

Defaults to false.


client_gravatar optional

Example: True

Whether the client supports computing gravatars URLs. If enabled, avatar_url will be included in the response only if there is a Zulip avatar, and will be null for users who are using gravatar as their avatar. This option significantly reduces the compressed size of user data, since gravatar URLs are long, random strings and thus do not compress well. The client_gravatar field is set to true if clients can compute their own gravatars.

Defaults to false.


slim_presence optional

Example: True

Setting this to true will make presence dictionaries be keyed by user_id instead of email.

Changes: New in Zulip 3.0 (Unstable with no feature level yet).

Defaults to false.


event_types optional

Example: ["message"]

A JSON-encoded array indicating which types of events you're interested in. Values that you might find useful include:

  • message (messages)
  • subscription (changes in your subscriptions)
  • realm_user (changes to users in the organization and their properties, such as their name).

If you do not specify this parameter, you will receive all events, and have to filter out the events not relevant to your client in your client code. For most applications, one is only interested in messages, so one specifies: event_types=['message']


all_public_streams optional

Example: True

Set to True if you would like to receive events that occur within all public streams.

Defaults to false.


include_subscribers optional

Example: True

Whether each returned stream object should include a subscribers field containing a list of the user IDs of its subscribers.

(This may be significantly slower in organizations with thousands of users subscribed to many streams.)

Changes: New in Zulip 2.1.0.

Defaults to false.


client_capabilities optional

Example: {"notification_settings_null": true}

Dictionary containing details on features the client supports that are relevant to the format of responses sent by the server.

  • notification_settings_null: Boolean for whether the client can handle the current API with null values for stream-level notification settings (which means the stream is not customized and should inherit the user's global notification settings for stream messages). New in Zulip 2.1.0; in earlier Zulip releases, stream-level notification settings were simple booleans.

  • bulk_message_deletion: Boolean for whether the client's handler for the delete_message event type has been updated to process the new bulk format (with a message_ids, rather than a singleton message_id). Otherwise, the server will send delete_message events in a loop. New in Zulip 3.0 (feature level 13). This capability is for backwards-compatibility; it will be required in a future server release.

  • user_avatar_url_field_optional: Boolean for whether the client required avatar URLs for all users, or supports using GET /avatar/{user_id} to access user avatars. If the client has this capability, the server may skip sending a avatar_url field in the realm_user at its sole discretion to optimize network performance. This is an important optimization in organizations with 10,000s of users. New in Zulip 3.0 (feature level 18).


fetch_event_types optional

Example: ["message"]

Same as the event_types parameter except that the values in fetch_event_types are used to fetch initial data. If fetch_event_types is not provided, event_types is used and if event_types is not provided, this parameter defaults to None.


narrow optional

Example: [["stream", "Denmark"]]

A JSON-encoded array of arrays of length 2 indicating the narrow for which you'd like to receive events for. For instance, to receive events for the stream Denmark, you would specify narrow=[['stream', 'Denmark']]. Another example is narrow=[['is', 'private']] for private messages. Default is [].


Response

Return values

  • queue_id: The ID of the queue that has been allocated for your client.

  • last_event_id: The initial value of last_event_id to pass to GET /api/v1/events.

  • zulip_feature_level: The server's current Zulip feature level.

  • zulip_version: The server's version.

  • alert_words: Present if alert_words is present in fetch_event_types.

    An array of strings, each an alert word that the current user has configured.

  • custom_profile_fields: Present if custom_profile_fields is present in fetch_event_types.

    An array of dictionaries where each dictionary contains the details of a single custom profile field that is available to users in this Zulip organization. This must be combined with the custom profile field values on individual user objects to display users' full profiles.

    • id: The id of the custom profile field.

    • type: The type of the custom profile field.

    • order: The order of the custom profile field.

    • name: The name of the custom profile field.

    • hint: A hint regarding the custom profile field. For example, 'What are you known for?'.

    • field_data: The data related to the custom profile field.

  • custom_profile_field_types: Present if custom_profile_fields is present in fetch_event_types.

    An array of objects; each object describes a type of custom profile field that could be configured on this Zulip server. Each custom profile type has a id and the type property of a custom profile field is equal to one of these ids.

    This attribute is only useful for clients containing UI for changing the set of configured custom profile fields in a Zulip organization.

    • {FIELD_TYPE}: Dictionary which contains the details of the field type with the field type as the name of the property itself. The current supported field types are as follows:

      • SHORT_TEXT
      • LONG_TEXT
      • DATE for date-based fields.
      • CHOICE for a list of options.
      • URL for links.
      • EXTERNAL_ACCOUNT for external accounts.
      • USER for selecting a user for the field.

      • id: The id of the custom profile field type.

      • name: The name of the custom profile field type.

  • hotspots: Present if hotspots is present in fetch_event_types.

    An array of dictionaries, where each dictionary contains details about a single onboarding hotspot that should be shown to new users.

    We expect that only official Zulip clients will interact with these data.

    • delay: The delay after which the user should be shown the hotspot.

    • name: The name of the hotspot.

    • title: The title of the hotspot, as will be displayed to the user.

    • description: The description of the hotspot, as will be displayed to the user.

  • max_message_id: Present if message is present in fetch_event_types.

    The highest message ID among all messages the user has received as of the moment of this request. Recommended for client-side logic only; clients wishing to fetch the latest messages should simply pass anchor="latest" to GET /messages.

  • muted_topics: Present if muted_topics is present in fetch_event_types.

    Array of tuples, where each tuple describes a muted topic. The first element of tuple is the stream name in which the topic has to be muted, the second element is the topic name to be muted and the third element is an integer UNIX timestamp representing when the topic was muted.

  • presences: Present if presence is present in fetch_event_types.

    A dictionary where each entry describes the presence details for another user in the Zulip organization.

    Users who have been offline for multiple weeks may not appear in this object.

    • {user_id} or {user_email}: Depending on the value of slim_presence. Each entry contains the details of the presence of the user with the specific id or email.
  • realm_domains: Present if realm_domains is present in fetch_event_types.

    An array of dictionaries where each dictionary describes a domain within which users can join the organization without and invitation.

    • domain: The new allowed domain.

    • allow_subdomains: Whether subdomains are allowed for this domain.

  • realm_emoji: Present if realm_emoji is present in fetch_event_types.

    An array of dictionaries where each dictionary describes a custom emoji that has been uploaded in this Zulip organization.

  • realm_filters: Present if realm_filters is present in fetch_event_types.

    An array of tuples (fixed-length arrays) where each tuple describes a single realm filter (Linkifier. The first element of the tuple is a string regex pattern which represents the pattern that should be linkified on matching.

    The second element is the url with which the pattern matching string should be linkified with and the third element is the id of the realm filter.

  • realm_user_groups: Present if realm_user_groups is present in fetch_event_types.

    An array of dictionaries where each dictionary describes a user group in the Zulip organization.

    • name: The name of the user group.

    • description: The description of the user group.

    • members: Array containing the id of the users who are members of this user group.

    • id: The ID of the user group.

  • realm_bots: Present if realm_bot is present in fetch_event_types.

    An array of dictionaries where each dictionary describes a bot that the current user can administer. If the current user is an organization administrator, this will include all bots in the organization. Otherwise, it will only include bots owned by the user (either because the user created the bot or an administrator transferred the bot's ownership to the user).

    • user_id: The user id of the bot.

    • full_name: The full name of the bot.

    • api_key: The API key of the bot which it uses to make API requests.

    • default_sending_stream: The default sending stream of the bot. Null if the bot doesn't have a default sending stream.

    • default_events_register_stream: The default stream for which the bot receives events/register data. Null if the bot doesn't have such a default stream.

    • default_all_public_streams: Whether the bot can send messages to all streams by default.

    • avatar_url: The URL of the bot's avatar.

    • owner_id: The user id of the bot's owner.

      Null if the bot has no owner.

    • services: The "Services" array contains extra configuration fields only relevant for Outgoing webhook bots and Embedded bots. It is always a single-element array.

      We consider this part of the Zulip API to be unstable; it is used only for UI elements for administering bots and is likely to change.

    • email: The email of the bot.

    • bot_type: An integer describing the type of bot:

      • 1 for a Generic bot.
      • 2 for an Incoming webhook bot.
      • 3 for an Outgoing webhook bot.
      • 4 for an Embedded bot.
    • is_active: A boolean describing whether the user account has been deactivated.

  • realm_embedded_bots: Present if realm_embedded_bots is present in fetch_event_types.

    An array of dictionaries where each dictionary describes an type of embedded bot that is available to be configured on this Zulip server.

    Clients only need these data if they contain UI for creating or administering bots.

    • name: The name of the bot.

    • config: A "string: string" dictionary which describes the configuration for the embedded bot (usually details like API keys).

      • String describing the config data.
  • realm_incoming_webhook_bots: Present if realm_incoming_webhook_bots is present in fetch_event_types.

    An array of dictionaries where each dictionary describes an type of incoming webhook integration that is available to be configured on this Zulip server.

    Clients only need these data if they contain UI for creating or administering bots.

    • name: The name of the bot.

    • config: A "string: string" dictionary which describes the configuration for the embedded bot (usually details like API keys).

      • String describing the config data.
  • recent_private_conversations: Present if recent_private_conversations is present in fetch_event_types.

    An array of dictionaries containing data on all private message and group private message conversations that the user has received (or sent) messages in, organized by conversation. This data set is designed to support UI elements such as the "Private messages" widget in the web application showing recent private message conversations that the user has participated in.

    "Recent" is defined as the server's discretion; the original implementation interpreted that as "the 1000 most recent private messages the user received".

    • max_message_id: The highest message id of the conversation, intended to support sorting the conversations by recency.

    • user_ids: The list of users other than the current user in the private message conversation. This will be an empty list for private messages sent to oneself.

  • subscriptions: Present if subscription is present in fetch_event_types.

    A array of dictionaries where each dictionary describes the properties of a stream the user is subscribed to (as well as that user's personal per-stream settings).

    • stream_id: The unique ID of a stream.

    • name: The name of a stream.

    • description: The short description of a stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • rendered_description: A short description of a stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • subscribers: A list of user IDs of users who are also subscribed to a given stream. Included only if include_subscribers is true.

    • desktop_notifications: A boolean specifying whether desktop notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_desktop_notifications, for this stream.

    • email_notifications: A boolean specifying whether email notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_email_notifications, for this stream.

    • wildcard_mentions_notify: A boolean specifying whether wildcard mentions trigger notifications as though they were personal mentions in this stream.

      A null value means the value of this setting should be inherited from the user-level default setting, wildcard_mentions_notify, for this stream.

    • push_notifications: A boolean specifying whether push notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_push_notifications, for this stream.

    • audible_notifications: A boolean specifying whether audible notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_audible_notifications, for this stream.

    • pin_to_top: A boolean specifying whether the given stream has been pinned to the top.

    • email_address: Email address of the given stream, used for sending emails to the stream.

    • is_muted: Whether the user has muted the stream. Muted streams do not count towards your total unread count and do not show up in All messages view (previously known as Home view).

      Changes: Prior to Zulip 2.1, this feature was represented by the more confusingly named in_home_view (with the opposite value, in_home_view=!is_muted).

    • in_home_view: Legacy property for if the given stream is muted, with inverted meeting.

      Deprecated; clients should use is_muted where available.

    • is_announcement_only: Whether only organization administrators can post to the stream.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • color: The user's personal color for the stream.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • stream_weekly_traffic: The average number of messages sent to the stream in recent weeks, rounded to the nearest integer.

      Null means the stream was recently created and there is insufficient data to estimate the average traffic.

  • unsubscribed: Present if subscription is present in fetch_event_types.

    A array of dictionaries where each dictionary describes one of the streams the user has unsubscribed from but was previously subscribed to along with the subscription details.

    Unlike never_subscribed, the user might have messages in their personal message history that were sent to these streams.

    • stream_id: The unique ID of a stream.

    • name: The name of a stream.

    • description: The short description of a stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • rendered_description: A short description of a stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • subscribers: A list of user IDs of users who are also subscribed to a given stream. Included only if include_subscribers is true.

    • desktop_notifications: A boolean specifying whether desktop notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_desktop_notifications, for this stream.

    • email_notifications: A boolean specifying whether email notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_email_notifications, for this stream.

    • wildcard_mentions_notify: A boolean specifying whether wildcard mentions trigger notifications as though they were personal mentions in this stream.

      A null value means the value of this setting should be inherited from the user-level default setting, wildcard_mentions_notify, for this stream.

    • push_notifications: A boolean specifying whether push notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_push_notifications, for this stream.

    • audible_notifications: A boolean specifying whether audible notifications are enabled for the given stream.

      A null value means the value of this setting should be inherited from the user-level default setting, enable_stream_audible_notifications, for this stream.

    • pin_to_top: A boolean specifying whether the given stream has been pinned to the top.

    • email_address: Email address of the given stream, used for sending emails to the stream.

    • is_muted: Whether the user has muted the stream. Muted streams do not count towards your total unread count and do not show up in All messages view (previously known as Home view).

      Changes: Prior to Zulip 2.1, this feature was represented by the more confusingly named in_home_view (with the opposite value, in_home_view=!is_muted).

    • in_home_view: Legacy property for if the given stream is muted, with inverted meeting.

      Deprecated; clients should use is_muted where available.

    • is_announcement_only: Whether only organization administrators can post to the stream.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • color: The user's personal color for the stream.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • stream_weekly_traffic: The average number of messages sent to the stream in recent weeks, rounded to the nearest integer.

      Null means the stream was recently created and there is insufficient data to estimate the average traffic.

  • never_subscribed: Present if subscription is present in fetch_event_types.

    A array of dictionaries where each dictionary describes one of the streams that is visible to the user and the user has never been subscribed to.

    Important for clients containing UI where one can browse streams to subscribe to.

    • stream_id: The unique ID of the stream.

    • name: The name of the stream.

    • description: The short description of the stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • rendered_description: The short description of the stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • is_announcement_only: Whether the given stream is announcement only or not.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

    • stream_weekly_traffic: The average number of messages sent to the stream in recent weeks, rounded to the nearest integer.

      Null means the stream was recently created and there is insufficient data to estimate the average traffic.

    • subscribers: A list of user IDs of users who are subscribed to the stream. Included only if include_subscribers is true.

  • unread_msgs: Present if message and update_message_flags are both present in event_types.

    A set of data structures describing the conversations containing the 50000 most recent unread messages the user has received. This will usually contain every unread message the user has received, but clients should support users with even more unread messages (and not hardcode the number 50000).

    • pms: An array of dictionaries where each entry contains details of unread private messages with a specific user.

      • sender_id: The user id of the the other participant in a PM conversation.

      • message_ids: The message ids of the recent unread PM messages sent by the other user.

    • streams: An array of dictionaries where each dictionary contains details of all unread messages of a single subscribed stream, including muted streams.

      • sender_ids: Array containing the id of the users who have sent recent messages on this stream under the given topic which have been unread by the user.

      • topic: The topic under which the message was sent.

      • stream_id: The id of the stream to which the message was sent.

      • message_ids: The message ids of the recent unread messages sent in this stream.

    • huddles: An array of dictionaries where each dictionary contains details of all unread group private messages of a single group.

      • user_ids_string: A string containing the ids of all users in the huddle(group PMs) separated by commas(,). Example: "1,2,3".

      • message_ids: The message ids of the recent unread messages which have been sent in this group.

    • mentions: Array containing the ids of all messages in which the user has been mentioned. For muted streams, wildcard mentions will not be considered for this array.

    • stream_id: The unique ID of the stream.

    • name: The name of the stream.

    • description: The short description of the stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • rendered_description: The short description of the stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • is_announcement_only: Whether the given stream is announcement only or not.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

  • starred_messages: Present if starred_messages is present in fetch_event_types.

    Array containing the ids of all messages which have been starred by the user.

  • streams: Present if stream is present in fetch_event_types.

    Array of dictionaries where each dictionary contains details about a single stream in the organization that is visible to the user.

    For organization administrators, this will include all private streams in the organization.

    • stream_id: The unique ID of the stream.

    • name: The name of the stream.

    • description: The short description of the stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • rendered_description: The short description of the stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • is_announcement_only: Whether the given stream is announcement only or not.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

  • stream_name_max_length: Present if stream is present in fetch_event_types.

    The maximum allowed length for a stream name. Clients should use these properties rather than hardcoding field sizes, as they may change in a future Zulip release.

  • stream_description_max_length: Present if stream is present in fetch_event_types.

    The maximum allowed length for a stream description. Clients should use these properties rather than hardcoding field sizes, as they may change in a future Zulip release.

  • realm_default_streams: Present if default_streams is present in fetch_event_types.

    An array of dictionaries where each dictionary contains details about a single default stream for the Zulip organization.

    • stream_id: The unique ID of the stream.

    • name: The name of the stream.

    • description: The short description of the stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

    • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

      Changes: New in Zulip 4.0 (feature level 30).

    • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

    • rendered_description: The short description of the stream rendered as HTML, intended to be used when displaying the stream description in a UI.

      One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

    • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

    • stream_post_policy: Policy for which users can post messages to the stream.

      • 1 => Any user can post.
      • 2 => Only administrators can post.
      • 3 => Only new members can post.

      Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

    • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

      • null, the default, means the stream will inherit the organization level setting.
      • -1 encodes retaining messages in this stream forever.

      Changes: New in Zulip 3.0 (feature level 17).

    • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

      Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

    • first_message_id: The id of the first message in the stream.

      Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

      Null is used for streams with no message history.

    • is_announcement_only: Whether the given stream is announcement only or not.

      Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

  • realm_default_stream_groups: Present if default_stream_groups is present in fetch_event_types.

    An array of dictionaries where each dictionary contains details about a single default stream group configured for this Zulip organization.

    Default stream groups are an experimental feature.

    • name: Name of the default stream group.

    • description: Description of the default stream group.

    • id: id of the default stream group.

    • streams: Array containing details about the streams in the default stream group.

      • stream_id: The unique ID of the stream.

      • name: The name of the stream.

      • description: The short description of the stream in text/markdown format, intended to be used to prepopulate UI for editing a stream's description.

      • date_created: The UNIX timestamp for when the stream was created, in UTC seconds.

        Changes: New in Zulip 4.0 (feature level 30).

      • invite_only: Specifies whether the stream is private or not. Only people who have been invited can access a private stream.

      • rendered_description: The short description of the stream rendered as HTML, intended to be used when displaying the stream description in a UI.

        One should use the standard Zulip rendered_markdown CSS when displaying this content so that emoji, LaTeX, and other syntax work correctly. And any client-side security logic for user-generated message content should be applied when displaying this HTML as though it were the body of a Zulip message.

      • is_web_public: Whether the stream has been configured to allow unauthenticated access to its message history from the web.

      • stream_post_policy: Policy for which users can post messages to the stream.

        • 1 => Any user can post.
        • 2 => Only administrators can post.
        • 3 => Only new members can post.

        Changes: New in Zulip 3.0, replacing the previous is_announcement_only boolean.

      • message_retention_days: Number of days that messages sent to this stream will be stored before being automatically deleted by the message retention policy. There are two special values:

        • null, the default, means the stream will inherit the organization level setting.
        • -1 encodes retaining messages in this stream forever.

        Changes: New in Zulip 3.0 (feature level 17).

      • history_public_to_subscribers: Whether the history of the stream is public to its subscribers.

        Currently always true for public streams (i.e. invite_only=False implies history_public_to_subscribers=True), but clients should not make that assumption, as we may change that behavior in the future.

      • first_message_id: The id of the first message in the stream.

        Intended to help clients determine whether they need to display UI like the "more topics" widget that would suggest the stream has older history that can be accessed.

        Null is used for streams with no message history.

      • is_announcement_only: Whether the given stream is announcement only or not.

        Changes: Deprecated in Zulip 3.0 (feature level 1), use stream_post_policy instead.

  • stop_words: Present if stop_words is present in fetch_event_types.

    An array containing the stop words used by the Zulip server's full-text search implementation. Useful for showing helpful error messages when a search returns limited results because a stop word in the query was ignored.

  • user_status: Present if user_status is present in fetch_event_types.

    A dictionary which contains the status of all users in the Zulip organization who have set a status.

    • {user_id}: Object containing the status details of a user with the key of the object being the id of the user.

      • away: Whether the user has marked themself "away".

      • status_text: The text content of the status message.

  • has_zoom_token: Present if video_calls is present in fetch_event_types.

    A boolean which signifies whether the user has a zoom token and has thus completed OAuth flow for the Zoom integration. Clients need to know whether initiating Zoom OAuth is required before creating a Zoom call.

  • enable_desktop_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_digest_emails: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_login_emails: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_offline_email_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_offline_push_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_online_push_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_sounds: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_stream_desktop_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_stream_email_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_stream_push_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • enable_stream_audible_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • wildcard_mentions_notify: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • message_content_in_email_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • notification_sound: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • pm_content_in_desktop_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • desktop_icon_count_display: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • realm_name_in_notifications: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • presence_enabled: Present if update_global_notifications is present in fetch_event_types.

    The current value of this global notification setting for the user. See update-notification-settings for details on notification settings.

  • available_notification_sounds: Present if update_global_notifications is present in fetch_event_types.

    Array containing the names of the notification sound options supported by this Zulip server. Only relevant to support UI for configuring notification sounds.

  • color_scheme: Present if update_display_settings is present in fetch_event_types.

    The color scheme selected by the user.

  • default_language: Present if update_display_settings is present in fetch_event_types.

    The default language chosen by the user.

  • demote_inactive_streams: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen to demote inactive streams.

  • dense_mode: Present if update_display_settings is present in fetch_event_types.

    Whether the user has switched on dense mode. Dense mode is an experimental feature that is only available in development environments.

  • emojiset: Present if update_display_settings is present in fetch_event_types.

    The name of the emojiset that the user has chosen.

  • fluid_layout_width: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen for the layout width to be fluid.

  • high_contrast_mode: Present if update_display_settings is present in fetch_event_types.

    Whether has switched on high contrast mode.

  • left_side_userlist: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen for the userlist to be displayed on the left side of the screen (for desktop app and webapp) in narrow windows.

  • starred_message_counts: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen the number of starred messages to be displayed similar to unread counts.

  • timezone: Present if update_display_settings is present in fetch_event_types.

    The timezone configured for the user. This is used primarily to display the user's timezone to other users.

  • translate_emoticons: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen for emoticons to be translated into emoji in the Zulip compose box.

  • twenty_four_hour_time: Present if update_display_settings is present in fetch_event_types.

    Whether the user has chosen a twenty four hour time display (true) or a twelve hour one (false).

  • emojiset_choices: Present if update_display_settings is present in fetch_event_types.

    Array of dictionaries where each dictionary describes an emojiset supported by this version of the Zulip server.

    Only relevant to clients with configuration UI for choosing an emojiset; the currently selected emojiset is available in the emojiset key.

    • key: The key or the name of the emojiset which will be the value of emojiset if this emojiset is chosen.

    • text: The text describing the emojiset.

  • realm_add_emoji_by_admins_only: Present if realm is present in fetch_event_types.

    Whether the organization is configured to only allow administrators to upload new custom emoji.

  • realm_allow_edit_history: Present if realm is present in fetch_event_types.

    Whether this organization is configured to allow users to access message edit history.

  • realm_allow_message_deleting: Present if realm is present in fetch_event_types.

    Whether messages can be deleted in this Zulip organization.

  • realm_bot_creation_policy: Present if realm is present in fetch_event_types.

    The policy for which users can create bot users in this organization.

  • realm_create_stream_policy: Present if realm is present in fetch_event_types.

    The policy for which users can create streams in this organization.

  • realm_invite_to_stream_policy: Present if realm is present in fetch_event_types.

    The policy for which users can add other users to streams in this organization.

  • realm_default_language: Present if realm is present in fetch_event_types.

    The default UI language for new users joining this organization.

  • realm_default_twenty_four_hour_time: Present if realm is present in fetch_event_types.

    Whether new members of this organization will see times displayed in 24-hour time (true) or 12-hour time (false).

  • realm_description: Present if realm is present in fetch_event_types.

    The description of the organization, used on login and registration pages.

  • realm_digest_emails_enabled: Present if realm is present in fetch_event_types.

    Whether the organization has enabled weekly digest emails.

  • realm_disallow_disposable_email_addresses: Present if realm is present in fetch_event_types.

    Whether the organization disallows disposable email addresses.

  • realm_email_address_visibility: Present if realm is present in fetch_event_types.

    The policy for which users in this organization can see the real email addresses of other users.

    • 1 = everyone
    • 2 = members only
    • 3 = administrators only
    • 4 = nobody (though note that administrators can change this setting).
  • realm_email_changes_disabled: Present if realm is present in fetch_event_types.

    Whether users are allowed to change their own email address in this organization. This is typically disabled for organizations that synchronize accounts from LDAP or a similar corporate database.

  • realm_invite_required: Present if realm is present in fetch_event_types.

    Whether an invitation is required to join this organization.

  • realm_invite_by_admins_only: Present if realm is present in fetch_event_types.

    If true, only organization administrators can invite new users to join. If false, any Member can invite new users to join the organization. Help center article.

  • realm_inline_image_preview: Present if realm is present in fetch_event_types.

    Whether this organization has been configured to enable previews of linked images.

  • realm_inline_url_embed_preview: Present if realm is present in fetch_event_types.

    Whether this organization has been configured to enable previews of linked websites.

  • realm_mandatory_topics: Present if realm is present in fetch_event_types.

    Whether topics are required for messages in this organization.

  • realm_message_retention_days: Present if realm is present in fetch_event_types.

    The default message retention policy for this organization. Pass "forever" to request that messages by retained forever (the default).

  • realm_name: Present if realm is present in fetch_event_types.

    The name of the organization, used in login pages etc.

  • realm_name_changes_disabled: Present if realm is present in fetch_event_types.

    Indicates whether users are allowed to change their name via the Zulip UI in this organization. Typically disabled in organizations syncing this this type of account information an external user database like LDAP.

  • realm_avatar_changes_disabled: Present if realm is present in fetch_event_types.

    Indicates whether users are allowed to change their avatar via the Zulip UI in this organization. Typically disabled in organizations syncing this this type of account information an external user database like LDAP.

  • realm_emails_restricted_to_domains: Present if realm is present in fetch_event_types.

    Whether new users joining this organization are required to have an email address in one of the realm_domains configured for the organization.

  • realm_send_welcome_emails: Present if realm is present in fetch_event_types.

    Whether or not this organization is configured to send the standard Zulip welcome emails to new users joining the organization.

  • realm_message_content_allowed_in_email_notifications: Present if realm is present in fetch_event_types.

    Whether notification emails in this organization are allowed to contain Zulip the message content, or simply indicate that a new message was sent.

  • realm_video_chat_provider: Present if realm is present in fetch_event_types.

    The configured video call provider for the organization.

  • realm_waiting_period_threshold: Present if realm is present in fetch_event_types.

    Members whose accounts have been created at least this many days ago will be treated as Full Members for the purpose of settings that restrict access to new members.

  • realm_digest_weekday: Present if realm is present in fetch_event_types.

    The day of the week when the organization will send its weekly digest email to inactive users.

  • realm_private_message_policy: Present if realm is present in fetch_event_types.

    Policy for who can send private messages in this organization.

    • 1 = Everyone
    • 2 = Nobody
  • realm_user_group_edit_policy: Present if realm is present in fetch_event_types.

    The organization's policy for who can manage user groups .

    • 1 = All members can create and edit user groups
    • 2 = Only organization administrators can create and edit user groups
  • realm_default_code_block_language: Present if realm is present in fetch_event_types.

    The default pygments language code to be used for a code blocks in this organization. Null if no default has been set.

  • realm_message_content_delete_limit_seconds: Present if realm is present in fetch_event_types.

    Messages sent more than this many seconds ago cannot be deleted with this organization's message deletion policy.

  • realm_authentication_methods: Present if realm is present in fetch_event_types.

    Dictionary of 'authentication_method_name': 'boolean' with each entry describing whether the authentication name can be used for authenticating into the organization.

    • Boolean describing whether the authentication method (i.e its key) is enabled in this organization.
  • realm_allow_message_editing: Present if realm is present in fetch_event_types.

    Whether this organizations message edit policy allows editing the content of messages.

  • realm_allow_community_topic_editing: Present if realm is present in fetch_event_types.

    Whether community topic editing is enabled in this organization.

  • realm_message_content_edit_limit_seconds: Present if realm is present in fetch_event_types.

    Messages sent more than this many seconds ago cannot be edited with this organization's message edit policy.

  • realm_community_topic_editing_limit_seconds: Present if realm is present in fetch_event_types.

    Messages sent more than this many seconds ago cannot have their topics edited by other users with this organization's message edit policy.

  • realm_icon_url: Present if realm is present in fetch_event_types.

    The url of the organization's profile icon.

  • realm_icon_source: Present if realm is present in fetch_event_types.

    String indicating whether the organization's profile icon was uploaded by a user or is the default. Useful for UI allowing editing the organization's icon.

    • "G" means generated by Gravatar (the default).
    • "U" means uploaded by an organization administrator.
  • max_icon_file_size: Present if realm is present in fetch_event_types.

    The maximum file size allowed for the organization's icon. Useful for UI allowing editing the organization's icon.

  • realm_logo_url: Present if realm is present in fetch_event_types.

    The url of the organization's wide logo configured in the organization profile.

  • realm_logo_source: Present if realm is present in fetch_event_types.

    String indicating whether the organization's profile wide logo was uploaded by a user or is the default. Useful for UI allowing editing the organization's wide logo.

    • "D" means the logo is the default Zulip logo.
    • "U" means uploaded by an organization administrator.
  • realm_night_logo_url: Present if realm is present in fetch_event_types.

    The url of the organization's night theme wide-format logo configured in the organization profile.

  • realm_night_logo_source: Present if realm is present in fetch_event_types.

    String indicating whether the organization's night theme profile wide logo was uploaded by a user or is the default. Useful for UI allowing editing the organization's wide logo.

    • "D" means the logo is the default Zulip logo.
    • "U" means uploaded by an organization administrator.
  • max_logo_file_size: Present if realm is present in fetch_event_types.

    The maximum file size allowed for the uploaded organization logos.

  • realm_bot_domain: Present if realm is present in fetch_event_types.

    The fake email domain that will be used for new bots created this organization. Useful for UI for creating bots.

  • realm_uri: Present if realm is present in fetch_event_types.

    The URL for the organization.

  • realm_available_video_chat_providers: Present if realm is present in fetch_event_types.

    Dictionary where each entry describes a supported video call provider that is configured on this server and could be selected by an organization administrator.

    Useful for administrative settings UI that allows changing the video chat provider.

    • {provider_name}: Dictionary containing the details of the video chat provider with the name of the chat provider as the key.

      • name: The name of the video chat provider.

      • id: The ID of the video chat provider.

  • realm_presence_disabled: Present if realm is present in fetch_event_types.

    Whether online presence of other users is shown in this organization.

  • settings_send_digest_emails: Present if realm is present in fetch_event_types.

    Whether this Zulip server is configured to allow organizations to enable digest emails.

    Relevant for administrative settings UI that can change the digest email settings.

  • realm_is_zephyr_mirror_realm: Present if realm is present in fetch_event_types.

    Whether the organization is a Zephyr mirror realm.

  • realm_email_auth_enabled: Present if realm is present in fetch_event_types.

    Whether the organization has enabled Zulip's default email and password authentication feature. Determines whether Zulip stores a password for the user and clients should offer any UI for changing the user's Zulip password.

  • realm_password_auth_enabled: Present if realm is present in fetch_event_types.

    Whether the organization allows any sort of password-based authentication (whether via EmailAuthBackend or LDAP passwords).

    Determines whether a client might ever need to display a password prompt (clients will primarily look at this attribute in server_settings before presenting a login page).

  • realm_push_notifications_enabled: Present if realm is present in fetch_event_types.

    Whether push notifications are enabled for this organization. Typically false for self-hosted servers that have not configured the Mobile push notifications service.

  • realm_upload_quota: Present if realm is present in fetch_event_types.

    The total quota for uploaded files in this organization.

    Clients are not responsible for checking this quota; it is included in the API only for display purposes.

    Null if there is no limit.

  • realm_plan_type: Present if realm is present in fetch_event_types.

    The plan type of the organization.

    • 1 = Self-hosted organization (SELF_HOSTED)
    • 2 = Zulip Cloud free plan (LIMITED)
    • 3 = Zulip Cloud Standard plan (STANDARD)
    • 4 = Zulip Cloud Standard plan, sponsored for free (STANDARD_FREE)
  • zulip_plan_is_not_limited: Present if realm is present in fetch_event_types.

    Whether the organization is using a limited (Zulip Cloud Free) plan.

  • upgrade_text_for_wide_organization_logo: Present if realm is present in fetch_event_types.

    Text to use when displaying UI for wide organization logos, a feature that is currently not available on the Zulip Cloud Free plan.

    Useful only for clients supporting administrative UI for uploading a new wide organization logo to brand the organization.

  • realm_default_external_accounts: Present if realm is present in fetch_event_types.

    Dictionary where each entry describes a default external account type that can be configured with Zulip's custom profile fields feature.

    • {site_name}: Dictionary containing the details of the default external account provider with the name of the website as the key.

      • name: The name of the external account provider

      • text: The text describing the external account.

      • hint: Text that can be shown to the user to provide the users with a hint as to what account they have to provide.

      • url_pattern: The regex pattern of the url of a profile page on the external site.

  • jitsi_server_url: Present if realm is present in fetch_event_types.

    The base URL the organization uses to create Jitsi video calls.

  • development_environment: Present if realm is present in fetch_event_types.

    Whether this Zulip server is a development environment. Used to control certain features or UI (such as error popups) that should only apply when connected to a Zulip development environment.

  • server_generation: Present if realm is present in fetch_event_types.

    A timestamp indicating when the process hosting this event queue was started. Clients will likely only find this value useful for inclusion in detailed error reports.

  • password_min_length: Present if realm is present in fetch_event_types.

    This Zulip server's configured minimum required length for passwords. Necessary for password change UI to show whether the password will be accepted.

  • password_min_guesses: Present if realm is present in fetch_event_types.

    This Zulip server's configured minimum zxcvbn minimum guesses. Necessary for password change UI to show whether the password will be accepted.

  • max_file_upload_size_mib: Present if realm is present in fetch_event_types.

    The maximum file size that can be uploaded to this Zulip server.

  • max_avatar_file_size_mib: Present if realm is present in fetch_event_types.

    The maximum avatar size that can be uploaded to this Zulip server.

  • server_inline_image_preview: Present if realm is present in fetch_event_types.

    Whether the server is configured with support for inline image previews. Clients containing administrative UI for changing realm_inline_image_preview should consult this field before offering that feature.

  • server_inline_url_embed_preview: Present if realm is present in fetch_event_types.

    Whether the server is configured with support for inline URL previews. Clients containing administrative UI for changing realm_inline_url_embed_preview should consult this field before offering that feature.

  • server_avatar_changes_disabled: Present if realm is present in fetch_event_types.

    Whether the server allows avatar changes. Similar to realm_avatar_changes_disabled but based on the AVATAR_CHANGES_DISABLED Zulip server level setting.

  • server_name_changes_disabled: Present if realm is present in fetch_event_types.

    Whether the server allows name changes. Similar to realm_name_changes_disabled but based on the NAME_CHANGES_DISABLED Zulip server level setting.

  • realm_notifications_stream_id: Present if realm is present in fetch_event_types.

    The ID of the stream to which notifications announcing the creation of new streams are sent. -1 if such notifications are disabled.

    Since these notifications are sent by the server, this field is primarily relevant to clients containing UI for changing it.

  • realm_signup_notifications_stream_id: Present if realm is present in fetch_event_types.

    The ID of the stream to which notifications announcing that new users have joined the organization are sent. -1 if such notifications are disabled.

    Since these notifications are sent by the server, this field is primarily relevant to clients containing UI for changing it.

  • realm_users: Present if realm_user is present in fetch_event_types.

    A array of dictionaries where each entry describes a user whose account has not been deactivated. Note that unlike the usual User dictionary, this does not contain the is_active key, as all the users present in this array have active accounts.

    See also cross_realm_bots and realm_non_active_users.

    • A dictionary containing basic data on a given Zulip user.

      • email: The Zulip API email address of the user or bot.

        If you do not have permission to view the email address of the target user, this will be a fake email address that is usable for the Zulip API but nothing else.

      • is_bot: A boolean specifying whether the user is a bot or full account.

      • avatar_url: URL for the the user's avatar. Will be null if the client_gravatar query parameter was set to True and the user's avatar is hosted by the Gravatar provider (i.e. the user has never uploaded an avatar).

      • avatar_version: Version for the the user's avatar. Used for cache-busting requests for the user's avatar. Clients generally shouldn't need to use this; most avatar URLs sent by Zulip will already end with ?v={avatar_version}.

      • full_name: Full name of the user or bot, used for all display purposes.

      • is_admin: A boolean specifying whether the user is an organization administrator.

      • is_owner: A boolean specifying whether the user is an organization owner. If true, is_admin will also be true.

        Changes: New in Zulip 3.0 (feature level 8).

      • bot_type: An integer describing the type of bot:

        • null if the user isn't a bot.
        • 1 for a Generic bot.
        • 2 for an Incoming webhook bot.
        • 3 for an Outgoing webhook bot.
        • 4 for an Embedded bot.
      • user_id: The unique ID of the user.

      • bot_owner_id: If the user is a bot (i.e. is_bot is True), bot_owner is the user ID of the bot's owner (usually, whoever created the bot).

        Will be null for legacy bots that do not have an owner.

        Changes: New in Zulip 3.0 (feature level 1). In previous versions, there was a bot_owner field containing the email address of the bot's owner.

      • is_active: A boolean specifying whether the user account has been deactivated.

      • is_guest: A boolean specifying whether the user is a guest user.

      • timezone: The time zone of the user.

      • date_joined: The time the user account was created.

      • delivery_email: The user's real email address. This field is present only if email address visibility is limited and you are an administrator with access to real email addresses under the configured policy.

      • profile_data: A dictionary containing custom profile field data for the user. Each entry maps the integer ID of a custom profile field in the organization to a dictionary containing the user's data for that field. Generally the data includes just a single value key; for those custom profile fields supporting Markdown, a rendered_value key will also be present.

        • '{id}': Object with data about what value user filled in the custom profile field with id id.

          • value: User's personal value for this custom profile field.

          • rendered_value: The value rendered in HTML. Will only be present for custom profile field types that support Markdown rendering.

            This user-generated HTML content should be rendered using the same CSS and client-side security protections as are used for message content.

  • realm_non_active_users: Present if realm_user is present in fetch_event_types.

    A array of dictionaries where each entry describes a user whose account has been deactivated. Note that unlike the usual User dictionary this does not contain the is_active key as all the users present in this array have deactivated accounts.

    • A dictionary containing basic data on a given Zulip user.

      • email: The Zulip API email address of the user or bot.

        If you do not have permission to view the email address of the target user, this will be a fake email address that is usable for the Zulip API but nothing else.

      • is_bot: A boolean specifying whether the user is a bot or full account.

      • avatar_url: URL for the the user's avatar. Will be null if the client_gravatar query parameter was set to True and the user's avatar is hosted by the Gravatar provider (i.e. the user has never uploaded an avatar).

      • avatar_version: Version for the the user's avatar. Used for cache-busting requests for the user's avatar. Clients generally shouldn't need to use this; most avatar URLs sent by Zulip will already end with ?v={avatar_version}.

      • full_name: Full name of the user or bot, used for all display purposes.

      • is_admin: A boolean specifying whether the user is an organization administrator.

      • is_owner: A boolean specifying whether the user is an organization owner. If true, is_admin will also be true.

        Changes: New in Zulip 3.0 (feature level 8).

      • bot_type: An integer describing the type of bot:

        • null if the user isn't a bot.
        • 1 for a Generic bot.
        • 2 for an Incoming webhook bot.
        • 3 for an Outgoing webhook bot.
        • 4 for an Embedded bot.
      • user_id: The unique ID of the user.

      • bot_owner_id: If the user is a bot (i.e. is_bot is True), bot_owner is the user ID of the bot's owner (usually, whoever created the bot).

        Will be null for legacy bots that do not have an owner.

        Changes: New in Zulip 3.0 (feature level 1). In previous versions, there was a bot_owner field containing the email address of the bot's owner.

      • is_active: A boolean specifying whether the user account has been deactivated.

      • is_guest: A boolean specifying whether the user is a guest user.

      • timezone: The time zone of the user.

      • date_joined: The time the user account was created.

      • delivery_email: The user's real email address. This field is present only if email address visibility is limited and you are an administrator with access to real email addresses under the configured policy.

      • profile_data: A dictionary containing custom profile field data for the user. Each entry maps the integer ID of a custom profile field in the organization to a dictionary containing the user's data for that field. Generally the data includes just a single value key; for those custom profile fields supporting Markdown, a rendered_value key will also be present.

        • '{id}': Object with data about what value user filled in the custom profile field with id id.

          • value: User's personal value for this custom profile field.

          • rendered_value: The value rendered in HTML. Will only be present for custom profile field types that support Markdown rendering.

            This user-generated HTML content should be rendered using the same CSS and client-side security protections as are used for message content.

  • avatar_source: Present if realm_user is present in fetch_event_types.

    The avatar data source type for the current user.

    Value values are G (gravatar) and U (uploaded by user).

  • avatar_url_medium: Present if realm_user is present in fetch_event_types.

    The avatar URL for the current user at 500x500 resolution, appropriate for use in settings UI showing the user's avatar.

  • avatar_url: Present if realm_user is present in fetch_event_types.

    The url of the avatar URL for the current user at 100x100 resolution. See also avatar_url_medium.

  • can_create_streams: Present if realm_user is present in fetch_event_types.

    Whether the current user is allowed to create streams with the organization's stream creation policy.

  • can_subscribe_other_users: Present if realm_user is present in fetch_event_types.

    Whether the current user is allowed to subscribe other users to streams with the organization's streams policy.

  • is_admin: Present if realm_user is present in fetch_event_types.

    Whether the current user is an organization administrator.

  • is_owner: Present if realm_user is present in fetch_event_types.

    Whether the current user is an organization owner.

  • is_guest: Present if realm_user is present in fetch_event_types.

    Whether the current user is a guest user.

  • enter_sends: Present if realm_user is present in fetch_event_types.

    Whether the user setting for sending on pressing Enter in the compose box is enabled.

  • user_id: Present if realm_user is present in fetch_event_types.

    The unique ID for the current user.

  • email: Present if realm_user is present in fetch_event_types.

    The Zulip display email address for the current user. See also delivery_email; these may be the same or different depending on the organization's email_address_visibility policy.

  • delivery_email: Present if realm_user is present in fetch_event_types.

    The user's email address, appropriate for UI for changing the user's email address. See also email.

  • full_name: Present if realm_user is present in fetch_event_types.

    The full name of the current user.

  • cross_realm_bots: Present if realm_user is present in fetch_event_types.

    Array of dictionaries where each dictionary contains details of a single cross realm bot. Cross-realm bots are special system bot accounts like Notification Bot.

    Most clients will want to combine this with realm_users in many contexts.

    • email: The Zulip API email address of the user or bot.

      If you do not have permission to view the email address of the target user, this will be a fake email address that is usable for the Zulip API but nothing else.

    • is_bot: A boolean specifying whether the user is a bot or full account.

    • avatar_url: URL for the the user's avatar. Will be null if the client_gravatar query parameter was set to True and the user's avatar is hosted by the Gravatar provider (i.e. the user has never uploaded an avatar).

    • avatar_version: Version for the the user's avatar. Used for cache-busting requests for the user's avatar. Clients generally shouldn't need to use this; most avatar URLs sent by Zulip will already end with ?v={avatar_version}.

    • full_name: Full name of the user or bot, used for all display purposes.

    • is_admin: A boolean specifying whether the user is an organization administrator.

    • is_owner: A boolean specifying whether the user is an organization owner. If true, is_admin will also be true.

      Changes: New in Zulip 3.0 (feature level 8).

    • bot_type: An integer describing the type of bot:

      • null if the user isn't a bot.
      • 1 for a Generic bot.
      • 2 for an Incoming webhook bot.
      • 3 for an Outgoing webhook bot.
      • 4 for an Embedded bot.
    • user_id: The unique ID of the user.

    • bot_owner_id: If the user is a bot (i.e. is_bot is True), bot_owner is the user ID of the bot's owner (usually, whoever created the bot).

      Will be null for legacy bots that do not have an owner.

      Changes: New in Zulip 3.0 (feature level 1). In previous versions, there was a bot_owner field containing the email address of the bot's owner.

    • is_active: A boolean specifying whether the user account has been deactivated.

    • is_guest: A boolean specifying whether the user is a guest user.

    • timezone: The time zone of the user.

    • date_joined: The time the user account was created.

    • delivery_email: The user's real email address. This field is present only if email address visibility is limited and you are an administrator with access to real email addresses under the configured policy.

    • profile_data: A dictionary containing custom profile field data for the user. Each entry maps the integer ID of a custom profile field in the organization to a dictionary containing the user's data for that field. Generally the data includes just a single value key; for those custom profile fields supporting Markdown, a rendered_value key will also be present.

      • '{id}': Object with data about what value user filled in the custom profile field with id id.

        • value: User's personal value for this custom profile field.

        • rendered_value: The value rendered in HTML. Will only be present for custom profile field types that support Markdown rendering.

          This user-generated HTML content should be rendered using the same CSS and client-side security protections as are used for message content.

    • is_cross_realm_bot: Whether the user is a cross realm bot.

Example response

A typical successful JSON response may look like:

{
    "last_event_id": -1,
    "msg": "",
    "queue_id": "1517975029:0",
    "realm_emoji": {
        "1": {
            "author_id": 5,
            "deactivated": false,
            "id": "1",
            "name": "green_tick",
            "source_url": "/user_avatars/1/emoji/images/1.png"
        }
    },
    "result": "success",
    "zulip_feature_level": 2,
    "zulip_version": "2.1.0"
}