Skip to content

Slack OAuth

ResourceOperationScope
MessagingSend messagechat:write, users:read
MessagingRead messageschannels:history, groups:history
UsersGet user info / list usersusers:read
ChannelsList channelschannels:read
ChannelsJoin channelchannels:join
FilesUpload filefiles:write
FilesRead filesfiles:read
ReactionsAdd/read reactionsreactions:write, reactions:read
class Workflow {
async start(data, headers, api) {
// data IS the order object for orders/* webhook topics
const { token } = await api.getOAuthToken('my-slack');
await fetch('https://slack.com/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
},
body: JSON.stringify({
channel: '#orders',
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: `*New order* #${data.order_number}${data.total_price} ${data.currency}`,
},
},
],
}),
});
}
}
const formData = new FormData();
formData.append('channels', '#reports');
formData.append('content', csvString);
formData.append('filename', 'report.csv');
const { token } = await api.getOAuthToken('my-slack');
await fetch('https://slack.com/api/files.upload', {
method: 'POST',
headers: { Authorization: `Bearer ${token}` },
body: formData
});