mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
Some checks are pending
API / build (push) Waiting to run
Server CI / Compute Go Version (push) Waiting to run
Server CI / Check mocks (push) Blocked by required conditions
Server CI / Check go mod tidy (push) Blocked by required conditions
Server CI / check-style (push) Blocked by required conditions
Server CI / Check serialization methods for hot structs (push) Blocked by required conditions
Server CI / Vet API (push) Blocked by required conditions
Server CI / Check migration files (push) Blocked by required conditions
Server CI / Generate email templates (push) Blocked by required conditions
Server CI / Check store layers (push) Blocked by required conditions
Server CI / Check mmctl docs (push) Blocked by required conditions
Server CI / Postgres with binary parameters (push) Blocked by required conditions
Server CI / Postgres (push) Blocked by required conditions
Server CI / Postgres (FIPS) (push) Blocked by required conditions
Server CI / Generate Test Coverage (push) Blocked by required conditions
Server CI / Run mmctl tests (push) Blocked by required conditions
Server CI / Run mmctl tests (FIPS) (push) Blocked by required conditions
Server CI / Build mattermost server app (push) Blocked by required conditions
Web App CI / check-lint (push) Waiting to run
Web App CI / check-i18n (push) Blocked by required conditions
Web App CI / check-types (push) Blocked by required conditions
Web App CI / test (platform) (push) Blocked by required conditions
Web App CI / test (mattermost-redux) (push) Blocked by required conditions
Web App CI / test (channels shard 1/4) (push) Blocked by required conditions
Web App CI / test (channels shard 2/4) (push) Blocked by required conditions
Web App CI / test (channels shard 3/4) (push) Blocked by required conditions
Web App CI / test (channels shard 4/4) (push) Blocked by required conditions
Web App CI / upload-coverage (push) Blocked by required conditions
Web App CI / build (push) Blocked by required conditions
* Add read receipt store for burn on read message types * update mocks * fix invalidation target * have consistent case on index creation * Add temporary posts table * add mock * add transaction support * reflect review comments * wip: Add reveal endpoint * user check error id instead * wip: Add ws events and cleanup for burn on read posts * add burn endpoint for explicitly burning messages * add translations * Added logic to associate files of BoR post with the post * Added test * fixes * disable pinning posts and review comments * MM-66594 - Burn on read UI integration (#34647) * MM-66244 - add BoR visual components to message editor * MM-66246 - BoR visual indicator for sender and receiver * MM-66607 - bor - add timer countdown and autodeletion * add the system console max time to live config * use the max expire at and create global scheduler to register bor messages * use seconds for BoR config values in BE * implement the read by text shown in the tooltip logic * unestack the posts from same receiver and BoR and fix styling * avoid opening reply RHS * remove unused dispatchers * persis the BoR label in the drafts * move expiration value to metadata * adjust unit tests to metadata insted of props * code clean up and some performance improvements; add period grace for deletion too * adjust migration serie number * hide bor messages when config is off * performance improvements on post component and code clean up * keep bor existing post functionality if config is disabled * Add read receipt store for burn on read message types * Add temporary posts table * add transaction support * reflect review comments * wip: Add reveal endpoint * user check error id instead * wip: Add ws events and cleanup for burn on read posts * avoid reacting to unrevealed bor messages * adjust migration number * Add read receipt store for burn on read message types * have consistent case on index creation * Add temporary posts table * add mock * add transaction support * reflect review comments * wip: Add reveal endpoint * user check error id instead * wip: Add ws events and cleanup for burn on read posts * add burn endpoint for explicitly burning messages * adjust post reveal and type with backend changes * use real config values, adjust icon usage and style * adjust the delete from from sender and receiver * improve self deleting logic by placing in badge, use burn endpoint * adjust websocket events handling for the read by sender label information * adjust styling for concealed and error state * update burn-on-read post event handling for improved recipient tracking and multi-device sync * replace burn_on_read with type in database migrations and model * remove burn_on_read metadata from PostMetadata and related structures * Added logic to associate files of BoR post with the post * Added test * adjust migration name and fix linter * Add read receipt store for burn on read message types * update mocks * have consistent case on index creation * Add temporary posts table * add mock * add transaction support * reflect review comments * wip: Add reveal endpoint * user check error id instead * wip: Add ws events and cleanup for burn on read posts * add burn endpoint for explicitly burning messages * Added logic to associate files of BoR post with the post * Added test * disable pinning posts and review comments * show attachment on bor reveal * remove unused translation * Enhance burn-on-read post handling and refine previous post ID retrieval logic * adjust the returning chunk to work with bor messages * read temp post from master db * read from master * show the copy link button to the sender * revert unnecessary check * restore correct json tag * remove unused error handling and clarify burn-on-read comment * improve type safety and use proper selectors * eliminate code duplication in deletion handler * optimize performance and add documentation * delete bor message for sender once all receivers reveal it * add burn on read to scheduled posts * add feature enable check * use master to avoid all read recipients race condition --------- Co-authored-by: Mattermost Build <build@mattermost.com> Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com> * squash migrations into single file * add configuration for the scheduler * don't run messagehasbeenposted hook * remove parallel tests on burn on read * add clean up for closing opened modals from previous tests * simplify delete menu item rendering * add cleanup step to close open modals after each test to prevent pollution * streamline delete button visibility logic for Burn on Read posts * improve reliability of closing post menu and modals by using body ESC key --------- Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com> Co-authored-by: Pablo Vélez <pablovv2012@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
1335 lines
42 KiB
YAML
1335 lines
42 KiB
YAML
/api/v4/posts:
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Create a post
|
|
description: >
|
|
Create a new post in a channel. To create the post as a comment on
|
|
another post, provide `root_id`.
|
|
|
|
##### Permissions
|
|
|
|
Must have `create_post` permission for the channel the post is being created in.
|
|
operationId: CreatePost
|
|
parameters:
|
|
- name: set_online
|
|
in: query
|
|
description: Whether to set the user status as online or not.
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- channel_id
|
|
- message
|
|
properties:
|
|
channel_id:
|
|
type: string
|
|
description: The channel ID to post in
|
|
message:
|
|
type: string
|
|
description: The message contents, can be formatted with Markdown
|
|
root_id:
|
|
type: string
|
|
description: The post ID to comment on
|
|
file_ids:
|
|
type: array
|
|
description: A list of file IDs to associate with the post. Note that
|
|
posts are limited to 5 files maximum. Please use additional
|
|
posts for more files.
|
|
items:
|
|
type: string
|
|
props:
|
|
description: A general JSON property bag to attach to the post
|
|
type: object
|
|
metadata:
|
|
description: A JSON object to add post metadata, e.g the post's priority
|
|
type: object
|
|
properties:
|
|
priority:
|
|
type: object
|
|
description: An object containing the post's priority properties
|
|
properties:
|
|
priority:
|
|
type: string
|
|
description: The priority label of the post, could empty, important, or urgent
|
|
requested_ack:
|
|
type: boolean
|
|
description: Set to true to request for acknowledgements
|
|
description: Post object to create
|
|
required: true
|
|
responses:
|
|
"201":
|
|
description: Post creation successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
/api/v4/posts/ephemeral:
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Create a ephemeral post
|
|
description: >
|
|
Create a new ephemeral post in a channel.
|
|
|
|
##### Permissions
|
|
|
|
Must have `create_post_ephemeral` permission (currently only given to system admin)
|
|
operationId: CreatePostEphemeral
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- user_id
|
|
- post
|
|
properties:
|
|
user_id:
|
|
type: string
|
|
description: The target user id for the ephemeral post
|
|
post:
|
|
type: object
|
|
required:
|
|
- channel_id
|
|
- message
|
|
description: Post object to create
|
|
properties:
|
|
channel_id:
|
|
type: string
|
|
description: The channel ID to post in
|
|
message:
|
|
type: string
|
|
description: The message contents, can be formatted with Markdown
|
|
description: Ephemeral Post object to send
|
|
required: true
|
|
responses:
|
|
"201":
|
|
description: Post creation successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get a post
|
|
description: >
|
|
Get a single post.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in or if the channel is public, have the `read_public_channels` permission for the team.
|
|
operationId: GetPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: ID of the post to get
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: include_deleted
|
|
in: query
|
|
description: Defines if result should include deleted posts, must have 'manage_system' (admin) permission.
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Post retrieval successful
|
|
headers:
|
|
Has-Inaccessible-Posts:
|
|
schema:
|
|
type: boolean
|
|
description: This header is included with the value "true" if the post is past the cloud's plan limit.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
delete:
|
|
tags:
|
|
- posts
|
|
summary: Delete a post
|
|
description: >
|
|
Soft deletes a post, by marking the post as deleted in the database.
|
|
Soft deleted posts will not be returned in post queries.
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in as the user or have `delete_others_posts` permission.
|
|
operationId: DeletePost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: ID of the post to delete
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post deletion successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
put:
|
|
tags:
|
|
- posts
|
|
summary: Update a post
|
|
description: >
|
|
Update a post. Only the fields listed below are updatable, omitted
|
|
fields will be treated as blank.
|
|
|
|
##### Permissions
|
|
|
|
Must have `edit_post` permission for the channel the post is in.
|
|
operationId: UpdatePost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: ID of the post to update
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- id
|
|
properties:
|
|
id:
|
|
description: ID of the post to update
|
|
type: string
|
|
is_pinned:
|
|
description: Set to `true` to pin the post to the channel it is in
|
|
type: boolean
|
|
message:
|
|
description: The message text of the post
|
|
type: string
|
|
has_reactions:
|
|
description: Set to `true` if the post has reactions to it
|
|
type: boolean
|
|
props:
|
|
description: A general JSON property bag to attach to the post
|
|
type: string
|
|
description: Post object that is to be updated
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Post update successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/users/{user_id}/posts/{post_id}/set_unread":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Mark as unread from a post.
|
|
description: >
|
|
Mark a channel as being unread from a given post.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in or if the channel is public, have the `read_public_channels` permission for the team.
|
|
|
|
Must have `edit_other_users` permission if the user is not the one marking the post for himself.
|
|
|
|
|
|
__Minimum server version__: 5.18
|
|
operationId: SetPostUnread
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: User GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post marked as unread successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChannelUnreadAt"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
"/api/v4/posts/{post_id}/patch":
|
|
put:
|
|
tags:
|
|
- posts
|
|
summary: Patch a post
|
|
description: >
|
|
Partially update a post by providing only the fields you want to update.
|
|
Omitted fields will not be updated. The fields that can be updated are
|
|
defined in the request body, all other provided fields will be ignored.
|
|
|
|
##### Permissions
|
|
|
|
Must have the `edit_post` permission.
|
|
operationId: PatchPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
is_pinned:
|
|
description: Set to `true` to pin the post to the channel it is in
|
|
type: boolean
|
|
message:
|
|
description: The message text of the post
|
|
type: string
|
|
file_ids:
|
|
description: The list of files attached to this post
|
|
type: array
|
|
items:
|
|
type: string
|
|
has_reactions:
|
|
description: Set to `true` if the post has reactions to it
|
|
type: boolean
|
|
props:
|
|
description: A general JSON property bag to attach to the post
|
|
type: string
|
|
description: Post object that is to be updated
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Post patch successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}/thread":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get a thread
|
|
description: >
|
|
Get a post and the rest of the posts in the same thread.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in or if the channel is public, have the `read_public_channels` permission for the team.
|
|
operationId: GetPostThread
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: ID of a post in the thread
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: perPage
|
|
in: query
|
|
description: The number of posts per page
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: fromPost
|
|
in: query
|
|
description: The post_id to return the next page of posts from
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
- name: fromCreateAt
|
|
in: query
|
|
description: The create_at timestamp to return the next page of posts from
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: fromUpdateAt
|
|
in: query
|
|
description: The update_at timestamp to return the next page of posts from. You cannot set this flag with direction=down.
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: direction
|
|
in: query
|
|
description: The direction to return the posts. Either up or down.
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
- name: skipFetchThreads
|
|
in: query
|
|
description: Whether to skip fetching threads or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: collapsedThreads
|
|
in: query
|
|
description: Whether the client uses CRT or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: collapsedThreadsExtended
|
|
in: query
|
|
description: Whether to return the associated users as part of the response or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: updatesOnly
|
|
in: query
|
|
description: This flag is used to make the API work with the updateAt value. If you set this flag, you must set a value for fromUpdateAt.
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PostList"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/users/{user_id}/posts/flagged":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get a list of flagged posts
|
|
description: >
|
|
Get a page of flagged posts of a user provided user id string. Selects
|
|
from a channel, team, or all flagged posts by a user. Will only return
|
|
posts from channels in which the user is member.
|
|
|
|
##### Permissions
|
|
|
|
Must be user or have `manage_system` permission.
|
|
operationId: GetFlaggedPostsForUser
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: ID of the user
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: team_id
|
|
in: query
|
|
description: Team ID
|
|
schema:
|
|
type: string
|
|
- name: channel_id
|
|
in: query
|
|
description: Channel ID
|
|
schema:
|
|
type: string
|
|
- name: page
|
|
in: query
|
|
description: The page to select
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: per_page
|
|
in: query
|
|
description: The number of posts per page
|
|
schema:
|
|
type: integer
|
|
default: 60
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PostList"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}/files/info":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get file info for post
|
|
description: >
|
|
Gets a list of file information objects for the files attached to a
|
|
post.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.
|
|
operationId: GetFileInfosForPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: ID of the post
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: include_deleted
|
|
in: query
|
|
description: Defines if result should include deleted posts, must have 'manage_system' (admin) permission.
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: File info retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/FileInfo"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/channels/{channel_id}/posts":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get posts for a channel
|
|
description: >
|
|
Get a page of posts in a channel. Use the query parameters to modify the
|
|
behaviour of this endpoint. The parameter `since` must not be used with any of
|
|
`before`, `after`, `page`, and `per_page` parameters.
|
|
|
|
If `since` is used, it will always return all posts modified since that time,
|
|
ordered by their create time limited till 1000. A caveat with this parameter is that
|
|
there is no guarantee that the returned posts will be consecutive. It is left to the clients
|
|
to maintain state and fill any missing holes in the post order.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel.
|
|
operationId: GetPostsForChannel
|
|
parameters:
|
|
- name: channel_id
|
|
in: path
|
|
description: The channel ID to get the posts for
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: page
|
|
in: query
|
|
description: The page to select
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: per_page
|
|
in: query
|
|
description: The number of posts per page
|
|
schema:
|
|
type: integer
|
|
default: 60
|
|
- name: since
|
|
in: query
|
|
description: Provide a non-zero value in Unix time milliseconds to select posts
|
|
modified after that time
|
|
schema:
|
|
type: integer
|
|
- name: before
|
|
in: query
|
|
description: A post id to select the posts that came before this one
|
|
schema:
|
|
type: string
|
|
- name: after
|
|
in: query
|
|
description: A post id to select the posts that came after this one
|
|
schema:
|
|
type: string
|
|
- name: include_deleted
|
|
in: query
|
|
description: Whether to include deleted posts or not. Must have system admin permissions.
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PostList"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/users/{user_id}/channels/{channel_id}/posts/unread":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Get posts around oldest unread
|
|
description: >
|
|
Get the oldest unread post in the channel for the given user as well as
|
|
the posts around it.
|
|
The returned list is sorted in descending order (most recent post first).
|
|
|
|
##### Permissions
|
|
|
|
Must be logged in as the user or have `edit_other_users` permission, and must have `read_channel` permission for the channel.
|
|
|
|
__Minimum server version__: 5.14
|
|
operationId: GetPostsAroundLastUnread
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: ID of the user
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: channel_id
|
|
in: path
|
|
description: The channel ID to get the posts for
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: limit_before
|
|
in: query
|
|
description: Number of posts before the oldest unread posts. Maximum is 200 posts
|
|
if limit is set greater than that.
|
|
schema:
|
|
type: integer
|
|
default: 60
|
|
maximum: 200
|
|
minimum: 0
|
|
- name: limit_after
|
|
in: query
|
|
description: Number of posts after and including the oldest unread post. Maximum is
|
|
200 posts if limit is set greater than that.
|
|
schema:
|
|
type: integer
|
|
default: 60
|
|
maximum: 200
|
|
minimum: 1
|
|
- name: skipFetchThreads
|
|
in: query
|
|
description: Whether to skip fetching threads or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: collapsedThreads
|
|
in: query
|
|
description: Whether the client uses CRT or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
- name: collapsedThreadsExtended
|
|
in: query
|
|
description: Whether to return the associated users as part of the response or not
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PostList"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/teams/{team_id}/posts/search":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Search for team posts
|
|
description: |
|
|
Search posts in the team and from the provided terms string.
|
|
##### Permissions
|
|
Must be authenticated and have the `view_team` permission.
|
|
operationId: SearchPosts
|
|
parameters:
|
|
- name: team_id
|
|
in: path
|
|
description: Team GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- terms
|
|
- is_or_search
|
|
properties:
|
|
terms:
|
|
type: string
|
|
description: The search terms as inputed by the user. To search for posts
|
|
from a user include `from:someusername`, using a user's
|
|
username. To search in a specific channel include
|
|
`in:somechannel`, using the channel name (not the display
|
|
name).
|
|
is_or_search:
|
|
type: boolean
|
|
description: Set to true if an Or search should be performed vs an And
|
|
search.
|
|
time_zone_offset:
|
|
type: integer
|
|
default: 0
|
|
description: Offset from UTC of user timezone for date searches.
|
|
include_deleted_channels:
|
|
type: boolean
|
|
description: Set to true if deleted channels should be included in the
|
|
search. (archived channels)
|
|
page:
|
|
type: integer
|
|
default: 0
|
|
description: The page to select. (Only works with Elasticsearch)
|
|
per_page:
|
|
type: integer
|
|
default: 60
|
|
description: The number of posts per page. (Only works with Elasticsearch)
|
|
description: The search terms and logic to use in the search.
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PostListWithSearchMatches"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}/pin":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Pin a post to the channel
|
|
description: >
|
|
Pin a post to a channel it is in based from the provided post id string.
|
|
|
|
##### Permissions
|
|
|
|
Must be authenticated and have the `read_channel` permission to the channel the post is in.
|
|
operationId: PinPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Pinned post successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}/unpin":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Unpin a post to the channel
|
|
description: >
|
|
Unpin a post to a channel it is in based from the provided post id
|
|
string.
|
|
|
|
##### Permissions
|
|
|
|
Must be authenticated and have the `read_channel` permission to the channel the post is in.
|
|
operationId: UnpinPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Unpinned post successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/{post_id}/actions/{action_id}":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Perform a post action
|
|
description: >
|
|
Perform a post action, which allows users to interact with integrations
|
|
through posts.
|
|
|
|
##### Permissions
|
|
|
|
Must be authenticated and have the `read_channel` permission to the channel the post is in.
|
|
operationId: DoPostAction
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: action_id
|
|
in: path
|
|
description: Action GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post action successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/posts/ids":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Get posts by a list of ids
|
|
description: >
|
|
Fetch a list of posts based on the provided postIDs
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in or if the channel is public, have the `read_public_channels` permission for the team.
|
|
operationId: getPostsByIds
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: List of post ids
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Post list retrieval successful
|
|
headers:
|
|
Has-Inaccessible-Posts:
|
|
schema:
|
|
type: boolean
|
|
description: Indicates whether the posts have been truncated as per the cloud's plan limit.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"/api/v4/users/{user_id}/posts/{post_id}/reminder":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Set a post reminder
|
|
description: >
|
|
Set a reminder for the user for the post.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.
|
|
|
|
|
|
__Minimum server version__: 7.2
|
|
operationId: SetPostReminder
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: User GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- target_time
|
|
properties:
|
|
target_time:
|
|
type: integer
|
|
description: Target time for the reminder
|
|
description: Target time for the reminder
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Reminder set successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
"/api/v4/users/{user_id}/posts/{post_id}/ack":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Acknowledge a post
|
|
description: >
|
|
Acknowledge a post that has a request for acknowledgements.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.<br/>
|
|
Must be logged in as the user or have `edit_other_users` permission.
|
|
|
|
|
|
__Minimum server version__: 7.7
|
|
operationId: SaveAcknowledgementForPost
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: User GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Acknowledgement saved successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PostAcknowledgement"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
delete:
|
|
tags:
|
|
- posts
|
|
summary: Delete a post acknowledgement
|
|
description: >
|
|
Delete an acknowledgement form a post that you had previously acknowledged.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.<br/>
|
|
Must be logged in as the user or have `edit_other_users` permission.<br/>
|
|
The post must have been acknowledged in the previous 5 minutes.
|
|
|
|
|
|
__Minimum server version__: 7.7
|
|
operationId: DeleteAcknowledgementForPost
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
description: User GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: post_id
|
|
in: path
|
|
description: Post GUID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Acknowledgement deleted successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
"/api/v4/posts/{post_id}/move":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Move a post (and any posts within that post's thread)
|
|
description: >
|
|
Move a post/thread to another channel.
|
|
|
|
THIS IS A BETA FEATURE. The API is subject to change without notice.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.
|
|
Must have `write_post` permission for the channel the post is being moved to.
|
|
|
|
|
|
__Minimum server version__: 9.3
|
|
operationId: MoveThread
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: The identifier of the post to move
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- channel_id
|
|
properties:
|
|
channel_id:
|
|
type: string
|
|
description: The channel identifier of where the post/thread is to be moved
|
|
description: The channel identifier of where the post/thread is to be moved
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Post moved successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
|
|
"/api/v4/posts/{post_id}/restore/{restore_version_id}":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Restores a past version of a post
|
|
description: >
|
|
Restores the post with `post_id` to its past version having the ID `restore_version_id`.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.
|
|
Must have `edit_post` permission for the channel the post is being moved to.
|
|
Must be the author of the post being restored.
|
|
|
|
|
|
__Minimum server version__: 10.5
|
|
operationId: RestorePostVersion
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: The identifier of the post to restore
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: restore_version_id
|
|
in: path
|
|
description: The identifier of the past version of post to restore to
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post restored successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
|
|
"/api/v4/posts/{post_id}/reveal":
|
|
get:
|
|
tags:
|
|
- posts
|
|
summary: Reveal a burn-on-read post
|
|
description: >
|
|
Reveal a burn-on-read post. This endpoint allows a user to reveal a post
|
|
that was created with burn-on-read functionality. Once revealed, the post
|
|
content becomes visible to the user. If the post is already revealed and
|
|
not expired, this is a no-op. If the post has expired, an error will be returned.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.<br/>
|
|
Must be a member of the channel the post is in.<br/>
|
|
Cannot reveal your own post.
|
|
|
|
##### Feature Flag
|
|
|
|
Requires `BurnOnRead` feature flag and Enterprise Advanced license.
|
|
|
|
__Minimum server version__: 11.2
|
|
operationId: RevealPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: The identifier of the post to reveal
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post revealed successfully
|
|
headers:
|
|
Has-Inaccessible-Posts:
|
|
schema:
|
|
type: boolean
|
|
description: This header is included with the value "true" if the post is past the cloud's plan limit.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Post"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
|
|
"/api/v4/posts/{post_id}/burn":
|
|
delete:
|
|
tags:
|
|
- posts
|
|
summary: Burn a burn-on-read post
|
|
description: >
|
|
Burn a burn-on-read post. This endpoint allows a user to burn a post that
|
|
was created with burn-on-read functionality. If the user is the author of
|
|
the post, the post will be permanently deleted. If the user is not the author,
|
|
the post will be expired for that user by updating their read receipt expiration
|
|
time. If the user has not revealed the post yet, an error will be returned.
|
|
If the post is already expired for the user, this is a no-op.
|
|
|
|
##### Permissions
|
|
|
|
Must have `read_channel` permission for the channel the post is in.<br/>
|
|
Must be a member of the channel the post is in.
|
|
|
|
##### Feature Flag
|
|
|
|
Requires `BurnOnRead` feature flag and Enterprise Advanced license.
|
|
|
|
__Minimum server version__: 11.2
|
|
operationId: BurnPost
|
|
parameters:
|
|
- name: post_id
|
|
in: path
|
|
description: The identifier of the post to burn
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Post burned successfully
|
|
headers:
|
|
Has-Inaccessible-Posts:
|
|
schema:
|
|
type: boolean
|
|
description: This header is included with the value "true" if the post is past the cloud's plan limit.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StatusOK"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"403":
|
|
$ref: "#/components/responses/Forbidden"
|
|
"501":
|
|
$ref: "#/components/responses/NotImplemented"
|
|
|
|
"/api/v4/posts/rewrite":
|
|
post:
|
|
tags:
|
|
- posts
|
|
summary: Rewrite a message using AI
|
|
description: >
|
|
Rewrite a message using AI based on the specified action. The message will be
|
|
processed by an AI agent and returned in a rewritten form.
|
|
|
|
##### Permissions
|
|
|
|
Must be authenticated.
|
|
|
|
__Minimum server version__: 11.2
|
|
operationId: RewriteMessage
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- agent_id
|
|
- message
|
|
- action
|
|
properties:
|
|
agent_id:
|
|
type: string
|
|
description: The ID of the AI agent to use for rewriting
|
|
message:
|
|
type: string
|
|
description: The message text to rewrite
|
|
action:
|
|
type: string
|
|
description: The rewrite action to perform
|
|
enum:
|
|
- custom
|
|
- shorten
|
|
- elaborate
|
|
- improve_writing
|
|
- fix_spelling
|
|
- simplify
|
|
- summarize
|
|
custom_prompt:
|
|
type: string
|
|
description: Custom prompt for rewriting. Required when action is "custom", optional otherwise.
|
|
description: Rewrite request object
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Message rewritten successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
rewritten_text:
|
|
type: string
|
|
description: The rewritten message text
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
"401":
|
|
$ref: "#/components/responses/Unauthorized"
|
|
"500":
|
|
description: Internal server error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppError"
|