slackapi / slackapi/node-slack-sdk
Undocumented changes to file object
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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