slackapi / slackapi/node-slack-sdk

Undocumented changes to file object

Open
#2,040 11 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:typescript auto-triage-skip docs enhancement pkg:types semver:patch
Dominant language
TypeScript
Stars
3.4k
Forks
688
Avg merge
15h 31m
Merged PRs (30d)
27

Description

Packages:

Select all that apply:

  • @slack/web-api
  • @slack/rtm-api
  • @slack/webhooks
  • @slack/oauth
  • @slack/socket-mode
  • @slack/types
  • I don't know
Reproducible in:
The Slack SDK version
@slack/web-api@6.12.0
@slack/types@2.12.0
Node.js runtime version

v18.11.0

OS info

ProductName: macOS
ProductVersion: 12.5
BuildVersion: 21G72
Darwin Kernel Version 21.6.0: Sat Jun 18 17:07:22 PDT 2022; root:xnu-8020.140.41~1/RELEASE_ARM64_T6000

Steps to reproduce:
  const fileUploadResp = await slackClient.files.upload({
    channels: channelId,
    file: readFileStream(pathToFile),
    filename: file.name || 'unknown_filename',
    filetype: file.filetype,
    initial_comment: `Uploaded by <@${message.authorId}>`,
    thread_ts: threadTs,
  })
  const uploadedFile = fileUploadResp.file
  console.log(uploadedFile)
const fileUploadV2Resp = await slackClient.files.uploadV2({
  channel_id: channelId,
  file_uploads: files.map(file => ({
    file: readFileStream(filePathsByFileId[file.id]),
    filename: file.name || 'unknown_filename',
  })),
  initial_comment: `Uploaded by <@${message.authorId}>`,
  thread_ts: threadTs,
})
const fileUploads = fileUploadV2Resp.files[0].files
console.log(fileUploads[0])
Expected result:

An example of a file object returned by the to-be-deprecated files.upload method. This matches the object shown here in the docs: https://api.slack.com/types/file

{
  id: 'F07P0LRQQ6N',
  created: 1727277704,
  timestamp: 1727277704,
  name: 'Screen Shot 2024-06-04 at 4.44.34 PM.png',
  title: 'Screen Shot 2024-06-04 at 4.44.34 PM',
  mimetype: 'image/png',
  filetype: 'png',
  pretty_type: 'PNG',
  user: 'U04JUMFCGE6',
  user_team: 'TU7B08JCV',
  editable: false,
  size: 997126,
  mode: 'hosted',
  is_external: false,
  external_type: '',
  is_public: false,
  public_url_shared: false,
  display_as_bot: false,
  username: '',
  url_private: 'https://files.slack.com/files-pri/TU7B08JCV-F07P0LRQQ6N/screen_shot_2024-06-04_at_4.44.34_pm.png',
  url_private_download: 'https://files.slack.com/files-pri/TU7B08JCV-F07P0LRQQ6N/download/screen_shot_2024-06-04_at_4.44.34_pm.png',
  media_display_type: 'unknown',
  thumb_64: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_64.png',
  thumb_80: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_80.png',
  thumb_360: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_360.png',
  thumb_360_w: 360,
  thumb_360_h: 184,
  thumb_480: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_480.png',
  thumb_480_w: 480,
  thumb_480_h: 245,
  thumb_160: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_160.png',
  thumb_720: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_720.png',
  thumb_720_w: 720,
  thumb_720_h: 368,
  thumb_800: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_800.png',
  thumb_800_w: 800,
  thumb_800_h: 408,
  thumb_960: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_960.png',
  thumb_960_w: 960,
  thumb_960_h: 490,
  thumb_1024: 'https://files.slack.com/files-tmb/TU7B08JCV-F07P0LRQQ6N-f6d08ddef0/screen_shot_2024-06-04_at_4.44.34_pm_1024.png',
  thumb_1024_w: 1024,
  thumb_1024_h: 523,
  original_w: 2668,
  original_h: 1362,
  thumb_tiny: 'AwAYADDR79TSjnvSY5pQMUAL+NFFFABR3opO9AC4ooooAKKKKAENH8VDdqP4qAP/2Q==',
  permalink: 'https://wranglesoft.slack.com/files/U04JUMFCGE6/F07P0LRQQ6N/screen_shot_2024-06-04_at_4.44.34_pm.png',
  permalink_public: 'https://slack-files.com/TU7B08JCV-F07P0LRQQ6N-819dd60ac2',
  comments_count: 0,
  is_starred: false,
  shares: { private: { D04KJCKG3G8: [Array] } },
  channels: [],
  groups: [],
  ims: [ 'D04KJCKG3G8' ],
  has_more_shares: false,
  has_rich_preview: false,
  file_access: 'visible'
}
Actual result:

This is an example of a file object returned by the new, recommended files.uploadV2 method. You can see that many fields are either missing or empty when compared to the file type shown in the api docs. Most notably, for our purposes, are mimetype, shares, channels, and groups. The new, reduced file object is consistent between the initial return from files.uploadV2 and subsequent calls to files.info after a successful upload.

  {
    id: 'F07P0GNNNKU',
    created: 1727276530,
    timestamp: 1727276530,
    name: 'Screen Shot 2024-06-04 at 4.44.34 PM.png',
    title: 'Screen Shot 2024-06-04 at 4.44.34 PM.png',
    mimetype: '',
    filetype: '',
    pretty_type: '',
    user: 'U04JUMFCGE6',
    user_team: 'TU7B08JCV',
    editable: false,
    size: 997126,
    mode: 'hosted',
    is_external: false,
    external_type: '',
    is_public: false,
    public_url_shared: false,
    display_as_bot: false,
    username: '',
    url_private: 'https://files.slack.com/files-pri/TU7B08JCV-F07P0GNNNKU/screen_shot_2024-06-04_at_4.44.34_pm.png',
    url_private_download: 'https://files.slack.com/files-pri/TU7B08JCV-F07P0GNNNKU/download/screen_shot_2024-06-04_at_4.44.34_pm.png',
    media_display_type: 'unknown',
    permalink: 'https://wranglesoft.slack.com/files/U04JUMFCGE6/F07P0GNNNKU/screen_shot_2024-06-04_at_4.44.34_pm.png',
    permalink_public: 'https://slack-files.com/TU7B08JCV-F07P0GNNNKU-119478101c',
    favorites: [],
    is_starred: false,
    shares: {},
    channels: [],
    groups: [],
    ims: [],
    has_more_shares: false,
    has_rich_preview: false,
    file_access: 'visible',
    comments_count: 0
  }
Requirements

For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. 🙇

Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the @slack/web-api and @slack/types entry points for files.upload, files.uploadV2, and files.info, comparing their documented file objects with the reported responses. Determine whether the missing or empty fields require an SDK change or documentation clarification; done means the discrepancy and expected behavior are clearly resolved.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
api
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.