Zulip drafts API
The drafts API from Zulip — 4 operation(s) for drafts.
The drafts API from Zulip — 4 operation(s) for drafts.
openapi: 3.0.1
info:
version: 1.0.0
title: Zulip REST authentication drafts API
description: 'Powerful open source group chat
'
contact:
url: https://zulip.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://{subdomain}.zulipchat.com/api/v1
variables:
subdomain:
default: example
- url: '{server}/api/v1'
variables:
server:
default: https://
- url: https://chat.zulip.org/api/v1
- url: http://localhost:9991/api/v1
- url: http://{subdomain}.testserver/json
security:
- basicAuth: []
tags:
- name: drafts
paths:
/drafts:
get:
operationId: get-drafts
tags:
- drafts
summary: Get drafts
description: 'Fetch all drafts for the current user.
'
responses:
'200':
description: Success.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/JsonSuccessBase'
- additionalProperties: false
properties:
result: {}
msg: {}
ignored_parameters_unsupported: {}
count:
type: integer
description: 'The number of drafts the user currently has. Also the
number of drafts returned under "drafts".
'
example: 3
drafts:
type: array
description: 'Returns all of the current user''s drafts, in order of last edit time
(with the most recently edited draft appearing first).
'
items:
$ref: '#/components/schemas/Draft'
example:
result: success
msg: ''
count: 3
drafts:
- id: 1
type: stream
to:
- 3
topic: sync drafts
content: Let's add backend support for syncing drafts.
timestamp: 1595479019
- id: 2
type: private
to:
- 4
topic: ''
content: What if we made it possible to sync drafts in Zulip?
timestamp: 1595479019
- id: 3
type: private
to:
- 4
- 10
topic: ''
content: What if we made it possible to sync drafts in Zulip?
timestamp: 1595479019
post:
operationId: create-drafts
tags:
- drafts
summary: Create drafts
description: 'Create one or more drafts on the server. These drafts will be automatically
synchronized to other clients via `drafts` events.
'
requestBody:
required: false
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
drafts:
description: 'A JSON-encoded list of containing new draft objects.
'
type: array
items:
$ref: '#/components/schemas/Draft'
example:
- type: stream
to:
- 1
topic: questions
content: What are the contribution guidelines for this project?
timestamp: 1595479019
encoding:
drafts:
contentType: application/json
responses:
'200':
description: Success.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/JsonSuccessBase'
- additionalProperties: false
properties:
result: {}
msg: {}
ignored_parameters_unsupported: {}
ids:
type: array
description: 'An array of the IDs for the drafts that were just created in the same
order as they were submitted.
'
items:
type: integer
example:
result: success
msg: ''
ids:
- 1
- 2
- 3
'400':
description: Bad request.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- description: 'JSON response for when a draft targeted towards a channel does not specify
exactly one channel ID:
'
example:
code: BAD_REQUEST
msg: Must specify exactly 1 channel ID for channel messages
result: error
/drafts/{draft_id}:
patch:
operationId: edit-draft
tags:
- drafts
summary: Edit a draft
description: 'Edit a draft on the server. The edit will be automatically
synchronized to other clients via `drafts` events.
'
parameters:
- name: draft_id
in: path
schema:
type: integer
description: 'The ID of the draft to be edited.
'
required: true
example: 2
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
draft:
allOf:
- $ref: '#/components/schemas/Draft'
- description: 'A JSON-encoded object containing a replacement draft object for this ID.
'
example:
type: stream
to:
- 1
topic: questions
content: how tough is a Lamy Safari?
timestamp: 1595479019
required:
- draft
encoding:
draft:
contentType: application/json
responses:
'200':
$ref: '#/components/responses/SimpleSuccess'
'404':
description: Not Found.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- description: 'A typical failed JSON response for when no draft exists with
the provided ID:
'
example:
code: BAD_REQUEST
result: error
msg: Draft does not exist
delete:
operationId: delete-draft
tags:
- drafts
summary: Delete a draft
description: 'Delete a single draft from the server. The deletion will be automatically
synchronized to other clients via a `drafts` event.
'
parameters:
- name: draft_id
in: path
schema:
type: integer
description: 'The ID of the draft you want to delete.
'
required: true
example: 1
responses:
'200':
$ref: '#/components/responses/SimpleSuccess'
'404':
description: Not Found.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- description: 'A typical failed JSON response for when no draft exists with
the provided ID:
'
example:
code: BAD_REQUEST
result: error
msg: Draft does not exist
/saved_snippets:
get:
operationId: get-saved-snippets
tags:
- drafts
summary: Get all saved snippets
description: 'Fetch all the saved snippets for the current user.
**Changes**: New in Zulip 10.0 (feature level 297).
'
responses:
'200':
description: Success.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/JsonSuccessBase'
- additionalProperties: false
properties:
result: {}
msg: {}
ignored_parameters_unsupported: {}
saved_snippets:
type: array
description: 'An array of dictionaries containing data on all of the current user''s
saved snippets.
'
items:
$ref: '#/components/schemas/SavedSnippet'
example:
result: success
msg: ''
saved_snippets:
- id: 1
title: Example
content: Welcome to the organization.
date_created: 1681662420
post:
operationId: create-saved-snippet
tags:
- drafts
summary: Create a saved snippet
description: 'Create a new saved snippet for the current user.
**Changes**: New in Zulip 10.0 (feature level 297).
'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
title:
type: string
description: 'The title of the saved snippet.
'
example: Example title
content:
type: string
description: 'The content of the saved snippet in [Zulip-flavored Markdown](/help/format-your-message-using-markdown) format.
Clients should insert this content into a message when using
a saved snippet.
'
example: Welcome to the organization.
required:
- title
- content
responses:
'200':
description: Success.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/JsonSuccessBase'
- additionalProperties: false
properties:
result: {}
msg: {}
ignored_parameters_unsupported: {}
saved_snippet_id:
type: integer
description: 'The unique ID of the saved snippet created.
'
example:
result: success
msg: ''
saved_snippet_id: 1
'400':
description: Bad request.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- example:
code: BAD_REQUEST
msg: Title cannot be empty.
result: error
description: 'A typical failed JSON response for when either title or content is
empty:
'
/saved_snippets/{saved_snippet_id}:
patch:
operationId: edit-saved-snippet
tags:
- drafts
summary: Edit a saved snippet
description: 'Edit a saved snippet for the current user.
**Changes**: New in Zulip 10.0 (feature level 368).
'
parameters:
- name: saved_snippet_id
in: path
schema:
type: integer
description: 'The ID of the saved snippet to edit.
'
required: true
example: 3
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
title:
type: string
description: 'The title of the saved snippet.
'
example: Welcome message
content:
type: string
description: 'The content of the saved snippet in the original [Zulip-flavored Markdown](/help/format-your-message-using-markdown) format.
Clients should insert this content into a message when using
a saved snippet.
'
example: Welcome to the organization.
responses:
'200':
$ref: '#/components/responses/SimpleSuccess'
'404':
description: Not Found.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- description: 'A typical failed JSON response for when no saved snippet exists
with the provided ID:
'
example:
code: BAD_REQUEST
result: error
msg: Saved snippet does not exist.
delete:
operationId: delete-saved-snippet
tags:
- drafts
summary: Delete a saved snippet
description: 'Delete a saved snippet.
**Changes**: New in Zulip 10.0 (feature level 297).
'
parameters:
- name: saved_snippet_id
in: path
schema:
type: integer
description: 'The ID of the saved snippet to delete.
'
required: true
example: 2
responses:
'200':
$ref: '#/components/responses/SimpleSuccess'
'404':
description: Not Found.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/CodedError'
- description: 'A typical failed JSON response for when no saved snippet exists
with the provided ID:
'
example:
code: BAD_REQUEST
result: error
msg: Saved snippet does not exist.
components:
schemas:
JsonSuccessBase:
description: '**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`][ignored_params] array.
A typical successful JSON response may look like:
[ignored_params]: /api/rest-error-handling#ignored-parameters
'
allOf:
- $ref: '#/components/schemas/JsonResponseBase'
- required:
- result
- msg
properties:
result:
enum:
- success
msg:
type: string
ignored_parameters_unsupported:
$ref: '#/components/schemas/IgnoredParametersUnsupported'
SavedSnippet:
type: object
description: 'Object containing the details of the saved snippet.
'
additionalProperties: false
properties:
id:
type: integer
description: 'The unique ID of the saved snippet.
'
title:
type: string
description: 'The title of the saved snippet.
'
content:
type: string
description: 'The content of the saved snippet in [Zulip-flavored Markdown](/help/format-your-message-using-markdown) format.
Clients should insert this content into a message when using
a saved snippet.
'
date_created:
type: integer
description: 'The UNIX timestamp for when the saved snippet was created, in
UTC seconds.
'
JsonSuccess:
allOf:
- $ref: '#/components/schemas/JsonSuccessBase'
- additionalProperties: false
properties:
result: {}
msg: {}
ignored_parameters_unsupported: {}
example:
msg: ''
result: success
IgnoredParametersUnsupported:
type: array
items:
type: string
description: 'An array of any parameters sent in the request that are not
supported by the endpoint.
See [error handling](/api/rest-error-handling#ignored-parameters) documentation
for details on this and its change history.
'
JsonResponseBase:
type: object
properties:
result:
type: string
Draft:
type: object
description: 'A dictionary for representing a message draft.
'
properties:
id:
type: integer
readOnly: true
description: 'The unique ID of the draft.
'
type:
type: string
description: 'The type of the draft. Either unaddressed (empty string), `"stream"`,
or `"private"` (for one-on-one and group direct messages).
'
enum:
- ''
- stream
- private
to:
type: array
description: 'An array of the tentative target audience IDs. For channel
messages, this should contain exactly 1 ID, the ID of the
target channel. For direct messages, this should be an array
of target user IDs. For unaddressed drafts, this is ignored,
and clients should send an empty array.
'
items:
type: integer
topic:
type: string
description: 'For channel message drafts, the tentative topic name. For direct
or unaddressed messages, this will be ignored and should ideally
be the empty string. Should not contain null bytes.
'
content:
type: string
description: 'The body of the draft. Should not contain null bytes.
'
timestamp:
type: integer
description: 'A Unix timestamp (seconds only) representing when the draft was
last edited. When creating a draft, this key need not be present
and it will be filled in automatically by the server.
'
example: 1595479019
additionalProperties: false
required:
- type
- to
- topic
- content
CodedError:
allOf:
- $ref: '#/components/schemas/CodedErrorBase'
- additionalProperties: false
properties:
result: {}
msg: {}
code: {}
CodedErrorBase:
allOf:
- $ref: '#/components/schemas/JsonResponseBase'
- required:
- result
- msg
- code
properties:
result:
enum:
- error
msg:
type: string
code:
type: string
description: 'A string that identifies the error.
'
responses:
SimpleSuccess:
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/JsonSuccess'
securitySchemes:
BasicAuth:
type: http
scheme: basic
description: 'Basic authentication, with the user''s email as the username, and the API
key as the password. The API key can be fetched using the
`/fetch_api_key` or `/dev_fetch_api_key` endpoints.
'