App manifest reference
Manifests are written in YAML or JSON using a specific structure. The Deno Slack SDK enables writing manifests in TypeScript. Here is an example of what one might look like in each language.
- JSON
- YAML
- TypeScript
{
"_metadata": {
"major_version": 2,
"minor_version": 1
},
"display_information": {
"name": "The Very Fantastic Name of Your App",
"long_description": "A very long description. The minimum length is 174 characters and the maximum length is 4,000 characters. The app manifest in App Settings throws an error if it is less than 174 characters.",
"description": "A shorter description.",
"background_color": "#0000AA"
},
"settings": {
"allowed_ip_address_ranges": [
"123.123.123.123",
"124.124.124.124"
],
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false,
"event_subscriptions": {
"request_url": "https://example.com/slack/the_Events_API_request_URL",
"bot_events": [
"app_home_opened",
"message_metadata_deleted",
"link_shared",
"assistant_thread_started",
"message.im",
"function_executed"
],
"user_events": [
"reaction_added"
],
"metadata_subscriptions": [
{
"app_id": "A123ABC456",
"event_type": "star_added"
},
{
"app_id": "A123ABC456",
"event_type": "star_removed"
},
{
"app_id": "*",
"event_type": "task_added"
}
]
},
"incoming_webhooks": {
"incoming_webhooks_enabled": false
},
"interactivity": {
"is_enabled": true,
"request_url": "https://example.com/slack/message_action",
"message_menu_options_url": "https://example.com/slack/message_menu_options"
},
"is_hosted": false,
"function_runtime": "remote"
},
"features": {
"app_home": {
"home_tab_enabled": false,
"messages_tab_enabled": false,
"messages_tab_read_only_enabled": false
},
"assistant_view": {
"assistant_description": "this is a string description of the app assistant. What does your assistant do?",
"suggested_prompts": [
{
"title": "User help",
"message": "How do I use this awesome app?"
}
]
},
"bot_user": {
"display_name": "Your Amazingly Helpful Bot",
"always_online": false
},
"shortcuts": [
{
"name": "Use your app",
"callback_id": "a-really-cool-callback_id",
"description": "Awesome and Helpful App",
"type": "message"
}
],
"slash_commands": [
{
"command": "/z",
"description": "You see a mailbox in the field.",
"should_escape": false,
"usage_hint": "/zork open mailbox",
"url": "https://example.com/slack/slash/please"
}
],
"unfurl_domains": [
"example.com"
]
},
"oauth_config": {
"scopes": {
"bot": [
"commands",
"chat:write",
"chat:write.public",
"metadata.message:read",
"links:read",
"assistant:write",
"im:history",
"reactions:write"
],
"user": [
"channels:history",
"reactions:read",
"reactions:write"
]
},
"redirect_urls": [
"https://example.com/slack/auth"
],
"token_management_enabled": true
},
"functions": {
"a_callback_id": {
"title": "A Callback ID",
"description": "This is an example callback id! Huzzah!",
"input_parameters": {
"properties": {
"user_id": {
"type": "string",
"title": "User",
"description": "Message recipient",
"is_required": true,
"hint": "Select a user in the workspace",
"name": "user_id"
}
},
"required": [
"user_id"
]
},
"output_parameters": {
"properties": {
"user_id": {
"type": "string",
"title": "User",
"description": "User that completed the function",
"is_required": true,
"name": "user_id"
}
},
"required": [
"user_id"
]
}
}
},
"workflows": {
"cool_name_for_a_workflow": {
"title": "Name your workflow",
"description": "Describe your workflow here",
"input_parameters": {
"properties": {
"channel_id_for_workflow": {
"type": "slack#/types/channel_id"
},
"first_property": {
"type": "string"
},