Discourse
At Discourse, our mission is to democratize online community and teamwork by raising the standard of civilized discourse on the Internet. We achieve this through delivering the best community and forum software. The Discourse API exposes administrative and content endpoints for categories, topics, posts, users, groups, tags, uploads, badges, and more.
1 APIs
0 Features
CommunitiesForumsOpen Source
APIs
Discourse API
The Discourse API exposes the full set of REST endpoints used to manage a Discourse forum, including categories, topics, posts, users, groups, tags, badges, uploads, search, sit...
Collections
Pricing Plans
Rate Limits
FinOps
Discourse Finops
FINOPSResources
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Community
Community
🔗
Plans
Plans
📰
Blog
Blog
🔗
Plugins
Plugins
👥
GitHubRepo
GitHubRepo
👥
GitHubOrg
GitHubOrg
📜
PrivacyPolicy
PrivacyPolicy
📜
TermsOfService
TermsOfService
🟢
StatusPage
StatusPage
💬
Support
Support
Sources
opencollection: 1.0.0
info:
name: Discourse API Documentation
version: latest
items:
- info:
name: Discourse Calendar - Events
type: folder
items:
- info:
name: List calendar events
type: http
http:
method: GET
url: https://{defaultHost}/discourse-post-event/events.json
params:
- name: include_details
value: ''
type: query
description: 'Include detailed event information (creator, invitees, stats,
etc.)'
- name: category_id
value: ''
type: query
description: Filter events by category ID
- name: include_subcategories
value: ''
type: query
description: Include events from subcategories when filtering by category
- name: post_id
value: ''
type: query
description: Filter to events associated with a specific post ID
- name: attending_user
value: ''
type: query
description: 'Filter to events where the specified user (username) has RSVP''d
as going'
- name: before
value: ''
type: query
description: Return events starting before this date/time (ISO 8601 format)
- name: after
value: ''
type: query
description: Return events starting after this date/time (ISO 8601 format)
- name: order
value: ''
type: query
description: 'Sort order for events by start date (default: asc)'
- name: limit
value: ''
type: query
description: 'Maximum number of events to return (default: 200)'
docs: List calendar events
- info:
name: Export calendar events in iCalendar format
type: http
http:
method: GET
url: https://{defaultHost}/discourse-post-event/events.ics
params:
- name: category_id
value: ''
type: query
description: Filter events by category ID
- name: include_subcategories
value: ''
type: query
description: Include events from subcategories when filtering by category
- name: attending_user
value: ''
type: query
description: 'Filter to events where the specified user (username) has RSVP''d
as going'
- name: before
value: ''
type: query
description: Return events starting before this date/time (ISO 8601 format)
- name: after
value: ''
type: query
description: Return events starting after this date/time (ISO 8601 format)
- name: order
value: ''
type: query
description: 'Sort order for events by start date (default: asc)'
- name: limit
value: ''
type: query
description: 'Maximum number of events to return (default: 200)'
docs: Export calendar events in iCalendar format
- info:
name: Backups
type: folder
items:
- info:
name: List backups
type: http
http:
method: GET
url: https://{defaultHost}/admin/backups.json
docs: List backups
- info:
name: Create backup
type: http
http:
method: POST
url: https://{defaultHost}/admin/backups.json
body:
type: json
data: '{}'
docs: Create backup
- info:
name: Download backup
type: http
http:
method: GET
url: https://{defaultHost}/admin/backups/:filename
params:
- name: filename
value: ''
type: path
- name: token
value: ''
type: query
docs: Download backup
- info:
name: Send download backup email
type: http
http:
method: PUT
url: https://{defaultHost}/admin/backups/:filename
params:
- name: filename
value: ''
type: path
docs: Send download backup email
- info:
name: Badges
type: folder
items:
- info:
name: List badges
type: http
http:
method: GET
url: https://{defaultHost}/admin/badges.json
docs: List badges
- info:
name: Create badge
type: http
http:
method: POST
url: https://{defaultHost}/admin/badges.json
body:
type: json
data: '{}'
docs: Create badge
- info:
name: Update badge
type: http
http:
method: PUT
url: https://{defaultHost}/admin/badges/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update badge
- info:
name: Delete badge
type: http
http:
method: DELETE
url: https://{defaultHost}/admin/badges/:id.json
params:
- name: id
value: ''
type: path
docs: Delete badge
- info:
name: List badges for a user
type: http
http:
method: GET
url: https://{defaultHost}/user-badges/:username.json
params:
- name: username
value: ''
type: path
docs: List badges for a user
- info:
name: Categories
type: folder
items:
- info:
name: Retrieves a list of categories
type: http
http:
method: GET
url: https://{defaultHost}/categories.json
params:
- name: include_subcategories
value: ''
type: query
docs: Retrieves a list of categories
- info:
name: Creates a category
type: http
http:
method: POST
url: https://{defaultHost}/categories.json
body:
type: json
data: '{}'
docs: Creates a category
- info:
name: Updates a category
type: http
http:
method: PUT
url: https://{defaultHost}/categories/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Updates a category
- info:
name: List topics
type: http
http:
method: GET
url: https://{defaultHost}/c/:slug/:id.json
params:
- name: slug
value: ''
type: path
- name: id
value: ''
type: path
docs: List topics
- info:
name: Show category
type: http
http:
method: GET
url: https://{defaultHost}/c/:id/show.json
params:
- name: id
value: ''
type: path
docs: Show category
- info:
name: Groups
type: folder
items:
- info:
name: Create a group
type: http
http:
method: POST
url: https://{defaultHost}/admin/groups.json
body:
type: json
data: '{}'
docs: Create a group
- info:
name: Delete a group
type: http
http:
method: DELETE
url: https://{defaultHost}/admin/groups/:id.json
params:
- name: id
value: ''
type: path
docs: Delete a group
- info:
name: Get a group
type: http
http:
method: GET
url: https://{defaultHost}/groups/:name.json
params:
- name: name
value: name
type: path
description: Use group name instead of id
docs: Get a group
- info:
name: Update a group
type: http
http:
method: PUT
url: https://{defaultHost}/groups/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update a group
- info:
name: Get a group by id
type: http
http:
method: GET
url: https://{defaultHost}/groups/by-id/:id.json
params:
- name: id
value: name
type: path
description: Use group name instead of id
docs: Get a group by id
- info:
name: List group members
type: http
http:
method: GET
url: https://{defaultHost}/groups/:name/members.json
params:
- name: name
value: name
type: path
description: Use group name instead of id
docs: List group members
- info:
name: Add group members
type: http
http:
method: PUT
url: https://{defaultHost}/groups/:id/members.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Add group members
- info:
name: Remove group members
type: http
http:
method: DELETE
url: https://{defaultHost}/groups/:id/members.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Remove group members
- info:
name: List groups
type: http
http:
method: GET
url: https://{defaultHost}/groups.json
docs: List groups
- info:
name: Invites
type: folder
items:
- info:
name: Create an invite
type: http
http:
method: POST
url: https://{defaultHost}/invites.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
body:
type: json
data: '{}'
docs: Create an invite
- info:
name: Create multiple invites
type: http
http:
method: POST
url: https://{defaultHost}/invites/create-multiple.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
body:
type: json
data: '{}'
docs: Create multiple invites
- info:
name: Notifications
type: folder
items:
- info:
name: Get the notifications that belong to the current user
type: http
http:
method: GET
url: https://{defaultHost}/notifications.json
docs: Get the notifications that belong to the current user
- info:
name: Mark notifications as read
type: http
http:
method: PUT
url: https://{defaultHost}/notifications/mark-read.json
body:
type: json
data: '{}'
docs: Mark notifications as read
- info:
name: Posts
type: folder
items:
- info:
name: List latest posts across topics
type: http
http:
method: GET
url: https://{defaultHost}/posts.json
params:
- name: before
value: ''
type: query
description: Load posts with an id lower than this value. Useful for pagination.
docs: List latest posts across topics
- info:
name: Creates a new topic, a new post, or a private message
type: http
http:
method: POST
url: https://{defaultHost}/posts.json
body:
type: json
data: '{}'
docs: Creates a new topic, a new post, or a private message
- info:
name: Retrieve a single post
type: http
http:
method: GET
url: https://{defaultHost}/posts/:id.json
params:
- name: id
value: ''
type: path
docs: 'This endpoint can be used to get the number of likes on a post using the
`actions_summary` property in the response. `actions_summary` responses
with the id of `2` signify a `like`. If there are no `actions_summary`
items with the id of `2`, that means there are 0 likes. Other ids likely
refer to various different flag types.
'
- info:
name: Update a single post
type: http
http:
method: PUT
url: https://{defaultHost}/posts/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update a single post
- info:
name: delete a single post
type: http
http:
method: DELETE
url: https://{defaultHost}/posts/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: delete a single post
- info:
name: List replies to a post
type: http
http:
method: GET
url: https://{defaultHost}/posts/:id/replies.json
params:
- name: id
value: ''
type: path
docs: List replies to a post
- info:
name: Lock a post from being edited
type: http
http:
method: PUT
url: https://{defaultHost}/posts/:id/locked.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Lock a post from being edited
- info:
name: Like a post and other actions
type: http
http:
method: POST
url: https://{defaultHost}/post_actions.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
body:
type: json
data: '{}'
docs: Like a post and other actions
- info:
name: Private Messages
type: folder
items:
- info:
name: Get a list of private messages for a user
type: http
http:
method: GET
url: https://{defaultHost}/topics/private-messages/:username.json
params:
- name: username
value: ''
type: path
docs: Get a list of private messages for a user
- info:
name: Get a list of private messages sent for a user
type: http
http:
method: GET
url: https://{defaultHost}/topics/private-messages-sent/:username.json
params:
- name: username
value: ''
type: path
docs: Get a list of private messages sent for a user
- info:
name: Search
type: folder
items:
- info:
name: Search for a term
type: http
http:
method: GET
url: https://{defaultHost}/search.json
params:
- name: q
value: 'api @blake #support tags:api after:2021-06-04 in:unseen in:open
order:latest_topic'
type: query
description: 'The query string needs to be url encoded and is made up of the following options:
- Search term. This is just a string. Usually it would be the first item in the query.
- `@<username>`: Use the `@` followed by the username to specify posts by this user.
- `#<category>`: Use the `#` followed by the category slug to search within this category.
- `tags:`: `api,solved` or for posts that have all the specified tags `api+solved`.
- `before:`: `yyyy-mm-dd`
- `after:`: `yyyy-mm-dd`
- `order:`: `latest`, `likes`, `views`, `latest_topic`
- `assigned:`: username (without `@`)
- `in:`: `title`, `likes`, `personal`, `messages`, `seen`, `unseen`, `posted`, `created`, `watching`, `tracking`,
`bookmarks`, `assigned`, `unassigned`, `first`, `pinned`, `wiki`
- `with:`: `images`
- `status:`: `open`, `closed`, `public`, `archived`, `noreplies`, `single_user`, `solved`, `unsolved`
- `group:`: group_name or group_id
- `group_messages:`: group_name or group_id
- `min_posts:`: 1
- `max_posts:`: 10
- `min_views:`: 1
- `max_views:`: 10
If you are using cURL you can use the `-G` and the `--data-urlencode` flags to encode the query:
```
curl -i -sS -X GET -G "http://localhost:4200/search.json" \
--data-urlencode ''q=wordpress @scossar #fun after:2020-01-01''
```
'
- name: page
value: '1'
type: query
docs: Search for a term
- info:
name: Site
type: folder
items:
- info:
name: Get site info
type: http
http:
method: GET
url: https://{defaultHost}/site.json
docs: Can be used to fetch all categories and subcategories
- info:
name: Get site basic info
type: http
http:
method: GET
url: https://{defaultHost}/site/basic-info.json
docs: Can be used to fetch basic info about a site
- info:
name: Tags
type: folder
items:
- info:
name: Get a list of tag groups
type: http
http:
method: GET
url: https://{defaultHost}/tag_groups.json
docs: Get a list of tag groups
- info:
name: Creates a tag group
type: http
http:
method: POST
url: https://{defaultHost}/tag_groups.json
body:
type: json
data: '{}'
docs: Creates a tag group
- info:
name: Get a single tag group
type: http
http:
method: GET
url: https://{defaultHost}/tag_groups/:id.json
params:
- name: id
value: ''
type: path
docs: Get a single tag group
- info:
name: Update tag group
type: http
http:
method: PUT
url: https://{defaultHost}/tag_groups/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update tag group
- info:
name: Get a list of tags
type: http
http:
method: GET
url: https://{defaultHost}/tags.json
docs: Get a list of tags
- info:
name: Get a specific tag
type: http
http:
method: GET
url: https://{defaultHost}/tag/:name.json
params:
- name: name
value: ''
type: path
docs: Get a specific tag
- info:
name: Topics
type: folder
items:
- info:
name: Get specific posts from a topic
type: http
http:
method: GET
url: https://{defaultHost}/t/:id/posts.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Get specific posts from a topic
- info:
name: Get a single topic
type: http
http:
method: GET
url: https://{defaultHost}/t/:id.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
docs: Get a single topic
- info:
name: Remove a topic
type: http
http:
method: DELETE
url: https://{defaultHost}/t/:id.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
docs: Remove a topic
- info:
name: Update a topic
type: http
http:
method: PUT
url: https://{defaultHost}/t/-/:id.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update a topic
- info:
name: Invite to topic
type: http
http:
method: POST
url: https://{defaultHost}/t/:id/invite.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Invite to topic
- info:
name: Invite group to topic
type: http
http:
method: POST
url: https://{defaultHost}/t/:id/invite-group.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Invite group to topic
- info:
name: Bookmark topic
type: http
http:
method: PUT
url: https://{defaultHost}/t/:id/bookmark.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
docs: Bookmark topic
- info:
name: Update the status of a topic
type: http
http:
method: PUT
url: https://{defaultHost}/t/:id/status.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update the status of a topic
- info:
name: Get the latest topics
type: http
http:
method: GET
url: https://{defaultHost}/latest.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: order
value: ''
type: query
description: 'Enum: `default`, `created`, `activity`, `views`, `posts`, `category`,
`likes`, `op_likes`, `posters`'
- name: ascending
value: ''
type: query
description: Defaults to `desc`, add `ascending=true` to sort asc
- name: per_page
value: ''
type: query
description: Maximum number of topics returned, between 1-100
docs: Get the latest topics
- info:
name: Get the top topics filtered by period
type: http
http:
method: GET
url: https://{defaultHost}/top.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: period
value: ''
type: query
description: 'Enum: `all`, `yearly`, `quarterly`, `monthly`, `weekly`, `daily`'
- name: per_page
value: ''
type: query
description: Maximum number of topics returned, between 1-100
docs: Get the top topics filtered by period
- info:
name: Set notification level
type: http
http:
method: POST
url: https://{defaultHost}/t/:id/notifications.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Set notification level
- info:
name: Update topic timestamp
type: http
http:
method: PUT
url: https://{defaultHost}/t/:id/change-timestamp.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Update topic timestamp
- info:
name: Create topic timer
type: http
http:
method: POST
url: https://{defaultHost}/t/:id/timer.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Create topic timer
- info:
name: Get topic by external_id
type: http
http:
method: GET
url: https://{defaultHost}/t/external_id/:external_id.json
params:
- name: external_id
value: ''
type: path
docs: Get topic by external_id
- info:
name: Uploads
type: folder
items:
- info:
name: Creates an upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads.json
body:
type: multipart-form
data:
- name: type
type: text
value: ''
- name: user_id
type: text
value: ''
- name: synchronous
type: text
value: ''
- name: file
type: text
value: ''
docs: Creates an upload
- info:
name: Initiates a direct external upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads/generate-presigned-put.json
body:
type: json
data: '{}'
docs: 'Direct external uploads bypass the usual method of creating uploads
via the POST /uploads route, and upload directly to an external provider,
which by default is S3. This route begins the process, and will return
a unique identifier for the external upload as well as a presigned URL
which is where the file binary blob should be uploaded to.
Once the upload is complete to the external service, you must call the
POST /complete-external-upload route using the unique identifier returned
by this rou'
- info:
name: Completes a direct external upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads/complete-external-upload.json
body:
type: json
data: '{}'
docs: 'Completes an external upload initialized with /get-presigned-put. The
file will be moved from its temporary location in external storage to
a final destination in the S3 bucket. An Upload record will also be
created in the database in most cases.
If a sha1-checksum was provided in the initial request it will also
be compared with the uploaded file in storage to make sure the same
file was uploaded. The file size will be compared for the same reason.
You must have the correct permissions and CO'
- info:
name: Creates a multipart external upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads/create-multipart.json
body:
type: json
data: '{}'
docs: 'Creates a multipart upload in the external storage provider, storing
a temporary reference to the external upload similar to /get-presigned-put.
You must have the correct permissions and CORS settings configured in your
external provider. We support AWS S3 as the default. See:
https://meta.discourse.org/t/-/210469#s3-multipart-direct-uploads-4.
An external file store must be set up and `enable_direct_s3_uploads` must
be set to true for this endpoint to function.
'
- info:
name: Generates batches of presigned URLs for multipart parts
type: http
http:
method: POST
url: https://{defaultHost}/uploads/batch-presign-multipart-parts.json
body:
type: json
data: '{}'
docs: 'Multipart uploads are uploaded in chunks or parts to individual presigned
URLs, similar to the one generated by /generate-presigned-put. The part
numbers provided must be between 1 and 10000. The total number of parts
will depend on the chunk size in bytes that you intend to use to upload
each chunk. For example a 12MB file may have 2 5MB chunks and a final
2MB chunk, for part numbers 1, 2, and 3.
This endpoint will return a presigned URL for each part number provided,
which you can then use to'
- info:
name: Abort multipart upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads/abort-multipart.json
body:
type: json
data: '{}'
docs: 'This endpoint aborts the multipart upload initiated with /create-multipart.
This should be used when cancelling the upload. It does not matter if parts
were already uploaded into the external storage provider.
You must have the correct permissions and CORS settings configured in your
external provider. We support AWS S3 as the default. See:
https://meta.discourse.org/t/-/210469#s3-multipart-direct-uploads-4.
An external file store must be set up and `enable_direct_s3_uploads` must
be set to t'
- info:
name: Complete multipart upload
type: http
http:
method: POST
url: https://{defaultHost}/uploads/complete-multipart.json
body:
type: json
data: '{}'
docs: 'Completes the multipart upload in the external store, and copies the
file from its temporary location to its final location in the store.
All of the parts must have been uploaded to the external storage provider.
An Upload record will be completed in most cases once the file is copied
to its final location.
You must have the correct permissions and CORS settings configured in your
external provider. We support AWS S3 as the default. See:
https://meta.discourse.org/t/-/210469#s3-multipart-direc'
- info:
name: Users
type: folder
items:
- info:
name: Creates a user
type: http
http:
method: POST
url: https://{defaultHost}/users.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
body:
type: json
data: '{}'
docs: Creates a user
- info:
name: Get a single user by username
type: http
http:
method: GET
url: https://{defaultHost}/u/:username.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: username
value: ''
type: path
docs: Get a single user by username
- info:
name: Update a user
type: http
http:
method: PUT
url: https://{defaultHost}/u/:username.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: username
value: ''
type: path
body:
type: json
data: '{}'
docs: Update a user
- info:
name: Get a user by external_id
type: http
http:
method: GET
url: https://{defaultHost}/u/by-external/:external_id.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: external_id
value: ''
type: path
docs: Get a user by external_id
- info:
name: Get a user by identity provider external ID
type: http
http:
method: GET
url: https://{defaultHost}/u/by-external/:provider/:external_id.json
headers:
- name: Api-Key
value: ''
- name: Api-Username
value: ''
params:
- name: provider
value: ''
type: path
description: 'Authentication provider name. Can be found in the provider callback
URL: `/auth/{provider}/callback`'
- name: external_id
value: ''
type: path
docs: Get a user by identity provider external ID
- info:
name: Update avatar
type: http
http:
method: PUT
url: https://{defaultHost}/u/:username/preferences/avatar/pick.json
params:
- name: username
value: ''
type: path
body:
type: json
data: '{}'
docs: Update avatar
- info:
name: Update email
type: http
http:
method: PUT
url: https://{defaultHost}/u/:username/preferences/email.json
params:
- name: username
value: ''
type: path
body:
type: json
data: '{}'
docs: Update email
- info:
name: Update username
type: http
http:
method: PUT
url: https://{defaultHost}/u/:username/preferences/username.json
params:
- name: username
value: ''
type: path
body:
type: json
data: '{}'
docs: Update username
- info:
name: Get a public list of users
type: http
http:
method: GET
url: https://{defaultHost}/directory_items.json
params:
- name: period
value: ''
type: query
- name: order
value: ''
type: query
- name: asc
value: ''
type: query
- name: page
value: ''
type: query
docs: Get a public list of users
- info:
name: Get a user by id
type: http
http:
method: GET
url: https://{defaultHost}/admin/users/:id.json
params:
- name: id
value: ''
type: path
docs: Get a user by id
- info:
name: Delete a user
type: http
http:
method: DELETE
url: https://{defaultHost}/admin/users/:id.json
params:
- name: id
value: ''
type: path
body:
type: json
data: '{}'
docs: Delete a user
- info:
name: Activate a user
type: http
http:
method: PUT
url: https://{defaultHost}/admin/users/:id/activate.json
params:
- name: id
value: ''
type: path
docs: Activate a user
- info:
name: Deactivate a user
type: http
http:
method: PUT
url: https://{defaultHost}/admin/users/:id/deactivate.json
params:
- name: id
value: ''
type: path
docs: Deactivate a user
- info:
name: Suspend a user
type: http
http:
method: PUT
url: https://{defaultHost}/admin/users/:id/suspend.json
params:
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/discourse/refs/heads/main/apis.yml