2020-04-29 05:55:42 +02:00
|
|
|
# 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 2.2
|
|
|
|
|
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 07:12:36 +02:00
|
|
|
* [`GET users/me/subscriptions`](/api/get-subscribed-streams),
|
2020-06-19 07:55:08 +02:00
|
|
|
[`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)
|
|
|
|
to supported markdown features.
|
|
|
|
|
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`
|
|
|
|
value means no limit.
|
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-06-09 00:07:13 +02:00
|
|
|
from the reponse to this endpoint. These fields had no purpose and
|
|
|
|
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)
|
|
|
|
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-04-29 05:55:42 +02:00
|
|
|
unicode emoji for any with the provided name).
|
|
|
|
* `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
|
|
|
|
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`.
|
|
|
|
* Deprecated `is_home_view`, replacing it with the more readable
|
|
|
|
`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-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.
|
|
|
|
* `message_retention_days` field in stream objects.
|