mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	api docs: Document the POST /users/me/subscriptions/properties endpoint.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							8481a2fd2d
						
					
				
				
					commit
					3eeec94d03
				
			
							
								
								
									
										71
									
								
								templates/zerver/api/update-subscription-properties.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								templates/zerver/api/update-subscription-properties.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					# Update subscription properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This endpoint is used to update the user's personal settings for the
 | 
				
			||||||
 | 
					streams they are subscribed to, including muting, color, pinning, and
 | 
				
			||||||
 | 
					per-stream notification settings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`POST {{ api_url }}/v1/users/me/subscriptions/properties`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Usage examples
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="code-section" markdown="1">
 | 
				
			||||||
 | 
					<ul class="nav">
 | 
				
			||||||
 | 
					<li data-language="python">Python</li>
 | 
				
			||||||
 | 
					<li data-language="curl">curl</li>
 | 
				
			||||||
 | 
					</ul>
 | 
				
			||||||
 | 
					<div class="blocks">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div data-language="curl" markdown="1">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					curl -X POST {{ api_url }}/v1/users/me/subscriptions/properties \
 | 
				
			||||||
 | 
					    -u BOT_EMAIL_ADDRESS:BOT_API_KEY \
 | 
				
			||||||
 | 
					    -d 'subscription_data=[{"stream_id": 1, \
 | 
				
			||||||
 | 
					                            "property": "pin_to_top", \
 | 
				
			||||||
 | 
					                            "value": true}, \
 | 
				
			||||||
 | 
					                           {"stream_id": 3, \
 | 
				
			||||||
 | 
					                            "property": "color", \
 | 
				
			||||||
 | 
					                            "value": 'f00'}]'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div data-language="python" markdown="1">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{generate_code_example(python)|/users/me/subscriptions/properties:post|example}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Arguments
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{generate_api_arguments_table|zulip.yaml|/users/me/subscriptions/properties:post}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The possible values for each `property` and `value` pairs are:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `color` (string): the hex value of the user's display color for the stream.
 | 
				
			||||||
 | 
					* `in_home_view` (boolean): whether the stream should be visible in the home
 | 
				
			||||||
 | 
					    view (`true`) or muted and thus hidden from the home view (`false`).
 | 
				
			||||||
 | 
					* `pin_to_top` (boolean): whether to pin the stream at the top of the stream list.
 | 
				
			||||||
 | 
					* `desktop_notifications` (boolean): whether to show desktop notifications
 | 
				
			||||||
 | 
					    for all messages sent to the stream.
 | 
				
			||||||
 | 
					* `audible_notifications` (boolean): whether to play a sound
 | 
				
			||||||
 | 
					  notification for all messages sent to the stream.
 | 
				
			||||||
 | 
					* `push_notifications` (boolean): whether to trigger a mobile push
 | 
				
			||||||
 | 
					    notification for all messages sent to the stream.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Return values
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `subscription_data`: The same `subscription_data` object sent by the client
 | 
				
			||||||
 | 
					    for the request, confirming the changes made.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Example response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A typical successful JSON response may look like:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{generate_code_example|/users/me/subscriptions/properties:post|fixture(200)}
 | 
				
			||||||
@@ -17,6 +17,7 @@
 | 
				
			|||||||
* [Get all streams](/api/get-all-streams)
 | 
					* [Get all streams](/api/get-all-streams)
 | 
				
			||||||
* [Get subscribed streams](/api/get-subscribed-streams)
 | 
					* [Get subscribed streams](/api/get-subscribed-streams)
 | 
				
			||||||
* [Add subscriptions](/api/add-subscriptions)
 | 
					* [Add subscriptions](/api/add-subscriptions)
 | 
				
			||||||
 | 
					* [Update subscription settings](/api/update-subscription-properties)
 | 
				
			||||||
* [Remove subscriptions](/api/remove-subscriptions)
 | 
					* [Remove subscriptions](/api/remove-subscriptions)
 | 
				
			||||||
* [Get topics in a stream](/api/get-stream-topics)
 | 
					* [Get topics in a stream](/api/get-stream-topics)
 | 
				
			||||||
* [Topic muting](/api/mute-topics)
 | 
					* [Topic muting](/api/mute-topics)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -374,6 +374,28 @@ def mark_topic_as_read(client):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    validate_against_openapi_schema(result, '/mark_stream_as_read', 'post', '200')
 | 
					    validate_against_openapi_schema(result, '/mark_stream_as_read', 'post', '200')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def update_subscription_settings(client):
 | 
				
			||||||
 | 
					    # type: (Client) -> None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # {code_example|start}
 | 
				
			||||||
 | 
					    # Update the user's subscription in stream #1 to pin it to the top of the
 | 
				
			||||||
 | 
					    # stream list; and in stream #3 to have the hex color "f00"
 | 
				
			||||||
 | 
					    request = [{
 | 
				
			||||||
 | 
					        'stream_id': 1,
 | 
				
			||||||
 | 
					        'property': 'pin_to_top',
 | 
				
			||||||
 | 
					        'value': True
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        'stream_id': 3,
 | 
				
			||||||
 | 
					        'property': 'color',
 | 
				
			||||||
 | 
					        'value': 'f00'
 | 
				
			||||||
 | 
					    }]
 | 
				
			||||||
 | 
					    result = client.update_subscription_settings(request)
 | 
				
			||||||
 | 
					    # {code_example|end}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    validate_against_openapi_schema(result,
 | 
				
			||||||
 | 
					                                    '/users/me/subscriptions/properties',
 | 
				
			||||||
 | 
					                                    'POST', '200')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def render_message(client):
 | 
					def render_message(client):
 | 
				
			||||||
    # type: (Client) -> None
 | 
					    # type: (Client) -> None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -759,6 +781,7 @@ TEST_FUNCTIONS = {
 | 
				
			|||||||
    '/users/{email}/presence:get': get_user_presence,
 | 
					    '/users/{email}/presence:get': get_user_presence,
 | 
				
			||||||
    '/users/me/subscriptions:delete': remove_subscriptions,
 | 
					    '/users/me/subscriptions:delete': remove_subscriptions,
 | 
				
			||||||
    '/users/me/subscriptions/muted_topics:patch': toggle_mute_topic,
 | 
					    '/users/me/subscriptions/muted_topics:patch': toggle_mute_topic,
 | 
				
			||||||
 | 
					    '/users/me/subscriptions/properties:post': update_subscription_settings,
 | 
				
			||||||
    '/users:get': get_members,
 | 
					    '/users:get': get_members,
 | 
				
			||||||
    '/realm/emoji:get': get_realm_emoji,
 | 
					    '/realm/emoji:get': get_realm_emoji,
 | 
				
			||||||
    '/realm/filters:get': get_realm_filters,
 | 
					    '/realm/filters:get': get_realm_filters,
 | 
				
			||||||
@@ -860,6 +883,7 @@ def test_streams(client, nonadmin_client):
 | 
				
			|||||||
    get_subscribers(client)
 | 
					    get_subscribers(client)
 | 
				
			||||||
    remove_subscriptions(client)
 | 
					    remove_subscriptions(client)
 | 
				
			||||||
    toggle_mute_topic(client)
 | 
					    toggle_mute_topic(client)
 | 
				
			||||||
 | 
					    update_subscription_settings(client)
 | 
				
			||||||
    get_stream_topics(client, 1)
 | 
					    get_stream_topics(client, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    test_user_not_authorized_error(nonadmin_client)
 | 
					    test_user_not_authorized_error(nonadmin_client)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1384,6 +1384,58 @@ paths:
 | 
				
			|||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					  /users/me/subscriptions/properties:
 | 
				
			||||||
 | 
					    post:
 | 
				
			||||||
 | 
					      description: Make bulk modifications of the subscription properties on
 | 
				
			||||||
 | 
					        one or more streams the user is subscribed to.
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - name: subscription_data
 | 
				
			||||||
 | 
					        in: query
 | 
				
			||||||
 | 
					        description: A list of objects that describe the changes that should
 | 
				
			||||||
 | 
					          be applied in each subscription. Each object represents a
 | 
				
			||||||
 | 
					          subscription, and must have a `stream_id` key that identifies the
 | 
				
			||||||
 | 
					          stream, as well as the `property` being modified and its new
 | 
				
			||||||
 | 
					          `value`.
 | 
				
			||||||
 | 
					        schema:
 | 
				
			||||||
 | 
					          type: array
 | 
				
			||||||
 | 
					          items:
 | 
				
			||||||
 | 
					            type: object
 | 
				
			||||||
 | 
					        example: [{"stream_id": 1, "property": "pin_to_top", "value": true}]
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					      security:
 | 
				
			||||||
 | 
					      - basicAuth: []
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        '200':
 | 
				
			||||||
 | 
					          description: Success.
 | 
				
			||||||
 | 
					          content:
 | 
				
			||||||
 | 
					            application/json:
 | 
				
			||||||
 | 
					              schema:
 | 
				
			||||||
 | 
					                allOf:
 | 
				
			||||||
 | 
					                - $ref: '#/components/schemas/JsonSuccess'
 | 
				
			||||||
 | 
					                - properties:
 | 
				
			||||||
 | 
					                    subscription_data:
 | 
				
			||||||
 | 
					                      type: array
 | 
				
			||||||
 | 
					                      items:
 | 
				
			||||||
 | 
					                        type: object
 | 
				
			||||||
 | 
					                      description: The same `subscription_data` object sent
 | 
				
			||||||
 | 
					                        by the client for the request.
 | 
				
			||||||
 | 
					                - example:
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "subscription_data": [
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                "property": "pin_to_top",
 | 
				
			||||||
 | 
					                                "value": true,
 | 
				
			||||||
 | 
					                                "stream_id": 1
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                "property": "color",
 | 
				
			||||||
 | 
					                                "value": 'f00',
 | 
				
			||||||
 | 
					                                "stream_id": 3
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                        "result": "success",
 | 
				
			||||||
 | 
					                        "msg": ""
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
  /realm/filters:
 | 
					  /realm/filters:
 | 
				
			||||||
    get:
 | 
					    get:
 | 
				
			||||||
      description: Fetch all the filters set up for the user's organization.
 | 
					      description: Fetch all the filters set up for the user's organization.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user