Classic apps deprecation timeline adjustment
We want to update you about our previous announcement regarding support for classic apps. After much consideration and feedback, we have decided to push back the deprecation date to May 25, 2026.
We want to update you about our previous announcement regarding support for classic apps. After much consideration and feedback, we have decided to push back the deprecation date to May 25, 2026.
Long a staple of workflow apps built with the Deno Slack SDK—and now with recent support for Bolt frameworks—we're proud to make the ever-growing Slack CLI part of our collection of open source tooling.
We love contributions from our community, so we encourage you to explore and interact with the GitHub repo. Contributions, bug reports, and any feedback are all helpful; let us nurture the Slack CLI together to help make building Slack apps more pleasant for everyone.
Not familiar with the Slack CLI? Visit the docs and follow the installation guide to begin your journey.
Version 3.0.4
of the developer tools for the Slack platform is here!
hooks.json
error message to use a working, valid URL.As previously announced, the Slack platform and developer tools documentation are moving: the Slack platform documentation is now in beta on docs.slack.dev, and the developer tools documentation has moved to its new home on tools.slack.dev.
Our next step is to sunset the old documentation experience on api.slack.com, and we plan to do so by the end of June 2025. In the meantime, you may want to update any bookmarks you have pointing to api.slack.com—but not to worry, we'll have redirects in place to make sure you end up right where you need to be!
Version 3.0.2
of the developer tools for the Slack platform is here!
slack version
command to include additional descriptive information and examples when using the --help
flag.slack feedback
command to point to the home of our new and improved documentation on docs.slack.dev!Slack CLI v3.0.1
delivers a handful of small improvements thanks to our developer community feedback.
--token
flag and it'll work when combined with the --app
and --team
flags.--app
flag to use the specified app and it'll work when combined with the --team
flag.We want to update you about our previous announcement regarding support for the files.upload
API method. After much consideration and feedback, we have decided to push back the deprecation date to November 12, 2025.
Today is the day! As previously mentioned, the Slack platform and developer tools documentation are moving: the shiny new Slack platform documentation is now in beta on docs.slack.dev, and the developer tools documentation has fully moved to its new home on tools.slack.dev. The doors are open for our housewarming party 🥳 so come on in, take a look around, and let us know what you think. Thanks for coming along on this journey with us!
Version 3.0.0
of the developer tools for the Slack automations platform is here, with lots of goodies for you!
slack.json
file to .slack/hooks.json
, and continue to support slack.json
for existing projects. There is now a warning shown in --verbose
output to encourage projects to migrate their slack.json
to .slack/hooks.json.
invalid_app_directory
error from any commands run in nested project directories, and now search for the required slack.json
file in the project's configuration. We also now also check for this file at .slack/hooks.json
.slack create
and slack samples
, to be sub-commands of the slack project
command (they remain aliased as top-level commands though, so there is no change to the user experience).slack doctor
command to display the manifest.source
value, which will be either local
or remote
.slack create
command with a new create journey that allows you to choose between different types of apps for Bolt for JavaScript, Bolt for Python, and Deno.slack init
command, which will initialize an existing Bolt for JavaScript, Bolt for Python, or Deno project with Slack CLI support.--no-color
flag.slack collaborators
and slack manifest
commands.slack run
command encountered an error; we now exit the slack run
command if this happens.We previously mentioned that we had deprecated the deno
command and removed its listing from the help
command. We have now removed the deno
command completely. Developers who were depending on this command should now use the deno executable directly.
We've also removed support for the deprecated, pre-release Deno Slack SDK versions that used slack.yaml
and project.ts
files. The Run-on-Slack platform no longer supports the slack.yaml
file format, and no production projects should be affected. The project.ts
file was deprecated by the Deno Slack SDK in favor of manifest.ts
and manifest.json
files.
Version 2.33.0
of the developer tools for the Slack automations platform will be your valentine!
slack manifest
command is run.slack
.The markdown block for Block Kit accepts standard markdown and outputs formatted Slack markdown; intended for use in AI apps.
This API is now available in a limited release for interested partners. Use the Data Access API within AI apps to access all the relevant Slack data you need to ensure a pleasant user experience for AI apps
Version 2.32.1
of the developer tools for the Slack automations platform has arrived!
In the Deno Slack Hooks 1.3.2
release, we've improved the bundling used for the slack deploy
command to address some issued encountered with npm
imports.
We fixed a bug to skip the hosted app pre-run check when the --force
flag is used.
Version 2.32.0
of the developer tools for the Slack automations platform is here!
slack env
commands. We also added error messaging to these commands when the app being referenced is not a workflow app.slack env remove
command now exits without erroring when there are no environment variables to remove.slack datastore
commands.slack external-auth
subcommands with non-workflow apps.source
errors that may have caused confusion; they have been replaced with more helpful messaging.On December 10, 2024, we updated the Slack App Developer Policy to add clarity to guidance from our documentation that apps intended for commercial distribution at scale should go through Slack Marketplace review.
While gathering feedback from early customers helps improve your apps, the Slack Marketplace is the right place for apps as they begin to grow. The Slack Marketplace guidelines and our review process help keep the Slack app ecosystem working and customer data secure.
We also clarified existing guidelines about the usage of data collected by your app. Specifically, we are making explicit that the use of data to train an LLM is prohibited.
As you may have read in our November newsletter, Slack platform API documentation is moving! The Slack Documentation team is currently overhauling the API documentation—both front-end and back-end—to enhance your developer documentation experience.
While you won’t see any changes until March 2025, we promise to keep you in the loop. Change is a journey, and we’re here with you every step of the way!
Version 2.31.0 of the developer tools for the Slack automations platform has landed!
We fixed a bug that would display errors when the slack run
command was interrupted during app selection. The fix also includes an org_grant_exists
error, which is raised if an attempt is made to grant installation permission to another workspace when your app has already been granted one.
We want to update you about our previous announcement regarding support for legacy custom bots and classic apps. After much consideration and feedback, we have decided to push back the deprecation date for classic apps by 6 months: we will now discontinue support for them on March 31, 2026 May 25, 2026. Nothing will change for legacy custom bots, of which the original deprecation date was March 31, 2025.
Boo! Version 2.30.1 of the developer tools for the Slack automations platform has sneaked up behind you.
We fixed a bug such that expired tokens will now be removed from your local credentials, and the token_expired
error will be logged when debugging if returned when using the slack logout
command. No tricks, only treats!
Version 2.30.0 of the developer tools for the Slack automations platform has spookily appeared!
slack deploy
now respects use of the --force
flag. We also fixed a few other bugs related to app manifest validation to make things run more smoothly.slack create
command will use either the absolute or relative path provided when creating your app.We want to let you know about some upcoming changes to support for legacy custom bots and classic apps on the Slack platform.
It has been over 10 years since we originally launched the Slack Platform. As we mentioned back in April 2024, there are just too many ways to create an app, so we're doing our best to streamline this process. Beginning March 31, 2025, we will discontinue support for legacy custom bots. In May 2026, we will discontinue support for classic apps. Read on for more details about how this will affect your integrations and apps.
We're excited to announce that the following new features have launched!
Version 2.29.2 of the developer tools for the Slack automations platform is hot off the press!
slack login
command, the Slack CLI will now suggest also running the slack app list
command. When logging in outside of a project directory, the Slack CLI will continue to suggest running the slack create
command to create a new project.Refer to workflow steps and custom steps for Bolt apps for more details.
Version 2.29.1 of the developer tools for the Slack automations platform has arrived!
pwsh
to powershell
for better backwards compatibility.--source
flag with the manifest info
command. The flag can be set to either project
or remote
.npm install
command.--workspace
flag recommendation with a --team
flag recommendation.In the Deno Slack API 2.8.0
release, we've added an event_timestamp
property to all event trigger data objects. Refer to the event response object for more details.
Version 2.28.0 of the developer tools for the Slack automations platform has landed!
We made a few updates behind the scenes to keep things running smoothly.
Version 2.27.1 of the developer tools for the Slack automations platform has made a splash!
SLACK_APP_TOKEN
or the SLACK_BOT_TOKEN
does not match its installed value.In the Deno Slack API 2.7.0
release, we've added support for the following API methods:
In the Deno Slack API 2.6.0
release, we've added support for the following Slack Connect API methods:
In the Deno Slack API 2.5.0
release, we've added support for the following Canvas API methods:
Version 2.26.0 of the developer tools for the Slack automations platform is here!
datastore count
Slack CLI command by adding a default for an empty query expression if one isn't provided.In the Deno Slack SDK 2.12.0
release, we've added the add_bookmark
Slack function and the team_id
type. In addition, you can now pass the optional team_id
parameter to the create_channel
and create_usergroup
Slack functions.
Version 2.25.0 of the developer tools for the Slack automations platform is kicking off the summer fun!
apps.json
file with app IDs for your existing apps using the slack app link
command. Refer to app commands for more details.slack collaborator add
, slack collaborator list
, and slack collaborator remove
commands.slack create
command. We also now suggest installing project dependencies if an error occurs when running this command.slack manifest validate
command.As of May 16, 2024, newly-created Slack apps are no longer able to access the files.upload
API method. Learn how to use our new asynchronous upload flow to migrate your existing apps and integrations by March 11, 2025.
Version 2.24.0
of the developer tools for the Slack automations platform has landed!
We've renamed the function distribute
command to function access
(however, the distribute
subcommand has been added as an alias so you can still use function distribute
). Refer to custom function access for more details.
We've fixed several bugs that address some messaging, formatting, and emoji in the CLI for easier reading.
In the Deno Slack SDK 2.11.0
release, we've added a new Share Canvas in Thread Slack function.
Learn more about what this means for your steps and workflows in this changelog article and survival guide.
Version 2.23.0
of the developer tools for the Slack automations platform is here!
SLACK_API_URL
environment variable to the preferred API host used in the auth process.slack doctor
command.We updated our developer policy to clarify guidance around circumventing Slack limitations. We also tweaked our developer program agreement. Read on to see the short list of changes.
You can now set an event as all_resources: true
instead of listing individual channel_ids
. This allows your event trigger to listen to any channel your app is part of. Check out scoping channel-based event triggers for more details.
Version 2.22.0
of the developer tools for the Slack automations platform is here!
team_access_not_granted
error when redeploying an app.outgoing_domains
attribute within an app's manifest.slack create
.In the Deno Slack SDK 2.10.0
and Deno Slack API 2.4.0
releases, we added support for the all_resources
event for event triggers. Refer to scoping channel-based event triggers for more details.
The original web API method for uploading files to Slack, files.upload
, is being sunset on March 11, 2025 November 12, 2025.
As of May 16, 2024, newly-created apps are no longer able to use this API method.
Existing apps & integrations should migrate away from files.upload
and instead leverage a combination of two APIs: files.getUploadURLExternal
and files.completeUploadExternal
. The use of these two methods is more reliable, especially when uploading large files.
A detailed breakdown of how to use these two API methods is described in our Uploading files documentation.
Version 2.21.0
of the developer tools for the Slack automations platform has sprung!
doctor
hook. To enjoy the improved slack doctor
command experience, existing Deno Slack SDK-based apps must have their deno-slack-hooks
dependency upgraded to the latest version (v1.3.0
).get-manifest
hook when attempting to get a manifest rather than checking for a slack.yaml
file, we now surface any errors that are returned when getting the manifest.As of June 4, 2024, you can no longer create new classic apps or legacy custom integration bot users. Read on to learn how this may impact you and your team.
In the Deno Slack SDK v2.9.0
release, the invite_user_to_channel
built-in function makes the user_ids
parameter optional rather than required. In addition, a usergroup_ids
parameter was added, allowing you to invite entire user groups.
Versions 2.20.0 and 2.20.1 of the developer tools for the Slack automations platform have landed!
$ slack datastore get '{"datastore": "todos", "id": "42"}'
use:
$ slack datastore get --datastore tasks '{"id": "42"}'
not_authed
error that explains how to log in and authorize the Slack CLI.Version 2.19.0 of the developer tools for the Slack automations platform has joined the stage!
GetHooks
errors display properly.The Deno Slack SDK v2.7.0 release brings new Slack functions for Canvases!
Refer to the Canvas section of the Slack functions catalog for more details.
Version 2.18.0 of the developer tools for the Slack automations platform has joined the party!
v6.0
. If you attempt to use an older version of PowerShell, you may encounter errors reading the Slack Configuration file (slack.json
) or running the get hooks
hook.put
and bulkPut
, Retrieve items with get
and bulkGet
, and Delete items with delete
and bulkDelete
, respectively.slack create
command with the --force
flag.trust_unknown_sources
property in your config.json
file.slack deploy
.Version 2.17.1 of the developer tools for the Slack automations platform is hot off the press!
SLACK_APP_TOKEN
and SLACK_BOT_TOKEN
environment variables when you run your app.@slack/cli-hooks
is installed.slack create
command.Version 2.17.0 of the developer tools for the Slack automations platform has landed!
We've improved how the CLI gathers environment variables.
Use the new Block Kit file_input
element in your apps or functions. Get more details here.
You can now use Slack file objects to reference Slack-hosted image files within image blocks and image block elements.
New year, new version (2.16.0) of the developer tools for the Slack automations platform!
We now display the workflow name for errors returned in the CLI, and return an error if credentials aren't found for a selected app when using the slack app
command.
Version 2.15.0
of the developer tools for the Slack automations platform is home for the holidays!
deno
command and removed its listing from the help
command. The deno
command is slated to be removed completely in an upcoming release.api.slack.com
are no longer blocked by a permission error for local apps.(local)
tag to the display name of local apps.Version 2.14.0
of the developer tools for the Slack automations platform is here!
SLACK_CONFIG_DIR
environment variable to the --config-dir
global flag.uninstall
command is now available from the list displayed when using the --help
flag.Version 2.13.0
of the developer tools for the Slack automations platform has landed!
--all-org-workspace-grants
flag to the app list
command so you can display all grants instead of only the first three.workspace
and org
language into team
; as such, we have added a --team
flag and deprecated the --workspace
flag. Note that this will not affect the usage of workspace or org when it is necessary to distinguish between them; for example, with the hermes auth list
and trigger access
commands.delete
command when running the uninstall
command, so you may now only uninstall an app rather than deleting the app entirely along with all of its data.deno-reverse-string
sample app references to use deno-started-template
instead.usr/local/bin
directory if it is missing when installing the CLI.--trigger-def
flag.Keep your user data secret and safe. Both versions of the SCIM API now support restricting token usage by IP address.
Hot on the heels of last week's release, version 2.12.0
of the developer tools for the Slack automations platform is here!
npm:
specifier when importing modules for both locally run and deployed apps. For more details about using npm:
and node:
specifiers, refer to Node.js APIs and npm packages.slack app list
command to display Enterprise grants for multiple workspaces.Version 2.11.0
of the developer tools for the Slack automations platform has spookily appeared!
manifest
, deploy
, install
, triggers create
, and triggers run
) to catch errors if a connector is not installed, attempt to install any certified apps related to connectors mentioned in the manifest, and then re-validate the manifest.--file
flag to the function distribute
command (renamed to function access
) so that you can manage access and distributions with a configuration file instead of multiple commands.Version 2.10.0
of the developer tools for the Slack automations platform has entered the chat! We've updated the deploy
command to prompt you to select an organization workspace, similar to the run
command. We also added a little more polish to the Admin-Approved Apps flow, added support for the apps.certified.install
method (coming soon to an API near you!), and implemented a few bug fixes behind the scenes to keep things running smoothly.
Ever wanted to include the formatting available in the message composer to your form modals or Block Kit surfaces? You can now use the rich text input to collect formatted answers from users and also post Block Kit payloads that include rich text blocks. Try them out in Block Kit Builder now. Hint: Check-out the "edit" functionality (hover and click the pencil icon) to compose rich text blocks in-line.
Version 2.9.1
of the developer tools for the Slack automations platform is here! We now order functions by callback ID for easier sorting when you call the function distribute
command (renamed to function access
). We've also formatted and streamlined the install script and some of our error descriptions for a smoother, more pleasant experience.
Starting September 19, 2023 the Slack API's minimum required CLI version is changing from v1.18.0
to v2.9.0
for Enterprise Grid (for non-Enterprise Grid, the minimum required version is v1.18.0
). If you attempt to log in with an older version, you'll receive a cli_update_required
error from the Slack API. Run slack upgrade
to get the latest version. Refer to the quickstart guide for more details.
Version 2.9.0
of the developer tools for the Slack automations platform has landed!
deploy
and install
your app by using the --org-workspace-grant
flag.--info
flag for a more streamlined experience.--app
and an active token via --token
flags.Use these methods to manage the same workflow permissions and approval requests you can from the admin settings site dashboard, sans the UI and with bulk operations.
Version 2.8.0
of the developer tools for the Slack automations platform has arrived!
app list
command no longer requires authentication, and will instead display an unknown
app status in cases where no authentication is found.run
, deploy
, and delete
commands will now resolve organization-level authentication in cases where workspace-level authentication is missing.We're retiring support for traditional Slack apps providing Steps from Apps to our legacy workflow builder and workflows created with it. Read on to learn whether your apps or workflows are impacted.
Version 2.7.0
of the developer tools for the Slack automations platform has arrived!
slack trigger list --type=<string>
flag to only list triggers of a specific type: For example, slack trigger list --type=shortcut
. We've also supported flag values for --type=<string>
are all
, shortcut
, event
, webhook
, scheduled
, and external
.--help
to any command. For example, slack external-auth add-secret --provider github --secret my-secret-value
.slack app list
command to improve displaying apps you are not authenticated to access. For example, local apps now display a (local)
label and install status is now shown as Status: Unknown
.workflow
, function
, datastore
, customType
, event
or provider
. This helps prevent unexpected behavior at runtime.Starting in March 2023, Slack began rolling out a new collection of features collectively called Save it for Later. It gives you a new Later section on Slack where things you save for later (with or without a reminder attached to it) are kept.
This new collection of features replaces our previous Saved Items (also known as starred items, or just stars) and Reminders features.
As part of this new feature roll out, the existing APIs to interface with saved items and reminders have become degraded or useless. There are no direct APIs for Save it for Later to integrate with. With the current suite of built-in functions, web API methods, events, and triggers offered by Slack it is possible to recreate some (but certainly not all) use cases the impacted APIs supported.
We aim to give ample notice for every platform feature developers would consider a “breaking change.” We apologize we were unable to provide this information to developers ahead of the Save it for Later release.
Version 2.6.0
of the developer tools for the Slack automations platform has arrived!
.github
directory will no longer be included in new projects created from one of our sample apps.feedback@slack.com
—email us for assistance if your app returns an internal error code.slack app list
command now returns Status: Installed
instead of Status: Unknown
for an installed app.slack run
or slack deploy
in a non-interactive environment, regardless of how many triggers might exist.slack run
session.type
field of functions
and datastores
were made in the Deno SDK.Version 2.5.1
fixes a bug to now properly delete the selected app when uninstalling it from a workspace.
Version 2.5.0
of the developer tools for the Slack automations platform is hot off the press!
slack app delete
command.--hide-triggers
flag to the slack run
and slack deploy
commands to prevent retrieving and displaying application triggers.trigger list --limit <n>
command.named_entities
. The include-app-collaborators
flag will allow you to skip this prompt.slack activity
command to support datastore event and error logs. For more information, refer to logging.--token
flag is set, background checks for updates will now be automatically disabled.curl
install of deno
if deno upgrade
should fail.slack logout
command now accepts the --workspace
flag.--show-triggers
flag from the slack run
command, as the command now displays all of your app's triggers and their types.Beginning June 28, 2023, version v1.17.0
and below of the CLI is deprecated. We recommend reinstalling the CLI to get the latest version. Learn more.
Version 2.4.0
of the developer tools for the Slack automations platform is now available!
-v
.-d
flag to bypass Deno installation in the Linux/macOS installation script.1.31.1
.workspace
command with a new app
command.config-dir
global flag visible.auth
flag in favor of token
.app list
command to display installation status.Version 2.3.0
of the developer tools for the Slack automations platform has arrived!
external-auth remove
command now allows you to select a token for deletion.external-auth select-auth
command allows you to select a unique auth for each of the workflows in an app. This command is mandatory when using new coded workflows that have a step containing credentialSource DEVELOPER
; that is, every time a coded workflow is created, this command must be called after the external-auth add
command.slack auth token
and slack auth revoke
commands allow you to manage service tokens.slack auth token
command allows you to get the slackauthticket
and copy and paste it into your workspace to exchange for the service token. The service token will not be saved to your credentials.json
file; instead, it is presented in the prompt for you to copy and paste to your CI/CD pipelines. Once you obtained a service token, you can use the slack login --auth <your-service-token>
command to authorize your Slack CLI. The service token will not conflict with your regular authentication token; you can continue using your regular authentication token within the Slack CLI while using the service token for your CI/CD pipelines.--token <token>
flag allows you to pass the service token used by requests requiring authentication. For example, to install an app, use: slack install --token <your-service-token>
. To create a trigger, use: slack trigger create --token <your-service-token> --app deployed --trigger-def triggers/trigger_def_file.ts
. To deploy an app, use: slack deploy --token <your-service-token>
--experiment [name,name,...]
flag.Read more here.
Version 2.2.0
of the developer tools for our beta Slack platform has landed!
trigger info
command now also shows who has permissions to run the trigger.--no-color
flag, which removes all ANSI sequences for color as well as emojis, giving you plain text output from the CLI that's perfect for piping to a text file.datastore query
command now supports a cursor
argument to help you paginate your results the way you want.We're modifying text presented in Slack message attachments (links to other messages in Slack) via the footer
and channel_name
fields for consistency.
Today we're announcing that the Slack automations platform—which provides a faster, more flexible way to build automations on top of Slack–is generally available to developers. The platform's overhauled architecture gives developers more ways to build, code, and ship custom apps and workflows more quickly and easily in an environment that's both secure and compliant. Read the announcement or follow the Quickstart to get started today.
We released version v2.1.0
of the developer tools for our Slack platform beta. Changes include better error messages, including the local Git version with the slack doctor
command, paring down which commands are visible with slack help
to only what is applicable for developers, and more.
We released version v1.21.0
of the developer tools for our Slack platform beta. Changes include improved ergonomics around trigger access management and added a new command to export form responses to CSV, both within the CLI, updates to the default manifest, and more.
We released v1.20.0
of the developer tools for our Slack platform beta. Changes include a number of user-requested improvements to the CLI and details about an upcoming maintenance window next month, and breaking changes landing the month after that, which may require you to update your apps.
We released version v1.19.0
of the developer tools for our Slack platform beta.
We released version v1.18.0
of the developer tools for our Slack platform beta. View our new curated collection of sample apps for inspiration and illustration.
v1.16.4
of the developer tools for our Slack platform beta. We fixed some pipes behind the scenes to prevent future leaks; check out how we are improving the beta platform experience for our community.admin.roles.listAssignments
, admin.roles.addAssignments
, and admin.roles.removeAssignments
. Explore other useful methods for managing your users and workspaces here.v1.15.0
of the developer tools for our Slack platform beta. It also introduces a breaking change (arriving January 26th, 2023) for those making API calls to outgoing domains in their functions.v1.14.0
of the developer tools for our Slack platform beta.placeholder
text for the following Block Kit elements: channels_select
, conversations_select
, multi_channels_select
, multi_users_select
, and users_select
.conversation.info
and usergroups.list
. Alternatively, consider using the Events API, which also supports WebSockets, to receive message
events.rtm.start
: those still using this method will receive the more reliable but brief response of the rtm.connect
method. We expect some apps to break but we are here to help!rtm.start
's final retirement date to September 27th, 2022. Learn more about the future of rtm.start
and how it may impact your app.dm_user_added
audit event with the Audit Logs API.rtm.start
future behavior. If you still use rtm.start
to connect to Slack, learn more about when this preview will be happening in your time zone and how it may impact your app.user_change
event: user_huddle_changed
, user_profile_changed
, or user_status_changed
.file_deleted
audit events with the Audit Logs API.team.info
parameter domain
is now public. Query for your team's information by domain
only when team
is null.should_escape
is false
now correctly formats the channel identifier. Previously, the API would return HTML entities (<
and >
) that had to be manually converted into their character counterparts.admin.users.unsupportedVersions.export
API allows you to export users using unsupported software within your workspace. Read on to learn more.accessibility_label
field, which allows you to write longer descriptive text for a button. Learn more.admin.apps.requests.cancel
method allows admins to cancel app approval requests within a workspace or Enterprise Grid. Learn more.rtm.connect
or rtm.start
to connect to Slack, you'll notice that all WebSocket URLs now begin with wss://wss-primary.slack.com
.rtm.connect
instead of the deprecated rtm.start
when connecting to the RTM API.focus_on_load
field within Block kit messages, which allows you to pick one specific Block element to auto focus on.conversations.inviteShared
has changed. Invites are now sent to limit the recipient's actions to only sending messages. The new external_limited
argument can be used to control which invitation type is sent.rtm.start
will instead return an equivalent response to rtm.connect
. Beginning November 30, 2021, newly created apps and integrations will only be able to use rtm.connect
.rtm.start
: team.billing.info
and team.preferences.list
.timepicker
block element is released out of beta
and available to use in your spiffy apps.link_shared
event is changing, bringing unfurls—allowing users to see what's in a link—into the message composer.developer_type
field.link_shared
event is changing to bring a little more magic to app unfurls. Read up on the changes, which roll out to free teams on September 1, 2021.input
blocks are now able to exist within messages, allowing you to gather information more swiftly within conversation.C
, just like public channel IDs already do. The Conversations API will tell you whether a conversation is private or not with the is_private
boolean field.admin.analytics.getFile
method now returns daily data about conversations in public channels. Members analytics remain available. Explore what's happening on your Enterprise Grid workspaces.channel.*
, group.*
, im.*
, and mpim.*
. Third, event payloads no longer contain full lists of authed_users
or authed_teams
—instead, use a new method to learn the full list of authorizations an event is visible to. We know keeping up with best practices for Slack apps is a lot to handle—thank you for allowing us to make the platform better. Keep reading.chat.unfurl
.channel_id_changed
to learn the new IDs for the private channels visible to your app.workflow_published
, workflow_unpublished
, workflow_deleted
, and workflow_step_deleted
. Use these events to stay informed on workflows—from unpublished to published and back again—that make use of steps powered by your app.admin.apps.requests.list
API is enhanced to fetch Org AAA requests using enterprise_id arg.
Starting on October 7, 2021, we will start rolling out a new beta app settings experience. This new UI will allow you to directly edit an app's manifest to update its configuration.
The original way to connect to one of our oldest APIs is finally retiring. For existing apps, rtm.start
will start behaving exactly like rtm.connect
on September 27, 2022. Beginning November 30, 2021, newly created apps and integrations will only be able to use rtm.connect
.
The RTM API remains available to developers using rtm.connect
.
On September 1, 2021, the link_shared
event is changing. The change will happen for free teams on September 1, and will roll out to paid teams over the following weeks.
The chat.unfurl
method will also accept new arguments.
Changes to link_shared
will help enable a smoother unfurl experience for apps that haven't yet been installed.
admin.apps.requests.list
API response is enhanced to include the is_user_app_collaborator of the app.
Admin apps API response is enhanced to include the developer_type of the app.
Hello! You are here because three monumental things changed on the Slack platform today, February 24, 2021.
On August 24, 2021, legacy workspace apps were retired. Workspace apps were part of a brief developer preview we elected to not fully release. Since October 2018, existing workspace apps have remained functional but on August 24, 2021 workspace apps will be retired and no longer function.
Please read on if you were the developer, maintainer, administrator, or user of a vintage workspace app.
Don't know if you have a workspace app? Make sure you're signed in to all your workspaces and visit our deprecation center. Each workspace app you own or collaborate on will be listed.
token
as a query parameter. All existing apps require no changes.block_actions
payloads when someone interacts with them. Read about the new dispatch_actions
flag.authorizations
field delivered with events, a new method for listing installations, a new scope—even a new token type for working across an entire organization.authed_users
or authed_teams
. Instead, you can call a separate method if you need a full list of parties an event is visible to.view_submission
and block_actions
payloads will begin including full state
for messages, modal, and App Home views.U
or W
.search.messages
method, four fields—next
, next_2
, previous
, and previous_2
—that sometimes appeared are now deprecated and will no longer appear in responses, beginning December 3, 2020. Let us know of your questions or concerns.api_app_id
parameter with your Slack app's ID. This parameter will better assist you in handling commands from multiple applications or environments.Invite
the app to the conversation, Let Them Know
, or Do Nothing
. The Let Them Know
button didn't work. We've fixed that mistake by removing the button, and updated our documentation on the app_mention
event as well.conversations.mark
. Bespoke clients and personal utilities should use this method sparingly.https://app.slack.com/apps-manage/
. You might not even notice the difference, but we’re letting you know just in case.user_change
events: we've fixed a bug where these events dispatched to subscriptions from all workspaces in externally-shared channels. Now, user_change
events are dispatched only to the home workspace of an externally-shared channel.channels.*
, im.*
, mpim.*
, or groups.*
, you'll now receive a method_deprecated
error. Existing apps will receive warnings but still have until February 24th, 2021 to migrate to the Conversations API.admin.conversations.restrictAccess.addGroup
, admin.conversations.restrictAccess.removeGroup
, & admin.conversations.restrictAccess.listGroups
methods, now available for Enterprise organizations. Update: These methods were renamed but the old names will continue to work.channels.*
, im.*
, mpim.*
, or groups.*
methods beginning June 10th, 2020. Warnings will soon be included as part of deprecated responses.admin.usergroups.*
API methods.default_to_current_conversation
field allows your conversation_select
and multi_conversation_select
menus to be pre-populate the currently open conversation.#
). We've fixed that mistake, and anchors are no longer allowed.channels.*
, im.*
, mpim.*
, and groups.*
. Existing apps have until February 24th, 2021 to migrate to the Conversations API.style
parameter in confirmation objects.replies
array field found in threaded parent messages on October 18th, 2019 like we said we would. The new date is March 31st, 2020. Please use the reply_users
, reply_users_count
, and latest_reply
fields instead.mrkdwn
formatting, just like checkboxes.views.publish
. Get started by diving into the Home tab docs.channels.*
, groups.*
, im.*
, and mpim.*
Web API methods in favor of their Conversations API replacements. Migrate to conversations.*
as soon as possible, as these deprecated methods will retire on February 24, 2021.Until now, it's often been confusing to understand when and where an app may provide customized unfurl behavior for links appearing in conversations. We're gradually rolling out changes that will make this behavior consistent and easily understood. Read on to learn more.
Tokens may no longer be passed in the query string for apps created after Feb 24, 2021
On February 24, 2021, we will stop allowing newly created Slack apps to send requests to Web API methods with access tokens presented in a URL query string. Instead, apps must send tokens in the Authorization
HTTP header or alternatively as a URL-encoded POST body parameter.
Existing apps will be allowed to continue sending their tokens in the token
query string parameter, though we recommend all apps to use authorization headers whenever possible.
Your app's events—received from the Events API—are changing.
Event payloads will no longer contain a full list of authed_users
or authed_teams
. These two fields will be deprecated. There'll be a new, compact field called authorizations
to replace them—but authorizations
will only contain at most one person or workspace that the event is visible to.
If you need a full list of all the parties an event is visible to, you'll call the apps.event.authorizations.list
method.
The new, streamlined shape of events allows Slack to deliver them faster.
These changes to the Events API will take place on February 24, 2021. You'll be able to opt in to them earlier, on September 29, 2020, by going to your app settings and selecting the checkbox under Event Subscription.
In order to get ready for the changes to authorizations, you can use the apps.event.authorizations.list
method even without opting in to the new shape of events, starting September 29, 2020.
Read on for more details on what's changing and how to prepare.
If you rely or want to rely on stateful Block Kit views, we have some exciting news for you. The payloads for view_submission
and block_actions
will have some new additions. Read on to learn more.
On September 30, 2020 we updated the Slack Application Developer Policy and API Terms of Service to clarify existing guidelines.
We're deprecating legacy test tokens and will disallow the creation of new test tokens beginning May 5th, 2020.
We launched Slack apps over four years ago as a replacement to the number of ways one could obtain overly-permissive tokens to integrate with Slack.
If you or a software product you author relies on test token creation, you will need to migrate to using Slack apps with specifically named scopes instead.
Existing tester tokens will continue functioning but tokens left unused are subject to periodic revocation.
We released the Conversations API in September 2017 as a one-size-fits-all replacement for a variety of APIs used to read and write information about channels, private channels, direct messages, and multi-party direct messages.
Today we are announcing the deprecation of the methods that preceded the Conversations API (channels.*
, groups.*
, im.*
, & mpim.*
). On November 25th, 2020 February 24th, 2021 these methods will retire and cease functioning.
If users expect your app to work in channels of any kind, you'll want to verify you're using the Conversations API for all channel types.
We'll stop allowing newly created Slack apps to use these deprecated APIs beginning June 10th, 2020.
All channels.*
, groups.*
, im.*
, & mpim.*
methods will return deprecation warnings beginning June 10th, 2020.
We resolutely recommend migrating to the Conversations API immediately.
max_selected_items
parameter.guest_channels
field from user profile objects belonging to guest users. The users.conversations
method is an accurate way to query the channels a guest user belongs to.channel_shared
and channel_unshared
, now notify your app when a channel is shared or unshared.pins.add
will stop accepting file and file comment IDs beginning August 22, 2019. Similarly, reactions.add
will no longer allow file and file comment parameters. Nowadays, apps and users pin & react to messages about files instead.1.2
or higher. There will be a 24 hour test deprecation on February 19th, 2020. Read more details on why and how to upgrade.admin.users.session.reset
method to wipe a user session, logging out a user whose device may have been stolen or compromised.about the new method, as well as the new scope required to use it.GET /Users
or /Groups
methods? Their count
parameters will no longer accept values above 1000
beginning August 30, 2019.dnd.teamInfo
method now requires the users
parameter. An explicit list of users
helps you, and us, avoid slow API calls.files.comments.add
and files.comments.edit
methods are retiring today. Also, files may no longer be pinned to channels. The pins.add
method will no longer accept files or file comments beginning August 22, 2019.replies
array containing threaded message replies, we'll provide a lighter-weight list of reply_users
, plus a reply_users_count
and the latest_reply
message. These new fields are already available. We'll remove the replies
array on March 31st, 2020.app_home_opened
event. When a user enters a conversation with your app, you can trigger a friendly onboarding flow, a whimsical welcome message, or a deep-dive into dialog.style
field to visually compel and alert users.limit_required
error when you call users.list
or channels.list
for teams containing tens of thousands of responses. To avoid the peril of errors entirely, use pagination.dnd.teamInfo
, the users
argument is required beginning June 3, 2019. Future-proof your app by explicitly listing which users
you wish to see Do Not Disturb settings for.files.comments.add
and files.comments.edit
methods on May 22nd, 2019.include_num_members
parameter with conversations.info
.conversation_host_id
field, indicating the workspace or Enterprise Grid organization that "hosts" the shared channel.shares
attribute from "shared channel" conversation objects. In methods like conversations.history
and the Events and RTM APIs, enjoy a lighter-weight list of the shared_team_ids
representing the teams across which the conversation is shared.This autumn, Slack will make what-you-see-is-what-you-get (WYSIWYG) editing available to users.
Once we release WYSIWYG editing, the text
field found in message objects your app encounters will become an approximation of a user's more richly formatted message.
To capture a message's full nuance and vibrancy, your app may look to the new blocks
attribute included with such messages.
When your app, custom integration, or bot communicates with Slack via HTTP, it uses TLS (Transport Layer Security) to ensure data privacy and integrity.
There are multiple major versions of TLS, including v1.0
, 1.1
, 1.2
, and 1.3
. Versions 1.0
and 1.1
are deprecated and should no longer be used.
On March 4, 2020, we'll require all communications with Slack to use TLS version 1.2
or greater.
All TLS connections must use the SNI extension. Lastly, TLS connections must support at least one of the following supported cipher suites:
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
Using TLS version 1.2
or greater makes Slack safer for everyone.
We're modernizing the GET /Users and GET /Groups methods of our SCIM user management API by putting a more reasonable upper bound on results served per page.
The SCIM spec allows for pagination and these methods have long supported it, but we've accepted higher count
values in the past.
The changes described below are effective July 8th, 2019 August 30th, 2019.
Free teams feature a 5 GB limit on file uploads. However, as in the Wild Wild West of yore, the limit wasn't enforced. As of March 5, 2019, we're starting to enforce the file upload limit more firmly: only the last 5 GB of files will be visible to Free teams. In APIs that return file uploads, older files beyond the limit will be shown as 'tombstoned,' with redacted information and a "hidden_by_limit"
field.
File threads superseded file comments in July 2018. On May 22nd, 2019, we will permanently retire the files.comments.add
and files.comments.edit
API methods.
Vintage file comments remain accessible and deletable with files.comments.get
and file.comments.delete
.
thread_ts
parameter now puts your webhook reply in its proper place.groups.*
and channels.*
don't support these transitional channel types and Conversations API methods must be used instead.invalid_auth
error code when the token is invalid. You'll receive this error whether the token is expired, revoked, or just plain wrong. Use our OAuth 2.0-based token refresh system to refresh expired tokens safely.state
parameter and how it differs from callback_id
.apps.uninstall
method to uninstall itself from a single workspace, revoking all tokens associated with it. To revoke a workspace token without uninstalling the app, use auth.revoke
.conversations.app_home:create
scope. No more fumbling with conversation IDs or different methods: just plug the user's ID into chat.postMessage
and go.chat.postEphemeral
, you may have noticed a no_permission
error thrown instead of channel_not_found
when your app isn't a member of the target conversation. Turns out we actually could find the channel after all.files.info
, groups.list
, im.list
, mpim.list
, reactions.list
, and stars.list
. For apps created after August 7, 2018, results will be returned in perfect, piecemeal pages by default.group_deleted
event, now available for the Events and RTM APIs.conversations:history
, conversations:read
, and conversations:write
. We recommend upgrading your apps in developer preview to the Conversations API as soon as possible.users:read.email
scope is required to retrieve the email
field from user profiles while using user or workspace tokens. Consult our previous announcements on this topic from 2016 and 2017 for migration tips and some historical perspective.message.app_home
events for a focused feed of messages between your app and the people who interface with them through the app home. These messages aren't delivered to message.im
subscriptions now.xoxb-
tokens with auth.revoke
.files:write
scope to upload & manage files instead of files:write:user
. Existing access grants are backfilled. Know your read & write rights.oauth.access
instead of oauth.token
during installation.user_id
with bots.info
.users.conversations
.users.profile.set
to only allow admins of paid teams to update email address profile fields.type
field to the requests dispatched to your Options Load URL, used in message menus and— well, it doesn't work anywhere else yet but we'll have a dialog about that one day...members
arrays returned in channels.*
and rtm.start
, with the limit currently set to 500 results. conversations.members
provides paginated access instead. Read this announcement for detail.response_url
attached to any dialog_submission
to send messages after submission.users.setActive
method was recently rendered irrelevant by our efforts to modernize our message servers. Use users.setPresence
and/or connect via RTM to proclaim a user's presence instead. We'll remove this no-op method entirely on May 8, 2018.users.list
's presence
parameter.chat:write
scope to post messages. Existing access grants are backfilled.app_mention
events to exclusively receive messages mentioning your app or bot.The data structure that represents a message now contains additional new fields on top of all the existing fields your app may be currently expecting. The new structure took effect on February 13, 2019.
These changes come with Block Kit—a new set of components for Slack apps that can be combined to create visually rich and compellingly interactive messages. You can read more about Block Kit below.
Even if you aren't using Block Kit to compose messages, its launch still affects the data structure of messages received via our APIs, so read on to learn how to prepare your apps.
Unless your app uses the Conversations API, you'll encounter unusual results working with more exotic channel types, like shared channels and those channels converted from public to private.
On August 31, 2018 we'll update the Slack Application Developer Policy and API Terms of Service to clarify existing guidelines that keep Slack a safe and secure platform for work.
Workspace apps use an access token to represent all the permissions granted to your app by a workspace.
Workspace tokens are so potent and powerful that apps should take great care to keep them safe and secret. We're releasing a OAuth 2.0-based token expiration and rotation system that will make workspace tokens short-lived while providing your app a secure means to refresh tokens as needed.
For more detail on the ins and outs of token rotation, check out our full documentation.
Workspace apps can now use a simplified interface for working with the Conversations API methods. A workspace app can request three new scopes: conversations:history
, conversations:read
, and conversations:write
. These three scopes cast an umbrella of permission over each different conversation type: channels, DMs, or anything in between.
These new scopes make it even easier to use Conversations API methods, allowing apps to negotiate permissions for, and then interact with, all types of conversations at once.
We've added the message.app_home
event for workspace apps building on our developer preview.
If you subscribe to message.im
events to receive messages between users and your app in the special kinds of 1:1 conversations had in your app homes, you must add a subscription to message.app_home
to continue receiving and acting on those messages.
Workspace apps grant apps a dedicated space within Slack where members can interact directly— we call it your App Home. Apps can use this space for personal notifications, onboarding information, and other helpful features.
We're fixing file comments and in the process we're phasing out some related API methods and events.
File comments look like messages in a channel but they aren't. They travel with files, wherever shared, disrupting conversation at inopportune moments.
We started to gradually roll out file threads on July 23, 2018. Sharing a file with a channel will now create an actual message instead of something that looked convincingly like a message. People and bots may reply to that message as they would any other message. You can even upload files into threads.
We're simplifying the installation process for workspace apps.
Now workspace apps can and should use the oauth.access
method instead of oauth.token
during the verification code exchange phase of app installation via OAuth 2.0.
When used with workspace apps, the response for oauth.access
morphs into a response similar to that of oauth.token
, but with a few improvements detailed below.
Now oauth.access
may be used by workspace apps instead of oauth.token
, simplifying a common hurdle when getting started with workspace apps.
Finally, we're replacing apps.permissions.info
with apps.permissions.scopes.list
and apps.permissions.resources.list
.
We're simplifying some permission scopes as part of the workspace apps developer preview.
Beginning today, workspace apps must request files:write
instead of files:write:user
during installation or when seeking elevated permissions.
Now files:write
represents your app's ability to upload and manage files.
Experiencing déjà vu? This is just like that time we did this for chat:write
.
We're tidying up the character limits on the text
field of posted messages.
Beginning April 25th, 2018, we truncated messages sent to Slack that are longer than 500,000 characters. As of July 12, 2018, we truncate at 100,000 characters.
Over the next several weeks, we slowly lowered the allowed character count.
On August 12, 2018 we started truncating messages containing more than 40,000 characters.
Until now, the rate limits governing the Slack Web API have been vague, even sometimes undefined.
This week we are rolling out an evolved rate limiting system granting a greater number of requests to most methods and sets responsible defaults in the few cases where limits were more mysterious or unenforced.
We've granted a brief grace period to a small number of apps & integrations to adjust.
The RTM API's presence_change
event is now only available via presence subscriptions and rtm.start
no longer includes user presence status in its response.
We incrementally announced these changes in June and October 2017.
Today, we're also announcing the deprecation of the optional presence
parameter in users.list
. Beginning September 26th, 2018, the presence
parameter and corresponding fields will no longer be available from users.list
.
Developers utilizing user presence state in their applications and integrations should review this guide to the many recent and coming changes to presence.
Update: users.setActive
is also deprecated due to underlying functionality not being available in our most modern message servers.
We now serve query string parameters on the wss://
WebSocket URIs produced by rtm.connect
and rtm.start
.
While the specification for WebSockets explicitly allows query string parameters, some third party libraries not fully implementing the spec may handle these parameters incorrectly, stripping them off and invalidating your attempts to open a connection.
Though we didn't anticipate issues sending query strings in websocket URIs, some libraries and frameworks may need tinkering with.
github.com/nlopes/slack
? Update to the latest version of this Golang project to resolve connection issues. A recent commit merged with master fixes websocket URI handling.Legacy workspace apps are deprecated and will retire in August 2021. Learn more.
We're simplifying some permission scopes as part of the workspace apps developer preview.
Beginning today, workspace apps must request chat:write
instead of chat:write:user
during installation or when seeking elevated permissions.
Now chat:write
represents your app's ability to post messages in the channels and contexts granted to it.
users:read.email
can use users.lookupByEmail
and skip wading through users.list
.chat.getPermalink
to easily exchange a message ts
for a permalink URL.bots.info
? We don't know but now they can too.migration.exchange
and turn off your app's translation layer, living the dream of one user ID per user.chat.postMessage
and other methods.Authorization
HTTP headers with the Web API.latest
, unread_count
, and unread_count_display
fields from limited contexts of the new Conversations API. They weren't really supposed to be there. You won't find them spuriously lurking in the shadows again. We don't anticipate any issues but let us know if you find any.members
array found in many API methods is now truncated. We continue to lower the maximum results returned. Please use conversations.members
to manage memberships instead.presence_change
event requires presence_sub
subscriptions beginning November 15, 2017.@username
is changing on the platform but we're making the transition as backwards-compatible as possible.team
object, field, and parameters scattered through the platform, you'll often still encounter team
while reading and programming.thread_ts
attribute so you know if the message is triggered in a thread!chat.unfurl
.chat.postEphemeral
.email
attribute for bot and user tokens. On August 1, 2017 we proceeded with limiting email access to user tokens with users:read.email
.latest
field departing from channel objects returned in the long rtm.start
preamble. Those fields are gone. Turns out we also removed unread_count_display
and unread_count
too. If you're suffering from a sense of loss over these unread count fields, please drop us a line. You can still find them in conversations.info
.users.list
one delicious sip at a time.subteam_members_changed
.presence_change
events in the RTM API? Learn about new ways to subscribe and consolidate presence events here.@channel
-type mentions in back-tick fenced code blocks would trigger notifications. They won't now.app_uninstalled
, or when user and bot tokens are revoked with tokens_revoked
. Pause and resume activity when teams migrate to Enterprise Grid with grid_migration_started
and grid_migration_finished
.user_id_mapping_old_to_new
field described in the Enterprise Grid documentation. It doesn't actually exist and never has, oops!message.channel_join
and message.channel_leave
message subtype events in the Events API and RTM API. Instead, you'll find these new refreshingly direct and informative events: member_joined_channel
and member_left_channel
.channels.list
API method has a new parameter: exclude_members
. Some teams are so big and some channels have so many members that listing them all in a single API response along with every other channel is just outright impractical. Cull unneeded data easily accessed with conversations.info
by excluding members
fields.rtm.start
and start using rtm.connect
instead. rtm.connect
boots quickly and works well with the most gigantic teams and enterprises of the galaxy.users:read
created before January 4th, 2017. After August 1st, 2017 your apps must request users:read.email
to gain that access. See this post for more detail. This retirement has been delayed with no date yet rescheduled.users.profile.get
. Update a user's custom status with users.profile.set
.updated
field, decisively learn last time a user object transformed. Look for it in methods including (but not limited to) users.list
and users.info
. It's an integer value depicting seconds since the epoch.event_id
and event_time
fields. event_id
is globally unique across all teams while the event_time
is when the event dispatched, in integer-based epoch time. Use these fields as you like, but there's nothing you need to do to prepare for this eventuality.channels.history
file messages and skype
user profile fields.Incoming webhooks can do it. Slash commands and interactive messages speak it fluently. The message builder knows no other format. But, until now, chat.postMessage
stubbornly refused to understand your messages composed in impeccable JSON.
Finally, Slack allows you to send JSON to a wide selection of write-based Web API methods. Additionally, now you can better separate concerns when presenting your credentials to Slack.
As of January 2018, presence_change
events are not dispatched without presence subscriptions established with presence_sub
. Relatedly, current user presence status is no longer communicated in rtm.start
. Learn more.
Beginning November 15, 2017, the RTM API's presence_sub
event will be available via presence subscription only.
Back in June, we introduced new ways to track user presence and the presence_change
event in the RTM API.
Dispatching presence events for all users in a workspace is an expensive operation for Slack. A flood of presence events from large workspaces can also disrupt your app's ability to process more useful, timely messages.
By subscribing only to the presence events your app needs to provide presence-dependent functionality, you can reduce unnecessary websocket traffic.
Arrays of members
found in API methods will become truncated beginning December 1, 2017.
members
continues to decrease regularlyAs of March 2018, the limit is set to 500 results. Use conversations.members
for channels with large memberships.
Initially, Slack will limit members
to the first 1,500 users and then gradually lower the number of users returned. You should expect API methods will cease returning members
entirely at some point in the future. If you rely on the members
array, you should instead begin using conversations.members
for a full list of members.
As Slack teams continue to grow in size, returning the full members
array in these methods is no longer practical or performant, for the Slack APIs or developers. The conversations.members
method will allow you to request a list of members at a time that makes sense for your app and should keep these method calls nice and zippy.
Slack now supports multiple languages, and your app or integration can too.
Add a locale
in user and conversation by using the include_locale=true
parameter when requesting a bundle of Web API methods supporting it.
The locale field is a string containing a IETF language code, such as en-US
. fr-FR
, es-ES
, or de-DE
, and other future values.
We now support include_locale
on these methods. Opt-in to receive a locale
field in user profiles or the locale
of a conversation.
If you don't include the parameter, no locale
will be provided. It's opt-in.
You'll also see locale information changes in related user profile change events in the RTM and Events APIs.
Slack is phasing out the @username
artifact in favor of the more expressive and flexible concept of display names.
Handles, aliases, call-signs, and usernames — in chat, they all repersent the same concept: a way for an individual or entity to indicate a preferred identification noun, in whichever way is appropriate to the apparatus at work.
Users will be even better equipped to present their preferred nomenclature while giving organizations the option to work primarily with so-called real names as suits "the suits."
The transition should be technically "backwards compatible" to you, the developer. But the social ramifications, changes in user behavior, and treatments given in Slack clients will inevitably alter the way your apps approach interpreting, storing, and utilizing the now deprecated name
field.
As fellow developers, we know you'll have some feelings about the sunset of @username
considering its historical significance in computing, networking, and digital identity. From mainframes to UNIX to BBSes to IRC, maybe you've used the same name for what seems like centuries.
Fly your freak, geek, or mild-mannered flag proudly by just setting your display name to your preferred @username
.
As of January 2018, presence_change
events are not dispatched without presence subscriptions established with presence_sub
. Relatedly, current user presence status is no longer communicated in rtm.start
. Learn more.
If you've been developing on Slack for awhile you may have noticed a continued theme with updates we make to the platform and APIs: larger teams and evolving use cases mean previous ways of enumerating collections of data become unwieldy and even problematic.
In this exciting edition of the changelog, I'd like to introduce you to new ways to work with presence_change
events in the RTM API.
If you don't work with the RTM API or don't utilize presence_change
events, there's very little of value for you in this changelog.
We've long delivered a message subtype event to everyone in a channel as members come and go.
As a message, its main purpose is to communicate facts to users but it was never a very good vehicle for communicating these facts to bots and applications.
We're introducing new, more frugal logic behind when Slack dispatches message.channel_join
and message.channel_leave
message subtype events in the RTM API and Events API.
If you've relied on these events for programmatic notice when members leave or join a channel, we've got new, strongly structured signals for you to subscribe to and consume instead, member_joined_channel
and member_left_channel
.
The [users:read.email
](/reference/scopes/users.read.email OAuth scope is now required to access the email
field in user objects returned by the users.list
and users.info
web API methods. users:read
is no longer a sufficient scope for this data field. Learn more.
Back in November 2016, we introduced the users:read.email
OAuth permission scope, allowing more explicit access to email addresses.
To help developers with the transition, we automatically grandfathered apps asking for users:read
created before January 4th, 2017.
We'd like to complete this transition and remove this grandfathering entirely on August 21, 2018 October 16, 2018 a future date we'll one day announce.
Apps created before January 4th, 2017 with user tokens granted only the users:read
scope will no longer receive the email
field in user objects.
If you want access to email addresses, you'll need the new OAuth permission scope, users:read.email
. It provides an explicit, additive way to request access to team email addresses.
Additionally, the bot
scope will no longer grant bot user tokens access to email addresses. Bot users must utilize a user token and the users:read.email
scope instead.
Don't need access to email address but do need access to user data? users:read
should be all you need.
Update 2017-07-12: As promised, the latest
fields within rtm.start
's channel objects are no longer returned. Additionally, the unread_count
and unread_count_display
channel fields are also missing, though they can still be found in conversations.info
.
rtm.start
began life as a broker and bootstrap to Websocket connections established by Slack's desktop and mobile clients. Whenever our clients needed more information to establish state, those fields would get stuffed into the cacophony that is rtm.start
's opening salvos.
As team sizes and feature complexity has grown, delivering this immense quantity of information about nearly every user, channel, and conversation on a team has become more difficult to compute, consume, or continue.
It is in this spirit we offer a friendlier alternative in rtm.connect
, a method born with the sole purpose of reserving a websocket connection and providing your application its URL.
rtm.start
must evolve to continue functioning well for all teams and apps. We strongly recommend using rtm.connect
to establish your connections alongside Web API methods to build your app's understanding of the users, channels, and conversations within a team.
One such change coming to rtm.start
is the elimination of the latest
attribute assigned to each channel
in its response.
On July 11, 2017 we'll no longer return these latest
fields. If your app needs a channel's latest timestamp value, use conversations.info
to retrieve it instead.
You can test this future behavior in rtm.start
today by providing the no_latest=1
parameter.
It's almost spring and we're doing a little cleaning early this year.
Ever notice how the username
field of a file object in channels.history
or [file_shared
](/reference/events/file_shared event isn't like typical username fields and contains a bunch of markup usually reserved only for message text?
And why is there a top-level skype
field in user profile objects when really, shouldn't that be a custom field?
Well, we've noticed. And so...
app_id
fields now appearing in our APIs. app_id
is now found in rtm.start
& bots.info
. You'll also find app_id
in the bot_added
& bot_changed
events. What's an app_id
? It's the alphanumeric string found in the URL bar while managing your Slack apps.users:read.email
. Apps created after January 4th, 2017 will need to request this additional scope to gain access to team member email
fields when using users.list
and users.info
. Existing Slack apps with users:read
are automatically grandfathered to include these fields.response_metadata
node to our JSON responses; we'll put warnings there first and other useful stuff later. More details are available.users.profile:write
OAuth permission scope to reset and upload profile images using users.deletePhoto
and users.setPhoto
.W
. We've released a new version of node-slack-sdk to correct a related bug.chat.postMessage
, incoming webhooks, and chat.update
, and response_urls
you will receive a too_many_attachments
error. Unfortunately, we are unable to serve you an error when sending messages as part of a slash command or message buttons invocation response.users.profile:write
scope allows you to edit fields with users.profile.set
. The users.profile:read
scope empowers you to discover available fields with team.profile.get
and retrieve user profiles with users.profile.get
.stars.list
so that it only returns stars belonging to the owner of the presented token. The user
parameter may still be used if the provided user ID belongs to the user utilizing the token.admin
scope to request information about the billable status of team members using the team.billableInfo API method.bot_id
appears in the real-time messaging API and Web API, you need a better way to look up bot users. Use the new bots.info
method to query bot/application information by ID. It requires the users:read
scope.event_ts
timestamp field later this summer. Find out what to expect.footer
, footer_icon
, and ts
fields to tie content across time and space.chat.postMessage
.users.identity
works with Sign in with Slack and auth.revoke
revokes hallway privileges for access tokens. Actually, it revokes the whole token.files.info
to look up information about files they have access to by virtue of their channel memberships. Also, very helpful for adapting to upcoming file events changes.files.info
method is soon to be used by bot users.bot_id
field to relevant API responses. Let us know if you run into any issues.chat.update
, like humans do.chat.postMessage
will better intuit your intent when you don't explicitly specify the as_user
parameter. Let us know if we're guessing wrong!dnd:read
scope, like dnd.info
and dnd.teamInfo
. Your bots'll be more polite than a protocol droid!reaction_added
& reaction_removed
events now include an item_user
field indicating the user that created the original content everyone's raving about.files.sharedPublicURL
or make them private again with files.revokePublicURL
.files.comments.add
, files.comments.edit
, and files.comments.delete
are now available to bot users.url
and url_download
are no longer part of file objectschannel_id
The [users:read.email
](/reference/scopes/users.read.email OAuth scope is now required to access the email
field in user objects returned by the users.list
and users.info
web API methods. users:read
is no longer a sufficient scope for this data field. Learn more.
Grandfathering is no longer in effect. Please see this post from April 2017 for more information.
We've added a new OAuth permission scope called users:read.email
and it provides a new explicit, additive way to request access to team email addresses. If you don't need email addresses but do need other user info, users:read
is still all you need.
Apps created before January 4th, 2017 are grandfathered and will continue behaving in a backwards-compatible way. Apps created after that date must request the new users:read.email
scope. Regardless of creation date, we encourage all apps to migrate to this new scope.
We want to tell you even more about your API requests. On November 1st we'll begin including a response_metadata
field in HTTP API responses.
At first it will include a warnings
array, just as the top-level JSON response does today. API warnings are great example of the kind of information we want to communicate in this response metadata, so please forgive our duplication.
Later we'll include a messages
array. It will include human-readable descriptions of errors or warnings generated by your request.
Beginning next month, newly issued tokens will be longer than previously issued tokens.
Until now, we haven't documented the string length of tokens, so we hope you've used caution when preparing your token storage apparatuses.
As Slack works to serve the needs of larger businesses by building an enterprise product offering, some aspects of our infrastructure and platform are evolving.
Within the next few weeks, we'll add event_ts
timestamp fields to additional streamed events you receive in the real-time messaging API.
The event_ts
field differs from the ts
timestamp fields you already receive with most events. The ts
field is associated with the object or transition the event is describing while the event_ts
attribute refers to the streamed event.
The ts
field is like a date scrawled on a letter contained within an envelope — it's part of the message itself.
The event_ts
is like a postmark stamped on the envelope as part of the postal process, an artifact of the workflow used to deliver the message to the intended recipient.
As with ts
, event_ts
is expressed in a kind of "epoch time", contained within a string and including fractions of seconds.
An example event_ts
timestamp value of "1361482916.000004"
, could be converted to UTC as 2013-02-21 21:41:56 UTC
.
event_ts
is especially useful when noting your real time progress through a channel's history.
Long ago, a small number of enterprising users and developers scoured through client-side code to discover embedded user tokens and began posting messages and performing other skunkworks operations with them. We applaud this adventurous spirit!
Today we take the first step in retiring usage of these antiquated tokens, by changing their behavior when used to post messages through chat.postMessage
.
Today, incoming webhooks either work or they don't. Usually they do, but when they don't, you get a somewhat nasty umbrella HTTP 500 error, even when error conditions were due to something well-understood, like malformed requests or non-existent destination channels.
We will diversify our responses to include commonly-interpreted HTTP status codes. For most developers using incoming webhooks, this change will not require additional effort. Most HTTP clients readily consume and predictably react with these status codes.
If you parse events referencing files in the real-time messaging API, you may have noticed we send a sometimes comically large packet of information when streaming nearly anything related to a file.
To improve performance and provide a better user experience, we're reducing the payload of most file-related events in the RTM API to include only the file's ID. You'll need to use the files.info
API method to retrieve additional information about files.
These changes will roll out gradually beginning May 16th, 2016 — read below to understand how this change may effect you, especially if you work with bot users.
Bot users will gain comparable capabilities, allowing bot user tokens to work with files.info
based on the channel memberships and related capabilities granted to them.
reminders
API methods for managing reminders in Slackreminders
OAuth scopes for calling the new methodsThe following API methods have been released, allowing you to programmatically add, remove, and manage reminders.
The following OAuth scopes will grant you access to the new methods listed above:
More granular OAuth scopes are here! Now your apps can ask for the exact level of access you need.
Added authorization support for thumbnail URLs appearing in File objects.
Added team.integrationLogs
to the Web API
Announced important changes to the Files methods of the Web API.
Now you can upgrade your Slack App's OAuth Scopes by managing your apps. This article explains it all.
Don't press snooze until you've dreamed about our new Do Not Disturb Web API methods.
You can now package Bot Users within Slack Apps, making your creations easier to distribute to teams.
We launched the Slack Marketplace, where teams can discover apps like yours.
We announced the Slack Fund to "give developers the backing they need to build everything possible in Slack."
The api.slack.com home page is fancier.
Enjoy major updates to the Slash Commands documentation, expanding on topics like...
...delayed responses.