forums

14 endpoints.

GET/api/forums Bearer token

List forums

Lists the forums the caller may read, by organization and department, then by name — optionally narrowed to one organization or one department within it. A department's forums are read by everyone holding a role in it or in one nested beneath it, and by holders of forums:read, forums:write or forums:moderate over it. Archived forums are left out unless include_archived is true.

Parameters

NameInTypeRequiredDescription
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).
departmentquerystringnoDepartment UUID id or slug, resolved within org (which is then required).
include_archivedquerystringnoInclude archived rows. Defaults to false.

Responses

StatusDescriptionBody
200The readable forums.ForumList
400The department filter was given without an org filter.ErrorResponse
401The access token is missing or invalid.ErrorResponse
404No organization has that id or slug, or the department is not one of its own.ErrorResponse
500The database could not be read.ErrorResponse
POST/api/forums Bearer token

Create a forum

Creates a forum in a department — a department may have several, each for its own kind of conversation. Its name is unique within the department, ignoring case. Requires forums:write over the department.

Request body

application/jsonrequiredCreateForumRequest
FieldTypeRequiredDescription
orgstringyes

Organization UUID id or slug the department belongs to.

at least 1 character

departmentstringyes

UUID id or slug, within the organization, of the department the forum belongs to. Requires forums:write over it.

at least 1 character

namestringyes

Unique within the department, ignoring case.

1–120 characters

descriptionstringno

Omit or send empty for no description.

at most 1000 characters

Responses

StatusDescriptionBody
201The new forum.Forum
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller may read the department's forums but does not hold forums:write over it.ErrorResponse
404No live organization or department has that ref, or the caller cannot read its forums.ErrorResponse
409The department already has a forum of that name.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/forums/{forum_id}/topics Bearer token

List a forum's discussions

Lists the discussions of one forum the caller may read, latest activity first, a page at a time.

Parameters

NameInTypeRequiredDescription
forum_idpathstring (uuid)yesUUID id of the forum.
cursorquerystringnoOpaque cursor from a previous page's next_cursor.
limitqueryintegernoPage size, 1-200. Defaults to 50.

Responses

StatusDescriptionBody
200One page of the forum's discussions.ForumTopicList
400The cursor is invalid.ErrorResponse
401The access token is missing or invalid.ErrorResponse
404No forum the caller may read has that id.ErrorResponse
500The database could not be read.ErrorResponse
POST/api/forums/{forum_id}/topics Bearer token

Start a discussion in a forum

Starts a discussion in a forum, optionally linking up to ten of the organization's live job aids, courses, quizzes and events — each one the caller can open themselves. The caller must take part in the forum's department — hold a role in it or in one nested beneath it, or forums:moderate over it — and the forum must be open.

Parameters

NameInTypeRequiredDescription
forum_idpathstring (uuid)yesUUID id of the forum.

Request body

application/jsonrequiredCreateForumTopicRequest
FieldTypeRequiredDescription
titlestringyes

1–200 characters

body_markdownstringyes

The opening post. Markdown (GitHub-flavoured: tables, task lists, strikethrough). Stored as written and rendered sanitized: raw HTML is dropped, links may only use http, https or mailto, and images show as links.

1–20000 characters

resourcesarray of ForumResourceRefno

Up to 10 of the organization's live job aids, courses, quizzes and events to link, in order — each one the caller can open themselves.

at most 10 items

Responses

StatusDescriptionBody
201The new discussion.ForumTopic
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller may read the forum (forums:read or forums:write) but not take part in it.ErrorResponse
404No forum the caller may read has that id, or a linked resource is not one they can open.ErrorResponse
409The forum is archived.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/forums/{forum_id} Bearer token

Read one forum

Reads a forum — its department, description, how many discussions it holds and when one last moved — and what the caller may do to it. Its discussions are listed through GET /forums/{forum_id}/topics.

Parameters

NameInTypeRequiredDescription
forum_idpathstring (uuid)yesUUID id of the forum.

Responses

StatusDescriptionBody
200The forum.Forum
401The access token is missing or invalid.ErrorResponse
404No forum the caller may read has that id.ErrorResponse
500The database could not be read.ErrorResponse
PATCH/api/forums/{forum_id} Bearer token

Rename, describe, archive or restore a forum

Changes a forum's name or description, or archives it — its discussions stay readable, but nobody posts, replies or edits until it is restored. Requires forums:write over its department.

Parameters

NameInTypeRequiredDescription
forum_idpathstring (uuid)yesUUID id of the forum.

Request body

application/jsonrequiredUpdateForumRequest
FieldTypeRequiredDescription
namestringno

Unique within the department, ignoring case.

1–120 characters

descriptionstring | nullno

Send null or empty to clear the description.

at most 1000 characters

archivedbooleanno

True archives the forum — its discussions stay readable, but nobody posts, replies or edits; false restores it.

Responses

StatusDescriptionBody
200The forum, as changed.Forum
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller does not hold forums:write over the forum's department.ErrorResponse
404No forum the caller may read has that id.ErrorResponse
409The department already has a forum of that name.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/forums/{forum_id} Bearer token

Delete a forum

Permanently deletes a forum with every discussion, reply and link in it. Archiving (PATCH) is the reversible way to close one. Requires forums:delete over its department.

Parameters

NameInTypeRequiredDescription
forum_idpathstring (uuid)yesUUID id of the forum.

Responses

StatusDescriptionBody
204The forum and everything in it are gone.—
401The access token is missing or invalid.ErrorResponse
403The caller does not hold forums:delete over the forum's department.ErrorResponse
404No forum the caller may read has that id.ErrorResponse
500The database could not be reached, or the delete failed.ErrorResponse
PATCH/api/forum-topics/{topic_id}/moderation Bearer token

Pin or lock a forum discussion

Pins a discussion to the top of its forum or unpins it, and locks it — only moderators may then reply, and nobody may edit — or unlocks it. Requires forums:moderate over the discussion's department.

Parameters

NameInTypeRequiredDescription
topic_idpathstring (uuid)yesUUID id of the discussion.

Request body

application/jsonrequiredForumTopicModerationRequest
FieldTypeRequiredDescription
pinnedbooleanno

True pins the discussion to the top of its board; false unpins it.

lockedbooleanno

True locks the discussion — only moderators may reply, nobody may edit; false unlocks it.

Responses

StatusDescriptionBody
200The discussion, as moderated.ForumTopic
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller does not hold forums:moderate over the forum's department.ErrorResponse
404No discussion the caller may read has that id.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
POST/api/forum-topics/{topic_id}/replies Bearer token

Reply to a forum discussion

Adds a reply to a discussion and moves it to the top of its forum. The caller must take part in the forum's department — a role in it or in one nested beneath it, or forums:moderate over it — and the forum must be open; only moderators may reply to a locked discussion.

Parameters

NameInTypeRequiredDescription
topic_idpathstring (uuid)yesUUID id of the discussion.

Request body

application/jsonrequiredCreateForumReplyRequest
FieldTypeRequiredDescription
body_markdownstringyes

The reply. Markdown (GitHub-flavoured: tables, task lists, strikethrough). Stored as written and rendered sanitized: raw HTML is dropped, links may only use http, https or mailto, and images show as links.

1–10000 characters

Responses

StatusDescriptionBody
201The new reply.ForumReply
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller may read the forum (forums:read or forums:write) but not take part in it.ErrorResponse
404No discussion the caller may read has that id.ErrorResponse
409The forum is archived, or the discussion is locked and the caller does not moderate it.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/forum-topics/{topic_id} Bearer token

Read one forum discussion

Reads a discussion with every reply, oldest first, the linked material the caller may open, and what the caller may do to the discussion and to each reply.

Parameters

NameInTypeRequiredDescription
topic_idpathstring (uuid)yesUUID id of the discussion.

Responses

StatusDescriptionBody
200The discussion.ForumTopic
401The access token is missing or invalid.ErrorResponse
404No discussion the caller may read has that id.ErrorResponse
500The database could not be read.ErrorResponse
PATCH/api/forum-topics/{topic_id} Bearer token

Edit a forum discussion

Changes a discussion's title, opening post or linked material, and marks it edited. Only its author may, while they take part in the forum's department and the discussion is unlocked; moderators cannot rewrite what someone else said. New links must be material the author can open; links they cannot open are kept.

Parameters

NameInTypeRequiredDescription
topic_idpathstring (uuid)yesUUID id of the discussion.

Request body

application/jsonrequiredUpdateForumTopicRequest
FieldTypeRequiredDescription
titlestringno

1–200 characters

body_markdownstringno

The opening post. Markdown (GitHub-flavoured: tables, task lists, strikethrough). Stored as written and rendered sanitized: raw HTML is dropped, links may only use http, https or mailto, and images show as links.

1–20000 characters

resourcesarray of ForumResourceRefno

The links, replacing the current ones. Links to material the caller cannot open themselves are kept whatever is sent, since they cannot see them to decide.

at most 10 items

Responses

StatusDescriptionBody
200The edited discussion.ForumTopic
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller is not the discussion's author, or no longer takes part in the forum's department.ErrorResponse
404No discussion the caller may read has that id, or a linked resource is not one they can open.ErrorResponse
409The discussion is locked, or the forum archived.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/forum-topics/{topic_id} Bearer token

Delete a forum discussion

Permanently deletes a discussion with every reply and link. Holders of forums:delete over its department may delete any discussion; its author may delete it until someone else has replied.

Parameters

NameInTypeRequiredDescription
topic_idpathstring (uuid)yesUUID id of the discussion.

Responses

StatusDescriptionBody
204The discussion and its replies are gone.—
401The access token is missing or invalid.ErrorResponse
403The caller is neither its author nor a holder of forums:delete over the forum's department.ErrorResponse
404No discussion the caller may read has that id.ErrorResponse
409The caller is its author, but other people have replied to it.ErrorResponse
500The database could not be reached, or the delete failed.ErrorResponse
PATCH/api/forum-replies/{reply_id} Bearer token

Edit a forum reply

Replaces a reply's text and marks it edited. Only its author may, while they take part in the forum's department, the discussion is unlocked and the forum open.

Parameters

NameInTypeRequiredDescription
reply_idpathstring (uuid)yesUUID id of the reply.

Request body

application/jsonrequiredUpdateForumReplyRequest
FieldTypeRequiredDescription
body_markdownstringyes

The reply. Markdown (GitHub-flavoured: tables, task lists, strikethrough). Stored as written and rendered sanitized: raw HTML is dropped, links may only use http, https or mailto, and images show as links.

1–10000 characters

Responses

StatusDescriptionBody
200The edited reply.ForumReply
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller is not the reply's author, or no longer takes part in the forum's department.ErrorResponse
404No reply the caller may read has that id.ErrorResponse
409The discussion is locked, or the forum archived.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/forum-replies/{reply_id} Bearer token

Delete a forum reply

Permanently deletes a reply. Its author may, and so may holders of forums:delete over the discussion's department.

Parameters

NameInTypeRequiredDescription
reply_idpathstring (uuid)yesUUID id of the reply.

Responses

StatusDescriptionBody
204The reply is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller is neither its author nor a holder of forums:delete over the forum's department.ErrorResponse
404No reply the caller may read has that id.ErrorResponse
500The database could not be reached, or the delete failed.ErrorResponse