This commit modifies the user objects returned by 'GET /users',
'GET /users/me', 'GET /users/{user_id}' and 'GET /users/{email}'
endpoints to include role field.
We also include role field in the page_params['realm_users'] dict
and in the person object sent in (type="realm_user", op="add")
event.
21 KiB
Changelog
This page documents changes to the Zulip Server API over time.
The recommended way for a client like the Zulip mobile or desktop apps
that needs to support interaction with a wide range of different Zulip
server versions is to check the zulip_feature_level parameter in the
/register and /server_settings responses to determine which of the
below features are supported.
Changes in Zulip 4.0
Feature level 59
GET /users,GET /users/{user_id},GET /users/{email}andGET /users/me: Addedrolefield to returned user objects.GET /events: Addedrolefield to user objects sent inrealm_userevents.POST /register: Addedrolefield in the user objects returned in therealm_usersfield.GET /events: Added newzulip_versionandzulip_feature_levelfields to therestartevent.
Feature level 58
POST /register: Added the newstream_typing_notificationsproperty to supportedclient_capabilities.GET /events: Extended format fortypingevents to support typing notifications in stream messages. These new events are only sent to clients withclient_capabilitiesshowing support forstream_typing_notifications.POST /set-typing-status: Added support for sending typing notifications for stream messages.
Feature level 57
PATCH /realm/filters/{filter_id}: New endpoint added to update a realm linkifier.
Feature level 56
POST /register: Added a new settingmove_messages_between_streams_policyfor controlling who can move messages between streams.
Feature level 55
POST /register: Addedrealm_giphy_ratingandgiphy_rating_optionsfields.PATCH /realm: Addedgiphy_ratingparameter.
Feature level 54
GET /realm/filtershas been removed and replace withGET /realm/linkifierswhich returns the data in a cleaner dictionary format.GET /events: Introduced new event typerealm_linkifiers. The previousrealm_filtersevent type is still supported for backwards compatibility, but will be removed in a future release.POST /register: The response now supports arealm_linkifiersevent type, containing the same data as the legacyrealm_filterskey, with a more extensible object format. The previousrealm_filtersevent type is still supported for backwards compatibility, but will be removed in a future release. The legacyrealm_filterskey is deprecated but remains available for backwards compatibility.
Feature level 53
POST /register: Addedmax_topic_lengthandmax_message_length, and renamedmax_stream_name_lengthandmax_stream_description_lengthto allow clients to transparently support these values changing in a future server version.
Feature level 52
PATCH /realm: Removed unnecessary JSON-encoding of string parametersname,description,default_language, anddefault_code_block_language.
Feature level 51
POST /register: Added a new boolean fieldcan_invite_others_to_realm.
Feature level 50
POST /register: Replacedinvite_by_admins_onlyfield with an integer fieldinvite_to_realm_policy.
Feature level 49
- Added new
POST /realm/playgroundandDELETE /realm/playground/{playground_id}endpoints for realm playgrounds. GET /events: A newrealm_playgroundsevents is sent when changes are made to a set of configured playgrounds for an organization.POST /register: Added a newrealm_playgroundsfield, which is required to fetch the set of configured playgrounds for an organization.
Feature level 48
POST /users/me/muted_users/{muted_user_id},DELETE /users/me/muted_users/{muted_user_id}: New endpoints added to mute/unmute users.GET /events: Added new event typemuted_userswhich will be sent to a user when the set of users muted by them has changed.
Feature level 47
POST /register: Added a newgiphy_api_keyfield, which is required to fetch GIFs using the GIPHY API.
Feature level 46
GET /messagesandGET /events: Thetopic_linksfield now contains a list of dictionaries, rather than a list of strings.
Feature level 45
GET /events: Removed uselessopfield fromcustom_profile_fieldsevents. These events contain the full set of configuredcustom_profile_fieldsfor the organization regardless of what triggered the change.
Feature level 44
POST /register: extended theunread_msgsobject to includeold_unreads_missing, which indicates whether the server truncated theunread_msgsdue to excessive total unread messages.
Feature level 43
- [
GET /users/{user_id_or_email}/presence]: Added support for passing theuser_idto identify the target user.
Feature level 42
PATCH /settings/display: Added a newdefault_viewsetting allowing the user to set the default view.
Feature level 41
GET /events: Removednamefield from update subscription events.
Feature level 40
GET /events: Removedemailfield from update subscription events.
Feature level 39
- Added new GET /users/{email} endpoint.
Feature level 38
POST /register: Increasedrealm_community_topic_editing_limit_secondstime limit value to 259200s (3 days).
Feature level 37
- Consistently provide
subscribersin stream data when clients register for subscriptions withinclude_subscribers, even if the user can't access subscribers.
Feature level 36
POST /users: Restricted access to organization administrators with thecan_create_userspermission.
Feature level 35
- The peer_add and peer_remove subscription events now have plural
versions of
user_idsandstream_ids.
Feature level 34
POST /register: Added a newwildcard_mention_policysetting for controlling who can use wildcard mentions in large streams.
Feature level 33
- Markdown code blocks now have a
data-code-languageattribute attached to the outerdivelement, recording the programming language that was selecting for syntax highlighting. This field supports the upcoming "view in playground" feature for code blocks.
Feature level 32
GET /events: Addedopfield toupdate_message_flagsevents, deprecating theoperationfield (which has the same value). This removes an unintentional anomaly in the format of this event type.
Feature level 31
-
GET users/me/subscriptions: Added arolefield to Subscription objects representing whether the user is a stream administrator. -
GET /events: Addedrolefield to Subscription objects sent insubscriptionsevents.
Note that as of this feature level, stream administrators are a partially completed feature. In particular, it is impossible for a user to be a stream administrator at this feature level.
Feature level 30
GET users/me/subscriptions,GET /streams: Addeddate_createdto Stream objects.POST /users,POST /bots: The ID of the newly created user is now returned in the response.
Feature levels 28 and 29 are reserved for future use in 3.x bug fix releases.
Changes in Zulip 3.1
Feature level 27
- The
short_namefield is removed fromdisplay_recipientsinPOST /users.
Feature level 26
- The
sender_short_namefield is no longer included inGET /messages. - The
short_namefield is removed fromdisplay_recipientsinGET /messages.
Changes in Zulip 3.0
Feature level 25
No changes; feature level used for Zulip 3.0 release.
Feature level 24
- The
!avatar()and!gravatar()Markdown syntax, which was never documented, had inconsistent syntax, and was rarely used, was removed.
Feature level 23
GET/PUT/POST /users/me/pointer: Removed. Zulip 3.0 removes thepointerconcept from Zulip; this legacy data structure was replaced by tracking unread messages and loading views centered on the first unread message.
Feature level 22
GET /attachments: The date when a message using the attachment was sent is now correctly encoded asdate_sent, replacing the confusingly namednamefield. Thedate_sentandcreate_timefields of attachment objects are now encoded as integers; (previously the implementation could send floats incorrectly suggesting that microsecond precision is relevant).GET /invites: Now encodes the user ID of the person who created the invitation asinvited_by_user_id, replacing the previousreffield (which had that user's Zulip display email address).
Feature level 21
PATCH /settings/display: Replaced thenight_modeboolean withcolor_schemeas part of supporting automatic night theme detection.
Feature level 20
- Added support for inviting users as organization owners to the invitation endpoints.
Feature level 19
GET /events:subscriptionsevent withop="peer_add"andop="peer_remove"now identify the modified stream by astream_idfield, replacing the oldnamefield.
Feature level 18
POST /register: Addeduser_avatar_url_field_optionalto supportedclient_capabilities.
Feature level 17
GET users/me/subscriptions,GET /streams: Addedmessage_retention_daysto Stream objects.POST users/me/subscriptions,PATCH streams/{stream_id}: Addedmessage_retention_daysparameter.
Feature level 16
- [
GET /users/me]: Removedpointerfrom the response, as the "pointer" concept is being removed in Zulip. - Changed the rendered HTML markup for mentioning a time to use the
<time>HTML tag. It is OK for clients to ignore the previous time mention markup, as the feature was not advertised before this change.
Feature level 15
- Added spoilers to supported Markdown features.
Feature level 14
GET users/me/subscriptions: Removed theis_old_streamfield from Stream objects. This field was always equivalent tostream_weekly_traffic != nullon the same object.
Feature level 13
POST /register: Addedbulk_message_deletionto supportedclient_capabilities.GET /events:message_deletedevents have new behavior. Thesenderandsender_idfields were removed, and themessage_idfield was replaced by amessage_idslist for clients with thebulk_message_deletionclient capability. All clients should upgrade; we expectbulk_message_deletionto be required in the future.
Feature level 12
GET users/{user_id}/subscriptions/{stream_id}: New endpoint added for checking if another user is subscribed to a stream.
Feature level 11
POST /register: Addedrealm_community_topic_editing_limit_secondsto the response, the time limit before community topic editing is forbidden. Anullvalue means no limit. This was previously hard-coded in the server as 86400 seconds (1 day).POST /register: The response now contains ais_owner, similar to the existingis_adminandis_guestfields.POST /set-typing-status: Removed legacy support for sending email addresses, rather than user IDs, to encode private message recipients.
Feature level 10
GET users/me: Addedavatar_version,is_guest,is_active,timezone, anddate_joinedfields to the User objects.GET users/me: Removedclient_idandshort_namefrom the response to this endpoint. These fields had no purpose and were inconsistent with other API responses describing users.
Feature level 9
POST users/me/subscriptions,DELETE /users/me/subscriptions: Other users to subscribe/unsubscribe, declared in theprincipalsparameter, can now be referenced by user_id, rather than Zulip display email address.- PATCH /messages/{message_id}: Added
send_notification_to_old_threadandsend_notification_to_new_threadoptional parameters.
Feature level 8
GET /users,GET /users/{user_id}andGET /users/me: User objects now contain theis_ownerfield as well.- Added time mentions to supported Markdown features.
Feature level 7
GET /events:realm_userandrealm_botevents no longer contain anemailfield to identify the user; use theuser_idfield instead. Previously, some (but not all) events of these types contained anemailkey in addition to touser_id) for identifying the modified user.PATCH /users/{user_id}: Theis_adminandis_guestparameters were removed in favor of the more generalroleparameter for specifying a change in user role.GET /events:realm_userevents sent when a user's role changes now includeroleproperty, instead of the previousis_guestoris_adminbooleans.GET /realm/emoji: The user who uploaded a given custom emoji is now indicated by anauthor_idfield, replacing a previousauthorobject with unnecessary additional data.
Feature level 6
GET /events:realm_userevents to update a user's avatar now include theavatar_versionfield, which is important for correctly refetching medium-size avatar images when the user's avatar changes.GET /usersandGET /users/{user_id}: User objects now contain theavatar_versionfield as well.
Feature level 5
GET /events:realm_botevents, sent when changes are made to bot users, now contain an integer-formatowner_idfield, replacing theownerfield (which was an email address).
Feature level 4
jitsi_server_url,development_environment,server_generation,password_min_length,password_min_guesses,max_file_upload_size_mib,max_avatar_file_size_mib,server_inline_image_preview,server_inline_url_embed_preview,server_avatar_changes_disabledandserver_name_changes_disabledfields are now available viaPOST /registerto make them accessible to all the clients; they were only internally available to Zulip's web app prior to this.
Feature level 3:
zulip_versionandzulip_feature_levelare always returned inPOST /register; previously they were only returned ifevent_typesincludedzulip_version.- Added new
presence_enableduser notification setting; previously presence was always enabled.
Feature level 2:
POST /messages/{message_id}/reactions: Thereaction_typeparameter is optional; the server will guess thereaction_typeif it is not specified (checking custom emoji, then Unicode emoji for any with the provided name).reactionsobjects returned by the API (both inGET /messagesand inGET /events) now include the user who reacted in a top-leveluser_idfield. The legacyuserdictionary (which had inconsistent format between those two endpoints) is deprecated.
Feature level 1:
GET /server_settings: Addedzulip_feature_level, which can be used by clients to detect which of the features described in this changelog are supported.POST /register: Addedzulip_feature_levelto the response ifzulip_versionis among the requestedevent_types.GET /users: User objects for bots now contain abot_owner_id, replacing the previousbot_ownerfield (which had the email address of the bot owner).GET /users/{user_id}: Endpoint added.GET /messages: Add support for string-format values for theanchorparameter, deprecating and replacing theuse_first_unread_anchorparameter.GET /messagesandGET /events: Message objects now usetopic_linksrather thansubject_linksto indicate links either present in the topic or generated by linkifiers applied to the topic.POST /users/me/subscriptions: Replacedis_announcement_onlyboolean withstream_post_policyenum for specifying who can post to a stream.PATCH /streams/{stream_id}: Replacedis_announcement_onlyboolean withstream_post_policyenum for specifying who can post to a stream.GET /streams: Replacedis_announcement_onlyboolean withstream_post_policyenum for specifying who can post to a stream.GET /api/v1/user_uploads: Added new endpoint for requesting a temporary URL for an uploaded file that does not require authentication to access (e.g. for passing from a Zulip desktop, mobile, or terminal app to the user's default browser).- Added
EMAIL_ADDRESS_VISIBILITY_NOBODYpossible value foremail_address_visibility. - Added
private_message_policyrealm setting. muted_topicobjects now are a 3-item tuple: (stream_id,topic,date_muted). Previously, they were a 2-item tuple.GitLabauthentication is now available.- Added
Noneas a video call provider option.
Changes in Zulip 2.1
GET /users: Addedinclude_custom_profile_fieldsto request custom profile field data.GET /users/me: Addedavatar_urlfield, containing the user's avatar URL, to the response.GET /users/me/subscriptions: Addedinclude_subscribersparameter controlling whether data on the other subscribers is included. Previous behavior was to always send subscriber data.GET /users/me/subscriptions: Stream-level notification settings likepush_notificationswere changed to be nullable boolean fields (true/false/null), withnullmeaning that the stream inherits the organization-level default. Previously, the only values were true/false. A client communicates support for this feature usingclient_capabilities.GET /users/me/subscriptions: Addedwildcard_mentions_notifynotification setting, with the same global-plus-stream-level-override model as other notification settings.GET /server_settings: Addedexternal_authentication_methodsstructure, used to display login buttons nicely in the mobile apps.- Added
first_message_idfield to Stream objects. This is helpful for determining whether the stream has any messages older than a window cached in a client. - Added
is_web_publicfield to Stream objects. This field is intended to support web-public streams. - Added
/export/realmendpoints for triggering a data export. PATCH /realm: Addedinvite_to_stream_policy,create_stream_policy,digest_emails_enabled,digest_weekday,user_group_edit_policy, andavatar_changes_disabledorganization settings.- Added
fluid_layout_width,desktop_icon_count_display, anddemote_inactive_streamsdisplay settings. enable_stream_soundswas renamed toenable_stream_audible_notifications.- Deprecated
in_home_view, replacing it with the more readableis_muted(with the opposite meaning). - Custom profile fields: Added
EXTERNAL_ACCOUNTfield type.
Changes in Zulip 2.0
POST /messages: Added support for using user IDs and stream IDs for specifying the recipients of a message.POST /messages,POST /messages/{message_id}: Added support for encoding topics using thetopicparameter name. The previoussubjectparameter name was deprecated but is still supported for backwards-compatibility.POST /set-typing-status: Added support for specifying the recipients with user IDs, deprecating the original API of specifying them using email addresses.
Changes not yet stabilized
POST /register: Addedslim_presenceparameter. Changes the format of presence events, but is still being changed and should not be used by clients.