@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Stream API
@base https://chat.stream-io-api.com
@version v225.3.1
@auth ApiKey Authorization in header | ApiKey api_key in query | ApiKey Stream-Auth-Type in header
@endpoints 175
@hint download_for_search
@toc app(2), blocklists(5), campaigns(4), channels(25), channeltypes(5), check_push(1), check_sns(1), check_sqs(1), commands(5), devices(3), drafts(1), export(1), export_channels(1), external_storage(5), guest(1), import_urls(1), imports(11), members(1), messages(20), moderation(8), og(1), permissions(2), polls(11), push_preferences(1), push_providers(3), push_templates(2), query_banned_users(1), query_future_channel_bans(1), rate_limits(1), reminders(1), retention_policy(4), roles(3), search(1), segments(6), stats(1), tasks(1), threads(3), unread(1), unread_batch(1), uploads(4), usergroups(8), users(16)

@group app
@endpoint GET /app
@desc Get App Settings
@returns(200) {app: map{activity_metrics_config: map, allow_multi_user_devices: bool, allowed_flag_reasons: [str], async_url_enrich_enabled: bool, auto_translation_enabled: bool, before_message_send_hook_url: str, call_types: map, campaign_enabled: bool, cdn_expiration_seconds: int(int32), channel_configs: map, custom_action_handler_url: str, datadog_info: map{api_key: str, enabled: bool, site: str}, disable_auth_checks: bool, disable_permissions_checks: bool, enforce_unique_usernames: str, event_hooks: [map], file_upload_config: map{allowed_file_extensions: [str], allowed_mime_types: [str], blocked_file_extensions: [str], blocked_mime_types: [str], size_limit: int(int32)}, geofences: [map], grants: map, guest_user_creation_disabled: bool, id: int(int32), image_moderation_enabled: bool, image_moderation_labels: [str], image_upload_config: map{allowed_file_extensions: [str], allowed_mime_types: [str], blocked_file_extensions: [str], blocked_mime_types: [str], size_limit: int(int32)}, max_aggregated_activities_length: int(int32), moderation_audio_call_moderation_enabled: bool, moderation_dashboard_preferences: map{allowed_moderation_action_reasons: [str], async_review_queue_upsert: bool, disable_audit_logs: bool, disable_flagging_reviewed_entity: bool, escalation_queue_enabled: bool, escalation_reasons: [str], flag_user_on_flagged_content: bool, keyframe_classifications_map: map, media_queue_blur_enabled: bool, overview_dashboard: map{default_date_range_days: int(int32), visible_charts: [str]}}, moderation_enabled: bool, moderation_llm_configurability_enabled: bool, moderation_multitenant_blocklist_enabled: bool, moderation_s3_image_access_role_arn: str, moderation_video_call_moderation_enabled: bool, moderation_webhook_url: str, multi_tenant_enabled: bool, name: str, organization: str, permission_version: str, placement: str, policies: map, push_notifications: map{apn: map{auth_key: str, auth_type: str, bundle_id: str, development: bool, enabled: bool, host: str, key_id: str, notification_template: str, p12_cert: str, team_id: str}, firebase: map{apn_template: str, credentials_json: str, data_template: str, enabled: bool, notification_template: str, server_key: str}, huawei: map{enabled: bool, id: str, secret: str}, offline_only: bool, providers: [map], version: str, xiaomi: map{enabled: bool, package_name: str, secret: str}}, reminders_interval: int(int32), revoke_tokens_issued_before: str(date-time), sns_key: str, sns_secret: str, sns_topic_arn: str, sqs_key: str, sqs_secret: str, sqs_url: str, suspended: bool, suspended_explanation: str, use_hook_v2: bool, user_response_time_enabled: bool, user_search_disallowed_roles: [str], webhook_events: [str], webhook_url: str}, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /app
@desc Update App Settings
@optional {activity_metrics_config: map, allowed_flag_reasons: [str], apn_config: map{Disabled: bool, auth_key: str, auth_type: str, bundle_id: str, development: bool, host: str, key_id: str, notification_template: str, p12_cert: str, team_id: str}, async_moderation_config: map{callback: map, timeout_ms: int(int32)}, async_url_enrich_enabled: bool, auto_translation_enabled: bool, before_message_send_hook_url: str, cdn_expiration_seconds: int(int32), channel_hide_members_only: bool, custom_action_handler_url: str, datadog_info: map{api_key: str, enabled: bool, site: str}, disable_auth_checks: bool, disable_permissions_checks: bool, enforce_unique_usernames: str(no/app/team), event_hooks: [map{callback: map, created_at: str(date-time), enabled: bool, event_types: [str], hook_type: str, id: str, product: str, should_send_custom_events: bool, sns_auth_type: str, sns_event_based_message_group_id_enabled: bool, sns_key: str, sns_region: str, sns_role_arn: str, sns_secret: str, sns_topic_arn: str, sqs_auth_type: str, sqs_key: str, sqs_queue_url: str, sqs_region: str, sqs_role_arn: str, sqs_secret: str, timeout_ms: int(int32), updated_at: str(date-time), webhook_url: str}], feeds_moderation_enabled: bool, feeds_v2_region: str, file_upload_config: map{allowed_file_extensions: [str], allowed_mime_types: [str], blocked_file_extensions: [str], blocked_mime_types: [str], size_limit!: int(int32)}, firebase_config: map{Disabled: bool, apn_template: str, credentials_json: str, data_template: str, notification_template: str, server_key: str}, grants: map, guest_user_creation_disabled: bool, huawei_config: map{Disabled: bool, id: str, secret: str}, image_moderation_block_labels: [str], image_moderation_enabled: bool, image_moderation_labels: [str], image_upload_config: map{allowed_file_extensions: [str], allowed_mime_types: [str], blocked_file_extensions: [str], blocked_mime_types: [str], size_limit!: int(int32)}, max_aggregated_activities_length: int(int32), migrate_permissions_to_v2: bool, moderation_analytics_enabled: bool, moderation_dashboard_preferences: map{allowed_moderation_action_reasons: [str], async_review_queue_upsert: bool, disable_audit_logs: bool, disable_flagging_reviewed_entity: bool, escalation_queue_enabled: bool, escalation_reasons: [str], flag_user_on_flagged_content: bool, keyframe_classifications_map: map, media_queue_blur_enabled: bool, overview_dashboard: map}, moderation_enabled: bool, moderation_s3_image_access_role_arn: str, moderation_webhook_url: str, multi_tenant_enabled: bool, permission_version: str(v1/v2), push_config: map{offline_only: bool, version!: str}, reminders_interval: int(int32), reminders_max_members: int(int32), revoke_tokens_issued_before: str(date-time), sns_key: str, sns_secret: str, sns_topic_arn: str, sqs_key: str, sqs_secret: str, sqs_url: str, user_response_time_enabled: bool, user_search_disallowed_roles: [str], webhook_events: [str], webhook_url: str, xiaomi_config: map{Disabled: bool, package_name: str, secret: str}}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group blocklists
@endpoint GET /blocklists
@desc List block lists
@optional {team: str}
@returns(200) {blocklists: [map], duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /blocklists
@desc Create block list
@required {name: str # Block list name, words: [str] # List of words to block}
@optional {is_leet_check_enabled: bool, is_plural_check_enabled: bool, team: str, type: str(regex/domain/domain_allowlist/email/email_allowlist/word) # Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word}
@returns(201) {blocklist: map{created_at: str(date-time), id: str, is_leet_check_enabled: bool, is_plural_check_enabled: bool, name: str, team: str, type: str, updated_at: str(date-time), words: [str]}, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /blocklists/{name}
@desc Delete block list
@required {name: str}
@optional {team: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /blocklists/{name}
@desc Get block list
@required {name: str}
@optional {team: str}
@returns(200) {blocklist: map{created_at: str(date-time), id: str, is_leet_check_enabled: bool, is_plural_check_enabled: bool, name: str, team: str, type: str, updated_at: str(date-time), words: [str]}, duration: str} # GetBlockListResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /blocklists/{name}
@desc Update block list
@required {name: str}
@optional {is_leet_check_enabled: bool, is_plural_check_enabled: bool, team: str, words: [str] # List of words to block}
@returns(201) {blocklist: map{created_at: str(date-time), id: str, is_leet_check_enabled: bool, is_plural_check_enabled: bool, name: str, team: str, type: str, updated_at: str(date-time), words: [str]}, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group campaigns
@endpoint GET /campaigns/{id}
@desc Get campaign
@required {id: str}
@optional {prev: str, next: str, limit: int(int32)}
@returns(200) {campaign: map{channel_template: map{custom: map, id: str, members: [str], members_template: [map], team: str, type: str}, create_channels: bool, created_at: str(date-time), description: str, id: str, message_template: map{attachments: [map], custom: map, poll_id: str, searchable: bool, text: str}, name: str, scheduled_for: str(date-time), segment_ids: [str], segments: [map], sender: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, sender_id: str, sender_mode: str, sender_visibility: str, show_channels: bool, skip_push: bool, skip_webhook: bool, stats: map{progress: num(float), stats_channels_created: int(int32), stats_completed_at: str(date-time), stats_messages_sent: int(int32), stats_started_at: str(date-time), stats_users_read: int(int32), stats_users_sent: int(int32)}, status: str, stop_at: str(date-time), updated_at: str(date-time), user_ids: [str], users: [map]}, duration: str, users: map{next: str, prev: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /campaigns/{id}/start
@desc Start/schedule campaign
@required {id: str}
@optional {scheduled_for: str(date-time), stop_at: str(date-time)}
@returns(201) {campaign: map{channel_template: map{custom: map, id: str, members: [str], members_template: [map], team: str, type: str}, create_channels: bool, created_at: str(date-time), description: str, id: str, message_template: map{attachments: [map], custom: map, poll_id: str, searchable: bool, text: str}, name: str, scheduled_for: str(date-time), segment_ids: [str], segments: [map], sender: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, sender_id: str, sender_mode: str, sender_visibility: str, show_channels: bool, skip_push: bool, skip_webhook: bool, stats: map{progress: num(float), stats_channels_created: int(int32), stats_completed_at: str(date-time), stats_messages_sent: int(int32), stats_started_at: str(date-time), stats_users_read: int(int32), stats_users_sent: int(int32)}, status: str, stop_at: str(date-time), updated_at: str(date-time), user_ids: [str], users: [map]}, duration: str, users: map{next: str, prev: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /campaigns/{id}/stop
@desc Stop campaign
@required {id: str}
@returns(201) {channel_template: map{custom: map, id: str, members: [str], members_template: [map], team: str, type: str}, create_channels: bool, created_at: str(date-time), description: str, id: str, message_template: map{attachments: [map], custom: map, poll_id: str, searchable: bool, text: str}, name: str, scheduled_for: str(date-time), segment_ids: [str], segments: [map], sender: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, sender_id: str, sender_mode: str, sender_visibility: str, show_channels: bool, skip_push: bool, skip_webhook: bool, stats: map{progress: num(float), stats_channels_created: int(int32), stats_completed_at: str(date-time), stats_messages_sent: int(int32), stats_started_at: str(date-time), stats_users_read: int(int32), stats_users_sent: int(int32)}, status: str, stop_at: str(date-time), updated_at: str(date-time), user_ids: [str], users: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /campaigns/query
@desc Query campaigns
@optional {filter: map, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}], user_limit: int(int32)}
@returns(201) {campaigns: [map], duration: str, next: str, prev: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group channels
@endpoint POST /channels
@desc Query channels
@optional {filter_conditions: map # Filter conditions to apply to the query, filter_values: map # Values to interpolate into the predefined filter template, limit: int(int32) # Number of channels to limit, member_limit: int(int32) # Number of members to limit, message_limit: int(int32) # Number of messages to limit, offset: int(int32) # Channel pagination offset, predefined_filter: str # ID of a predefined filter to use instead of filter_conditions, sort: [map{direction: int(int32), field: str, type: str}] # List of sort parameters, sort_values: map, state: bool # Whether to update channel state or not, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {channels: [map], duration: str, predefined_filter: map{filter: map, name: str, sort: [map]}} # Channels list
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /channels/{type}/{id}
@desc Delete channel
@required {type: str, id: str}
@optional {hard_delete: bool}
@returns(200) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /channels/{type}/{id}
@desc Partially update channel
@required {type: str, id: str}
@optional {set: map, unset: [str], user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(200) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, duration: str, members: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}
@desc Update channel
@required {type: str, id: str}
@optional {accept_invite: bool # Set to `true` to accept the invite, add_filter_tags: [str] # List of filter tags to add to the channel, add_members: [map{channel_role: str, custom: map, user: map, user_id!: str}] # List of user IDs to add to the channel, add_moderators: [str] # List of user IDs to make channel moderators, assign_roles: [map{channel_role: str, custom: map, user: map, user_id!: str}] # List of channel member role assignments. If any specified user is not part of the channel, the request will fail, cooldown: int(int32) # Sets cool down period for the channel in seconds, data: map{auto_translation_enabled: bool, auto_translation_language: str, config_overrides: map, created_by: map, custom: map, disabled: bool, frozen: bool, invites: [map], members: [map], team: str}, demote_moderators: [str] # List of user IDs to take away moderators status from, hide_history: bool # Set to `true` to hide channel's history when adding new members, hide_history_before: str(date-time) # If set, hides channel's history before this time when adding new members. Takes precedence over `hide_history` when both are provided. Must be in RFC3339 format (e.g., "2024-01-01T10:00:00Z") and in the past., invites: [map{channel_role: str, custom: map, user: map, user_id!: str}] # List of user IDs to invite to the channel, message: map{attachments: [map], custom: map, html: str, id: str, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [str], mml: str, parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), poll_id: str, quoted_message_id: str, restricted_visibility: [str], shared_location: map, show_in_channel: bool, silent: bool, text: str, type: str, user: map, user_id: str} # Message data for creating or updating a message, reject_invite: bool # Set to `true` to reject the invite, remove_filter_tags: [str] # List of filter tags to remove from the channel, remove_members: [str] # List of user IDs to remove from the channel, skip_push: bool # When `message` is set disables all push notifications for it, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, duration: str, members: [map], message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /channels/{type}/{id}/draft
@desc Delete draft
@required {type: str, id: str}
@optional {parent_id: str, user_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /channels/{type}/{id}/draft
@desc Get draft
@required {type: str, id: str}
@optional {parent_id: str, user_id: str}
@returns(200) {draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}}, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/event
@desc Send event
@required {type: str, id: str, event: map{custom: map, parent_id: str, type!: str, user: map, user_id: str}}
@returns(201) {duration: str, event: map{automoderation: bool, automoderation_scores: map{action: str, explicit: num(float), spam: num(float), toxic: num(float)}, channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_id: str, channel_last_message_at: str(date-time), channel_type: str, cid: str, connection_id: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, me: map{avg_response_time: int(int32), banned: bool, blocked_user_ids: [str], channel_mutes: [map], created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), latest_hidden_channels: [str], mutes: [map], name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_preferences: map{call_level: str, chat_level: str, chat_preferences: map, disabled_until: str(date-time), feeds_level: str, feeds_preferences: map}, revoke_tokens_issued_before: str(date-time), role: str, teams: [str], teams_role: map, total_unread_count: int(int32), total_unread_count_by_team: map, unread_channels: int(int32), unread_count: int(int32), unread_threads: int(int32), updated_at: str(date-time)}, member: map{channel_role: str, notifications_muted: bool}, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, message_update: map{change_set: map{attachments: bool, custom: bool, html: bool, mentioned_user_ids: bool, mml: bool, pin: bool, quoted_message_id: bool, silent: bool, text: bool}, old_text: str}, parent_id: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_vote: map?{answer_text: str, created_at: str(date-time), id: str, is_answer: bool, option_id: str, poll_id: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reaction: map{created_at: str(date-time), custom: map, message_id: str, score: int(int32), type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reason: str, team: str, thread: map{active_participant_count: int(int32), channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_user_id: str, custom: map, deleted_at: str(date-time), last_message_at: str(date-time), parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, parent_message_id: str, participant_count: int(int32), reply_count: int(int32), thread_participants: [map], title: str, updated_at: str(date-time)}, thread_id: str, type: str, user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str, watcher_count: int(int32)}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /channels/{type}/{id}/file
@desc Delete file
@required {type: str, id: str}
@optional {url: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/file
@desc Upload file
@required {type: str, id: str}
@returns(201) {duration: str, file: str, moderation_action: str, thumb_url: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/hide
@desc Hide channel
@required {type: str, id: str}
@optional {clear_history: bool # Whether to clear message history of the channel or not, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /channels/{type}/{id}/image
@desc Delete image
@required {type: str, id: str}
@optional {url: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/image
@desc Upload image
@required {type: str, id: str}
@returns(201) {duration: str, file: str, moderation_action: str, thumb_url: str, upload_sizes: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /channels/{type}/{id}/member
@desc Partially channel member update
@required {type: str, id: str}
@optional {user_id: str, set: map, unset: [str]}
@returns(200) {channel_member: map{channel_role: str, notifications_muted: bool}, duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/message
@desc Send new message
@required {type: str, id: str, message: map{attachments: [map], custom: map, html: str, id: str, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [str], mml: str, parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), poll_id: str, quoted_message_id: str, restricted_visibility: [str], shared_location: map, show_in_channel: bool, silent: bool, text: str, type: str, user: map, user_id: str} # Message data for creating or updating a message}
@optional {force_moderation: bool, keep_channel_hidden: bool, pending: bool, pending_message_metadata: map, skip_enrich_url: bool, skip_push: bool}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, pending_message_metadata: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /channels/{type}/{id}/messages
@desc Get many messages
@required {type: str, id: str, ids: [str]}
@returns(200) {duration: str, messages: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/query
@desc Get or create channel
@required {type: str, id: str}
@optional {data: map{auto_translation_enabled: bool, auto_translation_language: str, config_overrides: map, created_by: map, created_by_id: str, custom: map, disabled: bool, filter_tags: [str], frozen: bool, invites: [map], members: [map], team: str, truncated_by_id: str}, hide_for_creator: bool # Whether this channel will be hidden for the user who created the channel or not, members: map{limit: int(int32), offset: int(int32)}, messages: map{created_at_after: str(date-time), created_at_after_or_equal: str(date-time), created_at_around: str(date-time), created_at_before: str(date-time), created_at_before_or_equal: str(date-time), id_around: str, id_gt: str, id_gte: str, id_lt: str, id_lte: str, limit: int(int32)}, state: bool # Refresh channel state, thread_unread_counts: bool, watchers: map{limit: int(int32), offset: int(int32)}}
@returns(201) {active_live_locations: [map], channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}}, duration: str, hidden: bool, hide_messages_before: str(date-time), members: [map], membership: map{channel_role: str, notifications_muted: bool}, messages: [map], pending_messages: [map], pinned_messages: [map], push_preferences: map{chat_level: str, disabled_until: str(date-time)}, read: [map], threads: [map], watcher_count: int(int32), watchers: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/read
@desc Mark read
@required {type: str, id: str}
@optional {message_id: str # ID of the message that is considered last read by client, thread_id: str # Optional Thread ID to specifically mark a given thread as read, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, event: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_id: str, channel_last_message_at: str(date-time), channel_type: str, cid: str, created_at: str(date-time), last_read_message_id: str, team: str, thread: map{active_participant_count: int(int32), channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_user_id: str, custom: map, deleted_at: str(date-time), last_message_at: str(date-time), parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, parent_message_id: str, participant_count: int(int32), reply_count: int(int32), thread_participants: [map], title: str, updated_at: str(date-time)}, type: str, user: map{avg_response_time: int(int32), banned: bool, blocked_user_ids: [str], created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), id: str, image: str, language: str, last_active: str(date-time), name: str, online: bool, revoke_tokens_issued_before: str(date-time), role: str, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/show
@desc Show channel
@required {type: str, id: str}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/truncate
@desc Truncate channel
@required {type: str, id: str}
@optional {hard_delete: bool # Permanently delete channel data (messages, reactions, etc.), member_ids: [str] # List of member IDs to hide message history for. If empty, truncates the channel for all members, message: map{attachments: [map], custom: map, html: str, id: str, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [str], mml: str, parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), poll_id: str, quoted_message_id: str, restricted_visibility: [str], shared_location: map, show_in_channel: bool, silent: bool, text: str, type: str, user: map, user_id: str} # Message data for creating or updating a message, skip_push: bool # When `message` is set disables all push notifications for it, truncated_at: str(date-time) # Truncate channel data up to `truncated_at`. The system message (if provided) creation time is always greater than `truncated_at`, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/{id}/unread
@desc Mark unread
@required {type: str, id: str}
@optional {message_id: str # ID of the message from where the channel is marked unread, message_timestamp: str(date-time) # Timestamp of the message from where the channel is marked unread, thread_id: str # Mark a thread unread, specify one of the thread, message timestamp, or message id, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/{type}/query
@desc Get or create channel
@required {type: str}
@optional {data: map{auto_translation_enabled: bool, auto_translation_language: str, config_overrides: map, created_by: map, created_by_id: str, custom: map, disabled: bool, filter_tags: [str], frozen: bool, invites: [map], members: [map], team: str, truncated_by_id: str}, hide_for_creator: bool # Whether this channel will be hidden for the user who created the channel or not, members: map{limit: int(int32), offset: int(int32)}, messages: map{created_at_after: str(date-time), created_at_after_or_equal: str(date-time), created_at_around: str(date-time), created_at_before: str(date-time), created_at_before_or_equal: str(date-time), id_around: str, id_gt: str, id_gte: str, id_lt: str, id_lte: str, limit: int(int32)}, state: bool # Refresh channel state, thread_unread_counts: bool, watchers: map{limit: int(int32), offset: int(int32)}}
@returns(201) {active_live_locations: [map], channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}}, duration: str, hidden: bool, hide_messages_before: str(date-time), members: [map], membership: map{channel_role: str, notifications_muted: bool}, messages: [map], pending_messages: [map], pinned_messages: [map], push_preferences: map{chat_level: str, disabled_until: str(date-time)}, read: [map], threads: [map], watcher_count: int(int32), watchers: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /channels/batch
@desc Update channels in batch
@required {filter: map, operation: str(addMembers/removeMembers/inviteMembers/invites/assignRoles/addModerators/demoteModerators/hide/show/archive/unarchive/updateData)}
@optional {data: map{auto_translation_enabled: bool, auto_translation_language: str, config_overrides: map, custom: map, disabled: bool, frozen: bool, team: str}, members: [map{channel_role: str, user_id!: str}]}
@returns(201) {duration: str, task_id: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/delete
@desc Deletes channels asynchronously
@required {cids: [str] # All channels that should be deleted}
@optional {hard_delete: bool # Specify if channels and all ressources should be hard deleted}
@returns(201) {duration: str, result: map, task_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/delivered
@desc Mark channel message delivery status
@optional {user_id: str, latest_delivered_messages: [map{cid: str, id: str}]}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channels/read
@desc Mark channels as read
@optional {read_by_channel: map # Map of channel ID to last read message ID, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, event: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_id: str, channel_last_message_at: str(date-time), channel_type: str, cid: str, created_at: str(date-time), last_read_message_id: str, team: str, thread: map{active_participant_count: int(int32), channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_user_id: str, custom: map, deleted_at: str(date-time), last_message_at: str(date-time), parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, parent_message_id: str, participant_count: int(int32), reply_count: int(int32), thread_participants: [map], title: str, updated_at: str(date-time)}, type: str, user: map{avg_response_time: int(int32), banned: bool, blocked_user_ids: [str], created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), id: str, image: str, language: str, last_active: str(date-time), name: str, online: bool, revoke_tokens_issued_before: str(date-time), role: str, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group channeltypes
@endpoint GET /channeltypes
@desc List channel types
@returns(200) {channel_types: map, duration: str} # ListChannelTypesResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /channeltypes
@desc Create channel type
@required {automod: str(disabled/simple/AI) # Automod. One of: disabled, simple, AI, automod_behavior: str(flag/block) # Automod behavior. One of: flag, block, max_message_length: int(int32) # Max message length, name: str # Channel type name}
@optional {blocklist: str # Blocklist, blocklist_behavior: str(flag/block/shadow_block) # Blocklist behavior. One of: flag, block, shadow_block, blocklists: [map{behavior!: str, blocklist!: str}] # Blocklists, chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [str] # List of commands that channel supports, connect_events: bool # Connect events, count_messages: bool # Count messages in channel., custom_events: bool # Custom events, delivery_events: bool, grants: map # List of grants for the channel type, mark_messages_pending: bool # Mark messages pending, message_retention: str # Message retention. One of: infinite, numeric, mutes: bool # Mutes, partition_size: int(int32) # Partition size, partition_ttl: str(duration) # Partition TTL, permissions: [map{action!: str, name!: str, owner!: bool, priority!: int(int32), resources!: [str], roles!: [str]}] # List of permissions for the channel type, polls: bool # Polls, push_level: str(all/all_mentions/mentions/direct_mentions/none) # Default push notification level for the channel type. One of: all, all_mentions, mentions, direct_mentions, none, push_notifications: bool # Push notifications, reactions: bool # Reactions, read_events: bool # Read events, replies: bool # Replies, search: bool # Search, shared_locations: bool # Enables shared location messages, skip_last_msg_update_for_system_msgs: bool, typing_events: bool # Typing events, uploads: bool # Uploads, url_enrichment: bool # URL enrichment, user_message_reminders: bool}
@returns(201) {allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map{block: num(float), flag: num(float)}, spam: map{block: num(float), flag: num(float)}, toxic: map{block: num(float), flag: num(float)}}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [str], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, duration: str, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, permissions: [map], polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /channeltypes/{name}
@desc Delete channel type
@required {name: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /channeltypes/{name}
@desc Get channel type
@required {name: str}
@returns(200) {allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map{block: num(float), flag: num(float)}, spam: map{block: num(float), flag: num(float)}, toxic: map{block: num(float), flag: num(float)}}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, duration: str, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, permissions: [map], polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /channeltypes/{name}
@desc Update channel type
@required {name: str, automod: str(disabled/simple/AI), automod_behavior: str(flag/block/shadow_block), max_message_length: int(int32)}
@optional {allowed_flag_reasons: [str], automod_thresholds: map{explicit: map, spam: map, toxic: map} # Sets thresholds for AI moderation, blocklist: str, blocklist_behavior: str(flag/block/shadow_block), blocklists: [map{behavior!: str, blocklist!: str}], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [str] # List of commands that channel supports, connect_events: bool, count_messages: bool, custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, mutes: bool, partition_size: int(int32), partition_ttl: str(duration), permissions: [map{action!: str, name!: str, owner!: bool, priority!: int(int32), resources!: [str], roles!: [str]}], polls: bool, push_level: str(all/all_mentions/mentions/direct_mentions/none), push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, uploads: bool, url_enrichment: bool, user_message_reminders: bool}
@returns(201) {allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map{block: num(float), flag: num(float)}, spam: map{block: num(float), flag: num(float)}, toxic: map{block: num(float), flag: num(float)}}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [str], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, duration: str, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, permissions: [map], polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group check_push
@endpoint POST /check_push
@desc Check push
@optional {apn_template: str # Push message template for APN, event_type: str(message.new/message.updated/reaction.new/reaction.updated/notification.reminder_due) # Type of event for push templates (default: message.new). One of: message.new, message.updated, reaction.new, reaction.updated, notification.reminder_due, firebase_data_template: str # Push message data template for Firebase, firebase_template: str # Push message template for Firebase, message_id: str # Message ID to send push notification for, push_provider_name: str # Name of push provider, push_provider_type: str # Push provider type. One of: firebase, apn, huawei, xiaomi, skip_devices: bool # Don't require existing devices to render templates, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {device_errors: map, duration: str, event_type: str, general_errors: [str], rendered_apn_template: str, rendered_firebase_template: str, rendered_message: map, skip_devices: bool} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group check_sns
@endpoint POST /check_sns
@desc Check SNS
@optional {sns_key: str # AWS SNS access key, sns_secret: str # AWS SNS key secret, sns_topic_arn: str # AWS SNS topic ARN}
@returns(201) {data: map, duration: str, error: str, status: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group check_sqs
@endpoint POST /check_sqs
@desc Check SQS
@optional {sqs_key: str # AWS SQS access key, sqs_secret: str # AWS SQS key secret, sqs_url: str # AWS SQS endpoint URL}
@returns(201) {data: map, duration: str, error: str, status: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group commands
@endpoint GET /commands
@desc List commands
@returns(200) {commands: [map], duration: str} # ListCommandsResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /commands
@desc Create command
@required {description: str # Description, shown in commands auto-completion, name: str # Unique command name}
@optional {args: str # Arguments help text, shown in commands auto-completion, set: str # Set name used for grouping commands}
@returns(201) {command: map?{args: str, created_at: str(date-time), description: str, name: str, set: str, updated_at: str(date-time)}, duration: str} # CreateCommandResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /commands/{name}
@desc Delete command
@required {name: str}
@returns(200) {duration: str, name: str} # DeleteCommandResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /commands/{name}
@desc Get command
@required {name: str}
@returns(200) {args: str, created_at: str(date-time), description: str, duration: str, name: str, set: str, updated_at: str(date-time)} # GetCommandResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /commands/{name}
@desc Update command
@required {name: str, description: str # Description, shown in commands auto-completion}
@optional {args: str # Arguments help text, shown in commands auto-completion, set: str # Set name used for grouping commands}
@returns(201) {command: map?{args: str, created_at: str(date-time), description: str, name: str, set: str, updated_at: str(date-time)}, duration: str} # UpdateCommandResponse
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group devices
@endpoint DELETE /devices
@desc Delete device
@required {id: str}
@optional {user_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /devices
@desc List devices
@optional {user_id: str}
@returns(200) {devices: [map], duration: str} # ListDevicesResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /devices
@desc Create device
@required {id: str # Device ID, push_provider: str(firebase/apn/huawei/xiaomi) # Push provider}
@optional {push_provider_name: str # Push provider name, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str # **Server-side only**. User ID which server acts upon, voip_token: bool # When true the token is for Apple VoIP push notifications}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group drafts
@endpoint POST /drafts/query
@desc Query draft messages
@optional {filter: map # Filter to apply to the query, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {drafts: [map], duration: str, next: str, prev: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group export
@endpoint POST /export/users
@desc Export users
@required {user_ids: [str]}
@returns(201) {duration: str, task_id: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group export_channels
@endpoint POST /export_channels
@desc Export channels
@required {channels: [map{cid: str, id: str, messages_since: str(date-time), messages_until: str(date-time), type: str}] # Export options for channels}
@optional {clear_deleted_message_text: bool # Set if deleted message text should be cleared, export_users: bool, include_soft_deleted_channels: bool # Set if you want to include deleted channels, include_truncated_messages: bool # Set if you want to include truncated messages, version: str # Export version}
@returns(201) {duration: str, task_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group external_storage
@endpoint GET /external_storage
@desc List external storage
@returns(200) {duration: str, external_storages: map} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /external_storage
@desc Create external storage
@required {bucket: str # The name of the bucket on the service provider, name: str # The name of the provider, this must be unique, storage_type: str(s3/gcs/abs) # The type of storage to use}
@optional {aws_s3: map{s3_api_key: str, s3_custom_endpoint_url: str, s3_region!: str, s3_secret: str} # Config for creating Amazon S3 storage., azure_blob: map{abs_account_name!: str, abs_client_id!: str, abs_client_secret!: str, abs_tenant_id!: str} # Config for creating Azure Blob Storage storage, gcs_credentials: str, path: str # The path prefix to use for storing files}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /external_storage/{name}
@desc Delete external storage
@required {name: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /external_storage/{name}
@desc Update External Storage
@required {name: str, bucket: str # The name of the bucket on the service provider, storage_type: str(s3/gcs/abs) # The type of storage to use}
@optional {aws_s3: map{s3_api_key: str, s3_custom_endpoint_url: str, s3_region!: str, s3_secret: str} # Config for creating Amazon S3 storage., azure_blob: map{abs_account_name!: str, abs_client_id!: str, abs_client_secret!: str, abs_tenant_id!: str} # Config for creating Azure Blob Storage storage, gcs_credentials: str, path: str # The path prefix to use for storing files}
@returns(201) {bucket: str, duration: str, name: str, path: str, type: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /external_storage/{name}/check
@desc Check External Storage
@required {name: str}
@returns(200) {duration: str, file_url: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group guest
@endpoint POST /guest
@desc Create Guest
@required {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object}
@returns(201) {access_token: str, duration: str, user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group import_urls
@endpoint POST /import_urls
@desc Create import URL
@optional {filename: str}
@returns(201) {duration: str, path: str, upload_url: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group imports
@endpoint GET /imports
@desc Get import
@returns(200) {duration: str, import_tasks: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /imports
@desc Create import
@required {mode: str(insert/upsert), path: str}
@optional {merge_custom: bool}
@returns(201) {duration: str, import_task: map{created_at: str(date-time), history: [map], id: str, mode: str, path: str, size: int(int64), state: str, updated_at: str(date-time)}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /imports/{id}
@desc Get import
@required {id: str}
@returns(200) {duration: str, import_task: map{created_at: str(date-time), history: [map], id: str, mode: str, path: str, size: int(int64), state: str, updated_at: str(date-time)}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /imports/v2
@desc List import v2 tasks
@optional {state: int(int32)}
@returns(200) {duration: str, import_tasks: [map], next: str, prev: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /imports/v2
@desc Create import v2 task
@required {product: str(chat/feeds), settings: map{merge_custom: bool, mode: str, path: str, s3: map, skip_references_check: bool}}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {app_pk: int(int32), created_at: str(date-time), duration: str, id: str, product: str, settings: map{merge_custom: bool, mode: str, path: str, s3: map{bucket: str, dir: str, region: str}, skip_references_check: bool}, state: int, updated_at: str(date-time)} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /imports/v2/{id}
@desc Delete import v2 task
@required {id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /imports/v2/{id}
@desc Get import v2 task
@required {id: str}
@returns(200) {app_pk: int(int32), created_at: str(date-time), duration: str, id: str, product: str, result: map, settings: map{merge_custom: bool, mode: str, path: str, s3: map{bucket: str, dir: str, region: str}, skip_references_check: bool}, state: int, updated_at: str(date-time)} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /imports/v2/external-storage
@desc Delete external storage
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /imports/v2/external-storage
@desc Get external storage
@returns(200) {aws_s3: map{bucket: str, path_prefix: str, region: str, role_arn: str}, created_at: str(date-time), duration: str, type: str, updated_at: str(date-time)} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /imports/v2/external-storage
@desc Upsert external storage
@required {type: str}
@optional {aws_s3: map{bucket!: str, path_prefix: str, region!: str, role_arn!: str}}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /imports/v2/external-storage/validate
@desc Validate external storage
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group members
@endpoint GET /members
@desc Query members
@optional {payload: any}
@returns(200) {duration: str, members: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group messages
@endpoint DELETE /messages/{id}
@desc Delete message
@required {id: str}
@optional {hard: bool, deleted_by: str, delete_for_me: bool}
@returns(200) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /messages/{id}
@desc Get message
@required {id: str}
@optional {show_deleted_message: bool}
@returns(200) {duration: str, message: map{attachments: [map], channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, pending_message_metadata: map} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}
@desc Update message
@required {id: str, message: map{attachments: [map], custom: map, html: str, id: str, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [str], mml: str, parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), poll_id: str, quoted_message_id: str, restricted_visibility: [str], shared_location: map, show_in_channel: bool, silent: bool, text: str, type: str, user: map, user_id: str} # Message data for creating or updating a message}
@optional {skip_enrich_url: bool # Skip enrich URL, skip_push: bool}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, pending_message_metadata: map} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /messages/{id}
@desc Partially message update
@required {id: str}
@optional {set: map # Sets new field values, skip_enrich_url: bool # Skip enriching the URL in the message, skip_push: bool, unset: [str] # Array of field names to unset, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, pending_message_metadata: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/action
@desc Run message command action
@required {id: str, form_data: map # ReadOnlyData to execute command with}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/commit
@desc Commit message
@required {id: str}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /messages/{id}/ephemeral
@desc Ephemeral message update
@required {id: str}
@optional {set: map # Sets new field values, skip_enrich_url: bool # Skip enriching the URL in the message, skip_push: bool, unset: [str] # Array of field names to unset, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(200) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, pending_message_metadata: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/reaction
@desc Send reaction
@required {id: str, reaction: map{created_at: str(date-time), custom: map, score: int(int32), type!: str, updated_at: str(date-time), user: map, user_id: str} # Represents user reaction to a message}
@optional {enforce_unique: bool # Whether to replace all existing user reactions, skip_push: bool # Skips any mobile push notifications}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, reaction: map{created_at: str(date-time), custom: map, message_id: str, score: int(int32), type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /messages/{id}/reaction/{type}
@desc Delete reaction
@required {id: str, type: str}
@optional {user_id: str}
@returns(200) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, reaction: map{created_at: str(date-time), custom: map, message_id: str, score: int(int32), type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /messages/{id}/reactions
@desc Get reactions
@required {id: str}
@optional {limit: int(int32), offset: int(int32)}
@returns(200) {duration: str, reactions: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/reactions
@desc Get reactions on a message
@required {id: str}
@optional {filter: map, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}], user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, next: str, prev: str, reactions: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/translate
@desc Translate message
@required {id: str, language: str(af/sq/am/ar/az/bn/bs/bg/zh/zh-TW/hr/cs/da/fa-AF/nl/en/et/fi/fr/fr-CA/ka/de/el/ha/he/hi/hu/id/it/ja/ko/lv/ms/no/fa/ps/pl/pt/ro/ru/sr/sk/sl/so/es/es-MX/sw/sv/tl/ta/th/tr/uk/ur/vi/lt/ht) # Language to translate message to}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{id}/undelete
@desc Undelete message
@required {id: str, undeleted_by: str # ID of the user who is undeleting the message}
@returns(201) {duration: str, message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{message_id}/polls/{poll_id}/vote
@desc Cast vote
@required {message_id: str, poll_id: str}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str, vote: map{answer_text: str, option_id: str}}
@returns(201) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, vote: map?{answer_text: str, created_at: str(date-time), id: str, is_answer: bool, option_id: str, poll_id: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /messages/{message_id}/polls/{poll_id}/vote/{vote_id}
@desc Delete vote
@required {message_id: str, poll_id: str, vote_id: str}
@optional {user_id: str}
@returns(200) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, vote: map?{answer_text: str, created_at: str(date-time), id: str, is_answer: bool, option_id: str, poll_id: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /messages/{message_id}/reminders
@desc Delete reminder
@required {message_id: str}
@optional {user_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /messages/{message_id}/reminders
@desc Updates Reminder
@required {message_id: str}
@optional {remind_at: str(date-time), user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(200) {duration: str, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/{message_id}/reminders
@desc Create reminder
@required {message_id: str}
@optional {remind_at: str(date-time), user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /messages/{parent_id}/replies
@desc Get replies
@required {parent_id: str}
@optional {sort: [map], limit: int(int32), id_gte: str, id_gt: str, id_lte: str, id_lt: str, id_around: str}
@returns(200) {duration: str, messages: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /messages/history
@desc Query message history
@required {filter: map # Filter to apply to the query}
@optional {limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters}
@returns(201) {duration: str, message_history: [map], next: str, prev: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group moderation
@endpoint DELETE /moderation/ban
@desc Unban user
@required {target_user_id: str}
@optional {channel_cid: str, created_by: str, remove_future_channels_ban: bool}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/ban
@desc Ban user
@required {target_user_id: str # ID of user to ban}
@optional {ban_from_future_channels: bool # Whether to also ban the user from all future channels created by the banner, banned_by: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, banned_by_id: str # User ID who issued a ban, channel_cid: str # Channel CID to ban user in eg. messaging:123, delete_messages: str(soft/pruning/hard), delete_reactions: bool # Whether to delete reactions by the banned user on other users' messages, ip_ban: bool # Whether to perform IP ban or not, reason: str # Ban reason, shadow: bool # Whether to perform shadow ban or not, timeout: int # Timeout of ban in minutes. User will be unbanned after this period of time, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/flag
@desc Flag
@optional {custom: map, reason: str, target_message_id: str # ID of the message when reporting a message, target_user_id: str # ID of the user when reporting a user, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, flag: map{approved_at: str(date-time), created_at: str(date-time), created_by_automod: bool, custom: map, details: map{automod: map{action: str, image_labels: [str], message_details: map, original_message_type: str, result: map}, original_text: str}, reason: str, rejected_at: str(date-time), reviewed_at: str(date-time), reviewed_by: str, target_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, target_message_id: str, target_user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, review_queue_item_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /moderation/flags/message
@desc Query Message Flags
@optional {payload: any}
@returns(200) {duration: str, flags: [map]} # QueryMessageFlagsResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/mute
@desc Mute user
@required {timeout: int # Duration of mute in minutes}
@optional {target_ids: [str] # User IDs to mute (if multiple users), user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, mute: map?{created_at: str(date-time), expires: str(date-time), target: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, mutes: [map], non_existing_users: [str], own_user: map{avg_response_time: int(int32), banned: bool, blocked_user_ids: [str], channel_mutes: [map], created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), latest_hidden_channels: [str], mutes: [map], name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_preferences: map{call_level: str, chat_level: str, chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, disabled_until: str(date-time), feeds_level: str, feeds_preferences: map{comment: str, comment_mention: str, comment_reaction: str, comment_reply: str, custom_activity_types: map, follow: str, mention: str, reaction: str}}, revoke_tokens_issued_before: str(date-time), role: str, teams: [str], teams_role: map, total_unread_count: int(int32), total_unread_count_by_team: map, unread_channels: int(int32), unread_count: int(int32), unread_threads: int(int32), updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/mute/channel
@desc Mute channel
@optional {channel_cids: [str] # Channel CIDs to mute (if multiple channels), expiration: int # Duration of mute in milliseconds, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {channel_mute: map?{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, created_at: str(date-time), expires: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, channel_mutes: [map], duration: str, own_user: map{avg_response_time: int(int32), banned: bool, blocked_user_ids: [str], channel_mutes: [map], created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), latest_hidden_channels: [str], mutes: [map], name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_preferences: map{call_level: str, chat_level: str, chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, disabled_until: str(date-time), feeds_level: str, feeds_preferences: map{comment: str, comment_mention: str, comment_reaction: str, comment_reply: str, custom_activity_types: map, follow: str, mention: str, reaction: str}}, revoke_tokens_issued_before: str(date-time), role: str, teams: [str], teams_role: map, total_unread_count: int(int32), total_unread_count_by_team: map, unread_channels: int(int32), unread_count: int(int32), unread_threads: int(int32), updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/unmute
@desc Unmute user
@optional {target_ids: [str] # User IDs to unmute (if multiple users), user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, non_existing_users: [str]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /moderation/unmute/channel
@desc Unmute channel
@optional {channel_cids: [str] # Channel CIDs to mute (if multiple channels), expiration: int # Duration of mute in milliseconds, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, non_existing_users: [str]} # UnmuteResponse
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group og
@endpoint GET /og
@desc Get OG
@required {url: str}
@returns(200) {actions: [map], asset_url: str, author_icon: str, author_link: str, author_name: str, color: str, custom: map, duration: str, fallback: str, fields: [map], footer: str, footer_icon: str, giphy: map{fixed_height: map{frames: str, height: str, size: str, url: str, width: str}, fixed_height_downsampled: map{frames: str, height: str, size: str, url: str, width: str}, fixed_height_still: map{frames: str, height: str, size: str, url: str, width: str}, fixed_width: map{frames: str, height: str, size: str, url: str, width: str}, fixed_width_downsampled: map{frames: str, height: str, size: str, url: str, width: str}, fixed_width_still: map{frames: str, height: str, size: str, url: str, width: str}, original: map{frames: str, height: str, size: str, url: str, width: str}}, image_url: str, og_scrape_url: str, original_height: int(int32), original_width: int(int32), pretext: str, text: str, thumb_url: str, title: str, title_link: str, type: str} # Get OG Attachment
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group permissions
@endpoint GET /permissions
@desc List permissions
@returns(200) {duration: str, permissions: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /permissions/{id}
@desc Get permission
@required {id: str}
@returns(200) {duration: str, permission: map{action: str, condition: map, custom: bool, description: str, id: str, level: str, name: str, owner: bool, same_team: bool, tags: [str]}} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group polls
@endpoint POST /polls
@desc Create poll
@required {name: str # The name of the poll}
@optional {Custom: map, allow_answers: bool # Indicates whether users can suggest user defined answers, allow_user_suggested_options: bool, description: str # A description of the poll, enforce_unique_vote: bool # Indicates whether users can cast multiple votes, id: str, is_closed: bool # Indicates whether the poll is open for voting, max_votes_allowed: int(int32) # Indicates the maximum amount of votes a user can cast, options: [map{custom: map, text: str}], user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str, voting_visibility: str(anonymous/public)}
@returns(201) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /polls
@desc Update poll
@required {id: str # Poll ID, name: str # Poll name}
@optional {Custom: map, allow_answers: bool # Allow answers, allow_user_suggested_options: bool # Allow user suggested options, description: str # Poll description, enforce_unique_vote: bool # Enforce unique vote, is_closed: bool # Is closed, max_votes_allowed: int(int32) # Max votes allowed, options: [map{custom: map, id!: str, text: str}] # Poll options, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str, voting_visibility: str(anonymous/public) # Voting visibility}
@returns(201) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /polls/{poll_id}
@desc Delete poll
@required {poll_id: str}
@optional {user_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /polls/{poll_id}
@desc Get poll
@required {poll_id: str}
@optional {user_id: str}
@returns(200) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /polls/{poll_id}
@desc Partial update poll
@required {poll_id: str}
@optional {set: map # Sets new field values, unset: [str] # Array of field names to unset, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(200) {duration: str, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /polls/{poll_id}/options
@desc Create poll option
@required {poll_id: str, text: str # Option text}
@optional {Custom: map, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, poll_option: map?{custom: map, id: str, text: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /polls/{poll_id}/options
@desc Update poll option
@required {poll_id: str, id: str # Option ID, text: str # Option text}
@optional {Custom: map, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, poll_option: map?{custom: map, id: str, text: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /polls/{poll_id}/options/{option_id}
@desc Delete poll option
@required {poll_id: str, option_id: str}
@optional {user_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /polls/{poll_id}/options/{option_id}
@desc Get poll option
@required {poll_id: str, option_id: str}
@optional {user_id: str}
@returns(200) {duration: str, poll_option: map?{custom: map, id: str, text: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /polls/{poll_id}/votes
@desc Query votes
@required {poll_id: str}
@optional {user_id: str, filter: map # Filter to apply to the query, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters}
@returns(201) {duration: str, next: str, prev: str, votes: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /polls/query
@desc Query polls
@optional {user_id: str, filter: map # Filter to apply to the query, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters}
@returns(201) {duration: str, next: str, polls: [map], prev: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group push_preferences
@endpoint POST /push_preferences
@desc Push notification preferences
@required {preferences: [map{call_level: str, channel_cid: str, chat_level: str, chat_preferences: map, disabled_until: str(date-time), feeds_level: str, feeds_preferences: map, remove_disable: bool, user_id: str}] # A list of push preferences for channels, calls, or the user.}
@returns(201) {duration: str, user_channel_preferences: map, user_preferences: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group push_providers
@endpoint GET /push_providers
@desc List push providers
@returns(200) {duration: str, push_providers: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /push_providers
@desc Upsert a push provider
@optional {push_provider: map{apn_auth_key: str, apn_auth_type: str, apn_development: bool, apn_host: str, apn_key_id: str, apn_notification_template: str, apn_p12_cert: str, apn_team_id: str, apn_topic: str, description: str, disabled_at: str(date-time), disabled_reason: str, firebase_apn_template: str, firebase_credentials: str, firebase_data_template: str, firebase_host: str, firebase_notification_template: str, firebase_server_key: str, huawei_app_id: str, huawei_app_secret: str, name!: str, type: str, xiaomi_app_secret: str, xiaomi_package_name: str}}
@returns(201) {duration: str, push_provider: map{apn_auth_key: str, apn_auth_type: str, apn_development: bool, apn_host: str, apn_key_id: str, apn_p12_cert: str, apn_sandbox_certificate: bool, apn_supports_remote_notifications: bool, apn_supports_voip_notifications: bool, apn_team_id: str, apn_topic: str, created_at: str(date-time), description: str, disabled_at: str(date-time), disabled_reason: str, firebase_apn_template: str, firebase_credentials: str, firebase_data_template: str, firebase_host: str, firebase_notification_template: str, firebase_server_key: str, huawei_app_id: str, huawei_app_secret: str, name: str, type: str, updated_at: str(date-time), xiaomi_app_secret: str, xiaomi_package_name: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /push_providers/{type}/{name}
@desc Delete a push provider
@required {type: str(apn/firebase/huawei/xiaomi), name: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group push_templates
@endpoint GET /push_templates
@desc Get push notification templates
@required {push_provider_type: str(firebase/apn/huawei/xiaomi)}
@optional {push_provider_name: str}
@returns(200) {duration: str, templates: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /push_templates
@desc Upsert a push notification template
@required {event_type: str(message.new/message.updated/reaction.new/notification.reminder_due/feeds.activity.added/feeds.comment.added/feeds.activity.reaction.added/feeds.comment.reaction.added/feeds.follow.created/feeds.notification_feed.updated) # Event type. One of: message.new, message.updated, reaction.new, notification.reminder_due, feeds.activity.added, feeds.comment.added, feeds.activity.reaction.added, feeds.comment.reaction.added, feeds.follow.created, feeds.notification_feed.updated, push_provider_type: str(firebase/apn/huawei/xiaomi) # Push provider type. One of: firebase, apn, huawei, xiaomi}
@optional {enable_push: bool # Whether to send push notification for this event, push_provider_name: str # Push provider name, template: str # Push template}
@returns(201) {duration: str, template: map{created_at: str(date-time), enable_push: bool, event_type: str, push_provider_internal_id: str, template: str, updated_at: str(date-time)}} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group query_banned_users
@endpoint GET /query_banned_users
@desc Query Banned Users
@optional {payload: any}
@returns(200) {bans: [map], duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group query_future_channel_bans
@endpoint GET /query_future_channel_bans
@desc Query Future Channel Bans
@optional {payload: any}
@returns(200) {bans: [map], duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group rate_limits
@endpoint GET /rate_limits
@desc Get rate limits
@optional {server_side: bool, android: bool, ios: bool, web: bool, endpoints: str}
@returns(200) {android: map, duration: str, ios: map, server_side: map, web: map} # Get Rate Limits Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group reminders
@endpoint POST /reminders/query
@desc Query reminders
@optional {filter: map # Filter to apply to the query, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, next: str, prev: str, reminders: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group retention_policy
@endpoint GET /retention_policy
@desc Get retention policy
@returns(200) {duration: str, policies: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /retention_policy
@desc Set retention policy
@required {max_age_hours: int(int32), policy: str(old-messages/inactive-channels)}
@returns(201) {duration: str, policy: map{app_pk: int(int64), config: map{max_age_hours: int(int32)}, enabled_at: str(date-time), policy: str}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /retention_policy/delete
@desc Delete retention policy
@required {policy: str(old-messages/inactive-channels)}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /retention_policy/runs
@desc Get retention policy runs
@optional {filter_conditions: map # Filter conditions to apply to the query, limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters}
@returns(201) {duration: str, next: str, prev: str, runs: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group roles
@endpoint GET /roles
@desc List roles
@returns(200) {duration: str, roles: [map]} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /roles
@desc Create role
@required {name: str # Role name}
@returns(201) {duration: str, role: map{created_at: str(date-time), custom: bool, name: str, scopes: [str], updated_at: str(date-time)}} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /roles/{name}
@desc Delete role
@required {name: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group search
@endpoint GET /search
@desc Search messages
@optional {payload: any}
@returns(200) {duration: str, next: str, previous: str, results: [map], results_warning: map{channel_search_cids: [str], channel_search_count: int(int32), warning_code: int(int32), warning_description: str}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group segments
@endpoint DELETE /segments/{id}
@desc Delete segment
@required {id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /segments/{id}
@desc Get segment
@required {id: str}
@returns(200) {duration: str, segment: map{all_sender_channels: bool, all_users: bool, created_at: str(date-time), deleted_at: str(date-time), description: str, filter: map, id: str, name: str, size: int(int32), type: str, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /segments/{id}/deletetargets
@desc Delete targets from a segment
@required {id: str, target_ids: [str] # Target IDs}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /segments/{id}/target/{target_id}
@desc Check whether a target exists in a segment
@required {id: str, target_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /segments/{id}/targets/query
@desc Query segment targets
@required {id: str}
@optional {Filter: map, Sort: [map{direction: int(int32), field: str, type: str}], limit: int(int32) # Limit, next: str # Next, prev: str # Prev}
@returns(201) {duration: str, next: str, prev: str, targets: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /segments/query
@desc Query segments
@required {filter: map # Filter to apply to the query}
@optional {limit: int(int32), next: str, prev: str, sort: [map{direction: int(int32), field: str, type: str}] # Array of sort parameters}
@returns(201) {duration: str, next: str, prev: str, segments: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group stats
@endpoint POST /stats/team_usage
@desc Query Team Usage Statistics
@optional {end_date: str # End date in YYYY-MM-DD format. Used with start_date for custom date range. Returns daily breakdown., limit: int(int32) # Maximum number of teams to return per page (default: 30, max: 30), month: str # Month in YYYY-MM format (e.g., '2026-01'). Mutually exclusive with start_date/end_date. Returns aggregated monthly values., next: str # Cursor for pagination to fetch next page of teams, start_date: str # Start date in YYYY-MM-DD format. Used with end_date for custom date range. Returns daily breakdown.}
@returns(201) {duration: str, next: str, teams: [map]} # Query Team Usage Stats Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group tasks
@endpoint GET /tasks/{id}
@desc Get status of a task
@required {id: str}
@returns(200) {created_at: str(date-time), duration: str, error: map{stacktrace: str, type: str, version: str}, result: map, status: str, task_id: str, updated_at: str(date-time)} # Get Task Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group threads
@endpoint POST /threads
@desc Query Threads
@optional {filter: map # Filter conditions to apply to threads, limit: int(int32), member_limit: int(int32), next: str, participant_limit: int(int32) # Limit the number of participants returned per each thread, prev: str, reply_limit: int(int32) # Limit the number of replies returned per each thread, sort: [map{direction: int(int32), field: str, type: str}] # Sort conditions to apply to threads, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str, next: str, prev: str, threads: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /threads/{message_id}
@desc Get Thread
@required {message_id: str}
@optional {reply_limit: int(int32), participant_limit: int(int32), member_limit: int(int32)}
@returns(200) {duration: str, thread: map?{active_participant_count: int(int32), channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_user_id: str, custom: map, deleted_at: str(date-time), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, last_message_at: str(date-time), latest_replies: [map], parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, parent_message_id: str, participant_count: int(int32), read: [map], reply_count: int(int32), thread_participants: [map], title: str, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /threads/{message_id}
@desc Partially update thread
@required {message_id: str}
@optional {set: map # Sets new field values, unset: [str] # Array of field names to unset, user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(200) {duration: str, thread: map{active_participant_count: int(int32), channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_user_id: str, custom: map, deleted_at: str(date-time), last_message_at: str(date-time), parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, parent_message_id: str, participant_count: int(int32), reply_count: int(int32), thread_participants: [map], title: str, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group unread
@endpoint GET /unread
@desc Unread counts
@optional {user_id: str}
@returns(200) {channel_type: [map], channels: [map], duration: str, threads: [map], total_unread_count: int(int32), total_unread_count_by_team: map, total_unread_threads_count: int(int32)} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group unread_batch
@endpoint POST /unread_batch
@desc Batch unread counts
@required {user_ids: [str]}
@returns(201) {counts_by_user: map, duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group uploads
@endpoint DELETE /uploads/file
@desc Delete file
@optional {url: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /uploads/file
@desc Upload file
@returns(201) {duration: str, file: str, thumb_url: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /uploads/image
@desc Delete image
@optional {url: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /uploads/image
@desc Upload image
@returns(201) {duration: str, file: str, thumb_url: str, upload_sizes: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group usergroups
@endpoint GET /usergroups
@desc List user groups
@optional {limit: int(int32), id_gt: str, created_at_gt: str, team_id: str}
@returns(200) {duration: str, user_groups: [map]} # ListUserGroupsResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /usergroups
@desc Create user group
@required {name: str # The user friendly name of the user group}
@optional {description: str # An optional description for the group, id: str # Optional user group ID. If not provided, a UUID v7 will be generated, member_ids: [str] # Optional initial list of user IDs to add as members, team_id: str # Optional team ID to scope the group to a team}
@returns(201) {duration: str, user_group: map{created_at: str(date-time), created_by: str, description: str, id: str, members: [map], name: str, team_id: str, updated_at: str(date-time)}} # CreateUserGroupResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint DELETE /usergroups/{id}
@desc Delete user group
@required {id: str}
@optional {team_id: str}
@returns(200) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /usergroups/{id}
@desc Get user group
@required {id: str}
@optional {team_id: str}
@returns(200) {duration: str, user_group: map{created_at: str(date-time), created_by: str, description: str, id: str, members: [map], name: str, team_id: str, updated_at: str(date-time)}} # GetUserGroupResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /usergroups/{id}
@desc Update user group
@required {id: str}
@optional {description: str # The new description for the group, name: str # The new name of the user group, team_id: str}
@returns(201) {duration: str, user_group: map{created_at: str(date-time), created_by: str, description: str, id: str, members: [map], name: str, team_id: str, updated_at: str(date-time)}} # UpdateUserGroupResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /usergroups/{id}/members
@desc Add user group members
@required {id: str, member_ids: [str] # List of user IDs to add as members}
@optional {as_admin: bool # Whether to add the members as group admins. Defaults to false, team_id: str}
@returns(201) {duration: str, user_group: map{created_at: str(date-time), created_by: str, description: str, id: str, members: [map], name: str, team_id: str, updated_at: str(date-time)}} # AddUserGroupMembersResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /usergroups/{id}/members/delete
@desc Remove user group members
@required {id: str, member_ids: [str] # List of user IDs to remove}
@optional {team_id: str}
@returns(201) {duration: str, user_group: map{created_at: str(date-time), created_by: str, description: str, id: str, members: [map], name: str, team_id: str, updated_at: str(date-time)}} # RemoveUserGroupMembersResponse
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /usergroups/search
@desc Search user groups
@required {query: str}
@optional {limit: int(int32), name_gt: str, id_gt: str, team_id: str}
@returns(200) {duration: str, user_groups: [map]} # SearchUserGroupsResponse
@errors {400: Bad request, 429: Too many requests}

@endgroup

@group users
@endpoint GET /users
@desc Query users
@optional {payload: any}
@returns(200) {duration: str, users: [map]} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PATCH /users
@desc Partially update user
@required {users: [map{id!: str, set: map, unset: [str]}]}
@returns(200) {duration: str, membership_deletion_task_id: str, users: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users
@desc Upsert users
@required {users: map # Object containing users}
@returns(201) {duration: str, membership_deletion_task_id: str, users: map} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/{user_id}/deactivate
@desc Deactivate user
@required {user_id: str}
@optional {created_by_id: str # ID of the user who deactivated the user, mark_messages_deleted: bool # Makes messages appear to be deleted}
@returns(201) {duration: str, user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/{user_id}/event
@desc Send user event
@required {user_id: str, event: map{custom: map, type!: str}}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /users/{user_id}/export
@desc Export user
@required {user_id: str}
@returns(200) {duration: str, messages: [map], reactions: [map], user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/{user_id}/reactivate
@desc Reactivate user
@required {user_id: str}
@optional {created_by_id: str # ID of the user who's reactivating the user, name: str # Set this field to put new name for the user, restore_messages: bool # Restore previously deleted messages}
@returns(201) {duration: str, user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map{enabled: bool}, read_receipts: map{enabled: bool}, typing_indicators: map{enabled: bool}}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /users/block
@desc Get list of blocked Users
@optional {user_id: str}
@returns(200) {blocks: [map], duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/block
@desc Block user
@required {blocked_user_id: str # User id to block}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {blocked_by_user_id: str, blocked_user_id: str, created_at: str(date-time), duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/deactivate
@desc Deactivate users
@required {user_ids: [str] # User IDs to deactivate}
@optional {created_by_id: str # ID of the user who deactivated the users, mark_channels_deleted: bool, mark_messages_deleted: bool # Makes messages appear to be deleted}
@returns(201) {duration: str, task_id: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/delete
@desc Delete Users
@required {user_ids: [str] # IDs of users to delete}
@optional {calls: str(soft/hard) # Calls delete mode. Affected calls are those that include exactly two members, one of whom is the user being deleted.  * null or empty string - doesn't delete any calls * soft - marks user's calls and their related data as deleted (soft-delete) * hard - deletes user's calls and their data completely (hard-delete), conversations: str(soft/hard) # Conversation channels delete mode. Conversation channel is any channel which only has two members one of which is the user being deleted.  * null or empty string - doesn't delete any conversation channels * soft - marks all conversation channels as deleted (same effect as Delete Channels with 'hard' option disabled) * hard - deletes channel and all its data completely including messages (same effect as Delete Channels with 'hard' option enabled), files: bool # Delete user files. * false or empty string - doesn't delete any files * true - deletes all files uploaded by the user, including images and attachments., messages: str(soft/pruning/hard) # Message delete mode.  * null or empty string - doesn't delete user messages * soft - marks all user messages as deleted without removing any related message data * pruning - marks all user messages as deleted, nullifies message information and removes some message data such as reactions and flags * hard - deletes messages completely with all related information, new_call_owner_id: str, new_channel_owner_id: str, user: str(soft/pruning/hard) # User delete mode.  * soft - marks user as deleted and retains all user data * pruning - marks user as deleted and nullifies user information * hard - deletes user completely. Requires 'hard' option for messages and conversations as well}
@returns(201) {duration: str, task_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint GET /users/live_locations
@desc Get user live locations
@optional {user_id: str}
@returns(200) {active_live_locations: [map], duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint PUT /users/live_locations
@desc Update live location
@required {message_id: str # Live location ID}
@optional {user_id: str, end_at: str(date-time) # Time when the live location expires, latitude: num(float) # Latitude coordinate, longitude: num(float) # Longitude coordinate}
@returns(201) {channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map{allowed_flag_reasons: [str], automod: str, automod_behavior: str, automod_thresholds: map{explicit: map, spam: map, toxic: map}, blocklist: str, blocklist_behavior: str, blocklists: [map], chat_preferences: map{channel_mentions: str, default_preference: str, direct_mentions: str, distinct_channel_messages: str, group_mentions: str, here_mentions: str, role_mentions: str, thread_replies: str}, commands: [map], connect_events: bool, count_messages: bool, created_at: str(date-time), custom_events: bool, delivery_events: bool, grants: map, mark_messages_pending: bool, max_message_length: int(int32), mutes: bool, name: str, partition_size: int(int32), partition_ttl: str(duration)?, polls: bool, push_level: str, push_notifications: bool, quotes: bool, reactions: bool, read_events: bool, reminders: bool, replies: bool, search: bool, shared_locations: bool, skip_last_msg_update_for_system_msgs: bool, typing_events: bool, updated_at: str(date-time), uploads: bool, url_enrichment: bool, user_message_reminders: bool}, cooldown: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, duration: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], custom: map, html: str, id: str, mentioned_users: [map], mml: str, parent_id: str, poll_id: str, quoted_message_id: str, show_in_channel: bool, silent: bool, text: str, type: str}, parent_id: str, parent_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, parent_id: str, parent_message: map, quoted_message: map}, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map{channel_role: str, notifications_muted: bool}, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map{action: str, blocklist_matched: str, blocklists_matched: [str], image_harms: [str], original_text: str, platform_circumvented: bool, semantic_filter_matched: str, text_harms: [str]}, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, poll: map{allow_answers: bool, allow_user_suggested_options: bool, answers_count: int(int32), created_at: str(date-time), created_by: map, created_by_id: str, custom: map, description: str, enforce_unique_vote: bool, id: str, is_closed: bool, latest_answers: [map], latest_votes_by_option: map, max_votes_allowed: int(int32), name: str, options: [map], own_votes: [map], updated_at: str(date-time), vote_count: int(int32), vote_counts_by_option: map, voting_visibility: str}, poll_id: str, quoted_message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map, channel_cid: str, created_at: str(date-time), message: map, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, remind_at: str(date-time), updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map, push_notifications: map, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}, user_id: str}, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map{channel: map{auto_translation_enabled: bool, auto_translation_language: str, blocked: bool, cid: str, config: map, cooldown: int(int32), created_at: str(date-time), created_by: map, custom: map, deleted_at: str(date-time), disabled: bool, filter_tags: [str], frozen: bool, hidden: bool, hide_messages_before: str(date-time), id: str, last_message_at: str(date-time), member_count: int(int32), members: [map], message_count: int(int64), mute_expires_at: str(date-time), muted: bool, own_capabilities: [str], team: str, truncated_at: str(date-time), truncated_by: map, type: str, updated_at: str(date-time)}, channel_cid: str, created_at: str(date-time), created_by_device_id: str, end_at: str(date-time), latitude: num(float), longitude: num(float), message: map{attachments: [map], cid: str, command: str, created_at: str(date-time), custom: map, deleted_at: str(date-time), deleted_for_me: bool, deleted_reply_count: int(int32), draft: map, html: str, i18n: map, id: str, image_labels: map, latest_reactions: [map], member: map, mentioned_channel: bool, mentioned_group_ids: [str], mentioned_here: bool, mentioned_roles: [str], mentioned_users: [map], message_text_updated_at: str(date-time), mml: str, moderation: map, own_reactions: [map], parent_id: str, pin_expires: str(date-time), pinned: bool, pinned_at: str(date-time), pinned_by: map, poll: map, poll_id: str, quoted_message: map, quoted_message_id: str, reaction_counts: map, reaction_groups: map, reaction_scores: map, reminder: map, reply_count: int(int32), restricted_visibility: [str], shadowed: bool, shared_location: map, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map}, message_id: str, updated_at: str(date-time), user_id: str}, show_in_channel: bool, silent: bool, text: str, thread_participants: [map], type: str, updated_at: str(date-time), user: map{avg_response_time: int(int32), ban_expires: str(date-time), banned: bool, blocked_user_ids: [str], bypass_moderation: bool, created_at: str(date-time), custom: map, deactivated_at: str(date-time), deleted_at: str(date-time), devices: [map], id: str, image: str, invisible: bool, language: str, last_active: str(date-time), name: str, online: bool, privacy_settings: map{delivery_receipts: map, read_receipts: map, typing_indicators: map}, push_notifications: map{disabled: bool, disabled_until: str(date-time)}, revoke_tokens_issued_before: str(date-time), role: str, shadow_banned: bool, teams: [str], teams_role: map, updated_at: str(date-time)}}, message_id: str, updated_at: str(date-time), user_id: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/reactivate
@desc Reactivate users
@required {user_ids: [str] # User IDs to reactivate}
@optional {created_by_id: str # ID of the user who's reactivating the users, restore_channels: bool, restore_messages: bool # Restore previously deleted messages}
@returns(201) {duration: str, task_id: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/restore
@desc Restore users
@required {user_ids: [str]}
@returns(201) {duration: str} # Response
@errors {400: Bad request, 429: Too many requests}

@endpoint POST /users/unblock
@desc Unblock user
@required {blocked_user_id: str}
@optional {user: map{custom: map, id!: str, image: str, invisible: bool, language: str, name: str, privacy_settings: map, role: str, teams: [str], teams_role: map} # User request object, user_id: str}
@returns(201) {duration: str} # Successful response
@errors {400: Bad request, 429: Too many requests}

@endgroup

@end
