Note that an organization administrator's ability to change a
private channel's permissions
depends on them being subscribed to the channel.
Changes: Before Zulip 10.0 (feature level 362), channel privacy could not be
edited for archived channels.
Removed stream_post_policy and is_announcement_only
parameters in Zulip 10.0 (feature level 333), as permission to post
in the channel is now controlled by can_send_message_group.
Usage examples
Python
curl
#!/usr/bin/env python3importzulip# Pass the path to your zuliprc file here.client=zulip.Client(config_file="~/zuliprc")# Update settings for the channel with a given ID.request={"stream_id":stream_id,"is_private":True,}result=client.update_stream(request)print(result)
The -u line implements HTTP Basic authentication.
See the Authorization header documentation for how
to get those credentials for Zulip users and bots.
curl -sSX PATCH https://your-org.zulipchat.com/api/v1/streams/1 \
-u EMAIL_ADDRESS:API_KEY \
--data-urlencode 'description=Discuss Italian history and travel destinations.' \
--data-urlencode new_name=Italy \
--data-urlencode is_private=true
Parameters
stream_idintegerrequired in path
Example: 1
The ID of the channel to access.
descriptionstringoptional
Example: "Discuss Italian history and travel destinations."
Clients should use the max_stream_description_length returned
by the POST /register endpoint to
determine the maximum channel description length.
Changes: Removed unnecessary JSON-encoding of this parameter in
Zulip 4.0 (feature level 64).
new_namestringoptional
Example: "Italy"
The new name for the channel.
Clients should use the max_stream_name_length returned by the
POST /register endpoint to determine
the maximum channel name length.
Changes: Removed unnecessary JSON-encoding of this parameter in
Zulip 4.0 (feature level 64).
is_privatebooleanoptional
Example: true
Change whether the channel is a private channel.
is_web_publicbooleanoptional
Example: true
Change whether the channel is a web-public channel.
Note that creating web-public channels requires the
WEB_PUBLIC_STREAMS_ENABLEDserver setting
to be enabled on the Zulip server in question, the organization
to have enabled the enable_spectator_access realm setting, and
the current use to have permission under the organization's
can_create_web_public_channel_group realm setting.
Changes: New in Zulip 5.0 (feature level 98).
history_public_to_subscribersbooleanoptional
Example: false
Whether the channel's message history should be available to
newly subscribed members, or users can only access messages
they actually received while subscribed to the channel.
It's an error for this parameter to be false for a public or
web-public channel and when is_private is false.
This can only be false if can_create_topic_group for the channel
is the role:everyonesystem group.
Changes: Before Zulip 6.0 (feature level 136), history_public_to_subscribers
was silently ignored unless the request also contained either is_private or
is_web_public.
is_default_streambooleanoptional
Example: false
Add or remove the channel as a default channel
for new users joining the organization.
Changes: New in Zulip 8.0 (feature level 200). Previously, default channel status
could only be changed using the dedicated API endpoint.
message_retention_daysstring | integeroptional
Example: "20"
Number of days that messages sent to this channel will be stored
before being automatically deleted by the message retention
policy. Two special string format
values are supported:
"realm_default": Return to the organization-level setting.
"unlimited": Retain messages forever.
Changes: Prior to Zulip 5.0 (feature level 91), retaining
messages forever was encoded using "forever" instead of
"unlimited".
New in Zulip 3.0 (feature level 17).
is_archivedbooleanoptional
Example: true
A boolean indicating whether the channel is
archived or
unarchived. Currently only allows unarchiving
previously archived channels.
Changes: New in Zulip 11.0 (feature level 388).
folder_idinteger | nulloptional
Example: 1
ID of the new channel folder to which the
channel should belong.
A null value indicates the user wants to remove the channel from its
current channel folder.
"inherit": Messages can be sent to named topics in this channel,
and the organization-level realm_topics_policy
is used for whether messages can be sent to the empty topic in this
channel.
"allow_empty_topic": Messages can be sent to both named topics and
the empty topic in this channel.
"disable_empty_topic": Messages can be sent to named topics in this
channel, but the empty topic is disabled.
"empty_topic_only": Messages can be sent to the empty topic in this
channel, but named topics are disabled. See "general chat"
channels.
The "empty_topic_only" policy can only be set if all existing messages
in the channel are already in the empty topic.
When creating a new channel, if the topics_policy is not specified, the
"inherit" option will be set.
Changes: In Zulip 11.0 (feature level 404), the "empty_topic_only"
option was added.
New in Zulip 11.0 (feature level 392).
Must be one of: "inherit", "allow_empty_topic", "disable_empty_topic", "empty_topic_only".
Users who can administer the channel or have similar realm-level
permissions can add subscribers to a public channel regardless
of the value of this setting.
Users in this group need not be subscribed to a private channel to
add subscribers to it.
Note that a user must have content access
to a channel and permission to administer the channel in order to
modify this setting.
Changes: New in Zulip 10.0 (feature level 342). Previously, there was no
channel-level setting for this permission.
The set of users who have permission to unsubscribe others from this
channel expressed as an update to a group-setting value.
Organization administrators can unsubscribe others from a channel as though
they were in this group without being explicitly listed here.
Note that a user must have metadata access to a channel and permission
to administer the channel in order to modify this setting.
Changes: Prior to Zulip 10.0 (feature level 349), channel administrators
could not unsubscribe other users if they were not an organization
administrator or part of can_remove_subscribers_group. Realm administrators
were not allowed to unsubscribe other users from a private channel if they
were not subscribed to that channel.
Prior to Zulip 10.0 (feature level 320), this value was always the integer
ID of a system group.
Before Zulip 8.0 (feature level 197), the can_remove_subscribers_group
setting was named can_remove_subscribers_group_id.
Organization administrators can administer every channel as though they were
in this group without being explicitly listed here.
Note that a user must have content access to a
channel in order to add other subscribers to the channel.
Changes: Prior to Zulip 10.0 (feature level 349) a user needed to
have content access to a channel in order
to modify it. The exception to this rule was that organization
administrators can edit channel names and descriptions without having
full access to the channel.
New in Zulip 10.0 (feature level 325). Prior to this
change, the permission to administer channels was limited to realm
administrators.
Note that a user must have content access to a
channel in order to delete any message in the channel.
Users present in the organization-level can_delete_any_message_group setting
can always delete any message in the channel if they
have content access to that channel.
Changes: New in Zulip 11.0 (feature level 407). Prior to this
change, only the users in can_delete_any_message_group were able
delete any message in the organization.
The set of users who have permission to delete the messages that they have
sent in the channel expressed as an update to a group-setting value.
Note that a user must have content access to a
channel in order to delete their own message in the channel.
Users with permission to delete any message in the channel
and users present in the organization-level can_delete_own_message_group setting
can always delete their own messages in the channel if they
have content access to that channel.
Changes: New in Zulip 11.0 (feature level 407). Prior to this
change, only the users in the organization-level can_delete_any_message_group
and can_delete_own_message_group settings were able delete their own messages in
the organization.
Note that a user must have content access to a
channel in order to move messages out of the channel.
Channel administrators and users present in the organization-level
can_move_messages_between_channels_group setting can always move messages
out of the channel if they have content access to
the channel.
Changes: New in Zulip 11.0 (feature level 396). Prior to this
change, only the users in can_move_messages_between_channels_group were able
move messages between channels.
Note that a user must have content access to a
channel in order to move messages within the channel.
Channel administrators and users present in the organization-level
can_move_messages_between_topics_group setting can always move messages
within the channel if they have content access to
the channel.
Changes: New in Zulip 11.0 (feature level 396). Prior to this
change, only the users in can_move_messages_between_topics_group were able
move messages between topics of a channel.
The list of IDs of individual users in the collection of users with this permission.
Changes: Prior to Zulip 10.0 (feature level 303), this list would include
deactivated users who had the permission before being deactivated.
direct_subgroups: (integer)[]
The list of IDs of the groups in the collection of users with this permission.
Response
Example response(s)
Changes: As of Zulip 7.0 (feature level 167), if any
parameters sent in the request are not supported by this
endpoint, a successful JSON response will include an
ignored_parameters_unsupported array.
A typical successful JSON response may look like:
{"msg":"","result":"success"}
An example JSON response for when the supplied channel does not exist: