Skip to content

Undocumented changes to file object #2040

Open
@jgkingston

Description

@jgkingston

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

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:typescriptissues that specifically impact using the package from typescript projectsauto-triage-skipdocsM-T: Documentation work onlyenhancementM-T: A feature request for new functionalitypkg:typesapplies to `@slack/types`semver:patch

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions