@slack/web-api
Version:
Official library for using the Slack Platform's Web API
499 lines • 25.3 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.cursorPaginationEnabledMethods = exports.Methods = void 0;
const eventemitter3_1 = require("eventemitter3");
const WebClient_1 = require("./WebClient");
// NOTE: could create a named type alias like data types like `SlackUserID: string`
/**
* Binds a certain `method` and its arguments and result types to the `apiCall` method in `WebClient`.
*/
function bindApiCall(self, method) {
// We have to "assert" that the bound method does indeed return the more specific `Result` type instead of just
// `WebAPICallResult`
return self.apiCall.bind(self, method);
}
function bindFilesUploadV2(self) {
return self.filesUploadV2.bind(self);
}
/**
* A class that defines all Web API methods, their arguments type, their response type, and binds those methods to the
* `apiCall` class method.
*/
class Methods extends eventemitter3_1.EventEmitter {
// TODO: As of writing, `WebClient` already extends EventEmitter...
// and I want WebClient to extend this class...
// and multiple inheritance in JS is cursed...
// so I'm just making this class extend EventEmitter.
//
// It shouldn't be here, indeed. Nothing here uses it, indeed. But it must be here for the sake of sanity.
constructor() {
super();
this.admin = {
analytics: {
getFile: bindApiCall(this, 'admin.analytics.getFile'),
},
apps: {
approve: bindApiCall(this, 'admin.apps.approve'),
approved: {
list: bindApiCall(this, 'admin.apps.approved.list'),
},
clearResolution: bindApiCall(this, 'admin.apps.clearResolution'),
requests: {
cancel: bindApiCall(this, 'admin.apps.requests.cancel'),
list: bindApiCall(this, 'admin.apps.requests.list'),
},
restrict: bindApiCall(this, 'admin.apps.restrict'),
restricted: {
list: bindApiCall(this, 'admin.apps.restricted.list'),
},
uninstall: bindApiCall(this, 'admin.apps.uninstall'),
},
auth: {
policy: {
assignEntities: bindApiCall(this, 'admin.auth.policy.assignEntities'),
getEntities: bindApiCall(this, 'admin.auth.policy.getEntities'),
removeEntities: bindApiCall(this, 'admin.auth.policy.removeEntities'),
},
},
barriers: {
create: bindApiCall(this, 'admin.barriers.create'),
delete: bindApiCall(this, 'admin.barriers.delete'),
list: bindApiCall(this, 'admin.barriers.list'),
update: bindApiCall(this, 'admin.barriers.update'),
},
conversations: {
archive: bindApiCall(this, 'admin.conversations.archive'),
bulkArchive: bindApiCall(this, 'admin.conversations.bulkArchive'),
bulkDelete: bindApiCall(this, 'admin.conversations.bulkDelete'),
bulkMove: bindApiCall(this, 'admin.conversations.bulkMove'),
convertToPrivate: bindApiCall(this, 'admin.conversations.convertToPrivate'),
create: bindApiCall(this, 'admin.conversations.create'),
delete: bindApiCall(this, 'admin.conversations.delete'),
disconnectShared: bindApiCall(this, 'admin.conversations.disconnectShared'),
ekm: {
listOriginalConnectedChannelInfo: bindApiCall(this, 'admin.conversations.ekm.listOriginalConnectedChannelInfo'),
},
getConversationPrefs: bindApiCall(this, 'admin.conversations.getConversationPrefs'),
getTeams: bindApiCall(this, 'admin.conversations.getTeams'),
invite: bindApiCall(this, 'admin.conversations.invite'),
rename: bindApiCall(this, 'admin.conversations.rename'),
restrictAccess: {
addGroup: bindApiCall(this, 'admin.conversations.restrictAccess.addGroup'),
listGroups: bindApiCall(this, 'admin.conversations.restrictAccess.listGroups'),
removeGroup: bindApiCall(this, 'admin.conversations.restrictAccess.removeGroup'),
},
getCustomRetention: bindApiCall(this, 'admin.conversations.getCustomRetention'),
setCustomRetention: bindApiCall(this, 'admin.conversations.setCustomRetention'),
removeCustomRetention: bindApiCall(this, 'admin.conversations.removeCustomRetention'),
search: bindApiCall(this, 'admin.conversations.search'),
setConversationPrefs: bindApiCall(this, 'admin.conversations.setConversationPrefs'),
setTeams: bindApiCall(this, 'admin.conversations.setTeams'),
unarchive: bindApiCall(this, 'admin.conversations.unarchive'),
},
emoji: {
add: bindApiCall(this, 'admin.emoji.add'),
addAlias: bindApiCall(this, 'admin.emoji.addAlias'),
list: bindApiCall(this, 'admin.emoji.list'),
remove: bindApiCall(this, 'admin.emoji.remove'),
rename: bindApiCall(this, 'admin.emoji.rename'),
},
inviteRequests: {
approve: bindApiCall(this, 'admin.inviteRequests.approve'),
approved: {
list: bindApiCall(this, 'admin.inviteRequests.approved.list'),
},
denied: {
list: bindApiCall(this, 'admin.inviteRequests.denied.list'),
},
deny: bindApiCall(this, 'admin.inviteRequests.deny'),
list: bindApiCall(this, 'admin.inviteRequests.list'),
},
teams: {
admins: {
list: bindApiCall(this, 'admin.teams.admins.list'),
},
create: bindApiCall(this, 'admin.teams.create'),
list: bindApiCall(this, 'admin.teams.list'),
owners: {
list: bindApiCall(this, 'admin.teams.owners.list'),
},
settings: {
info: bindApiCall(this, 'admin.teams.settings.info'),
setDefaultChannels: bindApiCall(this, 'admin.teams.settings.setDefaultChannels'),
setDescription: bindApiCall(this, 'admin.teams.settings.setDescription'),
setDiscoverability: bindApiCall(this, 'admin.teams.settings.setDiscoverability'),
setIcon: bindApiCall(this, 'admin.teams.settings.setIcon'),
setName: bindApiCall(this, 'admin.teams.settings.setName'),
},
},
usergroups: {
addChannels: bindApiCall(this, 'admin.usergroups.addChannels'),
addTeams: bindApiCall(this, 'admin.usergroups.addTeams'),
listChannels: bindApiCall(this, 'admin.usergroups.listChannels'),
removeChannels: bindApiCall(this, 'admin.usergroups.removeChannels'),
},
users: {
assign: bindApiCall(this, 'admin.users.assign'),
invite: bindApiCall(this, 'admin.users.invite'),
list: bindApiCall(this, 'admin.users.list'),
remove: bindApiCall(this, 'admin.users.remove'),
session: {
list: bindApiCall(this, 'admin.users.session.list'),
reset: bindApiCall(this, 'admin.users.session.reset'),
resetBulk: bindApiCall(this, 'admin.users.session.resetBulk'),
invalidate: bindApiCall(this, 'admin.users.session.invalidate'),
getSettings: bindApiCall(this, 'admin.users.session.getSettings'),
setSettings: bindApiCall(this, 'admin.users.session.setSettings'),
clearSettings: bindApiCall(this, 'admin.users.session.clearSettings'),
},
unsupportedVersions: {
export: bindApiCall(this, 'admin.users.unsupportedVersions.export'),
},
setAdmin: bindApiCall(this, 'admin.users.setAdmin'),
setExpiration: bindApiCall(this, 'admin.users.setExpiration'),
setOwner: bindApiCall(this, 'admin.users.setOwner'),
setRegular: bindApiCall(this, 'admin.users.setRegular'),
},
};
this.api = {
test: bindApiCall(this, 'api.test'),
};
this.apps = {
connections: {
open: bindApiCall(this, 'apps.connections.open'),
},
event: {
authorizations: {
list: bindApiCall(this, 'apps.event.authorizations.list'),
},
},
uninstall: bindApiCall(this, 'apps.uninstall'),
};
this.auth = {
revoke: bindApiCall(this, 'auth.revoke'),
teams: {
list: bindApiCall(this, 'auth.teams.list'),
},
test: bindApiCall(this, 'auth.test'),
};
this.bots = {
info: bindApiCall(this, 'bots.info'),
};
this.bookmarks = {
add: bindApiCall(this, 'bookmarks.add'),
edit: bindApiCall(this, 'bookmarks.edit'),
list: bindApiCall(this, 'bookmarks.list'),
remove: bindApiCall(this, 'bookmarks.remove'),
};
this.calls = {
add: bindApiCall(this, 'calls.add'),
end: bindApiCall(this, 'calls.end'),
info: bindApiCall(this, 'calls.info'),
update: bindApiCall(this, 'calls.update'),
participants: {
add: bindApiCall(this, 'calls.participants.add'),
remove: bindApiCall(this, 'calls.participants.remove'),
},
};
this.chat = {
delete: bindApiCall(this, 'chat.delete'),
deleteScheduledMessage: bindApiCall(this, 'chat.deleteScheduledMessage'),
getPermalink: bindApiCall(this, 'chat.getPermalink'),
meMessage: bindApiCall(this, 'chat.meMessage'),
postEphemeral: bindApiCall(this, 'chat.postEphemeral'),
postMessage: bindApiCall(this, 'chat.postMessage'),
scheduleMessage: bindApiCall(this, 'chat.scheduleMessage'),
scheduledMessages: {
list: bindApiCall(this, 'chat.scheduledMessages.list'),
},
unfurl: bindApiCall(this, 'chat.unfurl'),
update: bindApiCall(this, 'chat.update'),
};
this.conversations = {
acceptSharedInvite: bindApiCall(this, 'conversations.acceptSharedInvite'),
approveSharedInvite: bindApiCall(this, 'conversations.approveSharedInvite'),
archive: bindApiCall(this, 'conversations.archive'),
close: bindApiCall(this, 'conversations.close'),
create: bindApiCall(this, 'conversations.create'),
declineSharedInvite: bindApiCall(this, 'conversations.declineSharedInvite'),
history: bindApiCall(this, 'conversations.history'),
info: bindApiCall(this, 'conversations.info'),
invite: bindApiCall(this, 'conversations.invite'),
inviteShared: bindApiCall(this, 'conversations.inviteShared'),
join: bindApiCall(this, 'conversations.join'),
kick: bindApiCall(this, 'conversations.kick'),
leave: bindApiCall(this, 'conversations.leave'),
list: bindApiCall(this, 'conversations.list'),
listConnectInvites: bindApiCall(this, 'conversations.listConnectInvites'),
mark: bindApiCall(this, 'conversations.mark'),
members: bindApiCall(this, 'conversations.members'),
open: bindApiCall(this, 'conversations.open'),
rename: bindApiCall(this, 'conversations.rename'),
replies: bindApiCall(this, 'conversations.replies'),
setPurpose: bindApiCall(this, 'conversations.setPurpose'),
setTopic: bindApiCall(this, 'conversations.setTopic'),
unarchive: bindApiCall(this, 'conversations.unarchive'),
};
this.dialog = {
open: bindApiCall(this, 'dialog.open'),
};
this.dnd = {
endDnd: bindApiCall(this, 'dnd.endDnd'),
endSnooze: bindApiCall(this, 'dnd.endSnooze'),
info: bindApiCall(this, 'dnd.info'),
setSnooze: bindApiCall(this, 'dnd.setSnooze'),
teamInfo: bindApiCall(this, 'dnd.teamInfo'),
};
this.emoji = {
list: bindApiCall(this, 'emoji.list'),
};
this.files = {
delete: bindApiCall(this, 'files.delete'),
info: bindApiCall(this, 'files.info'),
list: bindApiCall(this, 'files.list'),
revokePublicURL: bindApiCall(this, 'files.revokePublicURL'),
sharedPublicURL: bindApiCall(this, 'files.sharedPublicURL'),
upload: bindApiCall(this, 'files.upload'),
/**
* Custom method to support files upload v2 way of uploading files to Slack
* Supports a single file upload
* Supply:
* - (required) single file or content
* - (optional) channel, alt_text, snippet_type,
* Supports multiple file uploads
* Supply:
* - multiple upload_files
* Will try to honor both single file or content data supplied as well
* as multiple file uploads property.
*/
uploadV2: bindFilesUploadV2(this),
getUploadURLExternal: bindApiCall(this, 'files.getUploadURLExternal'),
completeUploadExternal: bindApiCall(this, 'files.completeUploadExternal'),
comments: {
delete: bindApiCall(this, 'files.comments.delete'),
},
remote: {
info: bindApiCall(this, 'files.remote.info'),
list: bindApiCall(this, 'files.remote.list'),
add: bindApiCall(this, 'files.remote.add'),
update: bindApiCall(this, 'files.remote.update'),
remove: bindApiCall(this, 'files.remote.remove'),
share: bindApiCall(this, 'files.remote.share'),
},
};
this.migration = {
exchange: bindApiCall(this, 'migration.exchange'),
};
this.oauth = {
access: bindApiCall(this, 'oauth.access'),
v2: {
access: bindApiCall(this, 'oauth.v2.access'),
exchange: bindApiCall(this, 'oauth.v2.exchange'),
},
};
this.openid = {
connect: {
token: bindApiCall(this, 'openid.connect.token'),
userInfo: bindApiCall(this, 'openid.connect.userInfo'),
},
};
this.pins = {
add: bindApiCall(this, 'pins.add'),
list: bindApiCall(this, 'pins.list'),
remove: bindApiCall(this, 'pins.remove'),
};
this.reactions = {
add: bindApiCall(this, 'reactions.add'),
get: bindApiCall(this, 'reactions.get'),
list: bindApiCall(this, 'reactions.list'),
remove: bindApiCall(this, 'reactions.remove'),
};
this.reminders = {
add: bindApiCall(this, 'reminders.add'),
complete: bindApiCall(this, 'reminders.complete'),
delete: bindApiCall(this, 'reminders.delete'),
info: bindApiCall(this, 'reminders.info'),
list: bindApiCall(this, 'reminders.list'),
};
this.rtm = {
connect: bindApiCall(this, 'rtm.connect'),
start: bindApiCall(this, 'rtm.start'),
};
this.search = {
all: bindApiCall(this, 'search.all'),
files: bindApiCall(this, 'search.files'),
messages: bindApiCall(this, 'search.messages'),
};
this.stars = {
add: bindApiCall(this, 'stars.add'),
list: bindApiCall(this, 'stars.list'),
remove: bindApiCall(this, 'stars.remove'),
};
this.team = {
accessLogs: bindApiCall(this, 'team.accessLogs'),
billableInfo: bindApiCall(this, 'team.billableInfo'),
billing: {
info: bindApiCall(this, 'team.billing.info'),
},
info: bindApiCall(this, 'team.info'),
integrationLogs: bindApiCall(this, 'team.integrationLogs'),
preferences: {
list: bindApiCall(this, 'team.preferences.list'),
},
profile: {
get: bindApiCall(this, 'team.profile.get'),
},
};
this.usergroups = {
create: bindApiCall(this, 'usergroups.create'),
disable: bindApiCall(this, 'usergroups.disable'),
enable: bindApiCall(this, 'usergroups.enable'),
list: bindApiCall(this, 'usergroups.list'),
update: bindApiCall(this, 'usergroups.update'),
users: {
list: bindApiCall(this, 'usergroups.users.list'),
update: bindApiCall(this, 'usergroups.users.update'),
},
};
this.users = {
conversations: bindApiCall(this, 'users.conversations'),
deletePhoto: bindApiCall(this, 'users.deletePhoto'),
getPresence: bindApiCall(this, 'users.getPresence'),
identity: bindApiCall(this, 'users.identity'),
info: bindApiCall(this, 'users.info'),
list: bindApiCall(this, 'users.list'),
lookupByEmail: bindApiCall(this, 'users.lookupByEmail'),
setPhoto: bindApiCall(this, 'users.setPhoto'),
setPresence: bindApiCall(this, 'users.setPresence'),
profile: {
get: bindApiCall(this, 'users.profile.get'),
set: bindApiCall(this, 'users.profile.set'),
},
};
this.views = {
open: bindApiCall(this, 'views.open'),
publish: bindApiCall(this, 'views.publish'),
push: bindApiCall(this, 'views.push'),
update: bindApiCall(this, 'views.update'),
};
this.workflows = {
stepCompleted: bindApiCall(this, 'workflows.stepCompleted'),
stepFailed: bindApiCall(this, 'workflows.stepFailed'),
updateStep: bindApiCall(this, 'workflows.updateStep'),
};
// ---------------------------------
// Deprecated methods
// ---------------------------------
this.channels = {
archive: bindApiCall(this, 'channels.archive'),
create: bindApiCall(this, 'channels.create'),
history: bindApiCall(this, 'channels.history'),
info: bindApiCall(this, 'channels.info'),
invite: bindApiCall(this, 'channels.invite'),
join: bindApiCall(this, 'channels.join'),
kick: bindApiCall(this, 'channels.kick'),
leave: bindApiCall(this, 'channels.leave'),
list: bindApiCall(this, 'channels.list'),
mark: bindApiCall(this, 'channels.mark'),
rename: bindApiCall(this, 'channels.rename'),
replies: bindApiCall(this, 'channels.replies'),
setPurpose: bindApiCall(this, 'channels.setPurpose'),
setTopic: bindApiCall(this, 'channels.setTopic'),
unarchive: bindApiCall(this, 'channels.unarchive'),
};
this.groups = {
archive: bindApiCall(this, 'groups.archive'),
create: bindApiCall(this, 'groups.create'),
createChild: bindApiCall(this, 'groups.createChild'),
history: bindApiCall(this, 'groups.history'),
info: bindApiCall(this, 'groups.info'),
invite: bindApiCall(this, 'groups.invite'),
kick: bindApiCall(this, 'groups.kick'),
leave: bindApiCall(this, 'groups.leave'),
list: bindApiCall(this, 'groups.list'),
mark: bindApiCall(this, 'groups.mark'),
open: bindApiCall(this, 'groups.open'),
rename: bindApiCall(this, 'groups.rename'),
replies: bindApiCall(this, 'groups.replies'),
setPurpose: bindApiCall(this, 'groups.setPurpose'),
setTopic: bindApiCall(this, 'groups.setTopic'),
unarchive: bindApiCall(this, 'groups.unarchive'),
};
this.im = {
close: bindApiCall(this, 'im.close'),
history: bindApiCall(this, 'im.history'),
list: bindApiCall(this, 'im.list'),
mark: bindApiCall(this, 'im.mark'),
open: bindApiCall(this, 'im.open'),
replies: bindApiCall(this, 'im.replies'),
};
this.mpim = {
close: bindApiCall(this, 'mpim.close'),
history: bindApiCall(this, 'mpim.history'),
list: bindApiCall(this, 'mpim.list'),
mark: bindApiCall(this, 'mpim.mark'),
open: bindApiCall(this, 'mpim.open'),
replies: bindApiCall(this, 'mpim.replies'),
};
// Check that the class being created extends from `WebClient` rather than this class
if (new.target !== WebClient_1.WebClient && !(new.target.prototype instanceof WebClient_1.WebClient)) {
throw new Error('Attempt to inherit from WebClient methods without inheriting from WebClient');
}
}
}
exports.Methods = Methods;
// A set of method names is initialized here and added to each time an argument type extends the CursorPaginationEnabled
// interface, so that methods are checked against this set when using the pagination helper. If the method name is not
// found, a warning is emitted to guide the developer to using the method correctly.
exports.cursorPaginationEnabledMethods = new Set();
exports.cursorPaginationEnabledMethods.add('admin.apps.approved.list');
exports.cursorPaginationEnabledMethods.add('admin.apps.requests.list');
exports.cursorPaginationEnabledMethods.add('admin.apps.restricted.list');
exports.cursorPaginationEnabledMethods.add('admin.auth.policy.getEntities');
exports.cursorPaginationEnabledMethods.add('admin.barriers.list');
exports.cursorPaginationEnabledMethods.add('admin.conversations.ekm.listOriginalConnectedChannelInfo');
exports.cursorPaginationEnabledMethods.add('admin.conversations.getTeams');
exports.cursorPaginationEnabledMethods.add('admin.conversations.search');
exports.cursorPaginationEnabledMethods.add('admin.emoji.list');
exports.cursorPaginationEnabledMethods.add('admin.inviteRequests.approved.list');
exports.cursorPaginationEnabledMethods.add('admin.inviteRequests.denied.list');
exports.cursorPaginationEnabledMethods.add('admin.inviteRequests.list');
exports.cursorPaginationEnabledMethods.add('admin.teams.admins.list');
exports.cursorPaginationEnabledMethods.add('admin.teams.list');
exports.cursorPaginationEnabledMethods.add('admin.teams.owners.list');
exports.cursorPaginationEnabledMethods.add('admin.users.list');
exports.cursorPaginationEnabledMethods.add('admin.users.session.list');
exports.cursorPaginationEnabledMethods.add('apps.event.authorizations.list');
exports.cursorPaginationEnabledMethods.add('auth.teams.list');
exports.cursorPaginationEnabledMethods.add('channels.list');
exports.cursorPaginationEnabledMethods.add('chat.scheduledMessages.list');
exports.cursorPaginationEnabledMethods.add('conversations.history');
exports.cursorPaginationEnabledMethods.add('conversations.list');
exports.cursorPaginationEnabledMethods.add('conversations.listConnectInvites');
exports.cursorPaginationEnabledMethods.add('conversations.members');
exports.cursorPaginationEnabledMethods.add('conversations.replies');
exports.cursorPaginationEnabledMethods.add('files.info');
exports.cursorPaginationEnabledMethods.add('files.remote.list');
exports.cursorPaginationEnabledMethods.add('groups.list');
exports.cursorPaginationEnabledMethods.add('im.list');
exports.cursorPaginationEnabledMethods.add('mpim.list');
exports.cursorPaginationEnabledMethods.add('reactions.list');
exports.cursorPaginationEnabledMethods.add('stars.list');
exports.cursorPaginationEnabledMethods.add('users.conversations');
exports.cursorPaginationEnabledMethods.add('users.list');
__exportStar(require("@slack/types"), exports);
//# sourceMappingURL=methods.js.map