2021-10-01 22:34:17 +02:00
|
|
|
# API changelog
|
2020-04-29 05:55:42 +02:00
|
|
|
|
2021-11-02 22:14:49 +01:00
|
|
|
This page documents changes to the Zulip Server API over time. See
|
2021-11-02 22:45:14 +01:00
|
|
|
also the [Zulip release lifecycle][release-lifecycle] for background
|
|
|
|
on why this API changelog is important, and the [Zulip server
|
|
|
|
changelog][server-changelog].
|
2020-04-29 05:55:42 +02:00
|
|
|
|
2021-11-02 22:14:49 +01:00
|
|
|
The API feature levels system used in this changelog is designed to
|
|
|
|
make it possible to write API clients, such as the Zulip mobile and
|
|
|
|
terminal apps, that work with a wide range of Zulip server
|
|
|
|
versions. Every change to the Zulip API is recorded both here and in
|
|
|
|
**Changes** entries in the API documentation for the modified
|
|
|
|
endpoint(s).
|
|
|
|
|
|
|
|
When using an API endpoint whose behavior has changed, Zulip API
|
|
|
|
clients should check the `zulip_feature_level` field, present in the
|
|
|
|
[`GET /server_settings`](/api/get-server-settings) and [`POST
|
|
|
|
/register`](/api/register-queue) responses, to determine the API
|
|
|
|
format used by the Zulip server that they are interacting with.
|
2020-04-29 05:55:42 +02:00
|
|
|
|
2022-03-29 17:36:41 +02:00
|
|
|
## Changes in Zulip 6.0
|
|
|
|
|
2022-04-11 19:26:16 +02:00
|
|
|
**Feature level 128**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`GET
|
|
|
|
/events`](/api/get-events), `PATCH /realm`: Added
|
|
|
|
`org_type` realm setting.
|
|
|
|
|
2022-02-28 11:50:33 +01:00
|
|
|
**Feature level 127**
|
|
|
|
|
|
|
|
* [`GET /user_groups`](/api/get-user-groups),[`POST
|
|
|
|
/register`](/api/register-queue): Added `subgroups` field,
|
|
|
|
which is a list of IDs of all the subgroups of the user group, to
|
|
|
|
user group objects.
|
2022-03-01 07:52:47 +01:00
|
|
|
* [`GET /events`](/api/get-events): Added new `user_group` events
|
|
|
|
operations for live updates to subgroups (`add_subgroups` and
|
|
|
|
`remove_subgroups`).
|
2022-03-02 11:58:37 +01:00
|
|
|
* [`PATCH /user_groups/{user_group_id}/subgroups`](/api/update-user-group-subgroups):
|
|
|
|
Added new endpoint for updating subgroups of a user group.
|
2022-03-18 14:38:11 +01:00
|
|
|
* [`GET /user_groups/{user_group_id}/members/{user_id}`](/api/get-is-user-group-member):
|
|
|
|
Added new endpoint for checking whether a given user is member of a
|
|
|
|
given user group.
|
2022-03-24 11:39:57 +01:00
|
|
|
* [`GET /user_groups/{user_group_id}/members`](/api/get-user-group-members):
|
|
|
|
Added new endpoint to get members of a user group.
|
2022-04-04 13:59:25 +02:00
|
|
|
* [`GET /user_groups/{user_group_id}/members`](/api/get-user-group-subgroups):
|
|
|
|
Added new endpoint to get subgroups of a user group.
|
2022-02-28 11:50:33 +01:00
|
|
|
|
2022-02-10 11:52:34 +01:00
|
|
|
**Feature level 126**
|
|
|
|
|
|
|
|
* `POST /invites`, `POST /invites/multiuse`: Replaced `invite_expires_in_days`
|
|
|
|
parameter with `invite_expires_in_minutes`.
|
|
|
|
|
2022-04-08 16:04:22 +02:00
|
|
|
**Feature level 125**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`PATCH
|
|
|
|
/settings`](/api/update-settings), [`PATCH
|
|
|
|
/realm/user_settings_defaults`](/api/update-realm-user-settings-defaults):
|
|
|
|
Added new `display_emoji_reaction_users` display setting,
|
|
|
|
controlling whether to display the names of users with emoji reactions.
|
|
|
|
|
2022-03-29 17:36:41 +02:00
|
|
|
Feature levels 123-124 are reserved for future use in 5.x maintenance
|
|
|
|
releases.
|
|
|
|
|
2021-05-13 21:34:50 +02:00
|
|
|
## Changes in Zulip 5.0
|
2021-09-13 20:01:35 +02:00
|
|
|
|
2022-03-29 17:13:34 +02:00
|
|
|
**Feature level 122**
|
|
|
|
|
|
|
|
No changes; feature level used for Zulip 5.0 release.
|
|
|
|
|
2021-06-09 13:31:39 +02:00
|
|
|
**Feature level 121**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added `message_details` field
|
|
|
|
appearing in message flag update events when marking previously read
|
|
|
|
messages as unread.
|
|
|
|
|
2022-03-02 05:33:20 +01:00
|
|
|
**Feature level 120**
|
|
|
|
|
|
|
|
* [`GET /messages/{message_id}`](/api/get-message): This endpoint
|
|
|
|
now sends the full message details. Previously, it only returned
|
|
|
|
the message's raw Markdown content.
|
|
|
|
|
2022-03-07 16:47:49 +01:00
|
|
|
**Feature level 119**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): The `unread_msgs` section
|
|
|
|
of the response now prefers `other_user_id` over the poorly named
|
|
|
|
`sender_id` field in the `pms` dictionaries. This change is
|
|
|
|
motivated by the possibility that a message you yourself sent to
|
|
|
|
another user could be marked as unread.
|
|
|
|
|
2022-02-14 17:04:39 +01:00
|
|
|
**Feature level 118**
|
|
|
|
|
|
|
|
* [`GET /messages`](/api/get-messages), [`GET
|
|
|
|
/events`](/api/get-events): Improved the format of the
|
|
|
|
`edit_history` object within message objects. Entries for stream
|
|
|
|
edits now include a both a `prev_stream` and `stream` field to
|
|
|
|
indicate the previous and current stream IDs. Entries for topic
|
|
|
|
edits now include both a `prev_topic` and `topic` field to indicate
|
|
|
|
the previous and current topic, replacing the `prev_subject`
|
|
|
|
field. These changes substantially simplify client complexity for
|
|
|
|
processing historical message edits.
|
|
|
|
|
|
|
|
* [`GET messages/{message_id}/history`](/api/get-message-history):
|
|
|
|
Added `stream` field to message history `snapshot` indicating
|
|
|
|
the updated stream ID of messages moved to a new stream.
|
2022-01-29 22:59:06 +01:00
|
|
|
|
2021-11-30 13:34:37 +01:00
|
|
|
**Feature level 117**
|
|
|
|
|
|
|
|
* `POST /invites`, `POST /invites/multiuse`: Added support for passing
|
|
|
|
`null` as the `invite_expires_in_days` parameter to request an
|
|
|
|
invitation that never expires.
|
|
|
|
|
2022-02-20 21:40:59 +01:00
|
|
|
**Feature level 116**
|
|
|
|
|
|
|
|
* [`GET /server_settings`](/api/get-server-settings): Added
|
|
|
|
`realm_web_public_access_enabled` as a realm-specific server setting,
|
|
|
|
which can be used by clients to detect whether the realm allows and
|
|
|
|
has at least one [web-public stream](/help/web-public-streams).
|
|
|
|
|
2022-01-29 22:59:06 +01:00
|
|
|
**Feature level 115**
|
|
|
|
|
|
|
|
* Mobile push notifications about stream messages now include the
|
|
|
|
`stream_id` field.
|
|
|
|
|
2022-01-14 15:23:49 +01:00
|
|
|
**Feature level 114**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added `rendering_only` field to
|
|
|
|
`update_message` event type to indicate if the message change only
|
|
|
|
updated the rendering of the message or if it was the result of a
|
|
|
|
user interaction.
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Updated `update_message` event type
|
|
|
|
to always include `edit_timestamp` and `user_id` fields. If the event
|
|
|
|
only updates the rendering of the message, then the `user_id` field
|
|
|
|
will be present, but with a value of null as the update was not the
|
|
|
|
result of a user interaction.
|
|
|
|
|
2021-12-29 16:16:15 +01:00
|
|
|
**Feature level 113**
|
|
|
|
|
|
|
|
* `GET /realm/emoji`, `POST /realm/emoji/{emoji_name}`, [`GET
|
|
|
|
/events`](/api/get-events), [`POST /register`](/api/register-queue):
|
|
|
|
The `still_url` field for custom emoji objects is now always
|
|
|
|
present, with a value of null for non-animated emoji. Previously, it
|
|
|
|
only was present for animated emoji.
|
|
|
|
|
2021-12-14 18:14:10 +01:00
|
|
|
**Feature level 112**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Updated `update_message` event type
|
|
|
|
to include `stream_id` field for all edits to stream messages.
|
|
|
|
|
2021-11-24 18:00:12 +01:00
|
|
|
**Feature level 111**
|
|
|
|
|
|
|
|
* [`POST /subscriptions/properties`](/api/update-subscription-settings):
|
|
|
|
Removed `subscription_data` from response object, replacing it with
|
|
|
|
`ignored_parameters_unsupported`.
|
|
|
|
|
2021-11-23 23:05:31 +01:00
|
|
|
**Feature level 110**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`server_web_public_streams_enabled` to the response.
|
|
|
|
|
2021-10-03 14:16:07 +02:00
|
|
|
**Feature level 109**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`GET
|
|
|
|
/events`](/api/get-events), `PATCH /realm`: Added new
|
|
|
|
`enable_spectator_access` realm setting.
|
|
|
|
|
2021-11-16 16:04:04 +01:00
|
|
|
**Feature level 108**
|
|
|
|
|
|
|
|
* In the mobile application authentication flow, the authenticated
|
|
|
|
user's `user_id` is now included in the parameters encoded in the
|
|
|
|
final `zulip://` redirect URL.
|
|
|
|
|
2021-10-25 19:17:19 +02:00
|
|
|
**Feature level 107**
|
2021-12-14 18:21:18 +01:00
|
|
|
|
2021-10-25 19:17:19 +02:00
|
|
|
* [`POST /register`](/api/register-queue), [`PATCH /settings`](/api/update-settings),
|
|
|
|
[`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults):
|
|
|
|
Added user setting `escape_navigates_to_default_view` to allow users to
|
|
|
|
[disable the keyboard shortcut](/help/configure-default-view) for the `Esc` key that
|
|
|
|
navigates the app to the default view.
|
|
|
|
|
2021-10-16 19:52:57 +02:00
|
|
|
**Feature level 106**
|
|
|
|
|
|
|
|
* [`PATCH /user/{user_id}`](/api/update-user): Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `full_name`.
|
|
|
|
|
2021-10-03 08:36:36 +02:00
|
|
|
**Feature level 105**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`PATCH
|
|
|
|
/settings`](/api/update-settings), [`PATCH
|
|
|
|
/realm/user_settings_defaults`](/api/update-realm-user-settings-defaults):
|
2021-10-03 08:53:35 +02:00
|
|
|
Added three new privacy settings: `send_private_typing_notifications`,
|
|
|
|
`send_stream_typing_notifications`, and `send_read_receipts`.
|
2021-10-03 08:36:36 +02:00
|
|
|
|
2021-09-13 20:01:35 +02:00
|
|
|
**Feature level 104**
|
|
|
|
|
|
|
|
* [`PATCH /realm`]: Added `string_id` parameter for changing an
|
|
|
|
organization's subdomain. Currently, this is only allowed for
|
2022-02-08 00:13:33 +01:00
|
|
|
changing a demo organization to a normal one.
|
2021-05-13 21:34:50 +02:00
|
|
|
|
2021-10-04 08:33:31 +02:00
|
|
|
**Feature level 103**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `create_web_public_stream_policy`
|
2022-01-29 00:54:13 +01:00
|
|
|
policy for which users can create web-public streams.
|
2021-10-04 08:33:31 +02:00
|
|
|
* [`PATCH /realm`]: Added support for updating `create_web_public_stream_policy`.
|
2021-10-04 19:28:33 +02:00
|
|
|
* [`POST /register`](/api/register-queue): Added `can_create_web_public_streams` boolean
|
|
|
|
field to the response.
|
2021-10-04 08:33:31 +02:00
|
|
|
|
2021-03-27 05:48:37 +01:00
|
|
|
**Feature level 102**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), `PATCH /realm`: The
|
|
|
|
`create_stream_policy` setting was split into two settings for
|
|
|
|
different types of streams: `create_private_stream_policy` and
|
|
|
|
`create_public_stream_policy`.
|
|
|
|
* [`POST /register`](/api/register-queue): The `create_stream_policy`
|
|
|
|
property was deprecated in favor of the
|
|
|
|
`create_private_stream_policy` and `create_public_stream_policy`
|
|
|
|
properties, but it still available for backwards-compatibility.
|
|
|
|
|
2021-06-08 13:45:14 +02:00
|
|
|
**Feature level 101**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), `PATCH /realm`: Replaced
|
|
|
|
the `allow_message_deleting` boolean field with an integer field
|
|
|
|
`delete_own_message_policy` defining which roles can delete messages
|
|
|
|
they had sent.
|
|
|
|
|
2021-06-14 18:49:28 +02:00
|
|
|
**Feature level 100**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`GET
|
|
|
|
/events`](/api/get-events): `message_content_delete_limit_seconds`
|
2021-11-02 00:26:13 +01:00
|
|
|
now represents no limit using `null`, instead of the integer 0, and 0 is
|
|
|
|
no longer a possible value with any meaning.
|
2021-06-14 18:49:28 +02:00
|
|
|
* `PATCH /realm`: One now sets `message_content_delete_limit_seconds`
|
|
|
|
to no limit by passing the string `unlimited`, rather than the
|
|
|
|
integer 0.
|
|
|
|
|
2021-09-17 18:11:37 +02:00
|
|
|
**Feature level 99**
|
|
|
|
|
|
|
|
* [`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults),
|
|
|
|
`PATCH /realm`: The `default_twenty_four_hour_time` parameter to
|
|
|
|
`PATCH /realm` has been replaced by the `twenty_four_hour_time` parameter
|
|
|
|
to `PATCH /realm/user_settings_defaults`, to match the new model for
|
|
|
|
user preference defaults settings.
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Removed `realm_default_twenty_four_hour_time`
|
|
|
|
from the response object. This value is now available in the
|
|
|
|
`twenty_four_hour_time` field of the `realm_user_settings_default` object.
|
|
|
|
|
2021-05-20 10:50:17 +02:00
|
|
|
**Feature level 98**
|
|
|
|
|
|
|
|
* [`POST /subscribe`](/api/subscribe): Added `is_web_public` parameter
|
|
|
|
for requesting the creation of a web-public stream.
|
2020-11-10 14:15:04 +01:00
|
|
|
* [`PATCH /streams/{stream_id}`](/api/update-stream): Added
|
|
|
|
`is_web_public` parameter for converting a stream into a web-public stream.
|
2021-05-20 10:50:17 +02:00
|
|
|
|
2021-08-12 10:19:53 +02:00
|
|
|
**Feature level 97**
|
|
|
|
|
|
|
|
* `GET /realm/emoji`, `POST /realm/emoji/{emoji_name}`, [`GET
|
|
|
|
/events`](/api/get-events), [`POST /register`](/api/register-queue):
|
|
|
|
Custom emoji objects may now contain a `still_url` field, with the
|
|
|
|
URL of a PNG still image version of the emoji. This field will only be
|
|
|
|
present for animated emoji.
|
|
|
|
|
2021-07-21 13:23:23 +02:00
|
|
|
**Feature level 96**
|
|
|
|
|
|
|
|
* [`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults):
|
|
|
|
Added new endpoint to update default values of user settings in a realm.
|
2022-02-25 01:35:22 +01:00
|
|
|
* `POST /invites`, `POST /invites/multiuse`: Added
|
|
|
|
`invite_expires_in_days` parameter encoding the number days before
|
|
|
|
the invitation should expire.
|
2021-07-21 13:23:23 +02:00
|
|
|
|
2021-07-21 13:40:46 +02:00
|
|
|
**Feature level 95**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`realm_user_settings_defaults` object, containing default values of
|
|
|
|
personal user settings for new users in the realm.
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added
|
|
|
|
`realm_user_settings_defaults` event type, which is sent when the
|
|
|
|
organization's configured default settings for new users change.
|
|
|
|
|
2021-09-04 01:42:30 +02:00
|
|
|
**Feature level 94**
|
2021-10-01 22:32:11 +02:00
|
|
|
|
2021-09-04 01:42:30 +02:00
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`demo_organization_scheduled_deletion_date` field to realm data.
|
|
|
|
|
2021-08-06 19:31:00 +02:00
|
|
|
**Feature level 93**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), [`GET /user_groups`](/api/get-user-groups),
|
|
|
|
[`GET /events`](/api/get-events): Added `is_system_group` field to user group
|
|
|
|
objects.
|
|
|
|
|
2021-08-05 19:48:43 +02:00
|
|
|
**Feature level 92**
|
|
|
|
|
|
|
|
* [`GET /messages`](/api/get-messages), [`POST
|
|
|
|
/register`](/api/register-queue), [`GET /users`](/api/get-users),
|
|
|
|
[`GET /users/{user_id}`](/api/get-user), [`GET
|
|
|
|
/users/{email}`](/api/get-user-by-email): The `client_gravatar`
|
|
|
|
parameter now defaults to `true`.
|
|
|
|
|
2021-08-02 18:43:08 +02:00
|
|
|
**Feature level 91**
|
|
|
|
|
|
|
|
* `PATCH /realm`, [`PATCH /streams/{stream_id}`](/api/update-stream):
|
|
|
|
These endpoints now accept `"unlimited"` for `message_retention_days`,
|
|
|
|
replacing `"forever"` as the way to encode a retention policy where
|
|
|
|
messages are not automatically deleted.
|
|
|
|
|
2021-07-19 15:06:58 +02:00
|
|
|
**Feature level 90**
|
|
|
|
|
2021-08-04 19:48:42 +02:00
|
|
|
* [`POST /register`](/api/register-queue): The `unread_msgs` section
|
|
|
|
of the response no longer includes `sender_ids` in the `streams`
|
|
|
|
dictionaries. These were removed because no clients were interested
|
|
|
|
in using the data, which required substantial complexity to
|
|
|
|
construct correctly.
|
2021-07-19 15:06:58 +02:00
|
|
|
|
2021-07-26 08:35:27 +02:00
|
|
|
**Feature level 89**
|
|
|
|
|
2021-08-02 00:07:53 +02:00
|
|
|
* [`GET /events`](/api/get-events): Introduced the `user_settings`
|
|
|
|
event type, unifying and replacing the previous
|
|
|
|
`update_display_settings` and `update_global_notifications` event
|
|
|
|
types. The legacy event types are still supported for backwards
|
|
|
|
compatibility, but will be removed in a future release.
|
|
|
|
* [`POST /register`](/api/register-queue): Added `user_settings` field
|
|
|
|
in the response, which is a dictionary containing all the user's
|
|
|
|
personal settings. For backwards-compatibility, individual settings
|
|
|
|
will still appear in the top-level response for clients don't
|
|
|
|
support the `user_settings_object` client capability.
|
|
|
|
* [`POST /register`](/api/register-queue): Added the
|
2021-07-24 19:51:25 +02:00
|
|
|
`user_settings_object` property to supported `client_capabilities`.
|
2021-08-02 00:07:53 +02:00
|
|
|
When enabled, the server will not include a duplicate copy of
|
|
|
|
personal settings in the top-level response.
|
2021-07-24 19:51:25 +02:00
|
|
|
* [`GET /events`](/api/get-events): `update_display_settings` and
|
2021-08-02 00:07:53 +02:00
|
|
|
`update_global_notifications` events now only sent to clients that
|
|
|
|
did not include `user_settings_object` in their
|
|
|
|
`client_capabilities` when the event queue was created.
|
2021-07-26 08:35:27 +02:00
|
|
|
|
2021-07-30 12:25:53 +02:00
|
|
|
**Feature level 88**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `zulip_merge_base`
|
|
|
|
field to the response.
|
|
|
|
* [`GET /events`](/api/get-events): Added new `zulip_merge_base`
|
|
|
|
field to the `restart` event.
|
|
|
|
* [`GET /server_settings`](/api/get-server-settings): Added
|
|
|
|
`zulip_merge_base` to the responses which can be used to
|
|
|
|
make "About Zulip" widgets in clients.
|
|
|
|
|
2021-07-24 06:56:56 +02:00
|
|
|
**Feature level 87**
|
|
|
|
|
|
|
|
* [`PATCH /settings`](/api/update-settings): Added a new
|
|
|
|
`enable_drafts_synchronization` setting, which controls whether the
|
|
|
|
syncing drafts between different clients is enabled.
|
2021-02-14 12:56:14 +01:00
|
|
|
|
2021-07-24 06:56:56 +02:00
|
|
|
* [`GET /events`](/api/get-events), [`POST /register`](/api/register-queue):
|
|
|
|
Added new `enable_drafts_synchronization` setting under
|
|
|
|
`update_display_settings`.
|
|
|
|
|
2021-02-14 12:56:14 +01:00
|
|
|
* [`GET /drafts`](/api/get-drafts): Added new endpoint to fetch user's
|
|
|
|
synced drafts from the server.
|
|
|
|
|
|
|
|
* [`POST /drafts`](/api/create-drafts): Added new endpoint to create
|
|
|
|
drafts when syncing has been enabled.
|
|
|
|
|
|
|
|
* [`PATCH /drafts/{draft_id}`](/api/edit-draft): Added new endpoint
|
|
|
|
to edit a draft already owned by the user.
|
|
|
|
|
|
|
|
* [`DELETE /drafts/{draft_id}`](/api/delete-draft): Added new endpoint
|
|
|
|
to delete a draft already owned by the user.
|
|
|
|
|
2021-06-22 18:42:31 +02:00
|
|
|
**Feature level 86**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added `emoji_name`,
|
|
|
|
`emoji_code`, and `reaction_type` fields to `user_status` objects.
|
|
|
|
* [`POST /register`](/api/register-queue): Added `emoji_name`,
|
|
|
|
`emoji_code`, and `reaction_type` fields to `user_status` objects.
|
2022-04-11 21:35:54 +02:00
|
|
|
* [`POST /users/me/status`](/api/update-status): Added support for new
|
|
|
|
`emoji_name`, `emoji_code`, and `reaction_type` parameters.
|
2021-06-22 18:42:31 +02:00
|
|
|
|
2021-05-04 19:02:24 +02:00
|
|
|
**Feature level 85**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), `PATCH /realm`: Replaced `add_emoji_by_admins_only`
|
|
|
|
field with an integer field `add_custom_emoji_policy`.
|
|
|
|
|
2021-07-26 22:09:17 +02:00
|
|
|
**Feature level 84**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): The `enter_sends` setting
|
|
|
|
is now sent when `update_display_setting` is present in
|
|
|
|
`fetch_event_types` instead of `realm_user`.
|
|
|
|
|
2021-03-07 15:51:55 +01:00
|
|
|
**Feature level 83**
|
|
|
|
|
|
|
|
* * [`POST /register`](/api/register-queue): The `cross_realm_bots`
|
|
|
|
section of the response now uses the `is_system_bot` flag to
|
|
|
|
indicate whether the bot is a system bot.
|
|
|
|
|
2021-07-22 10:05:04 +02:00
|
|
|
**Feature level 82**
|
|
|
|
|
|
|
|
* [`PATCH /settings`](/api/update-settings) now accepts a new
|
|
|
|
`email_notifications_batching_period_seconds` field for setting the
|
|
|
|
time duration for which the server will collect email notifications
|
|
|
|
before sending them.
|
|
|
|
|
2021-07-22 18:14:28 +02:00
|
|
|
**Feature level 81**
|
|
|
|
|
|
|
|
* `POST /users/me/enter-sends` has been removed. The `enter_sends`
|
|
|
|
setting is now edited using the normal [`PATCH
|
|
|
|
/settings`](/api/update-settings) endpoint.
|
|
|
|
|
2021-07-07 22:08:11 +02:00
|
|
|
**Feature level 80**
|
|
|
|
|
|
|
|
* [`PATCH /settings`](/api/update-settings): The
|
|
|
|
`/settings/notifications` and `/settings/display` endpoints were
|
|
|
|
merged into the main `/settings` endpoint; now all personal settings
|
|
|
|
should be edited using that single endpoint. The old URLs are
|
|
|
|
preserved as deprecated aliases for backwards compatibility.
|
|
|
|
|
2021-07-17 00:29:45 +02:00
|
|
|
**Feature level 79**
|
|
|
|
|
|
|
|
* [`GET /users/me/subscriptions`](/api/get-subscriptions): The
|
|
|
|
`subscribers` field now returns user IDs if `include_subscribers` is
|
|
|
|
passed. Previously, this endpoint returned user display email
|
|
|
|
addresses in this field.
|
|
|
|
* `GET /streams/{stream_id}/members`: This endpoint now returns user
|
|
|
|
IDs. Previously, it returned display email addresses.
|
|
|
|
|
2021-07-15 16:57:07 +02:00
|
|
|
**Feature level 78**
|
|
|
|
|
2021-07-07 22:08:11 +02:00
|
|
|
* [`PATCH /settings`](/api/update-settings): Added
|
|
|
|
`ignored_parameters_unsupported` field, which is a list of
|
|
|
|
parameters that were ignored by the endpoint, to the response
|
|
|
|
object.
|
2021-07-15 16:57:07 +02:00
|
|
|
|
2021-07-07 22:08:11 +02:00
|
|
|
* [`PATCH /settings`](/api/update-settings): Removed `full_name` and
|
|
|
|
`account_email` fields from the response object.
|
2021-07-15 18:31:34 +02:00
|
|
|
|
2021-06-12 16:35:17 +02:00
|
|
|
**Feature level 77**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Removed `recipient_id` and
|
|
|
|
`sender_id` field in responses of `delete_message` event when
|
|
|
|
`message_type` is `private`.
|
|
|
|
|
2021-07-05 20:28:24 +02:00
|
|
|
**Feature level 76**
|
|
|
|
|
2021-07-09 16:09:32 +02:00
|
|
|
* [`POST /fetch_api_key`](/api/fetch-api-key), [`POST
|
|
|
|
/dev_fetch_api_key`](/api/dev-fetch-api-key): The HTTP status for
|
2021-07-05 20:28:24 +02:00
|
|
|
authentication errors is now 401. This was previously 403.
|
|
|
|
* All API endpoints now use the HTTP 401 error status for API requests
|
|
|
|
involving a deactivated user or realm. This was previously 403.
|
|
|
|
* Mobile push notifications now include the `mentioned_user_group_id`
|
|
|
|
and `mentioned_user_group_name` fields when a user group containing
|
|
|
|
the user is mentioned. Previously, these were indistinguishable
|
|
|
|
from personal mentions (as both types have `trigger="mention"`).
|
|
|
|
|
2021-05-26 12:21:37 +02:00
|
|
|
**Feature level 75**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue), `PATCH /realm`: Replaced `allow_community_topic_editing`
|
|
|
|
field with an integer field `edit_topic_policy`.
|
|
|
|
|
2021-06-04 15:12:37 +02:00
|
|
|
**Feature level 74**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `server_needs_upgrade`
|
|
|
|
and `event_queue_longpoll_timeout_seconds` field when fetching
|
|
|
|
realm data.
|
|
|
|
|
2021-05-28 12:51:50 +02:00
|
|
|
**Feature level 73**
|
|
|
|
|
|
|
|
* [`GET /users`](/api/get-users), [`GET /users/{user_id}`](/api/get-user),
|
|
|
|
[`GET /users/{email}`](/api/get-user-by-email) and
|
2021-08-09 02:10:54 +02:00
|
|
|
[`GET /users/me`](/api/get-own-user): Added is `user_billing_admin` field to
|
2021-05-28 12:51:50 +02:00
|
|
|
returned user objects.
|
|
|
|
* [`GET /events`](/api/get-events): Added `is_billing_admin` field to
|
|
|
|
user objects sent in `realm_user` events.
|
|
|
|
* [`POST /register`](/api/register-queue): Added `is_billing_admin` field
|
|
|
|
in the user objects returned in the `realm_users` field.
|
|
|
|
|
2021-05-22 09:39:09 +02:00
|
|
|
**Feature level 72**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Renamed `max_icon_file_size` to
|
|
|
|
`max_icon_file_size_mib`, `realm_upload_quota` to `realm_upload_quota_mib`
|
|
|
|
and `max_logo_file_size` to `max_logo_file_size_mib`.
|
|
|
|
|
2021-05-22 16:26:00 +02:00
|
|
|
**Feature level 71**
|
2021-05-20 20:01:51 +02:00
|
|
|
|
2020-11-10 16:02:55 +01:00
|
|
|
* [`GET /events`](/api/get-events): Added `is_web_public` field to
|
|
|
|
`stream` events changing `invite_only`.
|
|
|
|
|
|
|
|
**Feature level 70**
|
|
|
|
|
2021-05-20 20:01:51 +02:00
|
|
|
* [`POST /register`](/api/register-queue): Added new top-level
|
|
|
|
`server_timestamp` field when fetching presence data, to match the
|
|
|
|
existing presence API.
|
|
|
|
|
2021-05-13 21:34:50 +02:00
|
|
|
Feature levels 66-69 are reserved for future use in 4.x maintenance
|
|
|
|
releases.
|
|
|
|
|
2020-07-28 02:10:59 +02:00
|
|
|
## Changes in Zulip 4.0
|
|
|
|
|
2021-05-13 21:29:57 +02:00
|
|
|
**Feature level 65**
|
|
|
|
|
2021-05-14 00:41:53 +02:00
|
|
|
No changes; feature level used for Zulip 4.0 release.
|
2021-05-13 21:29:57 +02:00
|
|
|
|
2021-05-08 18:41:54 +02:00
|
|
|
**Feature level 64**
|
|
|
|
|
|
|
|
* `PATCH /streams/{stream_id}`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameters `new_name` and `description`.
|
|
|
|
* `PATCH /settings/display`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameters `default_view`, `emojiset` and `timezone`.
|
|
|
|
|
2021-05-06 21:14:16 +02:00
|
|
|
**Feature level 63**
|
|
|
|
|
|
|
|
* `PATCH /settings/notifications`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `notification_sound`.
|
|
|
|
* `PATCH /settings/display`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `default_language`.
|
|
|
|
* `POST /users/me/tutorial_status`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `status`.
|
|
|
|
* `POST /realm/domains`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `domain`.
|
|
|
|
* `PATCH /default_stream_groups/{user_id}`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameters `new_group_name` and `new_description`.
|
|
|
|
* `POST /users/me/hotspots`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameter `hotspot`.
|
|
|
|
|
2021-05-02 09:56:58 +02:00
|
|
|
**Feature level 62**
|
|
|
|
|
|
|
|
* Added `moderators only` option for `wildcard_mention_policy`.
|
|
|
|
|
2021-04-30 15:19:47 +02:00
|
|
|
**Feature level 61**
|
|
|
|
|
2022-02-25 01:35:22 +01:00
|
|
|
* `POST /invites`, `POST /invites/multiuse`: Added support for
|
|
|
|
inviting users as moderators.
|
2021-04-30 15:19:47 +02:00
|
|
|
|
2021-04-19 18:41:20 +02:00
|
|
|
**Feature level 60**
|
|
|
|
|
2021-04-19 20:56:15 +02:00
|
|
|
* [`POST /register`](/api/register-queue): Added a new boolean field
|
|
|
|
`is_moderator`, similar to the existing `is_admin`, `is_owner` and
|
|
|
|
`is_guest` fields, to the response.
|
2021-04-19 18:41:20 +02:00
|
|
|
* [`PATCH /users/{user_id}`](/api/update-user): Added support for
|
|
|
|
changing a user's organization-level role to moderator.
|
|
|
|
* API endpoints that return `role` values can now return `300`, the
|
|
|
|
encoding of the moderator role.
|
|
|
|
|
2021-04-18 11:28:39 +02:00
|
|
|
**Feature level 59**
|
|
|
|
|
2021-04-11 07:38:09 +02:00
|
|
|
* [`GET /users`](/api/get-users), [`GET /users/{user_id}`](/api/get-user),
|
|
|
|
[`GET /users/{email}`](/api/get-user-by-email) and
|
|
|
|
[`GET /users/me`](/api/get-own-user): Added `role` field to returned
|
|
|
|
user objects.
|
|
|
|
* [`GET /events`](/api/get-events): Added `role` field to
|
|
|
|
user objects sent in `realm_user` events.
|
|
|
|
* [`POST /register`](/api/register-queue): Added `role` field
|
|
|
|
in the user objects returned in the `realm_users` field.
|
2021-04-18 11:28:39 +02:00
|
|
|
* [`GET /events`](/api/get-events): Added new `zulip_version` and
|
|
|
|
`zulip_feature_level` fields to the `restart` event.
|
|
|
|
|
2020-12-24 21:00:20 +01:00
|
|
|
**Feature level 58**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added the new
|
|
|
|
`stream_typing_notifications` property to supported
|
|
|
|
`client_capabilities`.
|
|
|
|
* [`GET /events`](/api/get-events): Extended format for `typing`
|
|
|
|
events to support typing notifications in stream messages. These new
|
|
|
|
events are only sent to clients with `client_capabilities`
|
|
|
|
showing support for `stream_typing_notifications`.
|
|
|
|
* [`POST /set-typing-status`](/api/set-typing-status): Added support
|
|
|
|
for sending typing notifications for stream messages.
|
|
|
|
|
2021-04-15 19:51:36 +02:00
|
|
|
**Feature level 57**
|
|
|
|
|
|
|
|
* [`PATCH /realm/filters/{filter_id}`](/api/update-linkifier): New
|
|
|
|
endpoint added to update a realm linkifier.
|
|
|
|
|
2021-04-08 19:24:01 +02:00
|
|
|
**Feature level 56**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added a new setting
|
|
|
|
`move_messages_between_streams_policy` for controlling who can
|
|
|
|
move messages between streams.
|
|
|
|
|
2021-03-31 13:10:46 +02:00
|
|
|
**Feature level 55**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `realm_giphy_rating`
|
|
|
|
and `giphy_rating_options` fields.
|
|
|
|
* `PATCH /realm`: Added `giphy_rating` parameter.
|
|
|
|
|
2021-03-30 12:51:54 +02:00
|
|
|
**Feature level 54**
|
|
|
|
|
|
|
|
* `GET /realm/filters` has been removed and replace with [`GET
|
|
|
|
/realm/linkifiers`](/api/get-linkifiers) which returns the data in a
|
|
|
|
cleaner dictionary format.
|
|
|
|
* [`GET /events`](/api/get-events): Introduced new event type
|
|
|
|
`realm_linkifiers`. The previous `realm_filters` event type is
|
|
|
|
still supported for backwards compatibility, but will be removed in
|
|
|
|
a future release.
|
|
|
|
* [`POST /register`](/api/register-queue): The response now supports a
|
|
|
|
`realm_linkifiers` event type, containing the same data as the
|
|
|
|
legacy `realm_filters` key, with a more extensible object
|
|
|
|
format. The previous `realm_filters` event type is still supported
|
|
|
|
for backwards compatibility, but will be removed in a future
|
|
|
|
release. The legacy `realm_filters` key is deprecated but remains
|
|
|
|
available for backwards compatibility.
|
|
|
|
|
2021-04-10 17:50:58 +02:00
|
|
|
**Feature level 53**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `max_topic_length`
|
2021-04-13 01:03:31 +02:00
|
|
|
and `max_message_length`, and renamed `max_stream_name_length` and
|
2021-04-10 17:50:58 +02:00
|
|
|
`max_stream_description_length` to allow clients to transparently
|
|
|
|
support these values changing in a future server version.
|
|
|
|
|
2021-04-07 22:00:40 +02:00
|
|
|
**Feature level 52**
|
|
|
|
|
|
|
|
* `PATCH /realm`: Removed unnecessary JSON-encoding of string
|
|
|
|
parameters `name`, `description`, `default_language`, and
|
|
|
|
`default_code_block_language`.
|
|
|
|
|
2021-04-03 21:09:26 +02:00
|
|
|
**Feature level 51**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added a new boolean field
|
|
|
|
`can_invite_others_to_realm`.
|
|
|
|
|
2021-04-02 18:47:08 +02:00
|
|
|
**Feature level 50**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Replaced `invite_by_admins_only`
|
|
|
|
field with an integer field `invite_to_realm_policy`.
|
|
|
|
|
2020-10-28 04:00:46 +01:00
|
|
|
**Feature level 49**
|
|
|
|
|
2021-05-23 10:04:50 +02:00
|
|
|
* Added new [`POST /realm/playground`](/api/add-code-playground) and
|
|
|
|
[`DELETE /realm/playground/{playground_id}`](/api/remove-code-playground)
|
|
|
|
endpoints for code playgrounds.
|
2020-10-28 04:00:46 +01:00
|
|
|
* [`GET /events`](/api/get-events): A new `realm_playgrounds` events
|
2021-05-23 10:04:50 +02:00
|
|
|
is sent when changes are made to a set of configured code playgrounds for
|
2020-10-28 04:00:46 +01:00
|
|
|
an organization.
|
|
|
|
* [`POST /register`](/api/register-queue): Added a new `realm_playgrounds`
|
2021-05-23 10:04:50 +02:00
|
|
|
field, which is required to fetch the set of configured code playgrounds for
|
2020-10-28 04:00:46 +01:00
|
|
|
an organization.
|
|
|
|
|
2021-03-27 12:23:32 +01:00
|
|
|
**Feature level 48**
|
|
|
|
|
|
|
|
* [`POST /users/me/muted_users/{muted_user_id}`](/api/mute-user),
|
|
|
|
[`DELETE /users/me/muted_users/{muted_user_id}`](/api/unmute-user):
|
|
|
|
New endpoints added to mute/unmute users.
|
|
|
|
* [`GET /events`](/api/get-events): Added new event type `muted_users`
|
|
|
|
which will be sent to a user when the set of users muted by them has
|
|
|
|
changed.
|
|
|
|
|
2021-03-19 13:21:18 +01:00
|
|
|
**Feature level 47**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added a new `giphy_api_key`
|
|
|
|
field, which is required to fetch GIFs using the GIPHY API.
|
|
|
|
|
2021-01-26 07:32:29 +01:00
|
|
|
**Feature level 46**
|
|
|
|
|
|
|
|
* [`GET /messages`](/api/get-messages) and [`GET
|
|
|
|
/events`](/api/get-events): The `topic_links` field now contains a
|
|
|
|
list of dictionaries, rather than a list of strings.
|
|
|
|
|
2021-03-26 09:51:43 +01:00
|
|
|
**Feature level 45**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Removed useless `op` field from
|
|
|
|
`custom_profile_fields` events. These events contain the full set
|
|
|
|
of configured `custom_profile_fields` for the organization
|
|
|
|
regardless of what triggered the change.
|
|
|
|
|
2021-03-18 22:33:52 +01:00
|
|
|
**Feature level 44**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): extended the `unread_msgs`
|
|
|
|
object to include `old_unreads_missing`, which indicates whether the
|
|
|
|
server truncated the `unread_msgs` due to excessive total unread
|
|
|
|
messages.
|
|
|
|
|
2021-01-04 19:36:00 +01:00
|
|
|
**Feature level 43**
|
|
|
|
|
|
|
|
* [`GET /users/{user_id_or_email}/presence`]: Added support for
|
|
|
|
passing the `user_id` to identify the target user.
|
|
|
|
|
2021-03-10 13:56:10 +01:00
|
|
|
**Feature level 42**
|
|
|
|
|
|
|
|
* `PATCH /settings/display`: Added a new `default_view` setting allowing
|
2021-10-25 19:17:19 +02:00
|
|
|
the user to [set the default view](/help/configure-default-view).
|
2021-03-10 13:56:10 +01:00
|
|
|
|
2021-03-06 13:20:32 +01:00
|
|
|
**Feature level 41**
|
|
|
|
|
2021-03-10 13:56:10 +01:00
|
|
|
* [`GET /events`](/api/get-events): Removed `name` field from update
|
2021-03-06 13:20:32 +01:00
|
|
|
subscription events.
|
|
|
|
|
2021-02-26 19:19:03 +01:00
|
|
|
**Feature level 40**
|
|
|
|
|
2021-03-10 13:56:10 +01:00
|
|
|
* [`GET /events`](/api/get-events): Removed `email` field from update
|
2021-02-26 19:19:03 +01:00
|
|
|
subscription events.
|
|
|
|
|
2021-01-02 15:05:29 +01:00
|
|
|
**Feature level 39**
|
|
|
|
|
|
|
|
* Added new [GET /users/{email}](/api/get-user-by-email) endpoint.
|
|
|
|
|
2021-01-05 06:22:08 +01:00
|
|
|
**Feature level 38**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Increased
|
|
|
|
`realm_community_topic_editing_limit_seconds` time limit value
|
|
|
|
to 259200s (3 days).
|
|
|
|
|
refactor: Eliminate checks in build_stream_dict_for_sub.
We eliminate some redundant checks.
We also consistently provide a `subscribers` field
in our stream data with `[]`, even if our users
can't access subscribers. We therefore bump
the API version and tweak the docs. (See further
down for a detailed justification of the change.)
Even though it is sometimes fine to have redundant code
that is defensive in nature, some upcoming changes are gonna
move subscriber-related logic out of build_stream_dict_for_sub
for certain codepaths as part of our effort to streamline
the payload for subscribers within page_params.
So we can't rely on the code that I removed here
inside of build_stream_dict_for_sub.
Anyway, it makes more sense to do these checks explicitly
in the validate function.
The code in build_stream_dict_for_sub was almost effectively
a noop, since the validation function was already preventing
us from getting subscriber info. The only difference it
made was sometimes converting `[]` to `None`, and then
subsequently omitting the subscribers field.
Neither ZT nor the webapp make any distinction between
`[]` or <missing key> for the `subscribers` data in
`page_params`.
The webapp has had this code for a long time (and now
equivalent code elsewhere in this PR):
if (!Object.prototype.hasOwnProperty.call(sub, "subscribers")) {
sub.subscribers = new LazySet([]);
}
The webapp calculates access based on booleans, anyway:
sub.can_access_subscribers =
page_params.is_admin || sub.subscribed ||
(!page_params.is_guest && !sub.invite_only);
And ZT would choke if `subscribers` were missing, except that
it never gets to the relevant code due to other checks:
def get_other_subscribers_in_stream(<snip>):
assert stream_id is not None or stream_name is not None
if stream_id:
assert self.is_user_subscribed_to_stream(stream_id)
return [sub
for sub in self.stream_dict[stream_id]['subscribers']
if sub != self.user_id]
else:
return [sub
for _, stream in self.stream_dict.items()
for sub in stream['subscribers']
if stream['name'] == stream_name
if sub != self.user_id]
You could make a semantic argument that we should prefer
<missing key> to `[]` when subscribers aren't even available, but
we have precedent from the way that `bulk_get_subscriber_user_ids`
has traditionally populated its result:
result: Dict[int, List[int]] =
{stream["id"]: [] for stream in stream_dicts}
If we changed `stream_dicts` to `target_stream_dicts` we
would faciliate a move toward `None`, but it would just cause
headaches for other server code as well as the frontends
(which, to reiterate, already prefer the empty array
for convenience).
2021-01-14 16:18:42 +01:00
|
|
|
**Feature level 37**
|
|
|
|
|
|
|
|
* Consistently provide `subscribers` in stream data when
|
|
|
|
clients register for subscriptions with `include_subscribers`,
|
|
|
|
even if the user can't access subscribers.
|
|
|
|
|
2020-12-14 22:02:22 +01:00
|
|
|
**Feature level 36**
|
|
|
|
|
|
|
|
* [`POST /users`](/api/create-user): Restricted access to organization
|
|
|
|
administrators with the `can_create_users` permission.
|
2021-07-01 20:38:57 +02:00
|
|
|
* [Error handling](/api/rest-error-handling): The `code` property will
|
2022-01-18 19:04:49 +01:00
|
|
|
now be present in errors due to rate limits.
|
2020-12-14 22:02:22 +01:00
|
|
|
|
2020-10-24 16:41:46 +02:00
|
|
|
**Feature level 35**
|
|
|
|
|
|
|
|
* The peer_add and peer_remove subscription events now have plural
|
|
|
|
versions of `user_ids` and `stream_ids`.
|
|
|
|
|
2020-09-04 18:53:22 +02:00
|
|
|
**Feature level 34**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added a new `wildcard_mention_policy`
|
|
|
|
setting for controlling who can use wildcard mentions in large streams.
|
|
|
|
|
2020-09-18 18:09:17 +02:00
|
|
|
**Feature level 33**
|
|
|
|
|
|
|
|
* Markdown code blocks now have a `data-code-language` attribute
|
|
|
|
attached to the outer `div` element, recording the programming
|
|
|
|
language that was selecting for syntax highlighting. This field
|
|
|
|
supports the upcoming "view in playground" feature for code blocks.
|
|
|
|
|
2020-08-19 21:51:47 +02:00
|
|
|
**Feature level 32**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added `op` field to
|
|
|
|
`update_message_flags` events, deprecating the `operation` field
|
|
|
|
(which has the same value). This removes an unintentional anomaly
|
|
|
|
in the format of this event type.
|
|
|
|
|
2020-07-15 16:02:35 +02:00
|
|
|
**Feature level 31**
|
|
|
|
|
|
|
|
* [`GET users/me/subscriptions`](/api/get-subscriptions): Added a
|
|
|
|
`role` field to Subscription objects representing whether the user
|
|
|
|
is a stream administrator.
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): Added `role` field to
|
|
|
|
Subscription objects sent in `subscriptions` events.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2020-10-23 02:43:28 +02:00
|
|
|
**Feature level 30**
|
2020-07-28 02:10:59 +02:00
|
|
|
|
|
|
|
* [`GET users/me/subscriptions`](/api/get-subscriptions), [`GET
|
|
|
|
/streams`](/api/get-streams): Added `date_created` to Stream
|
|
|
|
objects.
|
2020-08-11 23:01:01 +02:00
|
|
|
* [`POST /users`](/api/create-user), `POST /bots`: The ID of the newly
|
|
|
|
created user is now returned in the response.
|
2020-07-28 02:10:59 +02:00
|
|
|
|
|
|
|
Feature levels 28 and 29 are reserved for future use in 3.x bug fix
|
|
|
|
releases.
|
|
|
|
|
2020-07-16 14:29:18 +02:00
|
|
|
## Changes in Zulip 3.1
|
|
|
|
|
2020-07-16 23:56:34 +02:00
|
|
|
**Feature level 27**
|
|
|
|
|
|
|
|
* The `short_name` field is removed from `display_recipients`
|
|
|
|
in `POST /users`.
|
|
|
|
|
2020-07-16 14:29:18 +02:00
|
|
|
**Feature level 26**
|
|
|
|
|
|
|
|
* The `sender_short_name` field is no longer included in
|
|
|
|
`GET /messages`.
|
|
|
|
* The `short_name` field is removed from `display_recipients`
|
|
|
|
in `GET /messages`.
|
|
|
|
|
2020-06-25 01:25:14 +02:00
|
|
|
## Changes in Zulip 3.0
|
2020-04-29 05:55:42 +02:00
|
|
|
|
2020-07-16 11:13:43 +02:00
|
|
|
**Feature level 25**
|
|
|
|
|
|
|
|
No changes; feature level used for Zulip 3.0 release.
|
|
|
|
|
markdown: Remove !avatar() and !gravatar() syntax.
This particular commit has been a long time coming. For reference,
!avatar(email) was an undocumented syntax that simply rendered an
inline 50px avatar for a user in a message, essentially allowing
you to create a user pill like:
`!avatar(alice@example.com) Alice: hey!`
---
Reimplementation
If we decide to reimplement this or a similar feature in the future,
we could use something like `<avatar:userid>` syntax which is more
in line with creating links in markdown. Even then, it would not be
a good idea to add this instead of supporting inline images directly.
Since any usecases of such a syntax are in automation, we do not need
to make it userfriendly and something like the following is a better
implementation that doesn't need a custom syntax:
`![avatar for Alice](/avatar/1234?s=50) Alice: hey!`
---
History
We initially added this syntax back in 2012 and it was 'deprecated'
from the get go. Here's what the original commit had to say about
the new syntax:
> We'll use this internally for the commit bot. We might eventually
> disable it for external users.
We eventually did start using this for our github integrations in 2013
but since then, those integrations have been neglected in favor of
our GitHub webhooks which do not use this syntax.
When we copied `!gravatar` to add the `!avatar` syntax, we also noted
that we want to deprecate the `!gravatar` syntax entirely - in 2013!
Since then, we haven't advertised either of these syntaxes anywhere
in our docs, and the only two places where this syntax remains is
our game bots that could easily do without these, and the git commit
integration that we have deprecated anyway.
We do not have any evidence of someone asking about this syntax on
chat.zulip.org when developing an integration and rightfully so- only
the people who work on Zulip (and specifically, markdown) are likely
to stumble upon it and try it out.
This is also the only peice of code due to which we had to look up
emails -> userid mapping in our backend markdown. By removing this,
we entirely remove the backend markdown's dependency on user emails
to render messages.
---
Relevant commits:
- Oct 2012, Initial commit c31462c2782a33886e737cf33424a36a95c81f97
- Nov 2013, Update commit bot 968c393826f8846065c5c880427328f6e534c2f5
- Nov 2013, Add avatar syntax 761c0a0266669aca82d134716a4d6b6e33d541fc
- Sep 2017, Avoid email use c3032a7fe8ed49b011e0d242f4b8a7d756b9f647
- Apr 2019, Remove from webhook 674fcfcce1fcf35bdc57031a1025ef169d495d36
2020-07-06 23:01:38 +02:00
|
|
|
**Feature level 24**
|
|
|
|
|
2020-08-11 01:47:49 +02:00
|
|
|
* The `!avatar()` and `!gravatar()` Markdown syntax, which was never
|
2020-07-14 07:59:15 +02:00
|
|
|
documented, had inconsistent syntax, and was rarely used, was
|
|
|
|
removed.
|
markdown: Remove !avatar() and !gravatar() syntax.
This particular commit has been a long time coming. For reference,
!avatar(email) was an undocumented syntax that simply rendered an
inline 50px avatar for a user in a message, essentially allowing
you to create a user pill like:
`!avatar(alice@example.com) Alice: hey!`
---
Reimplementation
If we decide to reimplement this or a similar feature in the future,
we could use something like `<avatar:userid>` syntax which is more
in line with creating links in markdown. Even then, it would not be
a good idea to add this instead of supporting inline images directly.
Since any usecases of such a syntax are in automation, we do not need
to make it userfriendly and something like the following is a better
implementation that doesn't need a custom syntax:
`![avatar for Alice](/avatar/1234?s=50) Alice: hey!`
---
History
We initially added this syntax back in 2012 and it was 'deprecated'
from the get go. Here's what the original commit had to say about
the new syntax:
> We'll use this internally for the commit bot. We might eventually
> disable it for external users.
We eventually did start using this for our github integrations in 2013
but since then, those integrations have been neglected in favor of
our GitHub webhooks which do not use this syntax.
When we copied `!gravatar` to add the `!avatar` syntax, we also noted
that we want to deprecate the `!gravatar` syntax entirely - in 2013!
Since then, we haven't advertised either of these syntaxes anywhere
in our docs, and the only two places where this syntax remains is
our game bots that could easily do without these, and the git commit
integration that we have deprecated anyway.
We do not have any evidence of someone asking about this syntax on
chat.zulip.org when developing an integration and rightfully so- only
the people who work on Zulip (and specifically, markdown) are likely
to stumble upon it and try it out.
This is also the only peice of code due to which we had to look up
emails -> userid mapping in our backend markdown. By removing this,
we entirely remove the backend markdown's dependency on user emails
to render messages.
---
Relevant commits:
- Oct 2012, Initial commit c31462c2782a33886e737cf33424a36a95c81f97
- Nov 2013, Update commit bot 968c393826f8846065c5c880427328f6e534c2f5
- Nov 2013, Add avatar syntax 761c0a0266669aca82d134716a4d6b6e33d541fc
- Sep 2017, Avoid email use c3032a7fe8ed49b011e0d242f4b8a7d756b9f647
- Apr 2019, Remove from webhook 674fcfcce1fcf35bdc57031a1025ef169d495d36
2020-07-06 23:01:38 +02:00
|
|
|
|
2020-06-26 19:51:10 +02:00
|
|
|
**Feature level 23**
|
|
|
|
|
2020-07-14 07:59:15 +02:00
|
|
|
* `GET/PUT/POST /users/me/pointer`: Removed. Zulip 3.0 removes the
|
|
|
|
`pointer` concept from Zulip; this legacy data structure was
|
|
|
|
replaced by tracking unread messages and loading views centered on
|
|
|
|
the first unread message.
|
2020-06-26 19:51:10 +02:00
|
|
|
|
2020-06-24 10:28:00 +02:00
|
|
|
**Feature level 22**
|
|
|
|
|
2020-07-14 07:59:15 +02:00
|
|
|
* [`GET /attachments`](/api/get-attachments): The date when a message
|
|
|
|
using the attachment was sent is now correctly encoded as
|
|
|
|
`date_sent`, replacing the confusingly named `name` field. The
|
|
|
|
`date_sent` and `create_time` fields of attachment objects are now
|
|
|
|
encoded as integers; (previously the implementation could send
|
|
|
|
floats incorrectly suggesting that microsecond precision is
|
|
|
|
relevant).
|
2020-06-26 21:26:57 +02:00
|
|
|
* `GET /invites`: Now encodes the user ID of the person who created
|
|
|
|
the invitation as `invited_by_user_id`, replacing the previous
|
|
|
|
`ref` field (which had that user's Zulip display email address).
|
2021-08-20 10:32:59 +02:00
|
|
|
* [`POST /register`](/api/register-queue): The encoding of an
|
|
|
|
unlimited `realm_message_retention_days` in the response was changed
|
|
|
|
from `null` to `-1`.
|
2020-06-24 10:28:00 +02:00
|
|
|
|
2020-05-16 13:13:59 +02:00
|
|
|
**Feature level 21**
|
|
|
|
|
|
|
|
* `PATCH /settings/display`: Replaced the `night_mode` boolean with
|
|
|
|
`color_scheme` as part of supporting automatic night theme detection.
|
|
|
|
|
2020-06-18 13:03:06 +02:00
|
|
|
**Feature level 20**
|
|
|
|
|
|
|
|
* Added support for inviting users as organization owners to the
|
|
|
|
invitation endpoints.
|
|
|
|
|
2020-06-12 16:54:01 +02:00
|
|
|
**Feature level 19**
|
|
|
|
|
|
|
|
* [`GET /events`](/api/get-events): `subscriptions` event with
|
|
|
|
`op="peer_add"` and `op="peer_remove"` now identify the modified
|
|
|
|
stream by a `stream_id` field, replacing the old `name` field.
|
|
|
|
|
2020-06-13 10:10:05 +02:00
|
|
|
**Feature level 18**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`user_avatar_url_field_optional` to supported `client_capabilities`.
|
|
|
|
|
2020-06-14 18:57:02 +02:00
|
|
|
**Feature level 17**
|
|
|
|
|
2020-06-19 08:09:06 +02:00
|
|
|
* [`GET users/me/subscriptions`](/api/get-subscriptions),
|
|
|
|
[`GET /streams`](/api/get-streams): Added
|
2020-06-19 07:12:36 +02:00
|
|
|
`message_retention_days` to Stream objects.
|
2020-06-19 07:55:08 +02:00
|
|
|
* [`POST users/me/subscriptions`](/api/subscribe), [`PATCH
|
2020-06-14 18:57:02 +02:00
|
|
|
streams/{stream_id}`](/api/update-stream): Added `message_retention_days`
|
|
|
|
parameter.
|
|
|
|
|
2020-06-18 09:18:29 +02:00
|
|
|
**Feature level 16**
|
|
|
|
|
|
|
|
* [`GET /users/me`]: Removed `pointer` from the response, as the
|
|
|
|
"pointer" concept is being removed in Zulip.
|
2020-06-18 23:19:48 +02:00
|
|
|
* 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.
|
2020-06-18 09:18:29 +02:00
|
|
|
|
2020-06-17 01:36:49 +02:00
|
|
|
**Feature level 15**
|
|
|
|
|
|
|
|
* Added [spoilers](/help/format-your-message-using-markdown#spoilers)
|
2020-08-11 01:47:49 +02:00
|
|
|
to supported Markdown features.
|
2020-06-17 01:36:49 +02:00
|
|
|
|
2020-06-16 18:42:13 +02:00
|
|
|
**Feature level 14**
|
|
|
|
|
2020-06-19 07:55:08 +02:00
|
|
|
* [`GET users/me/subscriptions`](/api/get-subscriptions): Removed
|
2020-06-16 18:42:13 +02:00
|
|
|
the `is_old_stream` field from Stream objects. This field was
|
|
|
|
always equivalent to `stream_weekly_traffic != null` on the same object.
|
|
|
|
|
2020-06-10 13:47:08 +02:00
|
|
|
**Feature level 13**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`bulk_message_deletion` to supported `client_capabilities`.
|
2020-06-19 07:55:08 +02:00
|
|
|
* [`GET /events`](/api/get-events): `message_deleted`
|
2020-06-10 13:47:08 +02:00
|
|
|
events have new behavior. The `sender` and `sender_id` fields were
|
|
|
|
removed, and the `message_id` field was replaced by a `message_ids`
|
|
|
|
list for clients with the `bulk_message_deletion` client capability.
|
|
|
|
All clients should upgrade; we expect `bulk_message_deletion` to be
|
|
|
|
required in the future.
|
|
|
|
|
2020-05-31 19:10:41 +02:00
|
|
|
**Feature level 12**
|
|
|
|
|
|
|
|
* [`GET users/{user_id}/subscriptions/{stream_id}`](/api/get-subscription-status):
|
|
|
|
New endpoint added for checking if another user is subscribed to a stream.
|
|
|
|
|
2020-06-09 23:37:51 +02:00
|
|
|
**Feature level 11**
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added
|
|
|
|
`realm_community_topic_editing_limit_seconds` to the response, the
|
|
|
|
time limit before community topic editing is forbidden. A `null`
|
2020-09-08 16:06:25 +02:00
|
|
|
value means no limit. This was previously hard-coded in the server
|
|
|
|
as 86400 seconds (1 day).
|
2020-06-03 19:49:45 +02:00
|
|
|
* [`POST /register`](/api/register-queue): The response now contains a
|
|
|
|
`is_owner`, similar to the existing `is_admin` and `is_guest` fields.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`POST /set-typing-status`](/api/set-typing-status): Removed legacy support for sending email
|
2020-02-28 18:23:57 +01:00
|
|
|
addresses, rather than user IDs, to encode private message recipients.
|
2020-06-09 23:37:51 +02:00
|
|
|
|
2020-06-03 16:44:57 +02:00
|
|
|
**Feature level 10**
|
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET users/me`](/api/get-own-user): Added `avatar_version`, `is_guest`,
|
2020-06-08 00:29:47 +02:00
|
|
|
`is_active`, `timezone`, and `date_joined` fields to the User objects.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET users/me`](/api/get-own-user): Removed `client_id` and `short_name`
|
2020-08-11 01:47:44 +02:00
|
|
|
from the response to this endpoint. These fields had no purpose and
|
2020-06-09 00:07:13 +02:00
|
|
|
were inconsistent with other API responses describing users.
|
2020-06-08 00:29:47 +02:00
|
|
|
|
2020-04-09 19:07:57 +02:00
|
|
|
**Feature level 9**
|
2020-06-03 23:30:32 +02:00
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`POST users/me/subscriptions`](/api/subscribe), [`DELETE
|
|
|
|
/users/me/subscriptions`](/api/unsubscribe): Other users to
|
2020-04-09 19:07:57 +02:00
|
|
|
subscribe/unsubscribe, declared in the `principals` parameter, can
|
|
|
|
now be referenced by user_id, rather than Zulip display email
|
|
|
|
address.
|
2020-06-03 16:44:57 +02:00
|
|
|
* [PATCH /messages/{message_id}](/api/update-message): Added
|
|
|
|
`send_notification_to_old_thread` and
|
|
|
|
`send_notification_to_new_thread` optional parameters.
|
2020-04-09 19:07:57 +02:00
|
|
|
|
2020-06-01 21:47:18 +02:00
|
|
|
**Feature level 8**
|
2020-06-03 23:30:32 +02:00
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users`](/api/get-users), [`GET /users/{user_id}`](/api/get-user)
|
|
|
|
and [`GET /users/me`](/api/get-own-user): User objects now contain the
|
2020-06-01 21:47:18 +02:00
|
|
|
`is_owner` field as well.
|
2020-06-17 01:36:49 +02:00
|
|
|
* Added [time mentions](/help/format-your-message-using-markdown#mention-a-time)
|
2020-08-11 01:47:49 +02:00
|
|
|
to supported Markdown features.
|
2020-06-01 21:47:18 +02:00
|
|
|
|
2020-05-12 20:28:53 +02:00
|
|
|
**Feature level 7**
|
2020-06-03 23:30:32 +02:00
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /events`](/api/get-events): `realm_user` and
|
2020-05-12 20:28:53 +02:00
|
|
|
`realm_bot` events no longer contain an `email` field to identify
|
|
|
|
the user; use the `user_id` field instead. Previously, some (but
|
|
|
|
not all) events of these types contained an `email` key in addition to
|
|
|
|
to `user_id`) for identifying the modified user.
|
2020-05-29 16:12:09 +02:00
|
|
|
* [`PATCH /users/{user_id}`](/api/update-user): The `is_admin` and
|
|
|
|
`is_guest` parameters were removed in favor of the more general
|
|
|
|
`role` parameter for specifying a change in user role.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /events`](/api/get-events): `realm_user` events
|
2020-05-30 21:43:19 +02:00
|
|
|
sent when a user's role changes now include `role` property, instead
|
|
|
|
of the previous `is_guest` or `is_admin` booleans.
|
2020-05-29 11:11:48 +02:00
|
|
|
* `GET /realm/emoji`: The user who uploaded a given custom emoji is
|
|
|
|
now indicated by an `author_id` field, replacing a previous `author`
|
|
|
|
object with unnecessary additional data.
|
2020-05-12 20:28:53 +02:00
|
|
|
|
2020-04-07 20:09:30 +02:00
|
|
|
**Feature level 6**
|
2020-06-03 23:30:32 +02:00
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /events`](/api/get-events): `realm_user` events to
|
2020-04-07 20:09:30 +02:00
|
|
|
update a user's avatar now include the `avatar_version` field, which
|
|
|
|
is important for correctly refetching medium-size avatar images when
|
|
|
|
the user's avatar changes.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users`](/api/get-users) and [`GET
|
2020-04-07 20:09:30 +02:00
|
|
|
/users/{user_id}`](/api/get-user): User objects now contain the
|
|
|
|
`avatar_version` field as well.
|
|
|
|
|
2020-05-10 19:21:08 +02:00
|
|
|
**Feature level 5**
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /events`](/api/get-events): `realm_bot` events,
|
2020-05-10 19:21:08 +02:00
|
|
|
sent when changes are made to bot users, now contain an
|
|
|
|
integer-format `owner_id` field, replacing the `owner` field (which
|
|
|
|
was an email address).
|
|
|
|
|
2020-05-08 10:02:10 +02:00
|
|
|
**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_disabled` and
|
|
|
|
`server_name_changes_disabled` fields are now available via
|
|
|
|
`POST /register` to make them accessible to all the clients;
|
|
|
|
they were only internally available to Zulip's web app prior to this.
|
|
|
|
|
2020-04-29 12:39:39 +02:00
|
|
|
**Feature level 3**:
|
|
|
|
|
|
|
|
* `zulip_version` and `zulip_feature_level` are always returned
|
|
|
|
in `POST /register`; previously they were only returned if `event_types`
|
|
|
|
included `zulip_version`.
|
2020-05-01 20:39:26 +02:00
|
|
|
* Added new `presence_enabled` user notification setting; previously
|
|
|
|
[presence](/help/status-and-availability) was always enabled.
|
2020-04-29 12:39:39 +02:00
|
|
|
|
2020-04-29 05:55:42 +02:00
|
|
|
**Feature level 2**:
|
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`POST /messages/{message_id}/reactions`](/api/add-reaction):
|
2020-04-30 01:03:05 +02:00
|
|
|
The `reaction_type` parameter is optional; the server will guess the
|
|
|
|
`reaction_type` if it is not specified (checking custom emoji, then
|
2020-10-23 02:43:28 +02:00
|
|
|
Unicode emoji for any with the provided name).
|
2020-04-29 05:55:42 +02:00
|
|
|
* `reactions` objects returned by the API (both in `GET /messages` and
|
|
|
|
in `GET /events`) now include the user who reacted in a top-level
|
|
|
|
`user_id` field. The legacy `user` dictionary (which had
|
|
|
|
inconsistent format between those two endpoints) is deprecated.
|
|
|
|
|
|
|
|
**Feature level 1**:
|
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /server_settings`](/api/get-server-settings): Added
|
2020-04-29 05:55:42 +02:00
|
|
|
`zulip_feature_level`, which can be used by clients to detect which
|
|
|
|
of the features described in this changelog are supported.
|
|
|
|
* [`POST /register`](/api/register-queue): Added `zulip_feature_level`
|
|
|
|
to the response if `zulip_version` is among the requested
|
|
|
|
`event_types`.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users`](/api/get-users): User objects for bots now
|
2020-04-29 05:55:42 +02:00
|
|
|
contain a `bot_owner_id`, replacing the previous `bot_owner` field
|
|
|
|
(which had the email address of the bot owner).
|
|
|
|
* [`GET /users/{user_id}`](/api/get-user): Endpoint added.
|
|
|
|
* [`GET /messages`](/api/get-messages): Add support for string-format
|
|
|
|
values for the `anchor` parameter, deprecating and replacing the
|
|
|
|
`use_first_unread_anchor` parameter.
|
|
|
|
* [`GET /messages`](/api/get-messages) and [`GET
|
2020-06-11 14:44:00 +02:00
|
|
|
/events`](/api/get-events): Message objects now use
|
2020-04-29 05:55:42 +02:00
|
|
|
`topic_links` rather than `subject_links` to indicate links either
|
2020-10-23 02:43:28 +02:00
|
|
|
present in the topic or generated by linkifiers applied to the topic.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`POST /users/me/subscriptions`](/api/subscribe): Replaced
|
2020-04-29 05:55:42 +02:00
|
|
|
`is_announcement_only` boolean with `stream_post_policy` enum for
|
|
|
|
specifying who can post to a stream.
|
|
|
|
* [`PATCH /streams/{stream_id}`](/api/update-stream): Replaced
|
|
|
|
`is_announcement_only` boolean with `stream_post_policy` enum for
|
|
|
|
specifying who can post to a stream.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /streams`](/api/get-streams): Replaced
|
2020-04-29 05:55:42 +02:00
|
|
|
`is_announcement_only` boolean with `stream_post_policy` enum 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_NOBODY` possible value for
|
|
|
|
`email_address_visibility`.
|
|
|
|
* Added `private_message_policy` realm setting.
|
|
|
|
* `muted_topic` objects now are a 3-item tuple: (`stream_id`, `topic`,
|
|
|
|
`date_muted`). Previously, they were a 2-item tuple.
|
|
|
|
* `GitLab` authentication is now available.
|
|
|
|
* Added `None` as a video call provider option.
|
|
|
|
|
|
|
|
## Changes in Zulip 2.1
|
|
|
|
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users`](/api/get-users): Added `include_custom_profile_fields`
|
2020-04-29 05:55:42 +02:00
|
|
|
to request custom profile field data.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users/me`](/api/get-own-user): Added `avatar_url` field,
|
2020-04-29 05:55:42 +02:00
|
|
|
containing the user's avatar URL, to the response.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users/me/subscriptions`](/api/get-subscriptions): Added
|
2020-04-29 05:55:42 +02:00
|
|
|
`include_subscribers` parameter controlling whether data on the
|
|
|
|
other subscribers is included. Previous behavior was to always send
|
|
|
|
subscriber data.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users/me/subscriptions`](/api/get-subscriptions):
|
2020-04-29 05:55:42 +02:00
|
|
|
Stream-level notification settings like `push_notifications` were
|
|
|
|
changed to be nullable boolean fields (true/false/null), with `null`
|
|
|
|
meaning that the stream inherits the organization-level default.
|
|
|
|
Previously, the only values were true/false. A client communicates
|
|
|
|
support for this feature using `client_capabilities`.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /users/me/subscriptions`](/api/get-subscriptions): Added
|
2020-04-29 05:55:42 +02:00
|
|
|
`wildcard_mentions_notify` notification setting, with the same
|
|
|
|
global-plus-stream-level-override model as other notification settings.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`GET /server_settings`](/api/get-server-settings): Added
|
2020-04-29 05:55:42 +02:00
|
|
|
`external_authentication_methods` structure, used to display login
|
|
|
|
buttons nicely in the mobile apps.
|
|
|
|
* Added `first_message_id` field 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_public` field to Stream objects. This field is
|
|
|
|
intended to support web-public streams.
|
|
|
|
* Added `/export/realm` endpoints for triggering a data export.
|
|
|
|
* `PATCH /realm`: Added `invite_to_stream_policy`,
|
|
|
|
`create_stream_policy`, `digest_emails_enabled`, `digest_weekday`,
|
|
|
|
`user_group_edit_policy`, and `avatar_changes_disabled` organization settings.
|
|
|
|
* Added `fluid_layout_width`, `desktop_icon_count_display`, and
|
|
|
|
`demote_inactive_streams` display settings.
|
|
|
|
* `enable_stream_sounds` was renamed to
|
|
|
|
`enable_stream_audible_notifications`.
|
2020-07-10 09:08:32 +02:00
|
|
|
* Deprecated `in_home_view`, replacing it with the more readable
|
2020-04-29 05:55:42 +02:00
|
|
|
`is_muted` (with the opposite meaning).
|
|
|
|
* Custom profile fields: Added `EXTERNAL_ACCOUNT` field type.
|
|
|
|
|
|
|
|
## Changes in Zulip 2.0
|
|
|
|
|
|
|
|
* [`POST /messages`](/api/send-message): Added support for using user
|
|
|
|
IDs and stream IDs for specifying the recipients of a message.
|
2020-06-25 21:40:55 +02:00
|
|
|
* [`POST /messages`](/api/send-message), [`POST
|
|
|
|
/messages/{message_id}`](/api/update-message): Added support for
|
|
|
|
encoding topics using the `topic` parameter name. The previous
|
|
|
|
`subject` parameter name was deprecated but is still supported for
|
|
|
|
backwards-compatibility.
|
2020-06-11 14:44:00 +02:00
|
|
|
* [`POST /set-typing-status`](/api/set-typing-status): Added support for specifying the
|
2020-04-29 05:55:42 +02:00
|
|
|
recipients with user IDs, deprecating the original API of specifying
|
|
|
|
them using email addresses.
|
|
|
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
## Changes not yet stabilized
|
|
|
|
|
|
|
|
* [`POST /register`](/api/register-queue): Added `slim_presence`
|
|
|
|
parameter. Changes the format of presence events, but is still
|
|
|
|
being changed and should not be used by clients.
|
2021-05-12 07:00:05 +02:00
|
|
|
|
|
|
|
[server-changelog]: https://zulip.readthedocs.io/en/latest/overview/changelog.html
|
2021-11-02 22:45:14 +01:00
|
|
|
[release-lifecycle]: https://zulip.readthedocs.io/en/latest/overview/release-lifecycle.html
|