UNPKG

@slack/web-api

Version:

Official library for using the Slack Platform's Web API

257 lines 18.3 kB
export interface Manifest extends Record<string, unknown> { /** @description A group of settings that describe the manifest. */ _metadata?: ManifestMetadata; /** * @description A group of settings that describe parts of an app's appearance within Slack. If you're distributing * the app via the Slack Marketplace, read our {@link https://docs.slack.dev/slack-marketplace/distributing-your-app-in-the-slack-marketplace listing guidelines} to pick the best values for these settings. */ display_information: ManifestDisplayInformation; /** @description A group of settings corresponding to the Features section of the app config pages. */ features?: ManifestFeatures; /** @description A group of settings describing OAuth configuration for the app. */ oauth_config?: ManifestOAuthConfig; /** @description A group of settings corresponding to the Settings section of the app config pages. */ settings?: ManifestSettings; /** @description A group of settings corresponding to Custom Functions bundled in your application. */ functions?: Record<string, ManifestFunction>; } interface ManifestMetadata { /** * @description An integer that specifies the major version of the manifest schema to target. * Only `1` and `2` are supported. Defaults to `1`. */ major_version?: number; /** @description An integer that specifies the minor version of the manifest schema to target. */ minor_version?: number; } interface ManifestDisplayInformation { /** @description A string of the name of the app. Maximum length is 35 characters. */ name: string; /** * @description A string with a short description of the app for display to users. Maximum length is 140 characters. */ description?: string; /** @description A string with a longer version of the description of the app. Maximum length is 4000 characters. */ long_description?: string; /** * @description A string containing a hex color value (including the hex sign) that specifies the background color * used on hovercards that display information about your app. Can be 3-digit (`#000`) or 6-digit (`#000000`) hex * values. Once an app has set a background color value, it cannot be removed, only updated. */ background_color?: string; } interface ManifestFeatures { /** * @description A subgroup of settings that describe {@link https://docs.slack.dev/surfaces/app-home App Home} configuration. * @see {@link https://docs.slack.dev/surfaces/app-home App Home}. */ app_home?: ManifestAppHome; /** * @description A subgroup of settings that describe {@link https://docs.slack.dev/legacy/legacy-bot-users bot user} configuration. * @see {@link https://docs.slack.dev/legacy/legacy-bot-users Legacy bots}. */ bot_user?: ManifestBotUser; /** * @description An array of settings groups that describe {@link https://docs.slack.dev/interactivity/implementing-shortcuts shortcuts} * configuration. A maximum of 10 shortcuts can be included in this array. * @see {@link https://docs.slack.dev/interactivity/implementing-shortcuts Shortcuts}. */ shortcuts?: ManifestShortcut[]; /** * @description An array of settings groups that describe {@link https://docs.slack.dev/interactivity/implementing-slash-commands slash commands} * configuration. A maximum of 50 slash commands can be included in this array. * @see {@link https://docs.slack.dev/interactivity/implementing-slash-commands Slash Commands}. */ slash_commands?: ManifestSlashCommand[]; /** * @description An array of strings containing valid unfurl domains to register. A maximum of 5 unfurl domains can be * included in this array. * @see {@link https://docs.slack.dev/messaging/unfurling-links-in-messages Link unfurling: configuring domains}. */ unfurl_domains?: string[]; } interface ManifestAppHome { /** * @description A boolean that specifies whether or not the {@link https://docs.slack.dev/surfaces/app-home#home-tab Home tab} is enabled. * @see {@link https://docs.slack.dev/surfaces/app-home#home-tab Home tab}. */ home_tab_enabled?: boolean; /** * @description A boolean that specifies whether or not the Messages tab in your App Home is enabled. * @see {@link https://docs.slack.dev/surfaces/app-home#messages-tab Message tab}. */ messages_tab_enabled?: boolean; /** * @description A boolean that specifies whether or not the users can send messages to your app in the * {@link https://docs.slack.dev/surfaces/app-home#messages-tab Messages tab} * of your App Home. * @see {@link https://docs.slack.dev/surfaces/app-home#messages-tab Messages tab}. */ messages_tab_read_only_enabled?: boolean; } interface ManifestBotUser { /** * @description A string containing the display name of the bot user. Maximum length is 80 characters. * Allowed characters: `a-z`, `0-9`, `-`, `_`, and `.`. */ display_name: string; /** @description A boolean that specifies whether or not the bot user will always appear to be online. */ always_online?: boolean; } interface ManifestShortcut { /** @description Specifies which {@link https://docs.slack.dev/interactivity/implementing-shortcuts type of shortcut} is being described. */ type: 'global' | 'message'; /** @description A string containing the name of the shortcut. */ name: string; /** @description A string containing the callback_id of this shortcut. Maximum length is 255 characters. */ callback_id: string; /** @description A string containing a short description of this shortcut. Maximum length is 150 characters. */ description: string; } interface ManifestSlashCommand { /** * @description A string containing the actual slash command. Maximum length is 32 characters, and should include * the leading `/` character. */ command: string; /** * @description A string containing a description of the slash command that will be displayed to users. * Maximum length is 2000 characters. */ description: string; /** * @description A boolean that specifies whether or not channels, users, and links typed with * the slash command should be escaped. Defaults to `false`. */ should_escape?: boolean; /** * @description A string containing the full `https` URL that acts as the * {@link https://docs.slack.dev/interactivity/implementing-slash-commands#creating_commands slash command's request URL}. */ url?: string; /** @description A string a short usage hint about the slash command for users. Maximum length is 1000 characters. */ usage_hint?: string; } interface ManifestOAuthConfig { /** * @description An array of strings containing {@link https://docs.slack.dev/authentication/installing-with-oauth OAuth redirect URLs}. * A maximum of 1000 redirect URLs can be included in this array. */ redirect_urls?: string[]; /** @description A subgroup of settings that describe {@link https://docs.slack.dev/reference/scopes permission scopes} configuration. */ scopes?: ManifestOAuthScopes; token_management_enabled?: boolean; } interface ManifestOAuthScopes { /** * @description An array of strings containing {@link https://docs.slack.dev/reference/scopes?token_types=Bot granular bot scopes} * to request upon app installation. A maximum of 255 scopes can included in this array. */ bot?: BotScope[]; /** * @description An array of strings containing {@link https://docs.slack.dev/reference/scopes?token_types=User user scopes} * to request upon app installation. A maximum of 255 scopes can included in this array. */ user?: UserScope[]; } interface ManifestSettings { /** * @description An array of strings that contain IP addresses that conform to the * {@link https://docs.slack.dev/authentication/best-practices-for-security Allowed IP Ranges} feature. Maximum of 50 IP addresses. */ allowed_ip_address_ranges?: string[]; /** @description A subgroup of settings that describe {@link https://docs.slack.dev/apis/web-api/using-the-conversations-api Events API} configuration for the app. */ event_subscriptions?: ManifestEventSubscriptions; /** @description A subgroup of settings that describe {@link https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks Incoming Webhooks} configuration for the app. */ incoming_webhooks?: ManifestIncomingWebhooks; /** @description A subgroup of settings that describe {@link https://docs.slack.dev/interactivityinteractivity} configuration for the app. */ interactivity?: ManifestInteractivity; /** @description A boolean that specifies whether or not {@link https://docs.slack.dev/enterprise-grid/organization-ready-apps organization-wide deployment} is enabled. */ org_deploy_enabled?: boolean; /** @description A boolean that specifies whether or not {@link https://docs.slack.dev/apis/events-api/using-socket-mode Socket Mode} is enabled. */ socket_mode_enabled?: boolean; /** @description A boolean that specifies whether or not {@link https://docs.slack.dev/authentication/using-token-rotation token rotation} is enabled. */ token_rotation_enabled?: boolean; function_runtime?: string; } interface ManifestEventSubscriptions { /** * @description An array of strings matching the event types you want to the app to subscribe to. * A maximum of 100 event types can be used. * @see {@link https://docs.slack.dev/reference/events Event types}. */ bot_events?: ManifestEvent[]; /** * @description An array of strings matching the event types you want to the app to subscribe to on * behalf of authorized users. A maximum of 100 event types can be used. * @see {@link https://docs.slack.dev/reference/events Event types}. */ user_events?: ManifestEvent[]; /** * @description A string containing the full `https` URL that acts as the * {@link https://docs.slack.dev/apis/events-api/using-http-request-urls Events API request URL}. * If set, you'll need to manually verify the Request URL in the App Manifest section of App Management. */ request_url?: string; } interface ManifestIncomingWebhooks { /** @description Whether to {@link https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks enable Incoming Webhooks} for your application or not. */ incoming_webhooks_enabled?: boolean; } interface ManifestInteractivity { /** @description A boolean that specifies whether or not interactivity features are enabled. */ is_enabled: boolean; /** @description A string containing the full https URL that acts as the {@link https://docs.slack.dev/interactivity/handling-user-interaction interactive Options Load URL}. */ message_menu_options_url?: string; /** @description A string containing the full https URL that acts as the {@link https://docs.slack.dev/interactivity/handling-user-interaction interactive Request URL}. */ request_url?: string; } interface ManifestFunction { /** @description The name of your function. */ title: string; /** @description A description of your function. */ description: string; /** @description Input parameters that your function will accept. */ input_parameters: ManifestParameters; /** @description Output parameters that your function will produce. */ output_parameters: ManifestParameters; } interface ManifestParameters { /** * @description A map of property names to property definitions describing the parameter set. * Maximum of 50 property names can be defined. */ properties: Record<string, ManifestParameterProperty>; /** @description Array of strings matching the propert names defined in `properties`. */ required?: string[]; } export type ManifestParameterProperty = CommonManifestParameterProperty | StringManifestParameterProperty | NumberManifestParameterProperty; interface CommonManifestParameterProperty { /** @description The type of the property. */ type: string; /** @description The description of the property. */ description?: string; /** @description The title of the property. */ title?: string; /** @description Property usage hint. */ hint?: string; } interface StringManifestParameterProperty extends CommonManifestParameterProperty { /** @description The type of the property. For strings, this will always be `string`. */ type: 'string'; minLength?: number; maxLength?: number; } interface NumberManifestParameterProperty extends CommonManifestParameterProperty { /** @description The type of the property. For numbers, this will always be `number`. */ type: 'number'; minimum?: number; maximum?: number; } type BotScope = 'app_mentions:read' | 'bookmarks:read' | 'bookmarks:write' | 'calls:read' | 'calls:write' | 'channels:history' | 'channels:join' | 'channels:manage' | 'channels:read' | 'channels:write.invites' | 'channels:write.topic' | 'chat:write' | 'chat:write.customize' | 'chat:write.public' | 'commands' | 'conversations.connect:manage' | 'conversations.connect:read' | 'conversations.connect:write' | 'datastore:read' | 'datastore:write' | 'dnd:read' | 'emoji:read' | 'files:read' | 'files:write' | 'groups:history' | 'groups:read' | 'groups:write' | 'groups:write.invites' | 'groups:write.topic' | 'im:history' | 'im:read' | 'im:write' | 'incoming-webhook' | 'links.embed:write' | 'links:read' | 'links:write' | 'metadata.message:read' | 'mpim:history' | 'mpim:read' | 'mpim:write' | 'mpim:write.invites' | 'mpim:write.topic' | 'none' | 'pins:read' | 'pins:write' | 'reactions:read' | 'reactions:write' | 'reminders:read' | 'reminders:write' | 'remote_files:read' | 'remote_files:share' | 'remote_files:write' | 'team.billing:read' | 'team.preferences:read' | 'team:read' | 'tokens.basic' | 'triggers:read' | 'triggers:write' | 'usergroups:read' | 'usergroups:write' | 'users.profile:read' | 'users:read' | 'users:read.email' | 'users:write' | 'workflow.steps:execute'; type UserScope = 'admin' | 'admin.analytics:read' | 'admin.app_activities:read' | 'admin.apps:read' | 'admin.apps:write' | 'admin.barriers:read' | 'admin.barriers:write' | 'admin.conversations:read' | 'admin.conversations:write' | 'admin.invites:read' | 'admin.invites:write' | 'admin.roles:read' | 'admin.roles:write' | 'admin.teams:read' | 'admin.teams:write' | 'admin.usergroups:read' | 'admin.usergroups:write' | 'admin.users:read' | 'admin.users:write' | 'admin.workflows:read' | 'admin.workflows:write' | 'auditlogs:read' | 'bookmarks:read' | 'bookmarks:write' | 'calls:read' | 'calls:write' | 'channels:history' | 'channels:read' | 'channels:write' | 'channels:write.invites' | 'channels:write.topic' | 'chat:write' | 'chat:write:bot' | 'chat:write:user' | 'commands' | 'dnd:read' | 'dnd:write' | 'email' | 'emoji:read' | 'files:read' | 'files:write' | 'files:write:user' | 'groups:history' | 'groups:read' | 'groups:write' | 'groups:write.invites' | 'groups:write.topic' | 'identity.avatar' | 'identity.basic' | 'identity.email' | 'identity.team' | 'im:history' | 'im:read' | 'im:write' | 'incoming-webhook' | 'links.embed:write' | 'links:read' | 'links:write' | 'mpim:history' | 'mpim:read' | 'mpim:write' | 'mpim:write.invites' | 'mpim:write.topic' | 'openid' | 'pins:read' | 'pins:write' | 'profile' | 'reactions:read' | 'reactions:write' | 'reminders:read' | 'reminders:write' | 'remote_files:read' | 'remote_files:share' | 'search:read' | 'stars:read' | 'stars:write' | 'team.billing:read' | 'team.preferences:read' | 'team:read' | 'tokens.basic' | 'usergroups:read' | 'usergroups:write' | 'users.profile:read' | 'users.profile:write' | 'users:read' | 'users:read.email' | 'users:write'; export type AnyManifestConfigurationScope = 'app_configurations:read' | 'app_configurations:write'; export type AppManifestLevelScopes = 'authorizations:read' | 'connections:write'; type ManifestEvent = 'app_home_opened' | 'app_mention' | 'app_rate_limited' | 'app_requested' | 'app_uninstalled' | 'call_rejected' | 'channel_archive' | 'channel_created' | 'channel_deleted' | 'channel_history_changed' | 'channel_id_changed' | 'channel_left' | 'channel_rename' | 'channel_shared' | 'channel_unarchive' | 'channel_unshared' | 'dnd_updated' | 'dnd_updated_user' | 'email_domain_changed' | 'emoji_changed' | 'entity_details_requested' | 'file_change' | 'file_comment_added' | 'file_comment_deleted' | 'file_comment_edited' | 'file_created' | 'file_deleted' | 'file_public' | 'file_shared' | 'file_unshared' | 'grid_migration_finished' | 'grid_migration_started' | 'group_archive' | 'group_close' | 'group_deleted' | 'group_history_changed' | 'group_left' | 'group_open' | 'group_rename' | 'group_unarchive' | 'im_close' | 'im_created' | 'im_history_changed' | 'im_open' | 'invite_requested' | 'link_shared' | 'member_joined_channel' | 'member_left_channel' | 'message' | 'message.app_home' | 'message.channels' | 'message.groups' | 'message.im' | 'message.mpim' | 'message_metadata_deleted' | 'message_metadata_posted' | 'message_metadata_updated' | 'pin_added' | 'pin_removed' | 'reaction_added' | 'reaction_removed' | 'resources_added' | 'resources_removed' | 'scope_denied' | 'scope_granted' | 'shared_channel_invite_accepted' | 'shared_channel_invite_approved' | 'shared_channel_invite_declined' | 'shared_channel_invite_received' | 'star_added' | 'star_removed' | 'subteam_created' | 'subteam_members_changed' | 'subteam_self_added' | 'subteam_self_removed' | 'subteam_updated' | 'team_access_granted' | 'team_access_revoked' | 'team_domain_change' | 'team_join' | 'team_rename' | 'tokens_revoked' | 'url_verification' | 'user_change' | 'user_huddle_changed' | 'user_profile_changed' | 'user_resource_denied' | 'user_resource_granted' | 'user_resource_removed' | 'user_status_changed' | 'workflow_deleted' | 'workflow_published' | 'workflow_step_deleted' | 'workflow_step_execute' | 'workflow_unpublished'; export {}; //# sourceMappingURL=manifest.d.ts.map