diff --git a/templates/zerver/api/delete-message.md b/templates/zerver/api/delete-message.md index 5eaafa2fd7..f2fd6ab0d2 100644 --- a/templates/zerver/api/delete-message.md +++ b/templates/zerver/api/delete-message.md @@ -2,7 +2,7 @@ Permanently delete a message. -`DELETE {{ api_url }}/v1/messages/` +`DELETE {{ api_url }}/v1/messages/{msg_id}` This API corresponds to the [delete a message completely][delete-completely] feature documented in diff --git a/templates/zerver/api/get-message-history.md b/templates/zerver/api/get-message-history.md index e75c84e511..e66db63367 100644 --- a/templates/zerver/api/get-message-history.md +++ b/templates/zerver/api/get-message-history.md @@ -2,7 +2,7 @@ Fetch the message edit history of a previously edited message. -`GET {{ api_url }}/v1/messages//history` +`GET {{ api_url }}/v1/messages/{message_id}/history` Note that edit history may be disabled in some organizations; see the [Zulip Help Center documentation on editing messages][edit-settings]. @@ -19,7 +19,7 @@ Note that edit history may be disabled in some organizations; see the {tab|curl} ``` curl -curl -X GET {{ api_url }}/v1/messages//history \ +curl -X GET {{ api_url }}/v1/messages/{message_id}/history \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY ``` diff --git a/templates/zerver/api/get-presence.md b/templates/zerver/api/get-presence.md index d17b87a089..09deb1a4b9 100644 --- a/templates/zerver/api/get-presence.md +++ b/templates/zerver/api/get-presence.md @@ -8,7 +8,7 @@ Zulip clients like mobile/desktop apps will want to use the main presence endpoint, which returns data for all active users in the organization, instead. -`GET {{ api_url }}/v1/users//presence` +`GET {{ api_url }}/v1/users/{email}/presence` See [Zulip's developer documentation](https://zulip.readthedocs.io/en/latest/subsystems/presence.html) @@ -24,7 +24,7 @@ for details on the data model for presence in Zulip. {tab|curl} ``` curl -curl -X GET {{ api_url }}/v1/users//presence \ +curl -X GET {{ api_url }}/v1/users/{email}/presence \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY ``` @@ -40,7 +40,7 @@ curl -X GET {{ api_url }}/v1/users//presence \ * `presence`: An object containing the presence details for every type of client the user has ever logged into. - * `` or `aggregated`: the keys for these objects are + * `{client_name}` or `aggregated`: the keys for these objects are the names of the different clients where this user is logged in, like `website`, `ZulipDesktop`, `ZulipTerminal`, or `ZulipMobile`. There is also an `aggregated` key, which matches diff --git a/templates/zerver/api/get-raw-message.md b/templates/zerver/api/get-raw-message.md index fe91ce10c4..e1d58dba74 100644 --- a/templates/zerver/api/get-raw-message.md +++ b/templates/zerver/api/get-raw-message.md @@ -2,7 +2,7 @@ Get the raw content of a message. -`GET {{ api_url }}/v1/messages/` +`GET {{ api_url }}/v1/messages/{msg_id}` This is a rarely-used endpoint relevant for clients that primarily work with HTML-rendered messages but might need to occasionally fetch @@ -19,7 +19,7 @@ UI). {tab|curl} ``` curl -curl -X GET {{ api_url }}/v1/messages/ \ +curl -X GET {{ api_url }}/v1/messages/{msg_id} \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY \ ``` diff --git a/templates/zerver/api/get-stream-topics.md b/templates/zerver/api/get-stream-topics.md index f0a8f6bd93..91466d5caf 100644 --- a/templates/zerver/api/get-stream-topics.md +++ b/templates/zerver/api/get-stream-topics.md @@ -2,7 +2,7 @@ Get all the topics in a specific stream -`GET {{ api_url }}/v1/users/me//topics` +`GET {{ api_url }}/v1/users/me/{stream_id}/topics` ## Usage examples @@ -32,7 +32,7 @@ zulip(config).then((client) => { {tab|curl} ``` curl -curl -X GET {{ api_url }}/v1/users/me//topics \ +curl -X GET {{ api_url }}/v1/users/me/{stream_id}/topics \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY ``` diff --git a/templates/zerver/api/remove-linkifiers.md b/templates/zerver/api/remove-linkifiers.md index 5dbe97d0ad..e564e8f8d7 100644 --- a/templates/zerver/api/remove-linkifiers.md +++ b/templates/zerver/api/remove-linkifiers.md @@ -4,19 +4,19 @@ Remove [linkifiers](/help/add-a-custom-linkification-filter), regular expression patterns that are automatically linkified when they appear in messages and topics. -`DELETE {{ api_url }}/v1/realm/filters/` +`DELETE {{ api_url }}/v1/realm/filters/{filter_id}` ## Usage examples {start_tabs} {tab|python} -{generate_code_example(python)|/realm/filters/:delete|example} +{generate_code_example(python)|/realm/filters/{filter_id}:delete|example} {tab|curl} ``` curl -curl -X DELETE {{ api_url }}/v1/realm/filters/ \ +curl -X DELETE {{ api_url }}/v1/realm/filters/{filter_id} \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY ``` @@ -24,7 +24,7 @@ curl -X DELETE {{ api_url }}/v1/realm/filters/ \ ## Arguments -{generate_api_arguments_table|zulip.yaml|/realm/filters/:delete} +{generate_api_arguments_table|zulip.yaml|/realm/filters/{filter_id}:delete} ## Response @@ -32,4 +32,4 @@ curl -X DELETE {{ api_url }}/v1/realm/filters/ \ A typical successful JSON response may look like: -{generate_code_example|/realm/filters/:delete|fixture(200)} +{generate_code_example|/realm/filters/{filter_id}:delete|fixture(200)} diff --git a/templates/zerver/api/update-message.md b/templates/zerver/api/update-message.md index 256a68aacc..d476af2665 100644 --- a/templates/zerver/api/update-message.md +++ b/templates/zerver/api/update-message.md @@ -2,9 +2,9 @@ Edit/update the content or topic of a message. -`PATCH {{ api_url }}/v1/messages/` +`PATCH {{ api_url }}/v1/messages/{msg_id}` -`` in the above URL should be replaced with the ID of the +`{msg_id}` in the above URL should be replaced with the ID of the message you wish you update. ## Usage examples @@ -39,7 +39,7 @@ zulip(config).then((client) => { {tab|curl} ``` curl -curl -X "PATCH" {{ api_url }}/v1/messages/ \ +curl -X "PATCH" {{ api_url }}/v1/messages/{msg_id} \ -u BOT_EMAIL_ADDRESS:BOT_API_KEY \ -d $"content=New content" ``` diff --git a/templates/zerver/api/upload-custom-emoji.md b/templates/zerver/api/upload-custom-emoji.md index 8cd91c10dc..b76dfa1b4e 100644 --- a/templates/zerver/api/upload-custom-emoji.md +++ b/templates/zerver/api/upload-custom-emoji.md @@ -4,7 +4,7 @@ This endpoint is used to upload a custom emoji for use in the user's organization. Access to this endpoint depends on the [organization's configuration](https://zulipchat.com/help/only-allow-admins-to-add-emoji). - `POST {{ api_url }}/v1/realm/emoji/` + `POST {{ api_url }}/v1/realm/emoji/{emoji_name}` ## Usage examples @@ -12,12 +12,12 @@ organization. Access to this endpoint depends on the {tab|python} -{generate_code_example(python)|/realm/emoji/:post|example} +{generate_code_example(python)|/realm/emoji/{emoji_name}:post|example} {tab|curl} ``` curl -curl -X POST {{ api_url }}/v1/realm/emoji/ \ +curl -X POST {{ api_url }}/v1/realm/emoji/{emoji_name} \ -F "data=@/path/to/img.png" \ -u USER_EMAIL:API_KEY ``` @@ -51,4 +51,4 @@ to 5MB. A typical successful JSON response may look like: -{generate_code_example|/realm/emoji/:post|fixture(200)} +{generate_code_example|/realm/emoji/{emoji_name}:post|fixture(200)} diff --git a/templates/zerver/api/writing-bots.md b/templates/zerver/api/writing-bots.md index 4bc651d86a..3184825929 100644 --- a/templates/zerver/api/writing-bots.md +++ b/templates/zerver/api/writing-bots.md @@ -460,7 +460,7 @@ following helper method: # self.assert_bot_response(...) `mock_http_conversation(fixture_name)` patches `requests.get` and returns the data specified -in the file `fixtures/.json`. Use the following JSON code as a skeleton for new +in the file `fixtures/{fixture_name}.json`. Use the following JSON code as a skeleton for new fixtures: ``` { diff --git a/zerver/lib/api_test_helpers.py b/zerver/lib/api_test_helpers.py index 59b976aab3..23d7986ae9 100644 --- a/zerver/lib/api_test_helpers.py +++ b/zerver/lib/api_test_helpers.py @@ -195,7 +195,7 @@ def remove_realm_filter(client): result = client.remove_realm_filter(42) # {code_example|end} - validate_against_openapi_schema(result, '/realm/filters/', 'delete', '200') + validate_against_openapi_schema(result, '/realm/filters/{filter_id}', 'delete', '200') def get_profile(client): # type: (Client) -> None @@ -861,7 +861,7 @@ def upload_custom_emoji(client): # {code_example|end} fp.close() validate_against_openapi_schema(result, - '/realm/emoji/', + '/realm/emoji/{emoji_name}', 'post', '200') def get_alert_words(client): @@ -981,10 +981,10 @@ TEST_FUNCTIONS = { '/users/me/subscriptions/properties:post': update_subscription_settings, '/users:get': get_members, '/realm/emoji:get': get_realm_emoji, - '/realm/emoji/:post': upload_custom_emoji, + '/realm/emoji/{emoji_name}:post': upload_custom_emoji, '/realm/filters:get': get_realm_filters, '/realm/filters:post': add_realm_filter, - '/realm/filters/:delete': remove_realm_filter, + '/realm/filters/{filter_id}:delete': remove_realm_filter, '/register:post': register_queue, '/events:delete': deregister_queue, '/server_settings:get': get_server_settings, diff --git a/zerver/openapi/zulip.yaml b/zerver/openapi/zulip.yaml index 9e450a0727..8c40bb0b2b 100644 --- a/zerver/openapi/zulip.yaml +++ b/zerver/openapi/zulip.yaml @@ -1369,7 +1369,7 @@ paths: "msg": "Topic is not muted", "result": "error" } - /realm/emoji/: + /realm/emoji/{emoji_name}: post: description: Upload a single emoji file. parameters: @@ -1568,7 +1568,7 @@ paths: "result": "success", "msg": "" } - /realm/filters/: + /realm/filters/{filter_id}: delete: description: Remove an organization filter. parameters: diff --git a/zerver/tests/test_openapi.py b/zerver/tests/test_openapi.py index 1a6ce7ad2d..298521fec5 100644 --- a/zerver/tests/test_openapi.py +++ b/zerver/tests/test_openapi.py @@ -191,29 +191,29 @@ class OpenAPIArgumentsTest(ZulipTestCase): '/users/me/android_gcm_reg_id', '/users/me/apns_device_token', # Regex based urls - '/realm/domains/', - '/realm/filters/', - '/realm/profile_fields/', - '/users//reactivate', - '/users/', - '/bots//api_key/regenerate', - '/bots/', - '/invites/', - '/invites//resend', - '/invites/multiuse/', + '/realm/domains/{domain}', + '/realm/filters/{filter_id}', + '/realm/profile_fields/{field_id}', + '/users/{user_id}/reactivate', + '/users/{user_id}', + '/bots/{bot_id}/api_key/regenerate', + '/bots/{bot_id}', + '/invites/{prereg_id}', + '/invites/{prereg_id}/resend', + '/invites/multiuse/{invite_id}', '/messages/{message_id}', '/messages/{message_id}/history', '/users/me/subscriptions/{stream_id}', - '/messages//reactions', - '/messages//emoji_reactions/', - '/attachments/', - '/user_groups//members', + '/messages/{message_id}/reactions', + '/messages/{message_id}/emoji_reactions/{emoji_name}', + '/attachments/{attachment_id}', + '/user_groups/{user_group_id}/members', '/users/me/{stream_id}/topics', - '/streams//members', + '/streams/{stream_id}/members', '/streams/{stream_id}', - '/streams//delete_topic', - '/default_stream_groups/', - '/default_stream_groups//streams', + '/streams/{stream_id}/delete_topic', + '/default_stream_groups/{group_id}', + '/default_stream_groups/{group_id}/streams', # Regex with an unnamed capturing group. '/users/(?!me/)(?P[^/]*)/presence', # Actually '/user_groups/' in urls.py but fails the reverse mapping