Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented Jan 17, 2024

This PR contains the following updates:

Package Change Age Confidence
@slack/web-api (source) 6.13.07.13.0 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

slackapi/node-slack-sdk (@​slack/web-api)

v7.13.0

Compare Source

What's Changed

👾 Enhancements
🍿 Expand for a slackLists API method example
 const list = await app.client.slackLists.create({
      name: 'Test List - SlackLists API',
      description_blocks: [
        {
          type: 'rich_text',
          elements: [
            {
              type: 'rich_text_section',
              elements: [
                {
                  type: 'text',
                  text: 'List to keep track of tasks!',
                },
              ],
            },
          ],
        },
      ],
      schema: [
        {
          key: 'task_name',
          name: 'Task Name',
          type: 'text',
          is_primary_column: true,
        },
        {
          key: 'due_date',
          name: 'Due Date',
          type: 'date',
        },
        {
          key: 'status',
          name: 'Status',
          type: 'select',
          options: {
            choices: [
              { value: 'not_started', label: 'Not Started', color: 'red' },
              { value: 'in_progress', label: 'In Progress', color: 'yellow' },
              { value: 'completed', label: 'Completed', color: 'green' },
            ],
          },
        },
        {
          key: 'assignee',
          name: 'Assignee',
          type: 'user',
        },
      ],
    });
    console.log('List created:', list);
    const listId = list.list_id;

    // extract column IDs from the response (map key -> id)
    const keyToId = {};
    if (list.list_metadata?.schema) {
      for (const col of list.list_metadata.schema) {
        keyToId[col.key] = col.id;
      }
    }
    const taskNameColId = keyToId['task_name'];
    console.log('Column IDs:', keyToId);

    const response = await app.client.slackLists.access.set({
      list_id: listId,
      access_level: 'write',
      user_ids: ['U09G4FG3TRN'],
    });
    console.log('Access set:', response);

    const createItemResponse = await app.client.slackLists.items.create({
      list_id: listId,
      initial_fields: [
        {
          column_id: taskNameColId,
          rich_text: [
            {
              type: 'rich_text',
              elements: [
                {
                  type: 'rich_text_section',
                  elements: [
                    {
                      type: 'text',
                      text: 'CLI app unlink command',
                    },
                  ],
                },
              ],
            },
          ],
        },
      ],
    });
    console.log('Item created:', createItemResponse);
    const itemId = createItemResponse.id;

    if (itemId) {
      await app.client.slackLists.items.info({
        list_id: listId,
        id: itemId,
        include_is_subscribed: true,
      });
      console.log('Item info retrieved');

      await app.client.slackLists.items.update({
        list_id: listId,
        cells: [
          {
            row_id: itemId,
            column_id: taskNameColId,
            checkbox: true,
          },
        ],
      });
      console.log('Item updated');
    }

    const listItemsResponse = await app.client.slackLists.items.list({
      list_id: listId,
      limit: 50,
    });
    console.log('Items listed:', listItemsResponse);

    const downloadStartResponse = await app.client.slackLists.download.start({
      list_id: listId,
      include_archived: false,
    });
    console.log('Download started:', downloadStartResponse);
    const jobId = downloadStartResponse.job_id;

    if (jobId) {
      await app.client.slackLists.download.get({
        list_id: listId,
        job_id: jobId,
      });
      console.log('Download status retrieved');
    }

    if (itemId) {
      await app.client.slackLists.items.delete({
        list_id: listId,
        id: itemId,
      });
      console.log('Item deleted');
    }

    await app.client.slackLists.items.deleteMultiple({
      list_id: listId,
      ids: ['item1', 'item2'],
    });
    console.log('Multiple items deleted');

    await app.client.slackLists.access.delete({
      list_id: listId,
      user_ids: ['U09G4FG3TRN'],
    });
    console.log('Access removed');
📚 Documentation
🧰 Maintenance

New Contributors

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.19.0...@​slack/web-api@7.13.0
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/159
npm Release: https://www.npmjs.com/package/@​slack/web-api/v/7.13.0

v7.12.0

Compare Source

v7.11.0

Compare Source

AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons

🍿 Preview
2025-10-06-loading-state-text-streaming-feedback.mov
📚 Changelog
⚡ Getting Started

Try the AI Agent Sample app to explore the AI-enabled features and existing Assistant helper:

### Create a new AI Agent app
$ slack create slack-ai-agent-app --template slack-samples/bolt-js-assistant-template
$ cd slack-ai-agent-app/

### Add your OPENAI_API_KEY
$ export OPENAI_API_KEY=sk-proj-ahM...

### Run the local dev server
$ slack run

After the app starts, send a message to the "slack-ai-agent-app" bot for a unique response.

⌛ Loading States

Loading states allows you to not only set the status (e.g. "My app is typing...") but also sprinkle some personality by cycling through a collection of loading messages:

app.event('message', async ({ client, context, event, logger }) => {
    // ...
    await client.assistant.threads.setStatus({
        channel_id: channelId,
        thread_ts: threadTs,
        status: 'thinking...',
        loading_messages: [
            'Teaching the hamsters to type faster…',
            'Untangling the internet cables…',
            'Consulting the office goldfish…',
            'Polishing up the response just for you…',
            'Convincing the AI to stop overthinking…',
        ],
    });

    // Start a new message stream
});
🔮 Text Streaming Helper

The client.chatStream() helper utility can be used to streamline calling the 3 text streaming methods:

app.event('message', async ({ client, context, event, logger }) => {
    // ...

    // Start a new message stream
    const streamer = client.chatStream({
        channel: channelId,
        recipient_team_id: teamId,
        recipient_user_id: userId,
        thread_ts: threadTs,
    });

    // Loop over OpenAI response stream
    // https://platform.openai.com/docs/api-reference/responses/create
    for await (const chunk of llmResponse) {
        if (chunk.type === 'response.output_text.delta') {
            await streamer.append({
                markdown_text: chunk.delta,
            });
        }
    }

    // Stop the stream and attach feedback buttons
    await streamer.stop({ blocks: [feedbackBlock] });
});
🔠 Text Streaming Methods

Alternative to the Text Streaming Helper is to call the individual methods.

1) client.chat.startStream

First, start a chat text stream to stream a response to any message:

app.event('message', async ({ client, context, event, logger }) => {
    // ...
    const streamResponse = await client.chat.startStream({
        channel: channelId,
        recipient_team_id: teamId,
        recipient_user_id: userId,
        thread_ts: threadTs,
    });

    const streamTs = streamResponse.ts
2) client.chat.appendStream

After starting a chat text stream, you can then append text to it in chunks (often from your favourite LLM SDK) to convey a streaming effect:

for await (const chunk of llmResponse) {
    if (chunk.type === 'response.output_text.delta') {
        await client.chat.appendSteam({
            channel: channelId,
            markdown_text: chunk.delta,
            ts: streamTs,
        });
    }
}
3) client.chat.stopStream

Lastly, you can stop the chat text stream to finalize your message:

await client.chat.stopStream({
    blocks: [feedbackBlock],
    channel: channelId,
    ts: streamTs,
});
👍🏻 Feedback Buttons

Add feedback buttons to the bottom of a message, after stopping a text stream, to gather user feedback:

const feedbackBlock = {
    type: 'context_actions',
    elements: [{
        type: 'feedback_buttons',
        action_id: 'feedback',
        positive_button: {
            text: { type: 'plain_text', text: 'Good Response' },
            accessibility_label: 'Submit positive feedback on this response',
            value: 'good-feedback',
        },
        negative_button: {
            text: { type: 'plain_text', text: 'Bad Response' },
            accessibility_label: 'Submit negative feedback on this response',
            value: 'bad-feedback',
        },
    }],
};

// Using the Text Streaming Helper
await streamer.stop({ blocks: [feedbackBlock] });
// Or, using the Text Streaming Method
await client.chat.stopStream({
    blocks: [feedbackBlock],
    channel: channelId,
    ts: streamTs,
});

What's Changed

👾 Enhancements
  • feat: add ai-enabled features text streaming methods, feedback blocks, and loading state in #​2399 - Thanks @​zimeg!
📚 Documentation
  • docs: update package homepage to docs.slack.dev tools reference in #​2369 - Thanks @​zimeg!
  • docs: autogenerate package reference to language specific paths in #​2337 - Thanks @​zimeg!
🤖 Dependencies
🧰 Maintenance

Milestone: https://github.com/slackapi/node-slack-sdk/milestone/147?closed=1
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.10.0...@​slack/web-api@7.11.0
Package: https://www.npmjs.com/package/@​slack/web-api/v/7.11.0

v7.10.0

Compare Source

What's Changed

Messaging with markdown_text is supported in this release, alongside a few methods to feature workflows in channel:

const response = await client.chat.postMessage({
  channel: "C0123456789",
  markdown_text: "**bold**"
});
👾 Enhancements
  • feat(web-api): add workflows.featured.{add|list|remove|set} methods in #​2303 - Thanks @​zimeg!
  • feat(web-api): add markdown_text property to chat.{postEphemeral|postMessage|scheduleMessage|update} methods in #​2330 - Thanks @​hello-ashleyintech!
🐛 Bugs
  • fix(web-api): remove bounds on assistant.threads.setSuggestedPrompts prompts count in types in #​2297 - Thanks @​zimeg!
📚 Documentation
🤖 Dependencies
🧰 Maintenance

🎉 New Contributors

Package: https://www.npmjs.com/package/@​slack/web-api/v/7.10.0
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.9.3...@​slack/web-api@7.10.0
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/144?closed=1

v7.9.3

Compare Source

What's Changed

This release has a few small updates to align with arguments of various Slack API methods.

👾 Enhancements
  • feat(web-api): include a blocks argument for file uploads in #​2261 - Thanks @​zimeg!
🐛 Fixes
  • fix: Add "title" property to conversations.canvases.create API method arguments in #​2259 - Thanks @​vegeris!
🧰 Maintenance

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.9.2...@​slack/web-api@7.9.3
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/143

v7.9.2

Compare Source

What's Changed

🐛 Fixes
📖 Docs
🧰 Maintenance

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/socket-mode@2.0.4...@​slack/web-api@7.9.2
Milstone: https://github.com/slackapi/node-slack-sdk/milestone/141?closed=1

v7.9.1

Compare Source

What's Changed

This release fixes a bug where setting allowAbsoluteUrls to false caused the filesUploadV2 method to error when uploading files. Files can now be uploaded with allowAbsoluteUrls set to false.

Bug fixes 🐛
  • fix(web-api): complete file upload v2 calls if absolute urls are not allowed in #​2196 - Thanks @​zimeg!
Maintenance 🧰
  • test(web-api): use channel_id instead of channels with files upload v2 in #​2197 - Thanks @​zimeg!

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.9.0...@​slack/web-api@7.9.1
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/142

v7.9.0

Compare Source

What's Changed

This release adds the allowAbsoluteUrls option to the WebClient constructor.

For code using dynamic method names with .apiCall, this will toggle if requests should be sent to absolute URLs provided:

const { WebClient } = require('@​slack/web-api');

const web = new WebClient(token, {
  allowAbsoluteUrls: false, // Default: true
});

const _response = await web.apiCall('https://example.com', { /* ... */ });
$ node index.js
[DEBUG]  web-api:WebClient:0 http request url: https://slack.com/api/https://example.com
...
[WARN]  web-api:WebClient:0 http request failed An HTTP protocol error occurred: statusCode = 404

The default allowAbsoluteUrls value is true to avoid a breaking change with this update, but we suggest deciding if this option should be applied to scripts and adjacent code.

Enhancements 🎉
  • feat(web-api): add configs to toggle absolute url usage in dynamic api calls in #​2176 - Thanks @​zimeg!
Maintenance 🧰

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.8.0...@​slack/web-api@7.9.0
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/131

v7.8.0

Compare Source

What's Changed

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/cli-hooks@1.1.2...@​slack/web-api@7.8.0

v7.7.0

Compare Source

What's New

Thanks to the hard work of @​mtjandra, the web-api client now exposes Axios interceptors and adapters! Check out the documentation about this new feature for more details. Thanks so much for your contribution, @​mtjandra ❤️

Changelog

8ba3a43 feat(web-api): add request interceptor and HTTP adapter config to WebClient (#​2076), resolves #​2073

v7.6.0

Compare Source

What's New

We've added support for a new Slack Connect invite automation API: conversations.requestShared.list. Use the list API as well as the approve and deny APIs to automate approval and denial of Slack Connect invites into your Slack workspaces. More details about this feature are available in our Governing Slack Connect invites docs.

Also, the response types for a few APIs were extended with a few new properties. Check out #​2071 for the minor details.

Changelog

59f200a web-api(feat): add support for conversations.requestShared.list API (#​2072)
01d9d2d web-api(feat): minor additions to some admin API response types (#​2071)

v7.5.0

Compare Source

What's Changed

We've released support for AI Assistants & Agents via @slack/web-api:

Full Changelog

571bc3a feat (web-api / types): Add support for assistant.threads.* API (#​2033)

v7.4.0

Compare Source

What's Changed

We've released two new APIs for use via @slack/web-api:

Full Changelog

a3a06ec web-api(feat): add support for conversations.requestShared approve , deny APIs (#​1843)

v7.3.4

Compare Source

What's Changed

This patch release bumps the minimum version of axios to 1.7.4 to address a CVE - see Axios 1.7.4 release notes for more information.

Changelog

855549b fix: bump axios to 1.7.4 to address CVE (#​1875) - fixes #​1874

v7.3.3

Compare Source

What's Changed

Herein is a patch to allow a typed token attribute in a few API methods that accept it - apps.uninstall, admin.apps.uninstall, and admin.apps.clearResolution. Experiment using the snippet below and caution if you're using an app in production:

  client.apps.uninstall({
+   token: 'xoxb-example',
    client_id: 'example',
    client_secret: '123',
  });
Changes
  • web-api(fix): allow typed token overrides in supported methods - Thanks @​zimeg! #​1872

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.3.2...@​slack/web-api@7.3.3

v7.3.2

Compare Source

What's Changed

20491c8 fix (web-api): tweak type of chat.postMessage's reply_broadcast property to be wider, fixes #​1859 (#​1860)
a055e66 fix: add deprecated channels property for upload file v2 method, fixes #​1846 (#​1848)

v7.3.1

Compare Source

This release fixes a problem between web-api 7.3.0 and projects consuming it that used versions of TypeScript older than 5.0. Moving forward, web-api should guarantee compatibility with at least TypeScript 4.7.2 or newer; if this changes, that will likely warrant a major new semver release.

What's Changed

b284994 web-api(fix): revert use of export type * to maintain backwards compatibility with TS 4.7 (#​1841)

v7.3.0

Compare Source

What's New

We've added two new APIs:

  1. teams.externalTeams.disconnect
  2. conversations.externalInvitePermissions.set

What's Changed

a18c1ea feat (web-api): add support for teams.externalTeams.disconnect API (#​1837)
4ef80b7 web-api: add new conversations.externalInvitePermissions.set API (#​1834)
9e20ca3 web-api: update files.info, files.list files.remote.list and team.externalTeams.list response types (#​1833)
fc87d51 chore: tweak lint config to allow for eslint --fix to fix import order (#​1827)

v7.2.0

Compare Source

What's Changed

4df9fb8 feat(web-api): add new Slack Connect APIs team.externalTeams.list and users.discoverableContacts.lookup (#​1826)
f3acb2f feat(web-api): Update response types to latest automatically generated (#​1824)
20f026b feat(web-api): user id map in MigrationExchangeResponse as map (#​1821)

v7.1.0

Compare Source

What's Changed

The new feature available in this release is access to new Canvas APIs - programmatically manipulate your Canvases to your heart's content!

Additionally:

  • Previously in v7 of web-api, if you were using an API method that required no arguments (e.g. api.test), you still had to pass it an empty object ({}). Thanks to @​davidlj95's work in #​1809, that is no longer a requirement!
  • You can now set the attachOriginalToWebAPIRequestError to false to ensure API responses are not logged. By default, this option will be set to false. Many thanks to @​Parama92 for their work in this area!

a2c0fe5 web-api: public canvas APIs (#​1813)
9f2935f feat: allow using WebClient APIs without argument (#​1809) - fixes #​1769; thank you @​davidlj95 for your contribution! ❤️
b98ef1e feat: providing a way to disable message content being logged (#​1786) - fixes #​1751; thank you @​Parama92 for your contribution! ❤️

v7.0.4

Compare Source

What's Changed

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/cli-hooks@1.1.2...@​slack/webhook@7.0.4

v7.0.3

Compare Source

What's Changed

This patch release bumps the minimum version of axios to 1.7.4 to address a CVE - see Axios 1.7.4 release notes for more information.

Changelog

Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.0.2...@​slack/webhook@7.0.3

v7.0.2

Compare Source

Bumps axios to 1.6.3 to address a security vulnerability.

v7.0.1

Compare Source

What's Changed

a74e35b feat: upgrade axios to resolve CVE-2023-45857 (#​1682)

New Contributors

v7.0.0

Compare Source

What's Changed

85c07d9 Set minimum node version to 18 (#​1666)
0ba6dc2 Add metadata to incoming webhooks parameters (#​1617)

Breaking Changes

While this release is a new major version, the only "breaking change" is that we dropped support for node versions below v18 (at the time of this release, v16 and lower have reached their end of life). No APIs from this package were changed.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the Renovate label Jan 17, 2024
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 6 times, most recently from 4cd0f68 to 1b36f92 Compare January 26, 2024 11:12
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 1b36f92 to a8bec55 Compare January 31, 2024 13:14
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from 5f053d4 to 1f99c2d Compare February 14, 2024 05:15
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from 7d4ddb6 to be63d99 Compare February 20, 2024 15:14
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from e8dba07 to f0f44fd Compare February 27, 2024 13:11
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from b74dd86 to 2d4751a Compare March 4, 2024 11:12
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from 6bb0aea to 463b0b4 Compare March 14, 2024 13:12
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from 7a940ba to a2f5617 Compare March 22, 2024 11:12
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from a2f5617 to 82cb461 Compare March 29, 2024 07:14
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 4 times, most recently from cb7b0a8 to feb5c7a Compare April 19, 2024 06:15
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from fb34e83 to 36aa7a7 Compare April 24, 2024 04:19
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from cfac662 to cabac94 Compare May 1, 2025 15:10
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from 595e995 to 26d25d5 Compare May 14, 2025 03:25
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from 96c4394 to 97aa4d8 Compare May 21, 2025 03:28
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 97aa4d8 to d61171d Compare June 28, 2025 15:55
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from 918e305 to e2d5965 Compare July 12, 2025 03:24
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 6 times, most recently from 4388cac to 67129be Compare August 14, 2025 08:11
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 67129be to fbe845b Compare August 24, 2025 00:03
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from fbe845b to 02de51e Compare September 4, 2025 10:15
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 02de51e to 568f9b5 Compare September 26, 2025 07:07
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 568f9b5 to 4bdb751 Compare October 8, 2025 23:36
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 4bdb751 to 04ff3e4 Compare October 25, 2025 12:02
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 2 times, most recently from a82d54e to 566eaa8 Compare November 19, 2025 07:32
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 566eaa8 to 8d0884e Compare November 26, 2025 08:03
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch 3 times, most recently from 4d04484 to 0bfa9b6 Compare January 26, 2026 04:17
@renovate renovate bot force-pushed the renovate/slack-web-api-7.x branch from 0bfa9b6 to 480b4c5 Compare January 26, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant